A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Eliane Martins - Instituto de Computação - UNICAMP Testes de Regressão Criado: jun/2001 Atualizado: nov/2009."— Transcrição da apresentação:

1

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

3 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

4 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. Intl Conf on Sw Eng., Sorrento, Itália, maio/1994, pg M.J.Harrold. Testing Evolving Software. The Journal of Systems and Sw, nº 47, 1999, pp 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.

5 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

6 Eliane Martins - Instituto de Computação - UNICAMP Teste de Regressão Objetivo: verificar Impacto de Mudanças

7 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

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

9 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

10 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

11 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

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

13 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 requer E B D cliente servidor Contrato entre B e E não muda. D não é compatível com todos os contratos de E, mas pode substituí-la (polimorfismo)

14 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

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

16 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 N Pb da cobertura: identificar partes de P (ou S) que não foram cobertos

17 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

18 Eliane Martins - Instituto de Computação - UNICAMP 17 Abordagens Abordagens: –retesta tudo: T = T –seletiva: T T qual abordagem usar?

19 Eliane Martins - Instituto de Computação - UNICAMP 18 Modelo custo x benefício Sejam: | T | e | T | cardinalidades de T e T scusto médio de seleção/caso de teste rcusto 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

20 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

21 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

22 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

23 Eliane Martins - Instituto de Computação - UNICAMP Seleção para programas imperativos // função que calcula média de nros. // inteiros positivos lidos de um arquivo int M( ) 1. int n, conta = 0 2. int soma = 0 3. while (not EOF) do 4. fread (arq, n) 5. if (n < 0) 6. return (-1) else 7. soma += n 8. conta++ 9. endif 10. printf (passo:, conta) endwhile 11. return (soma/conta) V V F F 11 GFC de P Programa original P

24 Eliane Martins - Instituto de Computação - UNICAMP Grafos de Fluxo de controle de P' // função que calcula soma de nros. // inteiros positivos lidos de um arquivo int M( ) 1. int n, conta = 0 2. int soma = 0 3. while (not EOF) do 4. fread (arq, n) 5. if (n < 0) 6a. print (entrada inválida) 6. return (-1) else 7. soma += n 8. conta++ 9. endif >>> linha 10: eliminada endwhile 11. return (soma/conta) V V F F 6a 8 Programa modificado PGFC de P

25 Eliane Martins - Instituto de Computação - UNICAMP 24 Exemplo P if A then B else C; if D then if E then F; G; if H then I; X; testescaminho t1ABDEFGHIX t2ABDEGHIX t3ABDHIX t4ACDHX T G X I H G F E D C A B V F V V F F F V

26 Eliane Martins - Instituto de Computação - UNICAMP 25 Seleção baseada no segmento modificado P if A then B else C; if D then if E then F; G; if H then I; X; 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; G X I H G F E D C A B V F V V F F F V X K H1 G F E D C A B V F V V V F F J H2 I L F F G V

27 Eliane Martins - Instituto de Computação - UNICAMP 26 Exemplo 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çãoseq. segura mínima C Ct4 (ACDHX) + Jt2 (ABDEGHIX) H H1 + H2t1 (ABDEFGHIX), t2 (ABDEGHIX), t3 (ABDHX), t4 (ACDHX) T X K H1 G F E D C A B V F V V V F F J H2 I L F F G V

28 Eliane Martins - Instituto de Computação - UNICAMP Seleção para programas OO Variante do algoritmo visto anteriormente onde se considera o Grafo de Fluxo de Controle Interprocedimental (GFCI) para representar a estrutura do código em C++ GFCI = GFC estendido: –Nós de chamadas de funções (ou métodos) –Nós de retorno –Nós de entrada de função –Nós de saída de função –Arestas ligando estes nós

29 Eliane Martins - Instituto de Computação - UNICAMP /* aleat.cpp * Exemplo de classe em C++ * Gerador de números aleatórios * O código baseia-se no exemplo encontrado em * / subjects/cpp/random.cpp ******/ #include class GeraAleat { public: GeraAleat(void); void Init (double seed); double RAleat(void); int IAleat(void); void ObtemInterv(int min, int max); private: double ran; // ultimo nro aleat int rmin, rmax; // intervalo para IAleat }; // Construtor 1.GeraAleat::GeraAleat() { // inicializa seqüência com valor = hora local 2. Init (time(0));} // Inicializa seqüência aleatória // Essa função é chamada com um valor qqr // para iniciar uma nova seq de nros aleatórios 3. void GeraAleat::Init(double seed) { 4. rmin=0; rmax=1; // gera um valor decimal qqr 5. ran = seed * M_PI; // obtém dois valores da seq. 6. FRandom(); FRandom();} // gera nro real entre 0 e 1 7.double GeraAleat::RAleat(void) { 8. ran = fmod(ran* , 1.); 9. return ran;} // gera nro aleat inteiro dentro de um // intervalo dado por ObtemInterv 10.int GeraAleat::IAleat (void) { 11. int ir = rmin + RAleat()*(rmax-rmin+1); 12. if (ir > rmax) 13. ir = rmax; 14. return ir;}// obtém intervalo para IAleat 15. void GeraAleat::ObtemInterv(int min, int max) { 16. rmin = min; rmax = max;} // Programa exemplo mostrando como // gerar 20 nros aleat. 17. void main() { 18. int i; 19. GeraAleat ga; 20. ga.ObtemInterv(0, 99); 21. for (i=0; i<20; i++) 22. cout << "\n" << rg.IAleat(); 23. getch();}

30 Eliane Martins - Instituto de Computação - UNICAMP I c 19r 20r 20c r 22c F I 1 2c 2r F I F I 3 6 F 4 5 I 10 11c 11r F I 7 F 8 9

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

32 Eliane Martins - Instituto de Computação - UNICAMP B K E I J F G H C D A L M N Exemplo de um Grafo de Chamadas (GC)

33 Eliane Martins - Instituto de Computação - UNICAMP GCDA Especificação Código Módulo no firewall firewall Determinação do firewall FHKMEBINJK

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

35 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 0.. * Aplicada a

36 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

37 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 Testes Dinheiro Testes Transação Testes Conta

38 Eliane Martins - Instituto de Computação - UNICAMP Outro tipo de seleção baseada no firewall Kung et al. (1995) propõem a definição de um firewall com base no Grafo de Relacionamentos entre Objetos (ORG, do inglês Object Relation Graph): –Grafo orientado onde nós = classes e arestas são rotuladas de acordo com o relacionamento entre os objetos das classes que elas conectam: H: herança Ag: agregação As: associação

39 Eliane Martins - Instituto de Computação - UNICAMP Obtenção de um ORG Diagrama de classes ORG

40 Eliane Martins - Instituto de Computação - UNICAMP Determinação do firewall a partir do ORG Pedido Conta Produto Linha de Pedido Empregado Pessoa Física Cliente Pessoa Jurídica Ag As Ag As H H Classe modificada firewall

41 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

42 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

43 Eliane Martins - Instituto de Computação - UNICAMP Matriz de rastreabilidade t1t1 t2t2...tMtM Caso de uso 1 Caso de uso 2... Caso de uso N

44 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

45 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 casos de testes Quantos casos de testes devem ser selecionados?

46 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 UsoFreqüênciaNº de testes Saque50% 500 Depósito25% 250 Transferência12% 120 Pede Saldo8% 60 Pede Extrato3% 30 Pede Talão2% 20

47 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

48 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

49 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?

50 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?

51 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?

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


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

Apresentações semelhantes


Anúncios Google