Teste de mutação em teste de software: pontuação mutante e exemplo de análise

Teste de mutação

Teste de mutação é um tipo de teste de software no qual certas declarações do código-fonte são alteradas / transformadas 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 ele falhe no código-fonte mutado.

As alterações feitas no programa mutante devem ser mantidas extremamente pequenas para que não afetem o objetivo geral do programa. O Teste de Mutação também é chamado de estratégia de teste baseada em falha, pois envolve a criação de uma falha no programa e é um tipo de Teste de caixa branca que é usado principalmente para Teste de Unidade .

A mutação foi proposta originalmente em 1971, mas perdeu o fervor devido aos altos custos envolvidos. Agora, mais uma vez, ele pegou vapor e é amplamente usado para linguagens como Java e XML.

Neste tutorial, você aprenderá-

Como executar o teste de mutação?

A seguir estão as etapas para executar o teste de mutação (análise de mutação):

Passo 1 : 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. UMA 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.

Passo 4 : Se o programa original e os programas mutantes geram uma saída diferente, o mutante é eliminado pelo caso de teste. Portanto, o caso de teste é bom o suficiente para detectar a mudança entre o programa original e o mutante.

Etapa 5 : Se o programa original e o programa mutante geram a mesma saída, Mutant é mantido ativo. Nesses casos, casos de teste mais eficazes precisam ser criados para matar 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 por uma mutação.

Programa Original Programa Mutante
If (x> y)

Imprimir 'Olá'

Outro

Imprimir 'Olá'

Se( x )

Imprimir 'Olá'

Outro

Imprimir 'Olá'

O que mudar em um programa mutante?

Existem várias técnicas que podem ser usadas para gerar programas mutantes. Vamos olhar para eles

Operandos de substituição de operandos Operadores de modificação de expressão Operadores de modificação de declaração
Substitua o operando por outro operando (x por y ou y por x) ou pelo valor constante. Substitua um operador ou a inserção de novos operadores em uma instrução do programa. As declarações programáticas são modificadas para criar programas mutantes.
Exemplo-

Se (x> y) substitua os valores xey

Se (5> y) substitua x pela constante 5

Exemplo-

If (x == y)

Podemos substituir == em> = e ter um programa mutante como

If (x> = y) e inserir ++ na instrução

If (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 de etiqueta GOTO
  • Substituição de declaração de devolução
  • Exclusão de extrato
  • Inserção de operador unário (como - e ++)
  • Substituição do conector lógico
  • Substituição de nome de matriz comparável
  • Remoção da parte else na instrução if-else
  • Adição ou substituição de 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 teste de mutação:

O teste de mutação é extremamente demorado e complicado de executar manualmente. Para agilizar o processo, é aconselhável ir para ferramentas de automação. As ferramentas de automação também reduzem o custo dos testes.

Lista de ferramentas disponíveis -

Tipos de teste de mutação

Em Engenharia de Software, o teste de mutação pode ser categorizado fundamentalmente em 3 tipos - mutação de instrução, mutação de decisão e mutação de valor.

  1. Declaração de mutação - o desenvolvedor corta 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 - as 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 adequados para mutação se a pontuação for 100%. Os resultados experimentais mostraram que o teste de mutação é uma abordagem eficaz para medir a adequação dos casos de teste. Mas, a principal desvantagem é o alto custo de gerar os mutantes e executar cada caso de teste contra aquele 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 desse teste 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 do teste Mutant:

  • O teste de mutação é extremamente caro e demorado, pois há muitos programas mutantes que precisam ser gerados.
  • Por ser demorado, é justo dizer que esse teste não pode ser feito 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 mudanças no código-fonte, não é aplicável para Teste de caixa preta .

Conclusão:

Você quer um teste exaustivo 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 a precisão de um programa de teste para detectar as falhas ou erros no sistema.