1 / 41

Testes de Regressão

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.

zanta
Download Presentation

Testes de Regressão

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Criado: jun/2001 Atualizado: nov/2009 Testes de Regressão

  2. Tópicos • Conceito • Classificação • Tipos de técnicas • Características desejáveis das técnicas • Ferramentas 2

  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. 3

  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 4

  5. Teste de Regressão • Objetivo: verificar Impacto de Mudanças

  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 6

  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”) 7

  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 8

  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 9

  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 10

  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 B ex.: precisão de valores reais entre D e B 11

  12. 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

  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’ Testar P’ usando T’’ N Criar T’’’ = T  T’’ Fim Processo 13

  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’ 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

  15. 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

  16. 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

  17. Abordagens • Abordagens: • retesta tudo: T’ = T • seletiva: T’ T qual abordagem usar? 17

  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 se s  | T’ | < r  ( | T | - | T’ | )  regressão seletiva mas se potencial detecção falhas T’ < T  retesta tudo 18

  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 19

  20. 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

  21. 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

  22. 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

  23. 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

  24. 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

  25. 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.

  26. 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

  27. 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

  28. Dependências entre os componentes ServiçodeFinanças Transação Conta Taxas Dinheiro NroConta : depende de Exemplo - Reteste no firewall 35

  29. 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

  30. 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

  31. 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

  32. Matriz de rastreabilidade

  33. 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

  34. 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

  35. 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

  36. 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

  37. 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

  38. 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

  39. 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

  40. 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

  41. 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

More Related