Post

1 Star2 Stars3 Stars4 Stars5 Stars

By Jailton Alkimin Louzada
Saudações leitores!
Atualmente no meu mestrado venho pesquisando sobre algo até então novo para mim na área de teste, consiste em uma técnica de teste chamada teste baseado em erros, até então eu só conhecia as técnicas de teste estrutural e funcional, evidentemente por exercer a profissão de analista de teste eu utilizava pragmaticamente essas técnicas em meus projetos, no entanto, após aprofundar mais nos estudos relacionados a teste de software me deparei com essa técnica que dentre os critérios de teste que ela contempla irei ressaltar o teste de mutação (Mutation Testing) e que agora eu compartilho com vocês no meu blog!
Na história da arte o critério analise de mutante surgiu em meados da década de 70 na Yale University e Georgia Institute of technology baseado em pesquisas de métodos clássicos de detecção de erros lógicos em circuitos digitais. Umas das idéias principais do teste de mutação foi proposta por volta de 1978 por DeMillo que propusera uma técnica chamada: Hipótese do programador competente (Competent programmer hipothesis). Baseado nessa premissa da hipótese do programador competente assume-se que programadores experientes escrevem códigos fontes corretos e/ou muito próximos do correto, permitindo assim que pequenas alterações no código sejam feitas para que apesar de não houver erro na sintática alteram a semântica do programa.
O critério analise de mutantes utiliza um conjunto de programas pontualmente modificados (mutantes) P’ obtidos a partir de um dado programa P para avaliar o quão um conjunto de casos de testes T criados para o teste de P são adequados para os testes do mesmo, em outras palavras, o objetivo é determinar um conjunto T de casos de teste que revelam através da execução de P a diferença entre a execução de P e seu conjunto de mutantes P’.
De forma pragmática na realização de testes de mutação alguns operadores de mutação (mutation operators) são utilizados para realizar mutações nos programas, seguindo basicamente um entre dois propósitos: 1) induzir mudanças sintáticas simples no código (os mais comuns são: mutantes lógicos, aritméticos e relacionais); 2) forçar determinados objetivos de teste (como executar um arco do programa), um exemplo de teste de mutação utilizando a ferramenta MuJava pode ser visto na figura 1.

Figura 1 – Um exemplo de mutação do tipo AOI (Arithmetic Operator Insertion) gerada pela ferramenta MuJava.

Assim que o programa sofre as mutações, os mutantes deverão ser executados com o mesmo conjunto de casos de teste do programa original com o objetivo de obter somente mutantes mortos (resultados diferentes entre o programa original e o programa com mutação) e equivalentes (os mutantes e o programa original apresentam resultados iguais). Uma idéia importante a ser salientada é que o teste de mutação revela o quão um conjunto de casos de testes e/ou dados de teste está adequado aos testes de um programa, revelando que ou programa está correto ou possui erros pouco prováveis que aconteçam.
A Análise de Mutantes fornece ainda uma medida objetiva da confiança dos casos de testes analisados pelo teste de mutação, através de um escore de mutação (mutation score). Segundo DeMillo[10-b] o escore de mutação é calculado através de uma relação entre os mutantes mortos e mutantes gerados, e pode ser expressa pela seguinte formula:

Sendo que:
DM (P, T): Número de mutantes mortos pelo caso de teste em T;
M (P): Número de mutantes gerados;
EM (P): Número de mutantes gerados equivalentes a P.

O escore de mutação varia no intervalo entre 0 e 1 e quanto maior for o valor do escore de mutação mais adequando será o conjunto de casos de teste para o teste do programa.
Instalação da Ferramenta MuJava:
Pré-requisitos:
JSDK
Passo-a-Passo:
1 – Baixe os arquivos do MuJava, coloque os mesmos em uma pasta de fácil acesso pelo prompt (ex.: C/mujava) – link

2 – Configure o arquivo mujava.config com os endereço da pasta que você salvou os arquivos do MuJava (ex.: MuJava_HOME=C:mujava);
3 – Crie as pastas (dentro do diretório C/mujava): classes (onde fica os arquivos .class), result (os mutantes gerados), src (onde fica os arquivos .java), testset (conjunto de testes utilizados para execução dos mutantes);
4 – Configure o seu ClassPath no Windows: C:mujavamujava.jar;C:mujavaopenjava2005.jar;C:jdkxxxlibtools.jar;C:mujavaclasses
5 – Coloque os arquivos .java e .class nas pastas respectivas (src e classes respectivamente);
6 – Execute o modo gráfico do aplicativo MuJava no prompt: java mujava.gui.GenMutantsMain (Certifique-se que você está na pasta pelo prompt para executar o comando)
7 – Selecione os operadores de mutação e clique em Generate e seja feliz!
Contudo o critério de teste Análise de Mutante tem um grande problema relacionado à sua utilização devido ao alto custo, pois mesmo para pequenos programas o número de mutantes gerados pode ser muito grande fazendo com que sua utilização seja inviável, ressaltando ainda que o processo de descoberta de mutantes equivalentes demanda uma grande quantidade de tempo e que alguns casos somente através de processos automatizados para que essa técnica seja viável, demandando um grande numero de pesquisas nessa área.

Source: http://www.jailtonalkiminlouzada.com/2011/11/teste-de-mutacao-mutation-testing/

Category: Teste de Mutação

Você também pode querer ler

Comments are off for this post.