teste estrutural. 2 teste estrutural teste baseado na estrutura do código mais precisamente,...

Post on 07-Apr-2016

239 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Teste Estrutural

2

Teste estrutural

• Teste baseado na estrutura do código • Mais precisamente,

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

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

Control-Flow Graph (CFG)

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

5

CFG

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

stmt0

condA

stmt1;

stmt2;

stmt3

condB

stmt4

6

Simplificação didática

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

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

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

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

Cobertura de Grafos

stmt0

condA

stmt1;

stmt2;

stmt3

condB

stmt4

b

c

a

f

d

e

t0

t1 t6

t2

t3

t4

t5

10

Cobertura de Grafos

• Exemplo de teste– t0, t6

b

c

a

f

d

e

t0

t1 t6

t2

t3

t4

t5

11

Critérios de adequação de grafo

• Nó• Transição• Caminho

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

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

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

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

t0t1 t6

t2

t3

t4

t5

Caminhos inalcançáveis

16

É possível existir caminhos inalcançáveis no programa. Isto é, não há execução que o visite.

Caminhos inalcançáveis

17

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

condA

condB

stmt1

stmt2

stmt3

18

Caminhos inalcançáveis

condA

condB

stmt1

stmt2

stmt3

• Enumere os caminhos do grafo

19

Caminhos inalcançáveis

condA

condB

stmt1

stmt2

stmt3

• Enumere os caminhos do grafo

20

Caminhos inalcançáveis

• Estes caminhos são alcancáveis?

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

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?

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

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

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

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

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

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

Resumo

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

• Ciclos• Caminhos inalcançáveis

29

top related