Teste de mutação em teste de software: Mutant Score & Exemplo de Análise

Índice:

Anonim

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 falhe o 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 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á-

  • O que é teste de mutação?
  • Como executar o teste de mutação?
  • Como criar programas mutantes?
  • O que mudar em um programa mutante?
  • Tipos de teste de mutação
  • Pontuação de mutação:
  • Vantagens do teste de mutação:
  • Desvantagens do teste de mutação:

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):

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. Um 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 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 vivo. 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á"
Else
Imprimir "Olá"
If ( x )Imprimir "Olá"
Else
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-
If (x> y) substitua os valores de xey
If (5> y) substitua x pela constante 5
Exemplo-
If (x == y)
Podemos substituir == em> = e ter o 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 -

  • Stryker
  • Teste PIT

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 instruçõ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 o programa mutante de forma abrangente.
  • 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 esse método envolve mudanças no código-fonte, ele não é de todo aplicável para o Black Box Testing.

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