técnicas de teste caixa-aberta para a validação de software teste estrutural de software

24
Técnicas de teste caixa- aberta para a validação de software Teste Estrutural de Teste Estrutural de Software Software

Upload: internet

Post on 17-Apr-2015

125 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Técnicas de teste caixa-aberta para a validação de software Teste Estrutural de Software

Técnicas de teste caixa-aberta para a validação de software

Teste Estrutural de SoftwareTeste Estrutural de Software

Page 2: Técnicas de teste caixa-aberta para a validação de software Teste Estrutural de Software

Teste Estrutural (caixa aberta)Teste Estrutural (caixa aberta)

DADOS RESULTADOS

• teste de caminho• dependente de código• grafo de fluxo de controle• critérios de cobertura

Page 3: Técnicas de teste caixa-aberta para a validação de software Teste Estrutural de Software

Atividades no Teste Estrutural Representar o programa através de grafo de fluxo Escolher critério de cobertura Selecionar caminhos (grafo de fluxo) Determinar dados de teste Determinar resultados esperados Instrumentar código fonte Executar o programa com os dados Comparar resultados computados c/esperados Analisar a cobertura de caminhos

Page 4: Técnicas de teste caixa-aberta para a validação de software Teste Estrutural de Software

Grafo de Fluxo de ControleGrafo de Fluxo de Controle

• Nodo = comandos seqüenciais

• Arco = desvio de controle

1

2 3

4

1

2

Estrutura deDecisão (if-then-else)

Bloco Seqüencial Estrutura deRepetição (while-do)

1

Page 5: Técnicas de teste caixa-aberta para a validação de software Teste Estrutural de Software

1

2

3

4 5

6

7

89

procedure potencia(x,y:integer; var z:real); var p: integer; begin p:=0; z:=0; if y>0 then p:=y else p:=-y; z:=1; while p<>0 do begin p:=p-1; z:=z*x; end; if y<0 then z:=1/z; end;

11

12

13

10

Page 6: Técnicas de teste caixa-aberta para a validação de software Teste Estrutural de Software

Critérios de CoberturaCritérios de Cobertura

• Objetivos• identificar caminhos => determinar dados

• sinalizar conclusão dos testes

• tipos de Critérios• fluxo de controle

• fluxo de dados

Page 7: Técnicas de teste caixa-aberta para a validação de software Teste Estrutural de Software

Critérios de CoberturaCritérios de Cobertura

• Cobertura de fluxo de controle:– todos-nodos (comandos)

– todos-arcos (desvios)

– todos-caminhos

• Cobertura de fluxo de dados:– todas-definições

– todos-usos

– todos-du-caminhos

– todos-potenciais-usos

Page 8: Técnicas de teste caixa-aberta para a validação de software Teste Estrutural de Software

Critérios de Fluxo de ControleCritérios de Fluxo de Controle

• Todos-arcos– Todos os arcos (ou decisões) devem ser executados

• Todos-nodos– Todos os nodos (ou comandos) devem ser executados

• Todos-caminhos– Todos os caminhos possíveis do grafo de fluxo devem

ser executados

Problema: grafos com ciclos representam número infinito de caminhos

Page 9: Técnicas de teste caixa-aberta para a validação de software Teste Estrutural de Software

Ordenação dos Critérios

Todos-caminhos

Todos-potenciais-du-caminhos

Todos-du-caminhos Todos-potenciais-usos

Todos-usos

Todos-c-usos/alguns-p-usos Todos-p-usos/alguns-c-usos

Todos-p-usosTodas-defs

Todos-arcos

Todos-nodos

Page 10: Técnicas de teste caixa-aberta para a validação de software Teste Estrutural de Software

Exemplo - Exemplo - satisfação de critérios de satisfação de critérios de cobertura de controlecobertura de controle

• todos-nodos:

(1,2,3,4)

• todos-arcos:

(1,2,3,2,3,4)

• todos-caminhos:

(1,2,3,4)

(1,2,3,2,3,4)

. . .

(1,2,3,2,3,...,2,3,4)

1

2

3

4

Page 11: Técnicas de teste caixa-aberta para a validação de software Teste Estrutural de Software

(1,2,3,4,5) ou(1,2,3,2,4,5)

(1,2,3,4,5) e(1,2,3,2,4,5)

cobertura de nodo

cobertura de arco

cobertura de caminho(1,2,4,5)(1,2,3,4,5)(1,2,3,2,4,5)(1,2,3,2,3,4,5)(1,2,3,2,(3,2),...,4,5)(1,2,3,(2,3),...,4,5) . . .

passando uma única vez pelo laço

1

2

3

4

5

Page 12: Técnicas de teste caixa-aberta para a validação de software Teste Estrutural de Software

Para realizar uma cobertura de desvio:

localizar todos os nodos de decisão listar todos os arcos que saem de nodos

de decisão selecionar dados que forcem a execução

de todos os arcos listados Exemplo

arcos: 3-4 3-5 7-8 7-9

1

2

3

4 5

6

7

8

9

Page 13: Técnicas de teste caixa-aberta para a validação de software Teste Estrutural de Software

Critérios de Cobertura baseado em Análise de Fluxo de Dados

grafo de fluxo + tabela definição-uso de variáveis

definição de variáveis:• em leitura, como parâmetro de entrada• lado esquerdo da atribuição,

