Esse artigo faz parte da revista Engenharia de Software 8 edição especial. Clique aqui para ler todos os artigos desta edição

 

Validação, Verificação e Testes

Testes de Mutação com o plug-in MuClipse

 

De que se trata o artigo:

Apresentação dos principais conceitos sobre testes de mutação e demonstração do funcionamento da técnica utilizando um plug-in para Eclipse chamado MuClipse.

 

Para que serve:

Além de testar o software, também pode ser considerada uma técnica para auxiliar no processo de melhoria dos casos de testes para torná-los mais eficientes.

 

Em que situação o tema é útil:

Testes de mutação podem ser utilizados como técnica para melhorar ou afirmar a qualidade dos casos de testes.

 

Testes de Mutação com o Plug-in MuClipse – Resumo DevMan:

A técnica de teste de mutação é divida em quatro etapas. Primeiro, operadores de mutação são utilizados sobre o programa original realizando pequenas alterações sobre esse programa e gerando variações, ou seja, mutantes. Depois disto, o programa original é testado e deve ser aprovado pelos casos de testes. Após a execução do programa original, os mutantes são executados com o caso de teste e, se forem reprovados pelo caso de teste são considerados mortos. Caso algum mutante não seja reprovado, esse mutante é considerado vivo e precisa ser analisado. Para os mutantes vivos pode-se considerar que este mutante é equivalente ao programa original ou que os casos de testes não são bons o suficiente para testar o programa. Neste último caso, os casos de testes devem ser alterados e, com isso, se tornam cada vez mais eficientes.

 

Introdução

O desenvolvimento de sistemas não é uma tarefa simples e, por este motivo, precisa que artifícios sejam utilizados para diminuir os defeitos que podem ser introduzidos nesse processo.

Teste de software contribui para a produção de um produto final de maior qualidade e é um processo bastante aceito e difundido atualmente. Porém, uma das questões mais complexas que norteia os testes de software é como garantir que os casos de testes gerados são eficientes, ou seja, garantir que os casos de testes encontrem a maior quantidade de defeitos possíveis.

Dentre outras técnicas que podem ser utilizadas para se testar o software, ou melhorar os casos de testes, pode-se destacar o Teste de Mutação.

Este artigo tem como finalidade principal demonstrar a utilização de um plug-in desenvolvido para se aplicar testes de mutação chamado MuClipse, além de explicar os principais conceitos relacionados a este tipo de  teste.

Testes de Mutação

Por mais simples que um software possa ser, os caminhos de execução possíveis na sua utilização podem ser muito grandes, com isto é praticamente impossível testar um sistema por completo e afirmar que o sistema não contém defeitos.

Por outro lado, os tipos de problemas que podem ser encontrados em um software podem ser finitos. É nesta premissa que os testes de mutação se embasam.

Basicamente, testes de mutação propõem a criação de variações de um programa anteriormente desenvolvido, ou seja, mutantes, posteriormente à construção de casos de testes com a finalidade de provar que as variações do programa original não estão corretas. Assim, por eliminação, pode-se constatar que o programa original está correto.

O primeiro passo para a execução dos testes de mutação é a criação dos mutantes que são criados executando uma série de operadores chamados operadores de mutação. Esses operadores alteram partes do programa original, como, por exemplo, trocar um sinal de “>” por “<”, e assim formar os mutantes.

O segundo passo que deve ser feito é a execução dos casos de testes sobre o programa original. Os casos de testes devem aprovar o programa original concluindo-se assim que ele está correto com base nos casos de testes executados.

No próximo passo, os mutantes gerados devem ser executados com os mesmos casos de testes que o programa original foi executado. Caso algum caso de teste falhe significa que são abrangentes o suficiente para demonstrarem a diferença entre o mutante e o programa original. Neste caso, o mutante que fez com que o caso de teste falhasse está morto e, por conseqüência, é descartado.

Pode acontecer de algum mutante sobreviver aos testes. Neste caso, podem ser consideradas duas situações: 1) Caso de testes não é bom o suficiente, pois não identificou a modificação no mutante; 2) Equivalência entre o programa original e o mutante.

O último passo da técnica é a análise dos mutantes que sobreviveram. Esse passo exige uma maior intervenção humana para decidir se o mutante sobreviveu porque os casos de testes não são abrangentes o suficiente e assim criar mais casos de testes, ou modificar os existentes. Ou ainda se o mutante é equivalente ao programa original e com isto descartar o mutante. Mutantes ainda são descartados quando gerarem situações impossíveis de serem executadas, como uma condição que nunca se torna verdadeira ou um laço infinito.

Neste último passo, é possível perceber claramente como os testes de mutação ajudam a melhorar os casos de testes caso algum mutante não seja morto.

Alguns passos como, por exemplo, a geração dos mutantes e execução dos mutantes com os casos de testes, são tarefas repetitivas e praticamente inviáveis sem apoio de uma ferramenta para automatizar essas tarefas. Neste artigo será exposto um exemplo prático da utilização de testes de mutação utilizando o plug-in MuClipse versão 1.2 instalado no Eclipse juntamente com o framework de testes JUnit 4.0.

Estudo de Caso

O MuClipse é um plug-in para o IDE (Ambiente de Desenvolvimento Integrado) Eclipse que tem por finalidade auxiliar no processo de execução de testes de mutação em programas desenvolvidos em Java. Ele funciona como uma ponte entre o MuJava, um sistema para testes de mutação em Java, e o Eclipse.

Será criado um projeto chamado Aprovacao que conterá uma classe Aluno com os atributos nota1, nota2, notaFinal, frequencia, os métodos gets e  sets desses atributos e um método chamado calcularAprovacao. Também será criado um caso de teste chamado TestarAprovacao que tem por finalidade executar o método calcularAprovacao da classe Aluno.

A instalação do MuClipse é bastante simples, basta abrir o Eclipse e acessar o menu Help / Software Updates..., clicar sobre a aba Available Software e depois sobre o botão Add Site. Neste momento uma janela é exibida onde deve ser digitado http://muclipse.sourceforge.net/ no campo Location e clicar sobre o botão Ok. Depois disto, deve-se marcar o endereço adicionado anteriormente, como pode ser visto na Figura 1, e clicar sobre o botão Install.

 


Figura 1 ...

Quer ler esse conteúdo completo? Tenha acesso completo