180 likes | 287 Views
Mut#. Autores: Alexandre Freitag Fábio Valter Siscate Orientador: Prof. Dr. Flávio Moreira de Oliveira. Uma ferramenta para Geração de Mutantes Clássicos para linguagem C#. Motivação.
E N D
Mut# Autores: Alexandre Freitag Fábio Valter Siscate Orientador: Prof. Dr. Flávio Moreira de Oliveira Uma ferramenta para Geração de Mutantes Clássicos para linguagem C#.
Motivação • "O custo de correção de defeitos tende a aumentar quanto mais tarde o defeito for encontrado, numa proporção de 10x." • Glenford Myers em 1979 • Qualidade no software é importante. • Processo de teste é importante. • E quem garante a qualidade do teste? • Uma técnica é a Análise de Mutantes.
Fundamentação Teórica • Classificar os desvios: • Falha - Inconsistências no código-fonte • Erro – Estados interno inconsistente • Defeito - Desvio da especificação quanto a regra de negócio • Técnicas: • Funcional (Black-box) • Estrutural (White-box) • Níveis de teste: • Teste Unitário: testa a classe, método ou trechos menores do código • Teste de Integração: testa integração em componentes • Teste de Sistema: funcional, com visão do usuário • Teste de Aceitação: executado pelo usuário
Fundamentação Teórica • Teste unitário • Arquivos de entrada • Verificação do resultado • Como garantir a qualidade do Teste Unitário? Classe Driver Método ou Classe
Análise de Mutantes • Criada por DeMillo no final da década de 70. • Pequenas alterações sintáticas no código fonte original. • Objetivo: Desvendar se o teste unitário consegue identificar os códigos mutantes.
Análise de Mutantes • Execução de diversas instâncias da classe no mesmo teste unitário. • Execução do teste unitário nos mutantes. • Mutantes mortos. M1 M4 ClasseDriver Código Fonte Original Gerador de Mutantes M2 M5 M3 M6
Técnicas de Mutação • Mutação Clássica • Mutação Orientada a Objetos.
Operadores de Mutação • Regras definidas para alteração do código. • Por exemplo: • OAR: Arithmetic Operator Replacement; • ROR: Relational Operator Replacement; • IHD: Hiding Variable Deletion; • OAO: Argument Order Change
Mut# Ferramenta para Geração de Mutação Clássica para linguagem C#.
Mut# • Mutação Clássica. • Desenvolvida no Visual Studio 2005. • Mutação Seletiva.
Mut# • Arquivos de Entrada • Código Original C#. • Arquivo XML. • Escolha do método: • Análise Sintática (Gerador de Parser). • Estrutura de Dados (Algoritmo Analisador).
Mut# • Algoritmo Analisador Criar Projeto Ler Arquivo XML Ler Código-Fonte .cs Geração de Mutantes Mutação Seletiva Parser Carregar os arquivos Construir diretórios Análise Individual Salva as Linhas
Mut# • Análise dos Resultados:
Mut# • Conclusão: • Objetivo atingido. • Característica única. • Limitações: • Somente mutação clássica. • Programa não faz verificação sintática. • Mesmo operador de mesmo grupo em uma linha.
Mut# • Trabalhos Futuros: • Integração com NUnit. • Mutação orientada a objeto. • Utilização do gerador de parser. • Expansão da quantidade de operadores de mutação.
Mut# • Referências Bibliográficas: A. BARTIÉ. Garantia da Qualidade de Software. Editora Campus,Inc, 2002. ISBN 8535211241 R. A. DeMillo, R. J. Lipton, and F. G. Sayward. Hints on test data selection: Help for the practicing programmer. Computer, 11(4):34–41, 1978. ISSN 0018-9162. R. A. DeMillo, R. J. Lipton, and F. G. Sayward. Program mutation: A new approach to program testing. Infotech state of the art report, 2:107–128, 1979. Glenford J. Myers. Art of Software Testing. John Wiley & Sons, Inc., New York, NY, USA, 1979. ISBN 0471043281.
Mut# Apresentação do Sistema