A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Teste baseado em falhas

Apresentações semelhantes


Apresentação em tema: "Teste baseado em falhas"— Transcrição da apresentação:

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 Teste de Mutação Como saber se TS é adequada para encontrar erros? 
Tn P Como saber se TS é adequada para encontrar erros?

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

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

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

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

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

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 => problema indecidí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 encontreSobreviventes
Metodologia (Parte 3)‏ P TS Set of Mutants OPs gerarMutantes encontreSobreviventes 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


Carregar ppt "Teste baseado em falhas"

Apresentações semelhantes


Anúncios Google