Baixe o app para aproveitar ainda mais
Prévia do material em texto
20/01/2013 1 1 Fases, Processo e Tipos de Teste Carlos Pietrobon 2 Fases de Teste A atividade de teste é dividida em fases com objetivos distintos. De uma forma geral, pode-se estabelecer como fases (Delamaro et al., 2007): Teste de Unidade Teste de Integração Teste de Sistema Teste de Aceitação 3 Fases de Teste 4 Teste de Unidade Tem como foco as menores unidades de um programa. Uma unidade é um componente de software que não pode ser subdividido. Nesta fase esperam-se encontrar defeitos relacionados a algoritmos incorretos ou mal implementados, estruturas de dados incorretas ou simples erros de programação. Pode ser aplicado à medida que ocorre a implementação das unidades e pode ser realizado pelo próprio desenvolvedor (Delamaro et al., 2007). 5 Teste de Unidade Durante os testes de unidade, é necessária a implementação de drivers e stubs. Um driver é um programa que coordena o teste de uma unidade U, sendo responsável por ler os dados fornecidos pelo testador, repassar esses dados na forma de parâmetros para U, coletar os resultados produzidos por U e apresentá-los para o testador. Um stub é um programa que substitui, na hora do teste, uma unidade chamada por U, simulando o comportamento dessa unidade com o mínimo de computação ou manipulação de dados (Delamaro et al., 2007). 6 Teste de Unidade Todas as técnicas de teste se aplicam ao teste de unidade. 20/01/2013 2 Teste unitário public class VetorOrdenadoDriver{ public static void testa(){ int erro = 0; VetorOrdenado aux=new VetorOrdenado(3); if (aux.getTMax() != 3) erro = 1; if (aux.ins(2) != true) erro = 2; if (aux.ins(3) != true) erro = 3; if (aux.ins(1) != true) erro = 4; if (aux.getNroElem() != 3) erro = 5; if (aux.getMin() != 1) erro = 6; if (aux.getMax() != 3) erro = 7; if (erro == 0){ System.out.println("Vetor s/erros!"); }else System.out.println( "Vetor c/erro nro: "+erro); } } VetorOrdenado public VetorOrdenado(int tam) public boolean ins(int v) public int getMax() public int getMin() public int getNroElem() public int getTMax() public int get(int i) public void ordena() 8 Teste de Integração Deve ser realizado após serem testadas as unidades individualmente. A ênfase é colocada na construção da estrutura do sistema. Deve-se verificar se as partes, quando colocadas para trabalhar juntas, não conduzem a erros. Requer grande conhecimento das estruturas internas do sistema e, por isso, geralmente é executado pela própria equipe de desenvolvimento (Delamaro et al., 2007). Todas as técnicas de teste se aplicam, com destaque para o teste funcional. 9 Teste de Sistema Uma vez integradas todas as partes, inicia-se o teste de sistema. Quando realizado por uma equipe de teste, o objetivo é verificar se as funcionalidades especificadas na especificação de requisitos foram corretamente implementadas. Quando realizado por usuários, o objetivo é validar o sistema (Teste de Aceitação). É uma boa prática que essa fase seja realizada por testadores independentes. Tipicamente, aplica-se teste funcional. 10 Teste de Regressão A cada novo módulo adicionado ou alteração, o software se modifica. Essas modificações podem introduzir novos defeitos, inclusive em funções que previamente funcionavam corretamente. Assim, é necessário verificar se as alterações efetuadas estão corretas e, portanto, deve-se reexecutar algum subconjunto de testes que já foi conduzido para garantir que as modificações não estão propagando efeitos colaterais indesejados (Pressman, 2006). 11 Teste de Aceitação O objetivo é verificar se o software desenvolvido atende as necessidades do cliente Testes de aceitação são “caixa preta” e são realizados pelo usuário Finalidade é demonstrar a conformidade com os requisitos do software Envolve treinamento, documentação e empacotamento 12 Teste de Aceitação Podem ser de duas categorias: Testes alfa Feitos pelo usuário, geralmente nas instalações do desenvolvedor, que observa e registra erros e/ou problemas Testes beta Feitos pelo usuário, geralmente em suas próprias instalações, sem a supervisão do desenvolvedor. Os problemas detectados são então relatados para o desenvolvedor 20/01/2013 3 13 Processo de Teste O processo de teste pode ser definido como um processo separado, mas intimamente ligado, ao processo de desenvolvimento. Isso porque eles têm metas e medidas de sucesso diferentes. Por exemplo, quanto menor a taxa de defeitos (razão entre o no de casos de teste que falham pelo total de casos de teste), mais bem sucedido é considerado o processo de desenvolvimento. Por outro lado, quanto maior a taxa de defeitos, considera-se mais bem sucedido o processo de teste (McGregor e Sykes, 2001). 14 Processo de Teste Independentemente da fase de teste, o processo de teste inclui as seguintes atividades: Planejamento Análise de Requisitos de Teste Projeto de Casos de Teste Implementação de Casos de Teste Execução Análise 15 Slide: 15 Testability Maturity Model (TMM) Test Organization Maturity (TOM) Testing Assessment Program (TAP) Evaluation&Test SW-CMM Key Process Area (CMM-I KPA) Metrics-based Testing Maturity Model (MB-TMM) – Em desenvolvimento Padrões de Qualidade para testes 16 Tipos de Teste São definidos em relação aos diversos tipos de requisitos descritos no documento de requisitos Alguns exemplos são: Teste funcional Teste de recuperação de falhas Teste de segurança Teste de performance Teste de carga, etc 17 Tipos de teste Teste funcional (regras de negócio) A funcionalidade geral do sistema em termos de regras de negócio (fluxo de trabalho) é testada Condições válidas e inválidas 18 Tipos de teste Teste de recuperação de falhas O software é forçado a falhar de diversas maneiras para que seja verificado o seu comportamento Bem como a adequação dos procedimentos de recuperação A recuperação pode ser automática ou exigir intervenção humana 20/01/2013 4 19 Tipos de teste Teste de segurança e controle de acesso Verifica se todos os mecanismos de proteção de acesso estão funcionando satisfatoriamente Teste de integridade de dados Verifica a corretude dos métodos de acesso à base de dados e a garantia das informações armazenadas 20 Tipos de teste Teste de performance Verifica tempo de resposta e processamento (para diferentes configurações, número de usuários, tamanho do BD, etc.) Exemplo Recuperar conta de usuário em x segundos São necessários definir Servidores e clientes, sistemas operacionais e protocolos utilizados 21 Tipos de teste Teste de volume (carga) Foca em transações do BD Verifica se o sistema suporta altos volumes de dados em uma única transação Verifica o número de terminais, modems e bytes de memória que é possível gerenciar 22 Tipos de teste Teste de estresse Verifica a funcionalidade do sistema em situações limite Pouca memória ou área em disco, alta competição por recursos compartilhados (ex: vários acessos/transações no BD ou rede) Exemplo: pode-se desejar saber se um sistema de transações bancárias suporta uma carga de mais de 100 transações por segundo ou se um sistema operacional pode manipular mais de 200 terminais remotos 23 Tipos de teste Teste de configuração ou portabilidade Verifica o funcionamento adequado do sistema em diferentes configurações de hardware/software O que testar Compatibilidade do software/hardware Configuração do servidor Tipos de conexões com a Internet Compatibilidade com o browser 24 Tipos de teste Teste de instalação e desinstalação Verifica a correta instalação e desinstalação do sistema para diferentes plataformas de hardware/software e opções de instalação O que testar Compatibilidade do hardware e software Funcionalidade do instalador/desinstalador sob múltiplas opções/condições de instalação GUI do programa instalador/desinstalador 20/01/2013 5 25 Tipos de teste Teste da GUI (usuário) Aparência e comportamento da GUI Navegação Consistência Aderência a padrões Tempo de aprendizagem Funcionalidade 26 Tipos de teste Teste de documentação Verifica se a documentação corresponde à informação correta e apropriada: online escrita help sensível ao contexto Teste de ciclo de negócios Garante que o sistema funciona adequadamente durante um ciclo de atividades relativas ao negócio 27 Automatização do Processo de Teste É um ponto importante para o sucesso no teste de um software. O processo de teste tende a ser extremamente dispendioso e é muito importante utilizar ferramentas de apoio ao teste para buscar aumentar a produtividade. Há diversos tipos de ferramentas de teste. Ainda assim, muito trabalho humano é necessário para criar os casos de teste adequados ao critério utilizado (Delamaro et al., 2007). 28 Referências Delamaro, M.E., Maldonado, J.C., Jino, M., Introdução ao Teste de Software, Série Campus – SBC, Editora Campus, 2007. Koscianski, A., Soares, M.S., Qualidade de Software, Editora Novatec, 2006. Myers, G.J., The Art of Software Testing, 2nd edition, John Wiley & Sons, 2004. McGregor, J.D., Sykes, D.A., A Practical Guide to Testing Object-Oriented Software, Addison- Wesley, 2001. Pressman, R.S., Engenharia de Software. 6a edição, McGrawHill, 2006.
Compartilhar