uso de variáveis:• referência em expressão (aritmética ou lógica)

Page 14: Técnicas de teste caixa-aberta para a validação de software Teste Estrutural de Software

Definição e Uso de Variáveis

variável é definida quando um valor é atribuído a elaread (X);

X := 5;

X := X + 2; (uso e definição de X)

uso computacional da variável Xwrite (X) ;

Y := X + 2 ;

uso em predicado (em condição) da variávelif X = 4 then . . .

while X < 1 do . . .

Page 15: Técnicas de teste caixa-aberta para a validação de software Teste Estrutural de Software

procedure potencia(x,y:integer; var z:real);var p: integer;begin p:=0; z:=0; if y>0 then p:=y else p:=-y; z:=1; while p<>0 do begin p:=p-1; z:=z*x; end; if y<0 then z:=1/z;end;

Tabela Def -Uso

1 23 - 4

def usox yp z

y3 - 5

456

7 - 8

7 - 98

10-1110-12

11

ypp

yy

zpp

p z p z xyy

z z

p:=-y

1

2

3

4 5

6

7

89

11

12

13

10

p:=0z:=0

(x,y)

y>0 y<=0

p:=yz:=1

p<>0

p:=p-1z:=z*x

y<0y>=0

p=0

z:=1/z

Page 16: Técnicas de teste caixa-aberta para a validação de software Teste Estrutural de Software

Critérios de Fluxo de DadosCritérios de Fluxo de Dados

• Todas-definições

– Todas as definições de variáveis devem ser executadas pelo menos uma vez, até um uso das destas (considerando subcaminhos livres de redefinição)

• Todos-usos

– Todos os usos de variáveis devem ser executados pelo menos uma vez, a partir de definições destas variáveis (considerando subcaminhos livres de redefinição)

Page 17: Técnicas de teste caixa-aberta para a validação de software Teste Estrutural de Software

Subcaminho livre de definição

1

2

3

4 5

6

7

8 9

x, y definição

y>0 y<=0 uso

z:=z*x uso

p=-y

1

2

3

4 5

6

7

89

11

12

13

10

p:=0z:=0

(x,y)

y>0 y<=0

p=yz:=1

P<>0

p:=p-1z:=z*x

y<0y>=0

p=0

z:=1/z

11

12

10y<0

y>=0

Page 18: Técnicas de teste caixa-aberta para a validação de software Teste Estrutural de Software

Determinação de subcaminhos que satisfazem a critério de cobertura

construir o grafo de fluxo

construir a tabela def-uso determinar subcaminhos que iniciam com

definição e terminam com uso de variável

Page 19: Técnicas de teste caixa-aberta para a validação de software Teste Estrutural de Software

Subcaminhos selecionados

11

12

10

1

2

3

4 5

6

7

89

x, y

y>0 y<=0

z:=z*x

y<0y>=0

p=y4

6

7

89

p<>0p=0

p

5

6

7

89

p<>0 p=0

p=-y

p11

10

z:=z*x

8

7

89

z:=z*x

z:=1/z

z

Page 20: Técnicas de teste caixa-aberta para a validação de software Teste Estrutural de Software

Subcaminhos que satisfazem criterio todos-usos

1-2-3-4 1-2-3-5

1-2-3-4-6-7-8

1-2-3-4-6-7-9-10-11

1-2-3-4-6-7-9-10-12

4-6-7-8 4-6-7-9

5-6-7-8 5-6-7-9

6-7-8 6-7-9-10-11

8-7-8 8-9-10-11

Page 21: Técnicas de teste caixa-aberta para a validação de software Teste Estrutural de Software

Execução dos testes e Avaliação de Cobertura

1) executar o programa com um conjunto de dados arbitrariamente escolhido

2) comparar os caminhos executados com os subcaminhos selecionados pelo critério

3) caso todos os subcaminhos tenham sido exercitados, o critério foi satisfeito

4)caso contrário, escolher novo conjunto de dados e voltar ao passo 1.

Page 22: Técnicas de teste caixa-aberta para a validação de software Teste Estrutural de Software

Exemplo

Dados

(5, 2)

(2,-1)

(4, 0)

Caminho executado e subcaminhos exercitados

[1, 2, 3, 4, 6, 7, 8, 7, 8, 7, 9, 10, 12, 13]1-2-3-4-6-7-8 4-6-7-8 8-7-8

[1, 2, 3, 5, 6, 7, 8,7, 9, 10, 11, 12, 13]1-2-3-5 5-6-7-8

[1, 2, 3, 5, 6, 7, 9, 10, 12, 13]5-6-7-9

Page 23: Técnicas de teste caixa-aberta para a validação de software Teste Estrutural de Software

Caminhos Impraticáveis

caminhos do grafo, porém não são caminhos lógicos do programa

1, 2, 3, 4, 6, 7, 9, 10, 11

caso existam subcaminhos para os quais não for possivel encontrar dados que os exercite, provavelmente são caminhos impraticáveis

Page 24: Técnicas de teste caixa-aberta para a validação de software Teste Estrutural de Software

Problemas com o Teste Estrutural

número de subcaminhos muito elevado determinar dados que exercitem caminhos

selecionados pelo critério de cobertura

impossível, para caminhos impraticáveis

estratégia de determinação de dados para caminhos: Execução Simbólica