O que é teste de mutação?
Como a palavra 'mutate', em geral, significa 'change', o mesmo acontece com o teste Mutation. Teste de mutação é o tipo de teste de software que é executado alterando ou mutando o trecho de código para verificar / verificar se os casos de teste são capazes o suficiente para encontrar os erros / defeitos. O teste de mutação é realizado sob o teste da Caixa Branca e é basicamente realizado durante a execução dos testes de Unidade de um módulo específico de um aplicativo. As alterações feitas no código fonte / principal são feitas em uma pequena quantidade para que não afete o objetivo geral. Isso também é conhecido como Técnica de detecção de falhas, pois é feito com o objetivo de localizar os pontos fracos dos casos de teste, criando uma falha no código original.
Antes de realizar qualquer teste, é muito importante entender o objetivo por trás dele. O principal objetivo do teste de mutação é encontrar a eficácia dos casos de teste desenvolvidos, que devem ser capazes o suficiente para detectar até as pequenas alterações feitas no código. Isso é feito para encontrar os problemas no conjunto de testes e os dados de teste que estão sendo usados durante a execução do teste de qualquer aplicativo de software. Vários mutantes ou versões do código original são criados e cada um deles é testado nos casos de teste originais. Se os resultados do caso de teste permanecerem os mesmos do código original, o código e os casos de teste serão verificados novamente porque o código não foi executado ou o conjunto de testes não é capaz o suficiente para encontrar o código mutante.
Tipos de teste de mutação
Existem basicamente três tipos de teste de mutação que são executados para criar mutantes do código original:
1. Mutação de Valor
Como o nome indica, na mutação Value, o valor de constantes, parâmetros passados nos métodos, os valores usados nos loops são alterados para criar um programa mutante. O valor grande é alterado para um menor ou vice-versa. Basicamente, os valores já definidos no programa são alterados para executar a Mutação de Valor.
Código original:
int a = 75636737;
int b = 3454;
int mult = a * b;
print(mult);
Código mutante:
int a = 75;
int b = 345466465;
int mult = a * b;
print(mult);
2. Mutação de Decisão
Na Mutação de Decisão, os operadores lógicos e aritméticos usados no programa são alterados, o que altera a tomada de decisão geral no programa e seus respectivos resultados. Por exemplo, certa instrução 'if' é executada apenas quando (a> b). No código mutante, esse operador é alterado para (a <b), que altera a tomada de decisão geral no código.
Código original:
if (a>b || b>c)
(
print(“yes”);
)
else
(
print (“No”);
)
Código mutante:
if (a (
print(“yes”);
)
else
(
print (“No”);
)
3. Mutação de declaração
Na Mutação de Instruções, são feitas alterações nas instruções completas do código para criar um programa mutante. Alterações na instrução podem excluir toda a instrução, alterar a ordem da instrução no código, copiar e colar as instruções em outro local do código, repetindo ou duplicando as poucas instruções no código original.
Código original:
if (a > b)
(
print(“a is greater”);
)
else
(
print(“b is greater”);
)
Código mutante:
if(a > b)
(
// removing the statement
)
else
(
print(“b is greater”);
)
Vantagens e desvantagens do teste de mutação
As vantagens e desvantagens do teste de mutação são apresentadas abaixo:
Vantagens
Algumas das vantagens do teste de mutação são apresentadas abaixo:
- Uma das maiores vantagens do teste de mutação é que ele ajuda a encontrar os defeitos ocultos e a cobertura máxima do código para identificar a parte do código que não é completamente testada pelos casos de teste originais.
- O teste de mutação ajuda a encontrar a qualidade dos casos de teste usados para testar o software e fornecer feedback genuíno aos testadores sobre o processo de teste e a qualidade do teste.
- Ajuda a encontrar os bugs de alta qualidade que não são fáceis de encontrar nos testes normais.
- O teste de mutação às vezes revela os defeitos ocultos, como ambiguidade de código, valores incorretos de variáveis etc. no código nos estágios iniciais do teste de software, o que é muito benéfico.
- Às vezes, o código e o caso de teste estão corretos, mas o problema foi causado por causa dos dados de teste. O teste de mutação ajuda a descobrir os problemas nos dados de teste.
Desvantagens
Abaixo estão algumas das desvantagens do teste de mutação:
- No teste de mutação, vários mutantes do código são criados e testados no conjunto de testes original e, portanto, consome muito tempo enquanto executa apenas o teste de unidade de um único recurso / módulo de um aplicativo.
- Como mencionado acima, todos os mutantes são testados em relação ao conjunto original, portanto, haveria um grande número de casos de teste que precisam ser executados e, portanto, isso não pode ser realizado sem uma ferramenta de automação que é cara e pode prejudicar o orçamento do projeto.
- Mutantes complexos criados no código original podem causar confusão e erros no código original.
Conclusão
A explicação acima define claramente o que é o teste de mutação e sua importância no campo de teste de um aplicativo. Se desejarmos realizar testes exaustivos de um aplicativo com os cenários de teste de cobertura máxima de código, o teste de mutação desempenha um papel crucial.
Artigos recomendados
Este é um guia para testes de mutação. Aqui discutimos o que é teste de mutação? e os tipos de teste de mutação, juntamente com vantagens e desvantagens. Você também pode consultar nossos outros artigos sugeridos para saber mais
- O que é reagir?
- Teste negativo
- Teste de aplicação móvel
- Padrão Avançado de Criptografia
- Cobertura de Código vs Cobertura de Teste | As 4 principais diferenças a aprender
- Ferramentas de cobertura de código | As 6 principais ferramentas de cobertura de código