Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouEugénio Salgado Tomé Alterado mais de 8 anos atrás
1
Teste Estrutural
2
2 Teste estrutural Teste baseado na estrutura do código Mais precisamente, –Critério de adequação baseia-se no código!
3
3 Teste estrutural Estrutura de um programa é um grafo Exemplos: –Parser gera uma AST –Fluxo de controle de um método define CFG –Fluxo de chamada de métodos define CG
4
4 Control-Flow Graph (CFG) stmt0; while (condA){ if (condB){ stmt1; stmt2; } stmt3; } stmt4
5
5 CFG stmt0; while (condA){ if (condB){ stmt1; stmt2; } stmt3; } stmt4 stmt0 condA stmt1; stmt2; stmt3 condB stmt4
6
6 Simplificação didática Testar a estrutura de um programa equivale a testar um grafo O que é um teste? (Para um grafo)
7
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
8
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).
9
9 Cobertura de Grafos stmt0 condA stmt1; stmt2; stmt3 condB stmt4 b c a f d e t0 t1t6 t2 t3 t4 t5
10
10 Cobertura de Grafos Exemplo de teste –t0, t6 b c a f d e t0 t1t6 t2 t3 t4 t5
11
11 Critérios de adequação de grafo Nó Transição Caminho
12
12 Critérios de adequação de grafo Nó –Teste suíte TS é adequado a nó se para cada nó n no grafo G existe t em TS que cobre n Transição Caminho
13
13 Critérios de adequação de grafo Nó –Teste suíte TS é adequado a nó se para cada nó n no grafo G existe t em TS que cobre n Transição Caminho Grafos com ciclos possuem números infinito de caminhos
14
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
15
15 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? b c a f d e t0 t1 t6 t2 t3 t4 t5
16
Caminhos inalcançáveis 16 É possível existir caminhos inalcançáveis no programa. Isto é, não há execução que o visite.
17
Caminhos inalcançáveis 17 if (a < 0) { a = 0; } if (a > 10) { a = 10; } skip(); condA condB stmt1 stmt2 stmt3
18
18 Caminhos inalcançáveis condA condB stmt1 stmt2 stmt3 Enumere os caminhos do grafo
19
19 Caminhos inalcançáveis condA condB stmt1 stmt2 stmt3 Enumere os caminhos do grafo
20
20 Caminhos inalcançáveis Estes caminhos são alcancáveis? if (a < 0) { a = 0; } if (a > 10) { a = 10; } skip();
21
21 Caminhos inalcançáveis if (a < 0) { a = 0; } if (a > 10) { a = 10; } skip(); a NOT(a > 10) Estes caminhos são alcancáveis?
22
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 …
23
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
24
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
25
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, mas varie C e o resultado de toda expressão. RTCA/DO-178B, EUROCAE ED-12b
26
MC/DC Objetivo é isolar efeito de cada condição básica no resultado de toda expressão 26
27
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 {…} }
28
Solução ((((a || b) && c) || d) && e) 28 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 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
29
Resumo Várias formas de se medir cobertura de código Ciclos Caminhos inalcançáveis 29
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.