Mutation Testing

13
Leonardo Molinari

Transcript of Mutation Testing

Leonardo Molinari

Questões Básicas Entendendo Teste de Mutação Terminologia Base Visão do Processo

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 é adequado para encontrar

erros

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

Como saber se TS é adequada para encontrar erros?

P

T0T1

T2

…Tn

TS =

P’ é uma versão que contém um erro! O que se pode concluir sobre TS?

P

T0T1

T2

…Tn

P’

T0

T1

T2

…Tn

TS =

P’ é uma versão que contém um erro! O que se pode concluir sobre TS?

P

T0T1

T2

…Tn

P’

T0

T1

T2

…Tn

TS =

Inadequado para encontrar erro introduzido em P’

O que o programador deve fazer ao perceber isto?

P

T0T1

T2

…Tn

P’

T0

T1

T2

…Tn

TS =

O que o programador deve fazer ao perceber isto?

P

T0T1

T2

…Tn

P’

T0

T1

T2

…Tn

TS =

Adicionar novo teste para capturar erro em P’

Novo teste deve passar em P e falhar em P’ Definição: TS distingue programas P e P’

P

T0T1

T2

…Tn

P’

T0

T1

T2

…Tn

TS =

Tn+1 Tn+1

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

P

TS

Set of Mutants

OPsgerarMutantes encontreSobreviventes

sobreviventesnovos testes

P: Pgm, TS: set of PgmOps: Output (survivors: set of Pgm, killed)

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)