Testes de Regressão Criado: jun/2001 Atualizado: nov/2009 Eliane Martins - Instituto de Computação - UNICAMP Tópicos • Conceito • Classificação • Tipos de técnicas • Características desejáveis das técnicas • Ferramentas Eliane Martins - Instituto de Computação - UNICAMP 2 Referências R. Binder. “Testing OO Systems: Models, Patterns and Tools”. AddisonWesley, 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 3 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 4 Teste de Regressão • Objetivo: verificar Impacto de Mudanças Eliane Martins - Instituto de Computação - UNICAMP 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 6 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 7 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 8 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 9 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 10 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 B ex.: precisão de valores reais entre D e B Eliane Martins - Instituto de Computação - UNICAMP 11 Modelos de falhas de regressão (OO) garante D B servidor E cliente requer E servidor requer D garante B cliente Contrato entre B e E não muda, mas comportamento de E muda devido à mudança em D 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 12 Processo Identificar modificações a P Criar T’’ S Modificar P P’ partes novas, modificadas ou não testadas em P’? Testar P’ usando T’’ Criar T’’’ = T T’’ Selecionar T’ T Testar P’ usando T’ N Fim Eliane Martins - Instituto de Computação - UNICAMP 13 Processo Identificar modificações a P Criar T’’ S Testar P’ usando T’’ Modificar P P’ Selecionar T’ T partes novas, modificadas Testar P’ usando T’ Pb da seleção da seqüência de regressão: ou não testadas em P’? • 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”) Criar T’’’ = T T’’ N Fim Eliane Martins - Instituto de Computação - UNICAMP 14 Processo Identificar modificações a P Criar T’’ S Modificar P P’ partes novas, modificadas ou não testadas em P’? Selecionar T’ T Testar P’ usando T’ Testar P’ usando T’’ N Pb da cobertura: identificar partes de P’ (ou S’) que não foram cobertos Criar T’’’ = T T’’ Fim Eliane Martins - Instituto de Computação - UNICAMP 15 Processo Identificar modificações a P Criar T’’ S Modificar P P’ Selecionar T’ T Pb da manutenção e minimização dos testes: partes novas,Tmodificadas • atualizar T’’’ Testar P’ usando T’ ou •não testadas em P’? minimizar T’’’: eliminar casos de teste redundantes e obsoletos Testar P’ usando T’’ Criar T’’’ = T T’’ N Fim Eliane Martins - Instituto de Computação - UNICAMP 16 Abordagens • Abordagens: – retesta tudo: T’ = T – seletiva: T’ T qual abordagem usar? Eliane Martins - Instituto de Computação - UNICAMP 17 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 se s | T’ | < r ( | T | - | T’ | ) regressão seletiva mas se potencial detecção falhas T’ < T retesta tudo Eliane Martins - Instituto de Computação - UNICAMP 18 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 19 Técnicas • As técnicas de seleção de testes de regressão podem ser baseadas: – No código + seguras • Grafo de fluxo de controle – Na arquitetura • firewall – Na especificação • Casos de uso Eliane Martins - Instituto de Computação - UNICAMP - seguras 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 Exemplo G A V B P if A then B else C; if D then if E then F; G; if H then I; X; F C D V V E F F F T testes caminho t1 ABDEFGHIX t2 ABDEGHIX t3 ABDHIX t4 ACDHX G H V I F X Eliane Martins - Instituto de Computação - UNICAMP 24 Seleção baseada no segmento modificado G’ G A V P if A then B else C; if D then if E then F; G; if H then I; X; F B C D V V E F F F G H V I F V P’ if A then B else C’; if D then if E then F else J; G; if H1 then K else L; else if H2 then I; X; X Eliane Martins - Instituto de Computação - UNICAMP A F C’ B D V V F E H2 F V J F G I H1 V F K L X 25 F Exemplo G’ T’ Modificação seq. segura mínima C C’ t4 (ACDHX) +J t2 (ABDEGHIX) H H1 + H2 t1 (ABDEFGHIX), t2 (ABDEGHIX), t3 (ABDHX), t4 (ACDHX) V P’ if A then B else C’; if D then if E then F else J; G; if H1 then K else L; else if H2 then I; X; A F C’ B D V V F E H2 F V J F G I H1 V F K L X Eliane Martins - Instituto de Computação - UNICAMP 26 F 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 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 33 Exemplo - Reteste no firewall Tem único Tem 0 .. * NroConta Conta 2 .. * Aplicada a ServiçodeFinanças 0 .. * Transação Oferecido através de 0 .. * Usa Usa Dinheiro Aplicada a Taxas Eliane Martins - Instituto de Computação - UNICAMP 34 Exemplo - Reteste no firewall Dependências entre os componentes ServiçodeFinanças Transação Taxas Conta Dinheiro NroConta : depende de Eliane Martins - Instituto de Computação - UNICAMP 35 Exemplo - Reteste no firewall Seleção de Testes no Firewall ServiçodeFinanças Testes Transação Transação Taxas firewall Conta Dinheiro —: inalterado —: modificado Eliane Martins - Instituto de Computação - UNICAMP Testes Conta NroConta Testes Dinheiro 36 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 Caso de uso 1 t1 t2 Caso de uso 2 ... tM ... Caso de uso N Eliane Martins - Instituto de Computação - UNICAMP 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 43 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 44 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 Saque 50% Depósito 25% Transferência 12% Pede Saldo 8% Pede Extrato 3% Pede Talão 2% Nº de testes 500 250 120 60 30 20 Eliane Martins - Instituto de Computação - UNICAMP 45 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 46 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 47 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 48 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 49 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 50 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. Eliane Martins - Instituto de Computação - UNICAMP 51