Testes de Software Andrew Diniz da Costa [email protected] Agenda Conceitos gerais Principais Tipos de Teste Testes Unitários Testes Funcionais O que são testes de software? Atividades realizadas ao longo do desenvolvimento,que verificam se o software e seus componentes atendem às suas especificações. Testes de Software garantem que o sistema foi desenvolvido corretamente e o mesmo possui as características de qualidade esperadas. O que são testes de software? Atividades controladas visando identificar problemas Envolve ações que vão do levantamento de requisitos até a execução dos testes propriamente ditos Verifica “resultados encontrados” X “resultados esperados” Prevenir, localizar e documentar defeitos Minimizar o impacto potencial de defeitos, detectando-os antes da entrega do produto ao cliente Por que testar? Aumentar a Qualidade dos produtos gerados, através da prevenção de defeitos, realização de testes e validações no desenvolvimento de software. Garantir que o produto gerado atenda às expectativas do cliente. Garantir que o produto gerado atende às especificações (requisitos funcionais e não funcionais) do sistema. Garantir que o produto gerado funciona corretamente no ambiente de produção. Garantir que alterações realizadas no sistema e em seus componentes gerem os resultados esperados e não comprometam a integridade do sistema. Reduzir ao máximo a incidência de defeitos nos produtos entregues, bem como a sua severidade. Custo de Correção O custo de 1 problema é 200 vezes maior se for reparado após a implantação Estágio 1a2 Requisitos 5 Projeto 10 Codificação 20 Teste de Unidade 50 Teste de Aceitação 200 Custo Relativo de Reparo Manutenção Tipos de Testes Teste de Unidade Teste de Integração Teste de Regressão Teste de Sistema Teste de Aceitação Teste de Integridade de Dados e de Banco de Dados Teste Funcional •Diferenças Teste de Interface com o usuário •Diferençasentre entrealguns algunstipos tiposde de testes Teste de desempenho testesnão nãosão sãomuito muitoclaras claras Teste de Carga •Ex.: •Ex.:Teste TesteFuncional FuncionalXXTeste Teste de Teste de Stress deSistema SistemaXXTeste Testede de Aceitação Aceitação Teste de Segurança •Você Teste de Tolerância a Falhas •Vocêprovavelmente provavelmentedeve deveter terem em mente Teste de Recuperação mentealgum algumtipo tipode deteste testeque que não nãoestá estánessa nessalista lista☺ ☺ Teste de Configuração ... Boa Prática É importante fazer um bom levantamento de Requisitos Identificar os cenários O que é obrigatório Fazer protótipo de tela Tirar ambigüidades Bons casos de uso facilitam o trabalho dos testes Caso contrário, o trabalho que deveria ser realizado no levantamento de requisitos vai ser realizado no levantamento dos casos de testes. Boas Práticas Os testes devem ser repetíveis Deve-se prevenir a propagação de defeitos entre as fases do desenvolvimento Testes de sistemas ou funcionais devem ser executados por uma equipe preparada e independente da equipe de desenvolvimento. Devem existir ambientes isolados para a realização dos diversos tipos de teste Implementar testes automatizados Focar os testes na parte crítica do sistema Testes Unitários Introdução Teste Unitário O teste unitário é implementado com base no menor elemento testável (unidades) do software. Implica em testar a estrutura interna (como fluxo lógico e de dados), a função da unidade e os comportamentos observáveis. O que é unidade? Componente, classe, método, etc. Caixa Branca Tecnologias JUnit e DBUnit JUnit Realiza testes unitários Ex: Verifica se algum método realiza o cálculo esperado. API - http://www.junit.org/ Demonstração E o DBUnit? Motivação CPF Nome Endereço 11111111 João Rua da Passagem 122 22222222 Maria Rua Candido Mendes 22 33333333 Ana Av. Ns. Copacabana 131 CPF Nome Endereço 11111111 João Rua da Passagem 122 22222222 Maria Rua Candido Mendes 22 33333345 Ana Av. Ns. Copacabana 131 Motivação ... ... Motivação Modelo Relacional Procedure (.....) Resultados Esperados Tabela Temporária Coluna1 Coluna2 Coluna3 Coluna1 Coluna2 Coluna3 xxxxxx xxxxx xxxxx xxxxxx xxxxx xxxxx xxxxx xxx xx xxxxx xxx xx xxx xx xx xxx DBUnit Extensão dos casos de teste do JUnit Consistência do modelo de dados Oferece mecanismos de exportação Carga do banco de dados antes dos testes Métodos de comparação Demonstração Conclusão DBUnit é uma extensão do JUnit DBUnit realiza testes unitários voltados para banco de dados DBUnit é uma API gratuita. Testes Funcionais Testes Funcionais Teste caixa preta que simula a interação do usuário com o sistema Geralmente baseado em cenários de testes extraídos dos casos de uso ou de descrições das funcionalidades Representam um dos testes de maior nível de granularidade Utilizado em fases mais avançadas do ciclo de desenvolvimento Teste Funcional Documentação de Testes Qual a importância de documentar casos de teste? Descrever o passo a passo de cada caso de teste. Importante para permitir a disseminação do conhecimento e para ajudar na manutenção. Existem diversas ferramentas no mercado que auxiliam nesse processo de documentação, como: Rational Test Manager Rational Quality Manager ... Demonstração do Rational Test Manager Fim!! Perguntas? 1/8/2011 @LES/PUC-Rio 27