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

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

Teste de Software 11: Teste baseado em falhas

Apresentações semelhantes


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

1 Teste de Software 11: Teste baseado em falhas
Marcelo d’Amorim

2 Resumo Teste baseado em falhas e o teste de mutação

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 não se sabe se o teste eh adequado para encontrar erros

4 Problema Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro Solução 2 Introduzir um bug (Fault seeding) É possível saber se o erro introduzido será ou não encontrado (Limitaçoes no final desta aula…)

5 Teste de Mutação Como saber se TS é adequada para encontrar erros? 
Tn P Como saber se TS é adequada para encontrar erros?

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?

7 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’

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?

9 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’

10 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’

11 Terminologia Mutante Operador de Mutação Mutante morto
Mutante sobrevivente Mutante equivalente

12 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

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, 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) Set of Mutants gerarMutantes encontreSobreviventes P OPs TS sobreviventes novos testes

17 Score de Mutação Está para o teste de falhas assim com cobertura está para o teste estrutural Score: #mortos / (#mutantes - #equivalentes) Ex. 10 mutantes, 5 mortos, 2 equivalentes. Score = 5/8 = (62.5%)

18 Nota: Geração de Casos de Teste
Cobertura e score de mutação são usados com frequência para avaliar (comparar) técnicas de geração de casos de teste

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

20 Resumo Teste baseado em falhas e o teste de mutação


Carregar ppt "Teste de Software 11: Teste baseado em falhas"

Apresentações semelhantes


Anúncios Google