Eliane Martins - Instituto de Computação - UNICAMP
Testes de Regressão
Criado: jun/2001Atualizado: 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
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.
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
Eliane Martins - Instituto de Computação - UNICAMP
Teste de Regressão
• Objetivo: verificar Impacto de Mudanças
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
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”)
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
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
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
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
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)
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
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”)
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
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
Eliane Martins - Instituto de Computação - UNICAMP 17
Abordagens
• Abordagens:– retesta tudo: T’ = T
– seletiva: T’ T
qual abordagem usar?
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
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
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
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
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
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
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
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.
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]
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
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
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
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
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
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
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
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?
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
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
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
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?
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?
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?
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.