Teste Estrutural - PowerPoint PPT Presentation

slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Teste Estrutural PowerPoint Presentation
Download Presentation
Teste Estrutural

play fullscreen
1 / 29
Teste Estrutural
160 Views
Download Presentation
liesel
Download Presentation

Teste Estrutural

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Teste Estrutural

  2. Testeestrutural • Teste baseado na estrutura do código • Mais precisamente, • Critério de adequação baseia-se no código! 2

  3. Teste estrutural • Estrutura de um programa é um grafo • Exemplos: • Organização em árvore de pacotes e classes • Parser gera uma AST • Fluxo de controle de um método define CFG • Fluxo de chamada de métodos define CG 3

  4. Control-Flow Graph (CFG)‏ stmt0; while (condA){ if (condB){ stmt1; stmt2; } stmt3; }stmt4 4

  5. CFG stmt0 stmt0; while (condA){ if (condB){ stmt1; stmt2; } stmt3; }stmt4 condA condB stmt4 stmt1; stmt2; stmt3 5

  6. Simplificação didática • Testar a estrutura de um programa equivale a testar um grafo • O que é um teste? (Para um grafo) 6

  7. Simplificação didática • Testar a estrutura de um programa equivale a testar um grafo • O que é um teste para um grafo? • Sequência de transiçoes a partir do nó inicial que termina em uma folha 7

  8. Simplificação didática • Testar a estrutura de um programa equivale a testar um grafo Model checkers de programas (ferramentas que geram sistematicamente testes) usam o mesmo princípio. Exemplos: Java PathFinder (Java), Verisoft (C), Spin (Promela). 8

  9. a t0 t4 b t1 t6 c f t2 t5 d t3 e Cobertura de Grafos stmt0 condA condB stmt4 stmt1; stmt2; stmt3 9

  10. a t0 t4 b t1 t6 c f t2 t5 d t3 e Cobertura de Grafos • Exemplo de teste • t0, t6 10 10

  11. Critérios de adequação de grafo • Nó • Transição • Caminho 11

  12. Critérios de adequação de grafo • Nó • Teste suíte TS é adequada a nó se para cada nó n no grafo G existe ao menos um teste t em TS que cobre n • Transição • Caminho 12

  13. Critérios de adequação de grafo • Nó • Teste suíte TS é adequada a nó se para cada nó n no grafo G existe ao menos um teste t em TS que cobre n • Transição • Caminho Grafo com ciclo possui número infinito de caminhos 13

  14. Ciclos • Problema: • Como medir cobertura de caminho? • Grafo com ciclos contém infinidade de caminhos • Solução comum: • Limitar o número de iterações! • Transforma um grafo em uma árvore 14

  15. a t0 t4 b t1 t6 c f t2 t5 d t3 e Exercício • Reporte suíte de teste adequada a nó • Reporte suíte de teste adequada a transição • Existe suíte de teste adequada a caminho? • Existe suíte de teste adequada a caminho de até N transições? 15 15

  16. Caminhos inalcançáveis Há caminhos inalcançáveis no programa: não há execução que o visite. 16

  17. Caminhos inalcançáveis a < 0 if (a < 0) { a = 0; } if (a > 10) { a = 10; } skip(); a = 0 a > 10 a = 10 skip 17

  18. Caminhos inalcançáveis • Enumere os caminhos do grafo a < 0 a = 0 a > 10 a = 10 skip 18

  19. Caminhos inalcançáveis • Enumere os caminhos do grafo a < 0 a = 0 a > 10 a = 10 skip 19

  20. Caminhos inalcançáveis • Todos estes caminhos são alcancáveis? if (a < 0) { a = 0; } if (a > 10) { a = 10; } skip(); 20

  21. Caminhos inalcançáveis • Estes caminhos são alcancáveis? if (a < 0) { a = 0; } if (a > 10) { a = 10; } skip(); a < 0 => NOT(a > 10)‏ 21

  22. Lista incompleta de critérios de adequação estruturais para programa • Statement • Basic-Block • Branch • Basic condition • Compound condition • MC/DC • Path • Boundary-Interior • Loop boundary • Call • … 22

  23. Lista incompleta de critérios de adequação estruturais para programa • Statement • Basic-Block • Branch • Basic condition • Compound condition • MC/DC • Path • Boundary-Interior • Loop boundary • Call • … Basic-block subsumes Statement Branch subsumes Basic-block 23

  24. Cobertura baseada em Condições Lógicas • Terminologia • Condições básicas e compostas • Exemplo: (((a || b) && c) || d) && e • a, b, c, d, e são condições básicas • (a || b) é uma condição composta 24

  25. Cobertura baseada em Condições Lógicas • Basic condition • Requer que toda condição básica seja satisfeita pela execução de algum teste • Compound Condition • Requer que toda condição composta seja satisfeita pela execuçao de algum teste • MC/DC • Requer que para cada condição básica C tenham-se 2 casos de teste que fixem o valor de todas as outras condições básicas. Os testes devem variar o resultado de C e o resultado de toda expressão. RTCA/DO-178B, EUROCAE ED-12b 25

  26. MC/DC • Objetivo é isolar efeito de cada condição básica no resultado de toda expressão 26

  27. Exercício • Gerar suíte de teste adequada a (i) basic condition, (ii) compound condition, e (iii) MC/DC para o bloco abaixo { if ((((a || b) && c) || d) && e) {…} else {…} } 27

  28. Solução • ((((a || b) && c) || d) && e)‏ a b c d e T 0 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 1 0 0 0 1 0 1 0 1 0 1 1 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 1 1 1 a b c d e T 0 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 1 0 0 0 1 0 1 0 1 0 1 1 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 1 1 1 28

  29. Resumo • Várias formas de se medir cobertura de código • Ciclos • Caminhos inalcançáveis 29