29
Teste Estrutural

Teste Estrutural

  • Upload
    liesel

  • View
    67

  • Download
    1

Embed Size (px)

DESCRIPTION

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 - PowerPoint PPT Presentation

Citation preview

Page 1: Teste Estrutural

Teste Estrutural

Page 2: Teste Estrutural

2

Teste estrutural

• Teste baseado na estrutura do código

• Mais precisamente,– Critério de adequação baseia-se no código!

Page 3: Teste Estrutural

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

Page 4: Teste Estrutural

4

Control-Flow Graph (CFG)

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

Page 5: Teste Estrutural

5

CFG

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

stmt0

condA

stmt1;

stmt2;

stmt3

condBstmt4

Page 6: Teste Estrutural

6

Simplificação didática

• Testar a estrutura de um programa equivale a testar um grafo

• O que é um teste? (Para um grafo)

Page 7: Teste Estrutural

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

Page 8: Teste Estrutural

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

Page 9: Teste Estrutural

Cobertura de Grafos

9

b

c

a

f

d

e

t0

t1 t6

t2

t3

t4

t5

stmt0

condA

stmt1;

stmt2;

stmt3

condBstmt4

Page 10: Teste Estrutural

10

Cobertura de Grafos

• Exemplo de teste– t0, t6

10

b

c

a

f

d

e

t0

t1 t6

t2

t3

t4

t5

Page 11: Teste Estrutural

11

Critérios de adequação de grafo

• Nó

• Transição

• Caminho

Page 12: Teste Estrutural

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

Page 13: Teste Estrutural

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

Page 14: Teste Estrutural

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

Page 15: Teste Estrutural

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?

15

b

c

a

f

d

e

t0

t1 t6

t2

t3

t4

t5

Page 16: Teste Estrutural

Caminhos inalcançáveis

16

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

Page 17: Teste Estrutural

Caminhos inalcançáveis

17

if (a < 0) { a = 0;}if (a > 10) { a = 10;}skip();

a < 0

a = 0a > 10

a = 10skip

Page 18: Teste Estrutural

18

Caminhos inalcançáveis

• Enumere os caminhos do grafo

a < 0

a = 0a > 10

a = 10skip

Page 19: Teste Estrutural

19

Caminhos inalcançáveis

• Enumere os caminhos do grafo

a < 0

a = 0a > 10

a = 10skip

Page 20: Teste Estrutural

20

Caminhos inalcançáveis

• Todos estes caminhos são alcancáveis?

if (a < 0) { a = 0;}if (a > 10) { a = 10;}skip();

Page 21: Teste Estrutural

21

Caminhos inalcançáveis

if (a < 0) { a = 0;}if (a > 10) { a = 10;}skip();

a < 0 => NOT(a > 10)

• Estes caminhos são alcancáveis?

Page 22: Teste Estrutural

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• …

Page 23: Teste Estrutural

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 StatementBranch subsumes Basic-block

Page 24: Teste Estrutural

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

Page 25: Teste Estrutural

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

Page 26: Teste Estrutural

MC/DC

• Objetivo é isolar efeito de cada condição básica no resultado de toda expressão

26

Page 27: Teste Estrutural

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 {…}}

Page 28: Teste Estrutural

Solução

• ((((a || b) && c) || d) && e)

28

a b c d e T0 0 1 0 1 0 1 0 1 0 1 10 0 1 0 1 00 1 1 0 1 11 0 0 0 1 01 0 1 0 1 10 0 0 0 1 0 0 0 0 1 1 10 0 0 1 0 00 0 0 1 1 1

a b c d e T0 0 1 0 1 0 1 0 1 0 1 10 0 1 0 1 00 1 1 0 1 11 0 0 0 1 01 0 1 0 1 10 0 0 0 1 0 0 0 0 1 1 10 0 0 1 0 00 0 0 1 1 1

Page 29: Teste Estrutural

Resumo

• Várias formas de se medir cobertura de código

• Ciclos

• Caminhos inalcançáveis

29