Teste baseado em falhas. Problema Usuário não sabe se a suíte de teste é adequada ou não para...
Transcript of Teste baseado em falhas. Problema Usuário não sabe se a suíte de teste é adequada ou não para...
![Page 1: Teste baseado em falhas. Problema Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro Solução 1: Medir cobertura –Mas… cobrir mais.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc182497959413d8f44c1/html5/thumbnails/1.jpg)
Teste baseado em falhas
![Page 2: Teste baseado em falhas. Problema Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro Solução 1: Medir cobertura –Mas… cobrir mais.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc182497959413d8f44c1/html5/thumbnails/2.jpg)
Problema
• Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro
• Solução 1: Medir cobertura – Mas… cobrir mais implica em encontrar mais
erros?
![Page 3: Teste baseado em falhas. Problema Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro Solução 1: Medir cobertura –Mas… cobrir mais.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc182497959413d8f44c1/html5/thumbnails/3.jpg)
Problema
• Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro
• Solução 1: Medir cobertura– Mas… cobrir mais implica em encontrar mais
erros?
• Solução 2: Introduzir erro intencionalmente (fault seeding/injection)– Permite identificar se a suíte encontrará ou não
os erros injetados.
![Page 4: Teste baseado em falhas. Problema Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro Solução 1: Medir cobertura –Mas… cobrir mais.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc182497959413d8f44c1/html5/thumbnails/4.jpg)
Teste de Mutação
P
T0T1
T2
…
Tn
• Como saber se TS é adequada para encontrar erros?
TS =
![Page 5: Teste baseado em falhas. Problema Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro Solução 1: Medir cobertura –Mas… cobrir mais.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc182497959413d8f44c1/html5/thumbnails/5.jpg)
Teste de Mutação
• P’ é uma versão que contém um erro!
• O que se pode concluir sobre TS?
P
T0T1
T2
…
Tn
P’
T0
T1
T2
…Tn
TS =
![Page 6: Teste baseado em falhas. Problema Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro Solução 1: Medir cobertura –Mas… cobrir mais.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc182497959413d8f44c1/html5/thumbnails/6.jpg)
Teste de Mutação
• P’ é uma versão que contém um erro!
• O que se pode concluir sobre TS?
P
T0T1
T2
…
Tn
P’
T0
T1
T2
…Tn
TS =
Inadequado para encontrar erro introduzido em P’
![Page 7: Teste baseado em falhas. Problema Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro Solução 1: Medir cobertura –Mas… cobrir mais.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc182497959413d8f44c1/html5/thumbnails/7.jpg)
Teste de Mutação
• O que o programador deve fazer ao perceber isto?
P
T0T1
T2
…
Tn
P’
T0
T1
T2
…Tn
TS =
![Page 8: Teste baseado em falhas. Problema Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro Solução 1: Medir cobertura –Mas… cobrir mais.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc182497959413d8f44c1/html5/thumbnails/8.jpg)
Teste de Mutação
• O que o programador deve fazer ao perceber isto?
P
T0T1
T2
…
Tn
P’
T0
T1
T2
…Tn
TS =
Adicionar novo teste para capturar erro em P’
![Page 9: Teste baseado em falhas. Problema Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro Solução 1: Medir cobertura –Mas… cobrir mais.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc182497959413d8f44c1/html5/thumbnails/9.jpg)
Teste de Mutação
• Novo teste deve passar em P e falhar em P’
• Definição: TS distingue programas P e P’
P
T0T1
T2
…
Tn
P’
T0
T1
T2
…
Tn
TS =
Tn+1 Tn+1
![Page 10: Teste baseado em falhas. Problema Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro Solução 1: Medir cobertura –Mas… cobrir mais.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc182497959413d8f44c1/html5/thumbnails/10.jpg)
Terminologia
• Mutante
• Operador de Mutação
• Mutante morto
• Mutante sobrevivente
• Mutante equivalente
![Page 11: Teste baseado em falhas. Problema Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro Solução 1: Medir cobertura –Mas… cobrir mais.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc182497959413d8f44c1/html5/thumbnails/11.jpg)
Terminologia
• Mutante: Programa original modificado
• Operador de Mutação: Definição de uma transformação (de original para mutante)
• Mutante morto: Quando a suíte de teste consegue distinguir mutante do original
• Mutante sobrevivente: Não morto (acima)
• Mutante equivalente: Semântica do mutante é equivalente ao original
![Page 12: Teste baseado em falhas. Problema Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro Solução 1: Medir cobertura –Mas… cobrir mais.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc182497959413d8f44c1/html5/thumbnails/12.jpg)
Modelo de falhas
• Caracterização dos problemas frequentes em um domínio– E.g., reentrância em AOP, null-pointer em OO,
deadlocks em programação concorrente, etc.
Gerador de mutantes (operadores de mutação) usam esta caracterização
para criar mutantes
![Page 13: Teste baseado em falhas. Problema Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro Solução 1: Medir cobertura –Mas… cobrir mais.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc182497959413d8f44c1/html5/thumbnails/13.jpg)
Mutantes sobreviventes
• Duas razões para Pm sobreviver ao teste de distinção de P em relação a TS– Suíte TS não consegue distinguir Pm e P– P e Pm são equivalentes => problema
indecidível!
![Page 14: Teste baseado em falhas. Problema Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro Solução 1: Medir cobertura –Mas… cobrir mais.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc182497959413d8f44c1/html5/thumbnails/14.jpg)
Métodologia (Parte 1)
Input: P: Pgm, OPS: set of OpOutput: set of Pgm Pseudo-code: gerarMutantes /******************************************************* * gera vários novos programas derivados de P. * Para cada um, identifica um operador de * mutação em OPS e uma posicão para aplicá-lo * em P. Em geral, cada mutante inclui apenas * uma modificação. *******************************************************/
![Page 15: Teste baseado em falhas. Problema Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro Solução 1: Medir cobertura –Mas… cobrir mais.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc182497959413d8f44c1/html5/thumbnails/15.jpg)
Métodologia (Parte 2)
Input: P: Pgm, TS: set of Pgm, {P1, P2, …, Pn}: set of PgmOutput: /*survivors*/ set of Pgm x /*killed*/ set of PgmPseudo-code: encontreSobreviventesfor each Pm in {P1,P2, …,Pn} do // distinguir mutante if (exists some T in TS s.t. RUN(T,Pm) == FAIL) killed = killed U {Pm} else survivors = survivors U {Pm}donereturn (survivors, killed)
![Page 16: Teste baseado em falhas. Problema Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro Solução 1: Medir cobertura –Mas… cobrir mais.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc182497959413d8f44c1/html5/thumbnails/16.jpg)
Metodologia (Parte 3)
P
TS
Set of Mutants
OPsgerarMutantes encontreSobreviventes
sobreviventesnovos testes
![Page 17: Teste baseado em falhas. Problema Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro Solução 1: Medir cobertura –Mas… cobrir mais.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc182497959413d8f44c1/html5/thumbnails/17.jpg)
Score de Mutação
• Métrica usada no teste de mutaçao
• Está para o teste de falhas assim com cobertura está para o teste estrutural
• Definição: #mortos / (#mutantes - #equivalentes)
![Page 18: Teste baseado em falhas. Problema Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro Solução 1: Medir cobertura –Mas… cobrir mais.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc182497959413d8f44c1/html5/thumbnails/18.jpg)
Exemplo
• Qual o score para o cenário 10 mutantes, 5 mortos, 2 equivalentes?
![Page 19: Teste baseado em falhas. Problema Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro Solução 1: Medir cobertura –Mas… cobrir mais.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc182497959413d8f44c1/html5/thumbnails/19.jpg)
Exemplo
• Qual o score para o cenário 10 mutantes, 5 mortos, 2 equivalentes?– Score = 5/(10-2) = 5/8 = .625 = 62.5%
![Page 20: Teste baseado em falhas. Problema Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro Solução 1: Medir cobertura –Mas… cobrir mais.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc182497959413d8f44c1/html5/thumbnails/20.jpg)
Nota: Definição de score
• Definição: #mortos / (#mutantes - #equivalentes)
É comum desconsiderar #equivalentes, pois não é possível identificar de forma automatizada e ainda precisa!
![Page 21: Teste baseado em falhas. Problema Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro Solução 1: Medir cobertura –Mas… cobrir mais.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc182497959413d8f44c1/html5/thumbnails/21.jpg)
Nota: Definição de score
• Definição: #mortos / #mutantes
Aproximação pessimista do score ideal!
![Page 22: Teste baseado em falhas. Problema Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro Solução 1: Medir cobertura –Mas… cobrir mais.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc182497959413d8f44c1/html5/thumbnails/22.jpg)
Principais limitações
• Não se sabe se erro introduzido por um operador de mutação é relevante
• Classificar um mutante como equivalente é manual (caro e passível de erro)
• Custo alto: Número de mutantes elevado requer várias execuções do teste
![Page 23: Teste baseado em falhas. Problema Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro Solução 1: Medir cobertura –Mas… cobrir mais.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc182497959413d8f44c1/html5/thumbnails/23.jpg)
Resumo
• Modelo de falhas
• Mutante morto
• Mutante sobrevivente– Mutante equivalente
• Score de mutação