420 likes | 559 Views
Criado: jun/2001 Atualizado: nov/2009. Testes de Regressão. Tópicos. Conceito Classificação Tipos de técnicas Características desejáveis das técnicas Ferramentas. 2. Referências. R. Binder. “Testing OO Systems: Models, Patterns and Tools”. Addison-Wesley, 1999, c.15.
E N D
Criado: jun/2001 Atualizado: nov/2009 Testes de Regressão
Tópicos • Conceito • Classificação • Tipos de técnicas • Características desejáveis das técnicas • Ferramentas 2
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. 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 4
Teste de Regressão • Objetivo: verificar Impacto de Mudanças
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 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”) 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 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 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 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 11
garante D B E servidor cliente requer E servidor D requer garante B cliente Modelos de falhas de regressão (OO) Contrato entre B e E não muda. D não é compatível com todos os contratos de E, mas pode substituí-la (polimorfismo) Contrato entre B e E não muda, mas comportamento de E muda devido à mudança em D 12
Identificar modificações a P Modificar P P’ Selecionar T’ T S partes novas, modificadas ou não testadas em P’? Criar T’’ Testar P’ usando T’ Testar P’ usando T’’ N Criar T’’’ = T T’’ Fim Processo 13
Identificar modificações a P Modificar P P’ Selecionar T’ T S partes novas, modificadas ou não testadas em P’? Criar T’’ Testar P’ usando T’ 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”) Testar P’ usando T’’ N Criar T’’’ = T T’’ Fim Processo 14
Identificar modificações a P Modificar P P’ Selecionar T’ T S partes novas, modificadas ou não testadas em P’? Criar T’’ Testar P’ usando T’ Testar P’ usando T’’ N Criar T’’’ = T T’’ Fim Processo Pb da cobertura: identificar partes de P’ (ou S’) que não foram cobertos 15
Identificar modificações a P Modificar P P’ Selecionar T’ T Pb da manutenção e minimização dos testes: • atualizar T T’’’ • minimizar T’’’: eliminar casos de teste redundantes e obsoletos S partes novas, modificadas ou não testadas em P’? Criar T’’ Testar P’ usando T’ Testar P’ usando T’’ N Criar T’’’ = T T’’ Fim Processo 16
Abordagens • Abordagens: • retesta tudo: T’ = T • seletiva: T’ T qual abordagem usar? 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 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 19
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
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
G A F V T P if A then B else C; if D then if E then F; G; if H then I; X; B C testes caminho t1 ABDEFGHIX t2 ABDEGHIX t3 ABDHIX t4 ACDHX D V E F V V F F G H F I X Exemplo 24
G G’ A A 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; F V B P if A then B else C; if D then if E then F; G; if H then I; X; C’ B C D D F V V V E H2 E F V F V V F J F F I G F G H1 F H V F K L I X X Seleção baseada no segmento modificado 25
G’ A T’ 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; Modificação seq. segura mínima C C’ t4 (ACDHX) + J t2 (ABDEGHIX) H H1 + H2 t1 (ABDEFGHIX), t2 (ABDEGHIX), t3 (ABDHX), t4 (ACDHX) B C’ D F V V E H2 F V J F I G F H1 F V K L X Exemplo 26
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 exercitemos módulosdentro 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.
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] 33
Tem único NroConta Tem 0 .. * Conta 2 .. * Usa Aplicada a ServiçodeFinanças Usa 0 .. * Transação Dinheiro Oferecido através de 0 .. * Taxas Exemplo - Reteste no firewall Aplicada a 34
Dependências entre os componentes ServiçodeFinanças Transação Conta Taxas Dinheiro NroConta : depende de Exemplo - Reteste no firewall 35
Seleção de Testes no Firewall ServiçodeFinanças Testes Transação Testes Conta firewall Transação Conta Taxas Dinheiro NroConta Testes Dinheiro —: inalterado —: modificado Exemplo - Reteste no firewall 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
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
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 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? 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 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 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 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 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? 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? 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? 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. 51