Baixe o app para aproveitar ainda mais
Prévia do material em texto
Aula 10 – Ferramentas de teste de software Automação de teste de Software O que é a automação de teste? A diferença entre testes e automação de testes, é que no primeiro você realiza a tarefa de testar, e no segundo você usa um software que imita a interação com a aplicação no que se refere ao teste tal qual um ser humano faria (Graham e Fewster,1999). Basicamente os testes de software podem ocorrer de duas formas, através de testes manuais ou testes automatizados. Tipos de Testes Automatizados (Progressivos e Regressivos) A automação de teste deve ser vista: Técnicas de teste automatizado Para agilizar e automatizar o processo de teste a maioria das ferramentas de automação de testes apresentam como principais características: Quase todas as ferramentas possuem de alguma forma um gravador que, uma vez acionado, grava, na forma de uma linguagem interna (seja visual ou não) tudo que o usuário fizer, ficando armazenado no script de teste. Uma vez acionado pelo executor de testes, o script entra em execução, pois o que foi gravado vai sendo repetido. Recurso da ferramenta que executa o que foi gravado ou registrado no script de teste. Cada ferramenta implementa este recurso de uma forma, porém todas fazem a mesma coisa. Consiste em criar um script e depois fazer isso de uma massa de dados que será executada no script, dirigindo a forma como será executado assim como a quantidade de vezes que ele será executado. Segundo Graham e Fewster (1999), existem diferentes estratégias consideradas ao se projetar e escrever scripts de testes: Ferramentas de teste automatizado de software As revisões e testes são instrumentos de controle de qualidade de um projeto. Existem diversas ferramentas de apoio a tais atividades, que variam tanto quanto a parâmetros como técnicas implementadas e linguagens suportadas:. Para um bom desempenho do processo de automatização estas ferramentas devem ser integradas entre si: Ferramentas de Planejamento de Testes Esta categoria de ferramenta apoia o processo de planejamento dos trabalhos de testes, definindo escopos, abordagens, agendando reuniões e programando atividades. Auxiliam no processo de documentação inicial, possibilitando gerar planejamentos padronizados e na elaboração de estimativas de tempo e custo, além de dimensionar as equipes de acordo com o tempo disponível. Estas informações são geradas a partir da coleta inicial de requisitos de software que irão possibilitar dimensionar o esforço e complexidade envolvida no processo de desenvolvimento. As principais características destas ferramentas são a análise de criticidade e a geração de documentos. Ferramentas de Modelagem e Automação As ferramentas de modelagem auxiliam no processo de construção e documentação de como serão testados todos os requisitos de negócio, possibilitando registrar todos os procedimentos de teste a cada cenário estabelecido e ainda o processo de conferência dos dados. Estas ferramentas possibilitam o desenvolvimento de scripts automatizados. As principais características destas ferramentas são a modelagem de testes, gerador de massa de dados e automatizados de scripts. Ferramentas de suporte aos testes Estas ferramentas apoiam atividades que não estão diretamente ligadas ao processo de testes, porém garantem que determinados itens fundamentais desse processo estão sendo bem gerenciados. As principais características destas ferramentas são: Gerenciamento de defeitos e gerenciamento de configurações Ferramentas de Revisões e Inspeções Estas ferramentas auxiliam nas revisões de documentos e inspeções técnicas que podem ser aplicadas em todas as etapas do processo de desenvolvimento. Suas principais características são a análise de complexidade, a compreensão do código e a análise sintática de semântica. Ferramentas de execução e Conferência As ferramentas de execução e conferência possibilitam o gerenciamento e o controle do processo de execução, reexecução e medição dos testes planejados. Possibilitam integração entre as demais fases, de forma a executar os testes selecionados no planejamento. As principais características destas ferramentas são a: análise de cobertura, executor de scripts, simuladores de performance e testadores de memória. Análise de cobertura: possibilita estabelecer uma métrica de cobertura do teste através do monitoramento das linhas de código executadas. Os testes de caixa branca requerem esse tipo de ferramenta, pois possibilita visualizar áreas do código não cobertas pelos testes em execução. Executor de scripts: Como as ferramentas de execução e conferência são normalmente integradas aos softwares de planejamento de testes e desenvolvimento de scripts, o executor de scripts permite executar os procedimentos na ordem e frequências preestabelecidas. Permite também a gestão do ciclo de testes como um todo, com o controle de execução de cada caso de testes, o controle da reexecução dos testes e os desvios de testes provocados por erros inesperados. Testadores de memória: Auxiliam no processo de detecção de problemas em relação ao uso e alocação de memória pela aplicação. Sendo assim devem ser específicas para cada linguagem e ambiente. Simuladores e medidores de performance: Estão diretamente ligadas aos testes de sistema, como os testes de carga, volume e performance, já que nessa categoria é impossível conceber a ideia de realizar testes sem empregar ferramentas específicas. Qual ferramenta utilizar? Nesta aula iremos conhecer de uma forma resumida alguma das principais ferramentas utilizadas no mercado para testes automáticos de software: Atenção! Para conhecer a relação completa de ferramentas de teste de software com licença livre disponível, acesse o endereço: http://opensourcetesting.org. Este site lista ferramentas para diversas linguagens e aplicações, tais como: Teste de desempenho; Interfaces gráficas (GUI); Estresse de aplicações Web eBases de dados para administra a aplicação de teste para registrar ocorrências de erro em um projeto. Projeto de automação de teste Um projeto de automação de teste é um investimento alto e de longa duração, e por isso mesmo os dirigentes das organizações obviamente tem expectativas em relação a custos e aos benefícios trazidos pela sua implementação. Por isso um projeto de automação de testes deve ser cercado de alguns cuidados: Ferramenta: Seleção da ferramenta certa, adequada à tecnologia usada e que possa integrar com as metodologias de desenvolvimento e teste. Metodologia: Existência de metodologias de desenvolvimento e testes consolidadas e usadas, que possam se integrar com a ferramenta escolhida Infraestrutura: Disponibilidade de máquina e seus recursos , um projeto em desenvolvimento (em fase de testes) dedicado para o projeto de automação de testes. Recursos: Garantia por parte dos dirigentes da organização quanto à disponibilidade de recursos humanos capacitados e financeiros para o projeto, apoio para as mudanças requeridas nos processos de desenvolvimento e testes, assim como nas ferramentas de desenvolvimento. Quais casos de testes são candidatos a automatização? A cada nova versão de um software torna-se necessário realizar um novo conjunto de teste, visando ampliar as melhorias implementadas. Desta forma tambémé necessário reexecutar um conjunto de casos de testes (todos ou partes) de forma a avaliar se as mudanças realizadas danificaram outras partes do software que já funcionava. Os custos relativos à execução dos testes de progressão não são importantes. Porém são importantes os custos de execução dos testes de regressão, pois estes devem ser reexecutados ao longo do ciclo de vida do software. Desta forma devemos considerar que os testes automatizados visam a otimização da execução dos testes, mas deve ser feito, preventivamente, um estudo de viabilidade técnica e um estudo de custo beneficio para sua utilização ou não. Os testes automatizados não substituem os testes manuais, eles são complementares e para isso devemos levar em consideração que todo caso de teste é naturalmente candidato à automação, mas naturalmente nem todos são recomendáveis para automação: Se o caso de teste for algo pontual e específico de alguma versão do software e não se espera que seja testado em versões futuras, não é candidato à automação. Se o caso de teste tiver características de uso de uma grande massa de dados, indica ser um data-driven test que precisará provavelmente ser automatizado. Não existe tempo hábil para automatizar o teste desejado devido ao cronograma, então ele não será momentaneamente um teste a ser automatizado.
Compartilhar