mutantes rafael nemetz porto alegre, 5 de outubro de 2009

18
MUTANTES Rafael Nemetz Porto Alegre, 5 de Outubro de 2009

Upload: internet

Post on 17-Apr-2015

118 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: MUTANTES Rafael Nemetz Porto Alegre, 5 de Outubro de 2009

MUTANTES

Rafael Nemetz

Porto Alegre, 5 de Outubro de 2009

Page 2: MUTANTES Rafael Nemetz Porto Alegre, 5 de Outubro de 2009

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

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

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

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

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

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

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

Teste de Análise de Mutantes Operadores de Mutação

Page 10: MUTANTES Rafael Nemetz Porto Alegre, 5 de Outubro de 2009

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

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

MOD (Mutation Oriented Diversity)Aplicação da Estratégia

Page 13: MUTANTES Rafael Nemetz Porto Alegre, 5 de Outubro de 2009

MOD (Mutation Oriented Diversity)Exemplo de Mutações Java

Page 14: MUTANTES Rafael Nemetz Porto Alegre, 5 de Outubro de 2009

MOD (Mutation Oriented Diversity)Estrutura de um Sistema MOD

Page 15: MUTANTES Rafael Nemetz Porto Alegre, 5 de Outubro de 2009

MOD (Mutation Oriented Diversity)Exemplo de um Controlador

Page 16: MUTANTES Rafael Nemetz Porto Alegre, 5 de Outubro de 2009

MOD (Mutation Oriented Diversity)Estudo de Caso - Calculadora

Page 17: MUTANTES Rafael Nemetz Porto Alegre, 5 de Outubro de 2009

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

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.