1 / 23

Teste baseado em falhas

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 implica em encontrar mais erros?. Problema. Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro

Télécharger la présentation

Teste baseado em falhas

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Teste baseado em falhas

  2. 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?

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

  4. T0   T1  T2 …  Tn Teste de Mutação TS = • Como saber se TS é adequada para encontrar erros? P

  5. T0  T0   T1  T1   T2 T2 … …  Tn  Tn Teste de Mutação TS = • P’ é uma versão que contém um erro! • O que se pode concluir sobre TS? P’ P

  6. T0  T0   T1  T1   T2 T2 … …  Tn  Tn Teste de Mutação TS = • P’ é uma versão que contém um erro! • O que se pode concluir sobre TS? P’ P Inadequado para encontrar erro introduzido em P’

  7. T0  T0   T1  T1   T2 T2 … …  Tn  Tn Teste de Mutação TS = • O que o programador deve fazer ao perceber isto? P’ P

  8. T0  T0   T1  T1   T2 T2 … …  Tn  Tn Teste de Mutação TS = • O que o programador deve fazer ao perceber isto? P’ P Adicionar novo teste para capturar erro em P’

  9. T0   T1  T2 …  Tn Teste de Mutação TS = • Novo teste deve passar em P e falhar em P’ • Definição: TS distingue programas P e P’ T0   T1 P’ P  T2 …  Tn  Tn+1 Tn+1 

  10. Terminologia • Mutante • Operador de Mutação • Mutante morto • Mutante sobrevivente • Mutante equivalente

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

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

  13. 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 => problemaindecidível!

  14. Métodologia (Parte 1)‏ Input: P: Pgm, OPS: set of Op Output: 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. *******************************************************/

  15. Métodologia (Parte 2)‏ Input: P: Pgm, TS: set of Pgm, {P1, P2, …, Pn}: set of Pgm Output: /*survivors*/ set of Pgm x /*killed*/ set of Pgm Pseudo-code: encontreSobreviventes for 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} done return (survivors, killed)‏

  16. Metodologia (Parte 3)‏ Set of Mutants gerarMutantes encontreSobreviventes P OPs TS sobreviventes novos testes

  17. 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)‏

  18. Exemplo • Qual o score para o cenário 10 mutantes, 5 mortos, 2 equivalentes?

  19. Exemplo • Qual o score para o cenário 10 mutantes, 5 mortos, 2 equivalentes? • Score = 5/(10-2) = 5/8 = .625 = 62.5%

  20. 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!

  21. Nota: Definição de score • Definição: #mortos / #mutantes Aproximação pessimista do score ideal!

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

  23. Resumo • Modelo de falhas • Mutante morto • Mutante sobrevivente • Mutante equivalente • Score de mutação

More Related