Mutation Testing - Definição do Glossário de CI/CD
O mutation testing injeta deliberadamente pequenos bugs e verifica se seus testes os pegam. Mutantes sobreviventes revelam código que é executado, mas não de fato verificado.
O mutation testing mede a qualidade da suíte de testes introduzindo pequenas mudanças (mutantes) no código e verificando se os testes falham; um mutante em que os testes ainda passam é "sobrevivente", indicando uma lacuna nos testes.
O mutation score complementa a cobertura de linhas, que pode ser alta mesmo quando as asserções são fracas.
Score vs cobertura
A cobertura de linhas diz que o código rodou; o mutation score diz que um bug naquele código seria pego. Um arquivo pode ter cobertura total, mas um mutation score baixo se seus testes asseguram pouco.
Em CI
Execuções completas de mutação são caras, então as equipes muitas vezes mutam apenas os arquivos alterados por pull request e rodam a análise completa em um agendamento.