Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001...

41
Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009

Transcript of Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001...

Page 1: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP

Testes de Regressão

Criado: jun/2001Atualizado: nov/2009

Page 2: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 2

Tópicos

• Conceito

• Classificação

• Tipos de técnicas

• Características desejáveis das técnicas

• Ferramentas

Page 3: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 3

Referências

R. Binder. “Testing OO Systems: Models, Patterns and Tools”. Addison-Wesley, 1999, c.15.

G.Rothermel, M.J.Harrold. “A Framework for Evaluating Regression Test Selection Techniques”, Proc. 16th. Int’l Conf on Sw Eng., Sorrento, Itália, maio/1994, pg. 201-210.

M.J.Harrold. “Testing Evolving Software”. The Journal of Systems and Sw, nº 47, 1999, pp173-181.

L.A Fondazzi Martimiano. “Estudo de Técnicas de Teste de Regressão Baseado em Mutação Seletiva”. Dissertação de mestrado. Instituto de Ciências Matemáticas e de Computação - USP/S.Carlos, 1999.

Page 4: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 4

O que é

Testes realizados a cada vez que um sw é alterado

• Objetivo:– validar modificações feitas

– mostrar que modificações realizadas não afetaram as partes que não foram modificadas

isto é mostrar que o sw não regrediu

Page 5: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP

Teste de Regressão

• Objetivo: verificar Impacto de Mudanças

Page 6: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 6

Alguns conceitos

• Linha básica (“baseline”)– versão de um componente (ou sistema) já testada

• Delta– modificação feita a um componente (ou sistema) e que ainda não foi

testada

• Configuração delta (“delta build”)– configuração executável do sistema contendo deltas e linhas básicas

• Caso de teste de regressão– caso de teste aplicado à linha de base com veredicto = passou

– se veredicto = não passou na config. delta falha de regressão

Page 7: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 7

Quando aplicar

• Para testar aplicações críticas que devem ser retestadas freqüentemente

• Para testar sw que é alterado constantemente durante o desenvolvimento (ex.: Processo Incremental ou Evolutivo)

• Para testar componentes reutilizáveis para determinar se são adequados para o novo sistema

• Durante os testes de integração

• Durante os testes, após correções

• Em fase de manutenção (corretiva, adaptativa, perfectiva ou preventiva)

• Para identificar diferenças no comportamento do sistema quando há mudanças de plataforma (uso de seqüências-padrão ou “benchmarks”)

Page 8: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 8

Quando aplicar (OO)

• Quando uma nova subclasse é criada

• Quando uma super-classe é alterada

• Quando uma classe servidora é alterada

• Quando uma classe é reutilizada em um novo contexto

Page 9: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 9

Limitações

Uma seqüência de regressão NÃO contém testes para as partes novas ou alteradas

Uma seqüência de testes que pode ser usada como seqüência de regressão deixa de ser útil como seqüência de testes primária

Uma seqüência de regressão não tem as mesmas metas de cobertura de uma seqüência de testes primária

O uso de seqüência de testes inadequada como seqüência de regressão não melhora sua qualidade

Page 10: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 10

Falhas de regressão - por quê?

• Falhas de regressão ocorrem quando há dependências entre D (delta) e B (linha de base):– de fluxo de controle

– de fluxo de dados

– restrições de ativação

– compartilhamento de dados

– tempo

– disputa por recursos

Page 11: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 11

Modelos de falhas de regressão

• Dados D(delta) e B (linha de base):– D aloca / muda o valor / desaloca: variável global, atributo de uma

classe, dado persistente usado por B, causando: (1) ativação de falha dormente em B ou (2) violação do contrato (pré-condições e invariantes) de B, gerando uma exceção ou (3) B viole contrato de outra linha de base B’

– D é cliente de B e envia mensagem que viola contrato de B

– D é servidor de B e retorna valor que viola contrato de B

– D é incompatível com Bex.: precisão de valores reais entre D e B

Page 12: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 12

Modelos de falhas de regressão (OO)

requer

E

B

D

garante

cliente

servidor

Contrato entre B e E não muda, mas comportamento de E muda devido à mudança em D

garante

requerE B

D

clienteservidor

Contrato entre B e E não muda. D não é compatível com todos os contratos de E, mas pode substituí-la (polimorfismo)

Page 13: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 13

Processo

Identificar modificações a P Modificar P P’ Selecionar T’ T

Testar P’ usando T’ partes novas, modificadas ou não testadas em P’?

Criar T’’

Testar P’ usando T’’

Criar T’’’ = T T’’ Fim

S

N

Page 14: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 14

Processo

Identificar modificações a P Modificar P P’ Selecionar T’ T

Testar P’ usando T’ partes novas, modificadas ou não testadas em P’?

Criar T’’

Testar P’ usando T’’

Criar T’’’ = T T’’ Fim

S

N

Pb da seleção da seqüência de regressão: • se t T obsoleto não incluir t em T’• se t T’/ t exercita a modificação e T’ aplicado no mesmo contexto que T T’ é segura (“safe”)

