Não tenho 100% de certeza se a explicação abaixo é historicamente precisa. Caso contrário, fique à vontade para editar ou remover.
O teste de mutação foi inventado por Lipton. O teste de mutação pode ser visto como uma maneira de medir a qualidade ou eficácia de um conjunto de testes. A idéia principal é injetar falhas no programa a ser testado (ou seja, alterar o programa), preferencialmente os tipos de falhas que um programador humano provavelmente fará, e ver se a suíte de testes encontra as falhas introduzidas. Um exemplo típico do tipo de teste de mutação de falha a introduzir poderia ser substituir x> 0 por x <0 ou substituir x por x + 1 ou x-1. A fração de falhas detectadas pelo conjunto de testes é a "pontuação de adequação de mutação" de um conjunto de testes. Falando muito livremente, pode-se pensar nisso como um método de Monte-Carlo para calcular o escore de adequação da mutação.
Mais abstratamente, pode-se dizer que o teste de mutação traz à tona uma simetria ou dualidade entre um programa e seus conjuntos de testes: não apenas o conjunto de testes pode ser usado para se tornar mais confiante sobre a correção de um programa, mas, inversamente, um programa pode ser usado para ganhar confiança sobre a qualidade de uma suíte de testes.
À luz dessa dualidade, o teste de mutação também é conceitualmente próximo à injeção de falha . Ambos são tecnicamente semelhantes, mas têm finalidades diferentes. O teste de mutação procura medir a qualidade do conjunto de testes, enquanto a injeção de falha procura estabelecer a qualidade do programa, geralmente a qualidade de seu tratamento de erros.
Recentemente, idéias do teste de mutação foram usadas para testar (formalizações de) teorias lógicas. Parafraseando o resumo de (4): Ao desenvolver formalizações não triviais em um provador de teoremas, uma quantidade considerável de tempo é dedicada à “depuração” de especificações e teoremas. Normalmente, especificações ou teoremas incorretos são descobertos durante tentativas de prova com falha. Essa é uma forma cara de depuração. Portanto, muitas vezes é útil testar conjecturas antes de embarcar em uma prova. Uma maneira possível de fazer isso é atribuir valores aleatórios às variáveis livres da conjectura e depois avaliá-la. (4) usa mutações para testar a qualidade dos geradores de casos de teste usados.
História . De (1): A história do teste de mutação pode ser rastreada até 1971 em um artigo de Richard Richardton [...] O nascimento do campo também pode ser identificado em outros trabalhos publicados no final da década de 1970 por Lipton et al. (2) bem como Hamlet (3).
Repositório do Teste de Mutação: Teoria do Teste de Mutação .
RA DeMillo, RJ Lipton, FG Sayward, Dicas sobre Seleção de Dados de Teste: Ajuda para o Programador Praticante .
RG Hamlet, testando programas com a ajuda de um compilador .
S. Berghofer, T. Nipkow, Teste aleatório em Isabelle / HOL. .