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