zhang01

Symbolic Excution and ProgramTesting

《Symbolic Excution and ProgramTesting》是一片经典的文章,发表与1975年,被引用次数接近千次。该文在一个简单的程序语言的基础上提出了符号执行的方法:

1程序变量只是有符号整数;只包括简单的赋值语句,IF语句,GOTO语句,以及一些获得输入的方法。

2数学表达式只有限的计算类型:加、减、乘。

3布尔表达式只进行数学表达式是否为真的测试操作。

4分支语句的条件表达:(path condition) R>=0 或 -R<0形式的表达式的一个合取。

符号执行的实例:

  program:

  1 sum procedure(a,b,c);

  2        x←a+b;

  3        y←b+c;

  4        z←x+y-b;

  5        return z;

  6        end;

执行sum(1,3,5)

- 表示值步再改变;?:不确定的值

语句编号

x

y

z

a

b

c

执行时出现的值

1

1

3

5

2

4

-

-

-

-

-

3

-

8

-

-

-

-

4

-

-

9

-

-

-

5

返回 9

 

 

 

 

 

 

 

 

 

对应的符号执行树:

1  power   procedure(x,y)

2              z←1

3              j←1

4 lab        if x>=j then

5               do z←z*x

6             j←j+1

7             goto lab; end

8             return z

9    end

 符号执行树?(无法传图,如何传图bmp格式?请指点)

 

 

 

 

 

 

 

 

posted on 2011-10-27 17:39  zhanghs  阅读(310)  评论(0编辑  收藏  举报

导航