16
• Execução do programa com dados simbólicos ao invés de dados reais • Técnica de poio à seleção de dados para o teste estrutural Teste Simbólico Teste Simbólico

Execução do programa com dados simbólicos ao invés de dados reais Técnica de poio à seleção de dados para o teste estrutural Teste Simbólico

Embed Size (px)

Citation preview

Page 1: Execução do programa com dados simbólicos ao invés de dados reais Técnica de poio à seleção de dados para o teste estrutural Teste Simbólico

• Execução do programa com dados simbólicos ao invés de dados reais

• Técnica de poio à seleção de dados para o teste estrutural

Teste SimbólicoTeste Simbólico

Page 2: Execução do programa com dados simbólicos ao invés de dados reais Técnica de poio à seleção de dados para o teste estrutural Teste Simbólico
Page 3: Execução do programa com dados simbólicos ao invés de dados reais Técnica de poio à seleção de dados para o teste estrutural Teste Simbólico

valores simbólicos são atribuídos às variáveis de entrada do programa

processador simbólico interpreta as instruções do programa

resultados:valores de variáveis são fórmulas simbólicaspredicado do caminho: conjunção das condições

do caminho executado

Teste Simbólico

Page 4: Execução do programa com dados simbólicos ao invés de dados reais Técnica de poio à seleção de dados para o teste estrutural Teste Simbólico

Execução Simbólica

S = A + B

A <- 2 a

A <- a B <- b

A > 0

A >= B

S = B - A

A = 2 * A

S = a + b PC: a >= b

a<b & 2a>0 a< b & 2a <=0

a >= b a < b

S = A + B

S = b - 2a PC: a < b & 2a>0

S = 2 a + b PC: a < b & 2a <= 0

S <- a+b

V F

V F

A, B - vars de entradaS - var de saída

Page 5: Execução do programa com dados simbólicos ao invés de dados reais Técnica de poio à seleção de dados para o teste estrutural Teste Simbólico

promove o entendimento do programa regra de formação dos valores das variáveis

ex: procedure Potênciapara y = -3, x = 1/(1*x*x*x)

determinar o intervalo de valores das variáveis de entrada que fazem o programa executar determinado caminho

ex: procedure Potênciapara o caminho 1-2-3-4- ... y > 0 para o caminho 1-2-3-5- ... y <= 0

Teste Simbólico

Page 6: Execução do programa com dados simbólicos ao invés de dados reais Técnica de poio à seleção de dados para o teste estrutural Teste Simbólico

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;

p=-y

1

2

3

4 5

6

7

8 9

1112

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 7: Execução do programa com dados simbólicos ao invés de dados reais Técnica de poio à seleção de dados para o teste estrutural Teste Simbólico

sistema de inequaçõesa < b & 2 a <= 0

quando resolvido determina intervalo de dados que leva à execução do caminho

problemas: sistema de equações não lineares

Predicado de Caminho

Page 8: Execução do programa com dados simbólicos ao invés de dados reais Técnica de poio à seleção de dados para o teste estrutural Teste Simbólico

Processadores Envolvidos na Execução Simbólica

Interpretador Simbólico Simplificador de Expressões

• ex: y > 0 & . . . & y-1-1-1 = 0 & . . . Solucionador de Sistemas de Equações Provador de Teoremas

• se x<=y & x=y então x=y• se x<0 & x>0 então “caminho impraticável”

7

8 9p<>0

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

y<0

p=0

Page 9: Execução do programa com dados simbólicos ao invés de dados reais Técnica de poio à seleção de dados para o teste estrutural Teste Simbólico

Teste Simbólico dirigido por Caminho

atribuir valores simbólicos para variáveis de entrada; especificar caminho a ser executado;

interpretar simbólicamente as instruções do programa;

resolver o predicado (sistema de inequações); escolher dados dentro do intervalo resultante;

executar o programa com os dados reais; comparar resultados computados com resultados

esperados.

Page 10: Execução do programa com dados simbólicos ao invés de dados reais Técnica de poio à seleção de dados para o teste estrutural Teste Simbólico

1

2

3

4 5

6

7

8 9

1112

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

Caminho: 1-2-3-5-6-7-8-7-9-10-11-12-13

PC : y<=0 & -y<>0 & -y-1=0 & y<0

Resolvendo o predicado:y = -1

Execução real:

x= 3 y=-1 esperado z=1/3

p=-y

Page 11: Execução do programa com dados simbólicos ao invés de dados reais Técnica de poio à seleção de dados para o teste estrutural Teste Simbólico

Teste Estrutural + Simbólico• procedimentos envolvidos

– análise estática do programa – grafo de fluxo + tabela def-uso– seleção de caminhos (critério de cobertura)– execução do programa com dados (método funcional)– análise de cobertura– caso existam caminhos não cobertos

– interpretação simbólica => predicados de caminho– identificação de caminhos impraticáveis– resolução de predicados, determinação de dados– comparação de resultados e de caminhos

Page 12: Execução do programa com dados simbólicos ao invés de dados reais Técnica de poio à seleção de dados para o teste estrutural Teste Simbólico

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

8 9

1112

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 13: Execução do programa com dados simbólicos ao invés de dados reais Técnica de poio à seleção de dados para o teste estrutural Teste Simbólico

Subcaminhos que satisfazem o critério todos-usos

1-2-3-4 1-2-3-51-2-3-4-6-7-8 * 1-2-3-4-6-7-9-10-11* 1-2-3-4-6-7-9-10-124-6-7-8 * 4-6-7-95-6-7-8 5-6-7-96-7-8 * 6-7-9-10-118-7-8 8-9-10-11

* caminhos impraticáveis

p=-y

1

2

3

4 5

6

7

8 9

1112

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 14: Execução do programa com dados simbólicos ao invés de dados reais Técnica de poio à seleção de dados para o teste estrutural Teste Simbólico

Subcaminhos impraticáveis

* 1-2-3-4-6-7-9-10-11pc: y>0 & y=0 & y<0

* 1-2-3-4-6-7-9-10-12pc: y>0 & y=0 & y>0

* 4-6-7-9pc: y>0 & y=0

* 6-7-9-10-11pc: y=0 & y<0

p=-y

1

2

3

4 5

6

7

8 9

1112

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 15: Execução do programa com dados simbólicos ao invés de dados reais Técnica de poio à seleção de dados para o teste estrutural Teste Simbólico

Execução Simbólica de Caminho

Caminho: (1,2,3,5,6,7,8,7,9,10,11,12,13)

(1,2,3,5) (y <= 0)

(1,2,3,5,6,7,8) (y <= 0) & (- y <> 0)

(1,2,3,5,6,7,8,7,8) (y <= 0) & (- y <> 0) & (- y - 1<> 0)

(1,2,3,5,6,7,8,7,9, 10,11,12,13) (y <= 0) & (- y<> 0) & (- y - 1 = 0) & ( y < 0)

p=-y

1

2

3

4 5

6

7

8 9

1112

13

10

(x,y)

y>0 y<=0

p<>0

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

y<0y>=0

p=0

z:=1/z

Page 16: Execução do programa com dados simbólicos ao invés de dados reais Técnica de poio à seleção de dados para o teste estrutural Teste Simbólico

Execução Simbólica

problemas:• predicados longos tem que ser simplificados• sistemas de equações não lineares• predicados de caminhos impraticáveis• variáveis indexadas e dinâmicas

processadores não triviais• interpretador simbólico• simplificador • solucionador de sistemas, • provador de teoremas