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 ensaio 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?

Teste de mutação: guia completo

Following são as etapas para executar testes de mutação (análise de mutação):

Passo 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.

Passo 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.

Passo 3: Compare os resultados de um programa original e mutante.

Passo 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.

Passo 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?

Teste de mutação: guia completo

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

Operadores de substituição de operandos Operadores de modificação de expressão Operadores de modificação de instrução
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:

  • Substituição da etiqueta GOTO
  • Substituição da declaração de retorno
  • Exclusão de declaração
  • Inserção de operador unário (Like – e ++)
  • Substituição do conector lógico
  • Substituição de nome de array comparável
  • Remoção da parte else na instrução if-else
  • Adicionar ou substituir operadores
  • Substituição de declaração alterando os dados
  • Modificação de dados para as variáveis
  • Modificação de tipos de dados no programa

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.

  1. 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
  2. Mutação de valor– os valores dos parâmetros primários são modificados
  3. 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

Teste de mutação: guia completo

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

Following sã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

Do outro lado, o seguintewing são as desvantagens do teste mutante:

  • 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 ensaio.

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.