Вы находитесь на странице: 1из 18

MUT#

Uma ferramenta para Gerao de Mutantes Clssicos


para linguagem C#.
Autores:
Alexandre Freitag
Fbio Valter Siscate

Orientador:
Prof. Dr. Flvio Moreira de Oliveira

MOTIVAO
"O custo de correo de defeitos tende a aumentar
quanto mais tarde o defeito for encontrado, numa
proporo de 10x."
Glenford Myers em 1979

Qualidade no software importante.
Processo de teste importante.
E quem garante a qualidade do teste?
Uma tcnica a Anlise de Mutantes.

FUNDAMENTAO TERICA
Classificar os desvios:
Falha - Inconsistncias no cdigo-fonte
Erro Estados interno inconsistente
Defeito - Desvio da especificao quanto a regra de negcio

Tcnicas:
Funcional (Black-box)
Estrutural (White-box)

Nveis de teste:
Teste Unitrio: testa a classe, mtodo ou trechos menores do
cdigo
Teste de Integrao: testa integrao em componentes
Teste de Sistema: funcional, com viso do usurio
Teste de Aceitao: executado pelo usurio

FUNDAMENTAO TERICA
Teste unitrio
Arquivos de entrada
Verificao do resultado





Como garantir a qualidade do Teste Unitrio?


Mtodo ou
Classe
Classe
Driver
ANLISE DE MUTANTES

Criada por DeMillo no final da dcada de 70.

Pequenas alteraes sintticas no cdigo fonte
original.

Objetivo: Desvendar se o teste unitrio consegue
identificar os cdigos mutantes.





ANLISE DE MUTANTES
Execuo de diversas instncias da classe no mesmo
teste unitrio.






Execuo do teste unitrio nos mutantes.
Mutantes mortos.

Cdigo
Fonte
Original
Gerador de
Mutantes
M1
M2
M3
M4
M5
M6
Classe
Driver
TCNICAS DE MUTAO
Mutao Clssica




Mutao 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;
}
OPERADORES DE MUTAO
Regras definidas para alterao do cdigo.
Por exemplo:

OAR: Arithmetic Operator Replacement;

ROR: Relational Operator Replacement;

IHD: Hiding Variable Deletion;

OAO: Argument Order Change


MUT#


Ferramenta para Gerao de
Mutao Clssica para
linguagem C#.
MUT#

Mutao Clssica.


Desenvolvida no Visual Studio 2005.


Mutao Seletiva.
MUT#




Operadores de Mutao 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 || ; && && ; ||
MUT#
Arquivos de Entrada
Cdigo Original C#.
Arquivo XML.





Escolha do mtodo:
Anlise Sinttica (Gerador de Parser).
Estrutura de Dados (Algoritmo Analisador).

MUT#
Algoritmo Analisador

Criar Projeto


Ler Arquivo
XML


Ler Cdigo-
Fonte .cs


Parser


Mutao
Seletiva


Gerao de
Mutantes


Anlise Individual
Salva as Linhas


Carregar os arquivos
Construir diretrios

MUT#
Anlise dos Resultados:

MUT#
Concluso:
Objetivo atingido.
Caracterstica nica.


Limitaes:
Somente mutao clssica.
Programa no faz verificao sinttica.
Mesmo operador de mesmo grupo em uma linha.

MUT#
Trabalhos Futuros:
Integrao com NUnit.
Mutao orientada a objeto.
Utilizao do gerador de parser.
Expanso da quantidade de operadores de mutao.

MUT#
Referncias Bibliogrficas:

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):3441, 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:107128, 1979.

Glenford J. Myers. Art of Software Testing. John Wiley & Sons, Inc., New York,
NY, USA, 1979. ISBN 0471043281.

MUT#


Apresentao do Sistema

Вам также может понравиться