O Teste de Mutação é um tipo de Teste de Software que é executado para projetar novos testes de software e também avaliar a qualidade dos testes de software já existentes. O teste de mutação está relacionado à modificação de um programa em pequenas maneiras. Ele se concentra em ajudar o testador a desenvolver testes eficazes ou localizar pontos fracos nos dados de teste usados ​​para o programa.

História do teste de mutação:
Richard Lipton propôs o teste de mutação em 1971 pela primeira vez. Embora o alto custo tenha reduzido o uso de testes de mutação, agora ele é amplamente usado para linguagens como Java e XML.



O teste de mutação é um teste de caixa branca .

O teste de mutação pode ser aplicado a modelos de design, especificações, bancos de dados, testes e XML. É uma técnica de teste estrutural, que usa a estrutura do código para guiar o processo de teste. Pode ser descrito como o processo de reescrever o código-fonte em pequenas formas para remover as redundâncias no código-fonte.

Objetivo do teste de mutação:
O objetivo do teste de mutação é:

  • Para identificar partes do código que não foram testadas corretamente.
  • Para identificar defeitos ocultos que não podem ser detectados usando outros métodos de teste.
  • Para descobrir novos tipos de erros ou bugs.
  • Para calcular a pontuação de mutação.
  • Para estudar a propagação de erros e infecção de estado no programa.
  • Para avaliar a qualidade dos casos de teste.

Tipos de teste de mutação: o
teste de mutação é basicamente de 3 tipos:

  1. Mutações de valor:
    neste tipo de teste os valores são alterados para detectar erros no programa. Basicamente, um valor pequeno é alterado para um valor maior ou um valor maior é alterado para um valor menor. Neste teste, basicamente, as constantes são alteradas.

    Exemplo:

    Código Inicial:
    
    mod int = 1000000007;
    int a = 12345678;
    int b = 98765432;
    int c = (a + b)% mod;
    
    Código alterado:
    
    mod int = 1007;
    int a = 12345678;
    int b = 98765432;
    int c = (a + b)% mod; 
  2. Mutações de decisão:
    nas decisões, as mutações são operadores lógicos ou aritméticos que são alterados para detectar erros no programa.

    Exemplo:

    Código Inicial:
    
    if (a <b)
     c = 10;
    outro
     c = 20;
    
    Código alterado:
    
    if (a> b)
     c = 10;
    outro
     c = 20; 
  3. Mutações de instrução:
    nas mutações de instrução, uma instrução é excluída ou substituída por alguma outra instrução.

    Exemplo:

    Código Inicial:
    
    if (a <b)
     c = 10;
    outro
     c = 20;
    
    Código alterado:
    
    if (a <b)
     d = 10;
    outro
     d = 20; 

Vantagens do teste de mutação:

  • Traz um bom nível de detecção de erros no programa.
  • Ele descobre ambigüidades no código-fonte.

Desvantagens do teste de mutação:

  • É muito caro e demorado.
  • Não é compatível com o teste de caixa preta.