O que é teste de mutação? (Exemplo)
O que é teste de mutação?
Teste de mutação é um tipo de teste de software em que certas instruções do código-fonte são alteradas/mutadas para verificar se os casos de teste são capazes de encontrar erros no código-fonte. O objetivo do Teste de Mutação é garantir a qualidade dos casos de teste em termos de robustez para que o código-fonte mutado falhe.
As alterações feitas no programa mutante devem ser mantidas extremamente pequenas para não afetar o objetivo geral do programa. O teste de mutação também é chamado de estratégia de teste baseada em falhas, pois envolve a criação de uma falha no programa e é um tipo de teste baseado em falhas. Branco Box Ensaios que é usado principalmente para Teste de Unidade.
A mutação foi proposta originalmente em 1971, mas perdeu fervor devido aos altos custos envolvidos. Agora, mais uma vez, ele ganhou força e é amplamente utilizado para linguagens como Java e XML.
Como executar testes de mutação?
A seguir estão as etapas para executar o teste de mutação (análise de mutação):
Etapa 1: As falhas são introduzidas no código-fonte do programa criando muitas versões chamadas mutantes. Cada mutante deve conter uma única falha, e o objetivo é fazer com que a versão mutante falhe, o que demonstra a eficácia dos casos de teste.
Etapa 2: Os casos de teste são aplicados ao programa original e também ao programa mutante. A Caso de teste deve ser adequado e é ajustado para detectar falhas em um programa.
Etapa 3: Compare os resultados de um programa original e mutante.
Etapa 4: Se o programa original e os programas mutantes gerarem saídas diferentes, então o mutante será eliminado pelo caso de teste. Portanto, o caso de teste é bom o suficiente para detectar a mudança entre o programa original e o programa mutante.
Etapa 5: Se o programa original e o programa mutante gerarem a mesma saída, o Mutant será mantido ativo. Nesses casos, é necessário criar casos de teste mais eficazes que matem todos os mutantes.
Como criar programas mutantes?
Uma mutação nada mais é do que uma única mudança sintática feita na instrução do programa. Cada programa mutante deve diferir do programa original em uma mutação.
Programa Original | Programa Mutante |
---|---|
Se (x>y)
Imprima “Olá” Outro Imprima “Oi” |
Se(x <y)
Imprima “Olá” Outro Imprima “Oi” |
O que mudar em um Programa Mutante?
Existem diversas técnicas que podem ser utilizadas para gerar programas mutantes. Vamos dar uma olhada neles
Operaoperadores de substituição nd | Modificação de Expressão Operatoros | Modificação da declaração Operatoros |
---|---|---|
Substitua o operando por outro operando (x por y ou y por x) ou pelo valor constante. | Substitua um operador ou insira novos operadores em uma instrução de programa. | As instruções programáticas são modificadas para criar programas mutantes. |
Exemplo-
If(x>y) substitua os valores x e y Se(5>y) substitua x pela constante 5 |
Exemplo-
Se(x==y) Podemos substituir == por >= e ter o programa mutante como If(x>=y) e inserção de ++ na instrução Se(x==++y) |
Exemplo-
Exclua a parte else em uma instrução if-else Exclua toda a instrução if-else para verificar como um programa se comporta Alguns dos exemplos de operadores de mutação:
|
Automação de testes de mutação
O teste de mutação consome muito tempo e é complicado de executar manualmente. Para agilizar o processo, é aconselhável optar por ferramentas de automação. As ferramentas de automação também reduzem o custo dos testes.
Lista de ferramentas disponíveis-
Tipos de testes de mutação
In Engenharia de Software, O teste de mutação pode ser categorizado fundamentalmente em 3 tipos – mutação de declaração, mutação de decisão e mutação de valor.
- Mutação de declaração – o desenvolvedor recorta e cola uma parte de um código cujo resultado pode ser a remoção de algumas linhas
- Mutação de valor– os valores dos parâmetros primários são modificados
- Mutação de decisão– declarações de controle devem ser alteradas
Pontuação de mutação
A pontuação de mutação é definida como a porcentagem de mutantes mortos com o número total de mutantes.
- Pontuação de mutação = (mutantes mortos / número total de mutantes) * 100
Os casos de teste são considerados adequados para mutação se a pontuação for 100%. Resultados experimentais mostraram que o teste de mutação é uma abordagem eficaz para medir a adequação dos casos de teste. Porém, a principal desvantagem é o alto custo de geração dos mutantes e execução de cada caso de teste nesse programa mutante.
Vantagens do teste de mutação
A seguir estão as vantagens do teste de mutação:
- É uma abordagem poderosa para obter alta cobertura do programa de origem.
- Este teste é capaz de testar de forma abrangente o programa mutante.
- O teste de mutação traz um bom nível de detecção de erros para o desenvolvedor de software.
- Este método revela ambigüidades no código-fonte e tem a capacidade de detectar todas as falhas do programa.
- Os clientes se beneficiam desses testes ao obter um sistema mais confiável e estável.
Desvantagens do teste de mutação
Por outro lado, as seguintes são as desvantagens dos testes de mutantes:
- O teste de mutação é extremamente caro e demorado, uma vez que existem muitos programas mutantes que precisam ser gerados.
- Por ser demorado, é justo dizer que esses testes não podem ser feitos sem uma ferramenta de automação.
- Cada mutação terá o mesmo número de casos de teste que o programa original. Portanto, um grande número de programas mutantes pode precisar ser testado em relação ao conjunto de testes original.
- Como este método envolve alterações no código-fonte, não é de todo aplicável para Preto Box Ensaios.
Conclusão
Você deseja testes exaustivos de seu aplicativo? A resposta é o teste de mutação. É a técnica mais abrangente para testar um programa. Este é o método que verifica a eficácia e precisão de um programa de teste para detectar falhas ou erros no sistema.