Upload
rodrigo-ferreiro
View
218
Download
0
Embed Size (px)
Citation preview
• 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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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