A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Porto Alegre, 5 de Outubro de 2009

Apresentações semelhantes


Apresentação em tema: "Porto Alegre, 5 de Outubro de 2009"— Transcrição da apresentação:

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

2 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

3 Mutantes - 1978 Motivaçõ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.

4 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.

5 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.

6 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.

7 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;

8 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.

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

10 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.

11 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.

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

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

14 MOD (Mutation Oriented Diversity) Estrutura de um Sistema MOD

15 MOD (Mutation Oriented Diversity) Exemplo de um Controlador

16 MOD (Mutation Oriented Diversity) Estudo de Caso - Calculadora

17 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:

18 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 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)


Carregar ppt "Porto Alegre, 5 de Outubro de 2009"

Apresentações semelhantes


Anúncios Google