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

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

Teste de Software 11: Teste baseado em falhas Marcelo dAmorim

Apresentações semelhantes


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

1 Teste de Software 11: Teste baseado em falhas Marcelo dAmorim

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 P T0 T1 T2 … Tn Como saber se TS é adequada para encontrar erros? TS =

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

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

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

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

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

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 Metodologia (Parte 3) P TS Set of Mutants OPs gerarMutantesencontreSobreviventes 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 =.0625 (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 Marcelo dAmorim"

Apresentações semelhantes


Anúncios Google