Page 15: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 15

Processo

Identificar modificações a P Modificar P P’ Selecionar T’ T

Testar P’ usando T’ partes novas, modificadas ou não testadas em P’?

Criar T’’

Testar P’ usando T’’

Criar T’’’ = T T’’ Fim

S

NPb da cobertura:identificar partes de P’ (ou S’) que não foram cobertos

Page 16: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 16

Processo

Identificar modificações a P Modificar P P’ Selecionar T’ T

Testar P’ usando T’ partes novas, modificadas ou não testadas em P’?

Criar T’’

Testar P’ usando T’’

Criar T’’’ = T T’’ Fim

S

N

Pb da manutenção e minimização dos testes:• atualizar T T’’’• minimizar T’’’: eliminar casos de teste redundantes e obsoletos

Page 17: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 17

Abordagens

• Abordagens:– retesta tudo: T’ = T

– seletiva: T’ T

qual abordagem usar?

Page 18: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 18

Modelo custo x benefício

• Sejam:| T | e | T’ | cardinalidades de T e T’

s custo médio de seleção/caso de teste

r custo médio de execução/caso de teste

ses | T’ | < r ( | T | - | T’ | ) regressão seletiva

masse potencial detecção falhas T’ < T retesta tudo

Page 19: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 19

Considerações para a seleção

• Problema: segurança (safety)– como obter T’ contendo casos de teste t T que exercitem código

de P que foi modificado em P’?

Problema indecidível O uso de uma seqüência de regressão segura

todos os casos de teste que podem revelar a presença de falhas foram aplicados

ausência de falhas de regressão ou de qualquer outro tipo de falha

Page 20: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP

Técnicas

• As técnicas de seleção de testes de regressão podem ser baseadas:– No código

• Grafo de fluxo de controle

– Na arquitetura• firewall

– Na especificação• Casos de uso

+ seguras

- seguras

Page 21: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP

Seleção baseada no código

• Exemplo de técnica:– Seleção baseada em segmento modificado

• As técnicas se baseiam na construção do Grafo de Fluxo de Controle (GFC) do programa– Passeio síncrono no grafo original e no grafo

modificado para identificar as modificações

Page 22: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 24

Exemplo

Pif A then Belse C;if D then if E then F; G;if H then I;X;

testes caminhot1 ABDEFGHIXt2 ABDEGHIXt3 ABDHIXt4 ACDHX

T

G

XI

HG

F

E

D

C

A

B

V F

V

V FF

FV

Page 23: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 25

Seleção baseada no segmento modificado

Pif A then Belse C;if D then if E then F; G;if H then I;X;

P’if A then Belse C’;if D then if E then F else J; G; if H1 then K else L;else if H2 then I;X;

G

XI

HG

F

E

D

C

A

B

V F

V

V FF

FV

X

K

H1G

F

E

D

C’

A

B

V F

V

V

V

F

F

J

H2

I

L

F

F

G’

V

Page 24: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 26

Exemplo

P’if A then Belse C’;if D then if E then F else J; G; if H1 then K else L;else if H2 then I;X;

Modificação seq. segura mínimaC C’ t4 (ACDHX)+ J t2 (ABDEGHIX)H H1 + H2 t1 (ABDEFGHIX),

t2 (ABDEGHIX),t3 (ABDHX),t4 (ACDHX)

T’

X

K

H1G

F

E

D

C’

A

B

V F

V

V

V

F

F

J

H2

I

L

F

F

G’

V

Page 25: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP

Seleção baseada na arquitetura

• Uso de firewall – O conceito de firewall foi introduzido por Leung e White

(1989) para separar os módulos que podem ser afetados pelas modificações dos outros.

– Uma vez identificado o firewall,é selecionado um subconjunto de testes que exercitem os módulos dentro do firewall.

– A determinação do firewall se dá através da análise de dependências feita sobre o Grafo de Chamadas (GC) representando a hierarquia de uso de módulos de um sistema funcional.

Page 26: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 33

Uso de firewall em software OO

• Firewall:– Conjunto de componentes (classes, programas, módulos, ...) que

devem ser incluídos nos testes de regressão

– Obtido através da análise de cada componente modificado e suas dependências com outros componentes

– Dependências entre A (delta) e B (linha de base):• B usa A (B é cliente de A)

• B é servidor de A

• B é subclasse de A

• B sobrecarrega A (polimorfismo)

[Binder99, c.15]

Page 27: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 34

Exemplo - Reteste no firewall

ServiçodeFinanças

Conta

NroConta

Transação Dinheiro

Taxas

Tem 0 .. *

Oferecido através de 0 .. *

Tem único

Aplicada a

2 .. *

Usa

Usa

0 .. *

Aplicada a

Page 28: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 35

Exemplo - Reteste no firewall

Dependências entre os componentes

ServiçodeFinanças

Conta

NroConta

Transação

