Engenharia de Software Prof. Raquel Silveira O que são testes? Teste é um processo de avaliar um sistema ou um componente de um sistema para verificar se ele satisfaz os requisitos especificados ou identificar diferenças entre resultados esperados e obtidos. [ANSI/IEEE Standard 729,1983] Processo de executar um programa com objetivo de encontrar erros. [Myers, 1979] São pontuais; Antigamente... São previsíveis; São finitos; Testes não verificam completamente a saída de um programa, pois as entradas são infinitas. No passado, a tarefa de efetuar testes em software era considerada secundária. Os testes eram feitos por desenvolvedores. Os usuários eram envolvidos para aprovar o resultado dos testes ou para gerar massa de dados. Atualmente... Naturalmente o assunto não é tão simples Empresas tem visto a atividade de teste como prioritária para a maior qualidade de suas aplicações. Não testar o software pode gerar perdas financeiras e de imagem irreparáveis. Complexidade das aplicações que estão cada vez mais distribuídas. Erros nem sempre são óbvios; Erros diferentes podem ter a mesma manifestação; Saber que um programa não está correto não necessariamente é saber como corrigir o erro. 1
Verificação = Validação? Onde o teste de software influencia no desenvolvimento da aplicação - Nós construímos o sistema correto? VERIFICAÇÃO - Nós construímos corretamente o sistema? VALIDAÇÃO Onde o teste de software influencia no desenvolvimento da aplicação Falhas no Software 1/3 das falhas de software poderiam ser evitadas com teste; Aproximadamente 50% das falhas só são encontradas em produção. Falhas custam caro - Segundo uma pesquisa do Departamento de Comércio dos EUA, publicada em 2002, falhas de software são tão comuns e tão danosas que se estima que causem prejuízo anual de mais de 60 bilhões de dólares para a economia americana. 2
Você confia no que faz? Cliente: Isso aqui não está funcionando! Programador: Mas como?! Na minha máquina estava funcionando até ontem. Garanta o seu trabalho, seja profissional Errado -Num mundo capitalizado não há tempo para teste; -O cliente não quer saber como é feito, ele quer que funcione. Realidade -O cliente não quer saber se X virou Y. Ele quer que o problema não aconteça e se acontecer seja corrigido rapidamente. -Não se consegue qualidade e confiabilidade sem teste. Pré-Conceitos O testador é um inimigo do desenvolvedor; A equipe de teste pode ser montada com os desenvolvedores menos qualificados, pois qualquer um pode testar sistemas; Geralmente temos as seguintes situações: Depois eu escrevo o plano de testes... Vamos deixar os testes para a próxima fase... Na minha máquina funcionou... Temos que entregar o produto na semana que vem... Profissionais em teste de software Fases do teste de software 3
Modelo de integração entre os processos de desenvolvimento e teste Categorias de teste Teste de caixa branca (White box) Teste de caixa preta (Black box) Teste de Caixa Branca Testes de unidade de código; Testam parte da solução; São escritos e mantidos pelo programador e devem estar sempre atualizados. Teste de Caixa Branca Quando construímos um teste de unidade, o principal desafio é isolar a classe ou trecho de código que está sendo testado, para que nenhuma outra classe do sistema seja envolvida no teste e influencie no resultado esperado. Cobertura dos testes Cobertura dos testes Dificilmente consegue-se 100% de cobertura de testes. Quanto maior cobertura dos testes na aplicação, maior a confiabilidade nas alterações e novos recursos. Aplicações cobertas por bons testes propiciam: -Facilidade de manutenção; - Menos problemas e relação de custos em manutenção. 4
Testes de caixa preta Testes funcionais e de aceitação; Testes de integração; Testam a solução completa. Princípios de qualidade e controle de qualidade Suportabilidade Supportability Funcionalidade Functionality FURPS Desempenho Perfomance Usabilidade Usability Confiabilidade Reliability Funcionalidade De acordo com a especificação funcional. - Teste funcional; - Teste de regressão; - Teste de volume; - Teste de segurança. Usabilidade Confiabilidade Facilidade de uso do sistema pelos usuários. - Teste de interface; - Teste de usabilidade. Confiabilidade do sistema, a permanência de operação, a integridade dos dados, a confiabilidade da estrutura e da aplicação. - Teste de integridade; - Teste de estrutura; - Teste de estresse; - Smoke teste. 5
Desempenho Suportabilidade Velocidade de processamento da informação. - Teste de avaliação de desempenho; - Teste de contenção; - Teste de carga; - Perfil de desempenho. Capacidade do programa de funcionar em diversos ambientes diferentes. - Teste de configuração; - Teste de instalação. de software Um cliente de vendas contrata uma empresa de teste para validar seu site, que será lançado ao público. Um dos requisitos é efetuar o login no seu software utilizado usuário e senha. O cliente especifica o seguinte requisito: Efetuar o login na aplicação com um login válido e senha de, no mínimo 6 (seis) caracteres. O primeiro passo da área de teste é criar um Plano de Teste que irá ter, dentre outros, os seguintes itens: - Requisitos que serão testados; - Técnicas utilizadas; - Documentos utilizados; - Cronograma; - Recursos. 6
O passo após criar o Plano de Teste é criar o(s) caso(s) de teste que deve conter: - Passos - Resultados esperados - Ambiente onde será testado - Pré-condições - Massa de dados O caso de uso apresenta o seguinte fluxo de exceção: Senha Inválida 1. Este fluxo inicia no passo 3 do sub-fluxo Efetuar Login, quando o usuário informa uma senha com a quantidade de caracteres menor que 6. 2. O sistema exibe a seguinte mensagem: Senha inválida.. 3. O usuário confirma o recebimento da mensagem. 4. O caso de uso retorna ao passo 2 do Fluxo Básico. Exemplo de um caso de teste: Título: Senha Inválida Ambiente: Windows XP Pré-Condições: - Possuir um usuário válido. Passo 1. O usuário inicia a aplicação. 2. O usuário preenche os campos Login e Senha conforme as idéias de teste. Resultado Esperado Verificar se os campos são preenchidos corretamente. 3. O usuário seleciona Efetuar Login. Verificar se quando o usuário informa uma senha menor que 6 caracteres, o sistema exibe a mensagem: Senha inválida.. 4. O usuário confirma a mensagem. Do requisito do cliente, podemos criar as seguintes idéias de teste: Com os casos de teste criados, podemos executá-los na aplicação. Após a execução de todos os testes e correção dos defeitos, o sistema pode ser entregue ao cliente. Caso ocorra algum erro, reportamos um defeito com os seguintes dados: Sumário Passo para reprodução Severidade Ambiente Testes são necessários! É preciso verificar o código, sempre; É preciso garantir que os requisitos estão implementados (e corretos); É preciso ter segurança para realizar alterações; É preciso ser criativo para explorar o máximo possível com os testes. Não é aconselhado usar testes mentirosos. 7