18
MUT# Uma ferramenta para Geração de Mutantes Clássicos para linguagem C#. Autores: Alexandre Freitag Fábio Valter Siscate Orientador: Prof. Dr. Flávio Moreira de Oliveira

M UT # Uma ferramenta para Geração de Mutantes Clássicos para linguagem C#. Autores: Alexandre Freitag Fábio Valter Siscate Orientador: Prof. Dr. Flávio

Embed Size (px)

Citation preview

Page 1: M UT # Uma ferramenta para Geração de Mutantes Clássicos para linguagem C#. Autores: Alexandre Freitag Fábio Valter Siscate Orientador: Prof. Dr. Flávio

MUT# Uma ferramenta para Geração de Mutantes Clássicos para linguagem C#.

Autores:

Alexandre FreitagFábio Valter Siscate

Orientador:

Prof. Dr. Flávio Moreira de Oliveira

Page 2: M UT # Uma ferramenta para Geração de Mutantes Clássicos para linguagem C#. Autores: Alexandre Freitag Fábio Valter Siscate Orientador: Prof. Dr. Flávio

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.

Page 3: M UT # Uma ferramenta para Geração de Mutantes Clássicos para linguagem C#. Autores: Alexandre Freitag Fábio Valter Siscate Orientador: Prof. Dr. Flávio

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

Page 4: M UT # Uma ferramenta para Geração de Mutantes Clássicos para linguagem C#. Autores: Alexandre Freitag Fábio Valter Siscate Orientador: Prof. Dr. Flávio

FUNDAMENTAÇÃO TEÓRICA

Teste unitário Arquivos de entrada Verificação do resultado

Como garantir a qualidade do Teste Unitário?

Método ou Método ou ClasseClasse

ClasseDriver

Page 5: M UT # Uma ferramenta para Geração de Mutantes Clássicos para linguagem C#. Autores: Alexandre Freitag Fábio Valter Siscate Orientador: Prof. Dr. Flávio

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.

Page 6: M UT # Uma ferramenta para Geração de Mutantes Clássicos para linguagem C#. Autores: Alexandre Freitag Fábio Valter Siscate Orientador: Prof. Dr. Flávio

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.

Código Código Fonte Fonte

OriginalOriginal

Gerador de Gerador de MutantesMutantes

M1

M2

M3

M4

M5

M6

ClasseDriver

Page 7: M UT # Uma ferramenta para Geração de Mutantes Clássicos para linguagem C#. Autores: Alexandre Freitag Fábio Valter Siscate Orientador: Prof. Dr. Flávio

TÉCNICAS DE MUTAÇÃO

Mutação Clássica

Mutação Orientada a Objetos.

if ( a < b ) a++;else b++;

if ( a > b ) a++;else b++;

class pai{ int x;}class filho extends filho{ int x;}

class pai{ int x;}class filho extends filho{ //int x;}

Page 8: M UT # Uma ferramenta para Geração de Mutantes Clássicos para linguagem C#. Autores: Alexandre Freitag Fábio Valter Siscate Orientador: Prof. Dr. Flávio

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

Page 9: M UT # Uma ferramenta para Geração de Mutantes Clássicos para linguagem C#. Autores: Alexandre Freitag Fábio Valter Siscate Orientador: Prof. Dr. Flávio

MUT#

Ferramenta para Geração de Mutação Clássica para

linguagem C#.

Page 10: M UT # Uma ferramenta para Geração de Mutantes Clássicos para linguagem C#. Autores: Alexandre Freitag Fábio Valter Siscate Orientador: Prof. Dr. Flávio

MUT#

Mutação Clássica.

Desenvolvida no Visual Studio 2005.

Mutação Seletiva.

Page 11: M UT # Uma ferramenta para Geração de Mutantes Clássicos para linguagem C#. Autores: Alexandre Freitag Fábio Valter Siscate Orientador: Prof. Dr. Flávio

MUT#

Operadores de Mutação Utilizados

Arithmetic Operator Replacement

AOR + ; ++ ; =+

- ; -- ; =-

Arithmetic Operator Insertion AOI - ; + -- ; ++

Arithmetic Operator Deletion AOD -- ; ++ - ; +

Relational Operator Replacement

ROR > ; <= ; ==

< ; >= ; !=

Assignment Operator Replacement

ASR -= ; += += ; -=

Conditional Operator Replacement

COR || ; && && ; ||

Page 12: M UT # Uma ferramenta para Geração de Mutantes Clássicos para linguagem C#. Autores: Alexandre Freitag Fábio Valter Siscate Orientador: Prof. Dr. Flávio

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

Page 13: M UT # Uma ferramenta para Geração de Mutantes Clássicos para linguagem C#. Autores: Alexandre Freitag Fábio Valter Siscate Orientador: Prof. Dr. Flávio

MUT# Algoritmo Analisador

Criar Projeto

Ler Arquivo XML

Ler Código-Fonte .cs

ParserMutação Seletiva

Geração de Mutantes

Análise IndividualSalva as Linhas

Carregar os arquivos

Construir diretórios

Page 14: M UT # Uma ferramenta para Geração de Mutantes Clássicos para linguagem C#. Autores: Alexandre Freitag Fábio Valter Siscate Orientador: Prof. Dr. Flávio

MUT#

Análise dos Resultados:

Page 15: M UT # Uma ferramenta para Geração de Mutantes Clássicos para linguagem C#. Autores: Alexandre Freitag Fábio Valter Siscate Orientador: Prof. Dr. Flávio

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.

Page 16: M UT # Uma ferramenta para Geração de Mutantes Clássicos para linguagem C#. Autores: Alexandre Freitag Fábio Valter Siscate Orientador: Prof. Dr. Flávio

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.

Page 17: M UT # Uma ferramenta para Geração de Mutantes Clássicos para linguagem C#. Autores: Alexandre Freitag Fábio Valter Siscate Orientador: Prof. Dr. Flávio

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.

Page 18: M UT # Uma ferramenta para Geração de Mutantes Clássicos para linguagem C#. Autores: Alexandre Freitag Fábio Valter Siscate Orientador: Prof. Dr. Flávio

MUT#

Apresentação do Sistema