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

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

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 ainda não.

Apresentações semelhantes


Apresentação em tema: "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 ainda não."— 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 ainda não há correlação direta com capacidade de encontrar 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 ainda não há correlação direta com capacidade de encontrar erros. Solução 2 –Introduzir bug intecionalmente (fault seeding). Permite identificar se a suíte encontrará ou não o bug.

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

5 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 =

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 = Inadequado para encontrar erro introduzido em P’

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

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 = Adicionar novo teste para capturar erro em P’

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

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

13 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. *******************************************************/

14 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)‏

15 Metodologia (Parte 3)‏ P TS Set of Mutants OPs gerarMutantesencontreSobreviventes sobreviventes novos testes

16 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)‏

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

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

19 Nota: Definição de score Definição: #mortos / (#mutantes - #equivalentes)‏ É comum desconsiderar #equivalentes, pois não é possível identificar de forma automatizada!

20 Nota: Definição de score Definição: #mortos / #mutantes Aproximação pessimista do score preciso!

21 Nota: Geração de Casos de Teste É comum usar cobertura e scores de mutação para avaliar (comparar) técnicas de geração de casos de teste (através das suítes que geram).

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

23 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 usa esta caracterização para criar mutantes

24 Resumo Modelo de falhas Mutante morto Mutante sobrevivente –Mutante equivalente Score de mutação


Carregar ppt "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 ainda não."

Apresentações semelhantes


Anúncios Google