1 / 29

Teste Estrutural

Teste Estrutural. Teste estrutural. Teste baseado na estrutura do código Mais precisamente, Critério de adequação baseia-se no código!. 2. Teste estrutural. Estrutura de um programa é um grafo Exemplos: Organização em árvore de pacotes e classes Parser gera uma AST

liesel
Download Presentation

Teste Estrutural

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

More Related