MUTANTES Rafael Nemetz Porto Alegre, 5 de Outubro de 2009.
Transcript of MUTANTES Rafael Nemetz Porto Alegre, 5 de Outubro de 2009.
![Page 1: MUTANTES Rafael Nemetz Porto Alegre, 5 de Outubro de 2009.](https://reader035.fdocumentos.tips/reader035/viewer/2022062318/552fc10c497959413d8c3381/html5/thumbnails/1.jpg)
MUTANTES
Rafael Nemetz
Porto Alegre, 5 de Outubro de 2009
![Page 2: MUTANTES Rafael Nemetz Porto Alegre, 5 de Outubro de 2009.](https://reader035.fdocumentos.tips/reader035/viewer/2022062318/552fc10c497959413d8c3381/html5/thumbnails/2.jpg)
Conteúdo• Apresentação do artigo Hints on Test Data Selection: Help for the
Practicing Programmer. Autor Principal: Richard A. DeMillo – Georgia Institute of Techonolgy. (1978)
• Motivação para utilização da técnica• Exemplos simples de mutantes em Fortran• Apresentação da análise dos mutantes
• Reforço sobre teste da análise de mutantes• Conceitos modernos e etapas do teste
• Apresentação dos pontos mais relevantes do artigo: Design of Fault-Tolerant Systems Using Mutants. Autores: Deniel Bortolás, Avelino Zorzo, Eduardo Bezerra e Flávio de Oliveira.
• Aplicação da técnica dos códigos mutantes
![Page 3: MUTANTES Rafael Nemetz Porto Alegre, 5 de Outubro de 2009.](https://reader035.fdocumentos.tips/reader035/viewer/2022062318/552fc10c497959413d8c3381/html5/thumbnails/3.jpg)
Mutantes - 1978Motivações
- Empresas não querem investir em teste;
- A política das companhias é gastar o mínimo de tempo com testes;
- A impossibilidade de garantir 100% o funcionamento correto de um software dificulta a justificativa de quanto tempo foi gasto com testes;
- O critério de parada padrão adotado é a redução da função da curva da porcentagem de erros encontrados durante o período de testes;
- O autor sugere que aplicando as técnicas que vai apresentar, as empresas podem garantir, com segurança e em pouco tempo, um grau satisfatório de confiabilidade do software.
![Page 4: MUTANTES Rafael Nemetz Porto Alegre, 5 de Outubro de 2009.](https://reader035.fdocumentos.tips/reader035/viewer/2022062318/552fc10c497959413d8c3381/html5/thumbnails/4.jpg)
Mutantes - 1978• The coupling effect (efeito do acoplamento)
– Programadores criam programas quase corretos;
– Erros complexos estão acoplados a erros simples;
– A maioria dos erros cometidos por programadores são conhecidos e repetem-se com freqüência.
![Page 5: MUTANTES Rafael Nemetz Porto Alegre, 5 de Outubro de 2009.](https://reader035.fdocumentos.tips/reader035/viewer/2022062318/552fc10c497959413d8c3381/html5/thumbnails/5.jpg)
Mutantes - 1978
• O Método da Mutação de Programas– Se um conjunto casos de teste for aplicado a um programa e o resultado
falhar, pode-se afirmar que o programa não está correto. E se o caso de teste funcionar corretamente?• O programa pode estar perfeito, sem falhas;• Os testes não eram abrangentes o suficiente para fazer aparecer um defeito;• Neste caso são geradas mutações do programa. São criadas novas versões para ele,
modificando, em cada versão, apenas um erro simples, comum de programadores. Ex.: substituição de um > por >=, de um + por – ou de um && por ||.
• Ao rodar os testes em todos os programas mutantes, 2 situações podem ocorrer:– 1) O programa mutante apresenta resultados diferentes do programa original
» O programa mutante é dito “dead”, pois o erro inserido nele a partir do programa original foi percebido pelo conjunto de testes.
– 2) O programa mutante apresenta o mesmo resultado do programa original» O programa mutante é dito “live”, pois ou os testes não foram suficientes para fazer aparecer o
erro (testes são fracos e precisam ser melhorados) ou o programa mutante e o original são equivalentes.
![Page 6: MUTANTES Rafael Nemetz Porto Alegre, 5 de Outubro de 2009.](https://reader035.fdocumentos.tips/reader035/viewer/2022062318/552fc10c497959413d8c3381/html5/thumbnails/6.jpg)
Mutantes - 1978• Exemplo simples em Fortran:
- Para os casos de teste 1, 2 e 3, todos os programas mutantes apresentam o resultado correto;
- Ao se inserir o caso de teste 4, os programas M2, M3 e M4 apresentam resultados diferentes do programa original e podem ser considerados “deads”;
- Apenas M1 fica “live”, pois, para este algoritmo, é indiferente se o laço começa em 1 ou 2. M1 é equivalente ao original;
- Assim, uma vez que os casos de teste de 1 a 4 deixam apenas mutantes “live” equivalentes, pode-se concluir que os testes são adequados.
Ps.: A análise de equivalência de códigos é não é decidível, mas existem pesquisas com bons resultados nesta área.
![Page 7: MUTANTES Rafael Nemetz Porto Alegre, 5 de Outubro de 2009.](https://reader035.fdocumentos.tips/reader035/viewer/2022062318/552fc10c497959413d8c3381/html5/thumbnails/7.jpg)
Teste de Análise de Mutantes Considerações Importantes
• Ao invés de se basear na especificação do sistema, como fazem os testes da “caixa preta”, o teste é baseado em uma lista de erros comumente cometidos por programadores, a fim de elaborar um caso de teste;
• Sua aplicação pode ser automatizada;
• Seu principal objetivo, que os outros tipos de testes não fazem, é avaliar se um determinado conjunto de casos de teste é adequado e, se não for, auxilia na elaboração de testes melhores;
• Necessita de um conjunto de testes inicial;
• Cada linguagem possui diferentes erros que os programadores costumam cometer e estes erros precisam ser estudados;
![Page 8: MUTANTES Rafael Nemetz Porto Alegre, 5 de Outubro de 2009.](https://reader035.fdocumentos.tips/reader035/viewer/2022062318/552fc10c497959413d8c3381/html5/thumbnails/8.jpg)
Teste de Análise de Mutantes Principais Etapas
• Inicia com três elementos principais: código original, lista de erros comuns para a linguagem e conjunto de testes inicial;
• Possui as seguintes etapas:
– Geração dos Programas Mutantes: gerados a partir de uma única modificação sintática no código original. A modificação está baseada em algum dos erros da lista e deve ser sintaticamente correta;
– Aplicação dos testes iniciais no programa original: deve ser realizada até que os testes não acusem mais falhas e o programa esteja funcionado corretamente para os testes;
– Aplicação dos testes inicias em todos os programas mutantes;
– Comparação dos resultados: se houverem mutantes vivos, novos testes precisam ser elaborados;
– Análise de adequação: o conjunto de testes é considerado adequado se a maior parte dos mutantes for considerada morta.
![Page 9: MUTANTES Rafael Nemetz Porto Alegre, 5 de Outubro de 2009.](https://reader035.fdocumentos.tips/reader035/viewer/2022062318/552fc10c497959413d8c3381/html5/thumbnails/9.jpg)
Teste de Análise de Mutantes Operadores de Mutação
![Page 10: MUTANTES Rafael Nemetz Porto Alegre, 5 de Outubro de 2009.](https://reader035.fdocumentos.tips/reader035/viewer/2022062318/552fc10c497959413d8c3381/html5/thumbnails/10.jpg)
Teste de Análise de Mutantes Operadores de Mutação
• Tipos de Operadores de Mutação:
– Mutação de Operadores: troca de operadores (relacionais, lógicos, aritméticos, ...);
– Mutação de Cláusulas: modificar uma cláusula inteira do programa ou até mudar seus elementos sintáticos, como trocar um while por do while;
– Mutação de Variáveis: troca de identificadores, como trocas entre referências a variáveis escalares ou a vetores;
– Mutação de constantes: troca de constantes por variáveis, por exemplo.
![Page 11: MUTANTES Rafael Nemetz Porto Alegre, 5 de Outubro de 2009.](https://reader035.fdocumentos.tips/reader035/viewer/2022062318/552fc10c497959413d8c3381/html5/thumbnails/11.jpg)
MOD (Mutation Oriented Diversity)
• Estratégia de tolerância a falhas que utiliza técnicas de programas mutantes, mas agora os mutantes são equivalentes;
• Existe um sistema de votação para tomada de decisão a respeito das respostas fornecidas pelos mutantes;
• Já na primeira etapa necessita componentes de software que possuam diversidade, como os COTS (Commercial of the shelf). Compontes com diversidade são necessários para que se possam gerar mutantes equivalentes.
• Os mutantes são construídos através da modificação do código fonte de algumas classes.
![Page 12: MUTANTES Rafael Nemetz Porto Alegre, 5 de Outubro de 2009.](https://reader035.fdocumentos.tips/reader035/viewer/2022062318/552fc10c497959413d8c3381/html5/thumbnails/12.jpg)
MOD (Mutation Oriented Diversity)Aplicação da Estratégia
![Page 13: MUTANTES Rafael Nemetz Porto Alegre, 5 de Outubro de 2009.](https://reader035.fdocumentos.tips/reader035/viewer/2022062318/552fc10c497959413d8c3381/html5/thumbnails/13.jpg)
MOD (Mutation Oriented Diversity)Exemplo de Mutações Java
![Page 14: MUTANTES Rafael Nemetz Porto Alegre, 5 de Outubro de 2009.](https://reader035.fdocumentos.tips/reader035/viewer/2022062318/552fc10c497959413d8c3381/html5/thumbnails/14.jpg)
MOD (Mutation Oriented Diversity)Estrutura de um Sistema MOD
![Page 15: MUTANTES Rafael Nemetz Porto Alegre, 5 de Outubro de 2009.](https://reader035.fdocumentos.tips/reader035/viewer/2022062318/552fc10c497959413d8c3381/html5/thumbnails/15.jpg)
MOD (Mutation Oriented Diversity)Exemplo de um Controlador
![Page 16: MUTANTES Rafael Nemetz Porto Alegre, 5 de Outubro de 2009.](https://reader035.fdocumentos.tips/reader035/viewer/2022062318/552fc10c497959413d8c3381/html5/thumbnails/16.jpg)
MOD (Mutation Oriented Diversity)Estudo de Caso - Calculadora
![Page 17: MUTANTES Rafael Nemetz Porto Alegre, 5 de Outubro de 2009.](https://reader035.fdocumentos.tips/reader035/viewer/2022062318/552fc10c497959413d8c3381/html5/thumbnails/17.jpg)
MOD (Mutation Oriented Diversity)Estudo de Caso - Resultados
• A fim de obter algumas avaliações sobre a eficácia do MOD, falhas foram injetadas em todos os métodos de cada componente da calculadora. Os seguintes resultados foram obtidos:
![Page 18: MUTANTES Rafael Nemetz Porto Alegre, 5 de Outubro de 2009.](https://reader035.fdocumentos.tips/reader035/viewer/2022062318/552fc10c497959413d8c3381/html5/thumbnails/18.jpg)
Referências• DeMillo, R.A. & Lipton, R.J. Sayward, F.G. Hints on Test Data Selection: Help for the Practicing
Programmer . Georgia Institute of Technology. 1978.
• Bortolás, D. et al. Design of Fault-Tolerant Systems Using Mutants.
• Bortolás, D. Diversidade Orientada à Mutação para Melhoria de Manutenção e Confiabilidade. Dissertação (Mestrado). 2004.