DinheiroTaxas

: depende de

Page 29: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 36

firewall

Exemplo - Reteste no firewall

Seleção de Testes no Firewall

ServiçodeFinanças

Conta

NroConta

Transação

DinheiroTaxas

—: inalterado—: modificado

TestesDinheiro

TestesTransação

TestesConta

Page 30: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP

Técnicas baseadas na especificação

• A seleção baseia-se na análise do modelo de especificação. No caso, utilizaremos técnicas baseadas nos casos de uso [Binder99, c.15] :– Casos de uso de maior risco

– Casos de uso mais freqüentes

Page 31: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP

Seleção baseada nos casos de uso de maior risco

• Faz-se uma análise de risco para identificar:– Casos de uso críticos

• Aqueles que são cruciais para o bom funcionamento do sistema

– Casos de uso suspeitos• Aqueles que dependem de recursos (componentes, hardware,

software) pouco confiávis, ou seja, instáveis, pouco testados, mais complexos

• Selecionam-se os casos de teste para esses casos de uso

Page 32: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP

Matriz de rastreabilidade

t1 t2 ... tM

Caso de uso 1

Caso de uso 2

...

Caso de uso N

Page 33: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 43

Seleção de acordo com o perfil operacional do caso de uso

• Contexto:– Recursos (equipamento, pessoal, conhecimento, tempo)

para realização de testes de regressão são curtos

– o que fazer para selecionar subconjunto de testes da melhor maneira possível para os recursos disponíveis?

Alocar testes de acordo com a freqüência com que um caso de uso é realizado

Page 34: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 44

Exemplo

• Supor que se dispõe de 100h (6000 min) para os testes de regressão de um ATM, dos quais:– a execução de um caso de teste leva em média 5 min

– uma falha é revelada 0,5% do tempo

– a correção da falha requer em média 4h (240 min)

• Supor ainda que o conjunto de testes da linha básica contém 20.000 casos de testes

Quantos casos de testes devem ser selecionados?

Page 35: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 45

Exemplo - Reteste de acordo com perfil

• Seja T o total de testes que se quer realizar:5T + (0,005T 240) = 6000 T 1000

Caso de Uso Freqüência Nº de testes

Saque 50% 500

Depósito 25% 250

Transferência 12% 120

Pede Saldo 8% 60

Pede Extrato 3% 30

Pede Talão 2% 20

Page 36: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 46

Características de uma técnica de seleção

• Inclusão– o quanto a técnica inclui em T’ os casos de testes que fazem com

que saída(P’) saída(P) , revelando assim as falhas de regressão?

Ex.: • se | T | = 50 e 8 fazem com que saída(P’) saída(P)

• se a técnica seleciona 2 destes 8 testes

a técnica tem uma inclusão de 25% com relação a P, P’ e T.

para P, P’ e T quaisquer pb indecidível

Page 37: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 47

Características de uma técnica de seleção

• Inclusão

• Precisão– o quanto a técnica evita incluir em T’ os casos de teste que não

farão com que saída(P’) saída(P) ?

Ex.: • se | T | = 50 e 44 não fazem com que saída(P’) saída(P)

• se a técnica não seleciona 33 destes 44 testes

a técnica tem uma precisão de 75% com relação a P, P’ e T.

para P, P’ e T quaisquer pb indecidível

Page 38: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 48

Características de uma técnica de seleção

• Inclusão

• Precisão

• Eficiência– qual o custo computacional da técnica ?

• Espaço: quanto de informação o algoritmo necessita?

• Tempo: qual a complexidade do algoritmo de seleção?

Page 39: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 49

Características de uma técnica de seleção

• Inclusão

• Precisão

• Eficiência

• Generalidade– o quanto a técnica é genérica ?

• A técnica permite tratar qualquer tipo de modificação?

• A técnica pode tratar diferentes linguagens e tipos de programas?

• A técnica funciona tanto para unidade quanto para integração?

Page 40: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 50

Características de uma técnica de seleção

• Inclusão

• Precisão

• Eficiência

• Generalidade

• Suporte à cobertura– o quanto a técnica permite que se obtenha cobertura com relação a

algum critério ?• Os critérios de cobertura usados para gerar T continuam sendo

satisfeitos?

• A técnica permite que seja obtido T’’’ que cubra os acréscimos ou as modificações?

Page 41: Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009.

Eliane Martins - Instituto de Computação - UNICAMP 51

Ferramentas

• Testes manuais: – não recomendável pois número de testes e nº de falhas

• Ferramentas que podem auxiliar:– Capture/playback: permitem armazenar e re-aplicar conjuntos de

testes– Controle de versões: controlar o sistema e seu histórico de testes– Comparador de saídas: comparação entre resultados do delta e da

linha básica– Embaralhador de casos de teste: permitem revelar falhas de

seqüência de entradas– Testes embutidos: assertivas permitem revelar falhas de contrato.

Drivers embutidos permitem reduzir custos com manutenção dos testes.