Testes de Mutação baseado no artigo de Mário Correia, - ppt carregar
Testes de Mutação baseado no artigo de Mário Correia,
PublicouDiogo Antunes Alterado mais de 4 anos atrás
Apresentação em tema: "Testes de Mutação baseado no artigo de Mário Correia,"— Transcrição da apresentação:
1 Testes de Mutação baseado no artigo de Mário Correia,
Testes de Mutação, 2006, acessível emhttp://deec.fe.up.pt/~ei02070/tqs/ 7 Dezembro 2006
2 Índice Introdução Processo de teste com mutação Jester
Problemas com a técnica Comparação com testes de cobertura Notas finais
3 Introdução Objectivo dos Testes de Mutação:
Verificar a qualidade dos testes. Designações alternativas para Testes de Mutação: Test tester [Jester, 2005]; Testing the testing [Himsworth, 2003]; Automated error seeding [Jester, 2005].
4 Introdução Ideias chave:
Injecção de falhas no código original originam mutantes; A cada mutante é aplicado os testes originais: Se os testes passam -> testes devem ser melhorados; Se os testes falham -> o mutante diz-se neutralizado; Se os testes detectam as falhas artificiais podemos assumir que detectará falhas reais; Falhas injectadas pela aplicação de operadores de mutação.
5 Processo de teste com mutação
Strong mutation testing: Mutantes executados até terminarem; Permite a recuperação de falhas; Resultados muito precisos; Gasta muito tempo. Weak mutation testing: Mutantes terminam após detecção de falha; Não permite a recuperação de falhas; Resultados pouco precisos; Gasta pouco tempo.
6 Processo de teste com mutação
Firm mutation testing: Compromisso entre Strong e Weak mutation testing; Mutantes terminam execução algures entre o código do mutante e o fim do programa; Deve ser o mais cedo possível para poupar tempo; Mas suficientemente tarde para permitir recuperar de falhas.
7 Jester The Junit test tester:
Testes de Mutação em Java (com portings para Python e C#). Operadores de mutação: Modificação de números literais: ex.: 0 para 1; Alteração de true por false e vice-versa; Alteração de if( para if(true || ; Alteração de if( para if(false && .
8 Jester: tutorial O código exemplo para demonstrar o funcionamento do Jester será o problema dos Extensos dado nas aulas de TQS. Criar projecto e copiar ficheiros do Jester: jester.cfg: configuração do Jester; ignorelist.cfg: construções da linguagem a ignorar; mutations.cfg: mutações a aplicar; jester.jar: jar do Jester; lib/junit.jar: jar do Junit.
9 Jester: tutorial Lançar Jester em consola:
java -classpath .:lib/jester.jar:lib/junit.jar:src/ jester.TestTester extensos.test.TestExtensos src/ > resultados.txt
10 Após o Jester terminar, analisa-se os resultados:
Jester: tutorial Após o Jester terminar, analisa-se os resultados:
11 Jester: tutorial
12 Jester: tutorial
13 Jester: notas O Jester apenas executa se os testes passarem no código original; O Jester realiza as mutações directamente no código original -> manter cópia do projecto ou ter o projecto sob controlo de versões; O código deve ser compilado para a mesma pasta onde reside o código fonte (não pode ser para a pasta bin/ habitual no Eclipse).
14 Jester: avaliação da ferramenta
Jester it's really a "jest" of mutation, [Offutt, 2005] Operadores muito simples; Trocar 0 por 1 é praticamente inútil pois os testes irão detectá-lo de certeza -> Operadores instáveis; Jester resume-se a testar condições. Ferramenta muito ineficiente.
15 Jester: avaliação da ferramenta
[Bybro, 2003] propõe uma ferramenta de mutação para Java, com uma vasta gama de operadores:
16 Problemas com a técnica
Vasto número de mutantes: Escolha criteriosa dos operadores de mutação. Processo dispendioso em tempo: Eliminação de mutantes equivalentes - mutantes com o mesmo comportamento que o original; Processo Weak ou Firm. Detecção de mutantes equivalentes. Neutralização dos chamados stubborn mutants: mutantes não equivalentes mas difíceis de neutralizar.
17 Comparação com testes de cobertura
Testes de Cobertura de código: Verificam se todas as possíveis condições de execução de um programa, são cobridas pelos testes; Saber que uma instrução não está a ser executada pelos testes prova que não está a ser testada; Contudo, o inverso não é verdade: Se uma linha de código é executada, isso não significa que está a ser verdadeiramente testada. Testes de Mutação: Alteram o código pela introdução de falhas, permitindo verificar se efectivamente os testes cobrem a situação que foi alterada.
18 Notas finais Testes de Mutação ajudam a melhorar a qualidade dos testes; Podem guiar o processo de criação de testes; Usados em complemento com outro tipo de testes, em especial testes de cobertura de código; Técnica valiosa para sistemas confiáveis e tolerantes a falhas, em conjunto com injecção de falhas por hardware; Mutação pode ser aplicada a outras áreas: ex.: geração de dados de teste complexos [Shan and Zhu, 2006].
Carregar ppt "Testes de Mutação baseado no artigo de Mário Correia,"
Análise do Rational Suite
Creating an Eclipse-based IDE for the D programming language
Teste de Software 11: Teste baseado em falhas
Web Services Passo a passo Consumo de serviço SOAP em Java 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.
Mutação de Interface Interface Mutation: An Approach for Integration Testing Marcio E. Delamaro José C. Maldonado Aditya P. Mathur.