m ut # uma ferramenta para geração de mutantes para linguagem c#
TRANSCRIPT
![Page 1: M UT # Uma ferramenta para Geração de Mutantes para linguagem C#](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc11a497959413d8c98a4/html5/thumbnails/1.jpg)
MUT# Uma ferramenta para Geração de Mutantes para linguagem C#.
![Page 2: M UT # Uma ferramenta para Geração de Mutantes para linguagem C#](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc11a497959413d8c98a4/html5/thumbnails/2.jpg)
APRESENTAÇÃO
Autores: Alexandre Freitag Fábio Valter Siscate
Orientador: Prof. Dr. Flávio Moreira de Oliveira
![Page 3: M UT # Uma ferramenta para Geração de Mutantes para linguagem C#](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc11a497959413d8c98a4/html5/thumbnails/3.jpg)
AGENDA
Motivação Fundamentação Análise de Mutantes Mut# Conclusão Trabalhos Futuros Referências Bibliográficas
![Page 4: M UT # Uma ferramenta para Geração de Mutantes para linguagem C#](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc11a497959413d8c98a4/html5/thumbnails/4.jpg)
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 5: M UT # Uma ferramenta para Geração de Mutantes para linguagem C#](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc11a497959413d8c98a4/html5/thumbnails/5.jpg)
FUNDAMENTAÇÃO TEÓRICA Classificar os desvios:
Falha - Inconsistências no código-fonte Erro - Resultados esperados inválidos 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 interface entre as classes Teste de Sistema: funcional, com visão do usuário Teste de Aceitação: executado pelo usuário
![Page 6: M UT # Uma ferramenta para Geração de Mutantes para linguagem C#](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc11a497959413d8c98a4/html5/thumbnails/6.jpg)
FUNDAMENTAÇÃO TEÓRICA
Teste unitário Arquivos de entrada Verificação do resultado
Como garantir a qualidade do Teste Unitário?
Teste UnitárioTeste Unitário
Método ou Método ou ClasseClasse
![Page 7: M UT # Uma ferramenta para Geração de Mutantes para linguagem C#](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc11a497959413d8c98a4/html5/thumbnails/7.jpg)
ANÁLISE DE MUTANTES
Criada por DeMillo no final da década de 70.
Pequenas alterações sintáticas no código fonte original.
Desvendar se o teste unitário consegue identificar os códigos mutantes.
![Page 8: M UT # Uma ferramenta para Geração de Mutantes para linguagem C#](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc11a497959413d8c98a4/html5/thumbnails/8.jpg)
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
![Page 9: M UT # Uma ferramenta para Geração de Mutantes para linguagem C#](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc11a497959413d8c98a4/html5/thumbnails/9.jpg)
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 10: M UT # Uma ferramenta para Geração de Mutantes para linguagem C#](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc11a497959413d8c98a4/html5/thumbnails/10.jpg)
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 11: M UT # Uma ferramenta para Geração de Mutantes para linguagem C#](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc11a497959413d8c98a4/html5/thumbnails/11.jpg)
MUT#
Ferramenta para Geração de Mutação Clássica para
linguagem C#.
![Page 12: M UT # Uma ferramenta para Geração de Mutantes para linguagem C#](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc11a497959413d8c98a4/html5/thumbnails/12.jpg)
MUT#
Mutação Clássica.
Desenvolvida no Visual Studio 2005.
NUnit.
Mutação Seletiva.
![Page 13: M UT # Uma ferramenta para Geração de Mutantes para linguagem C#](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc11a497959413d8c98a4/html5/thumbnails/13.jpg)
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 14: M UT # Uma ferramenta para Geração de Mutantes para linguagem C#](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc11a497959413d8c98a4/html5/thumbnails/14.jpg)
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 15: M UT # Uma ferramenta para Geração de Mutantes para linguagem C#](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc11a497959413d8c98a4/html5/thumbnails/15.jpg)
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 16: M UT # Uma ferramenta para Geração de Mutantes para linguagem C#](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc11a497959413d8c98a4/html5/thumbnails/16.jpg)
MUT#
Análise dos Resultados:
![Page 17: M UT # Uma ferramenta para Geração de Mutantes para linguagem C#](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc11a497959413d8c98a4/html5/thumbnails/17.jpg)
MUT#
Conclusão: Objetivo atingido. Característica única.
Limitações: Somente mutantes clássico. Programa não faz verificação sintática. Um grupo de mutação por linha.
![Page 18: M UT # Uma ferramenta para Geração de Mutantes para linguagem C#](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc11a497959413d8c98a4/html5/thumbnails/18.jpg)
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
mutantes.
![Page 19: M UT # Uma ferramenta para Geração de Mutantes para linguagem C#](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc11a497959413d8c98a4/html5/thumbnails/19.jpg)
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 20: M UT # Uma ferramenta para Geração de Mutantes para linguagem C#](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc11a497959413d8c98a4/html5/thumbnails/20.jpg)
MUT#
Apresentação do Sistema