- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
白盒测试一般会用到静态分析和动态分析两类技术。常用的有:
静态分析:控制流分析、数据流分析、信息流分析等
动态分析:逻辑覆盖测试(分支测试、路径测试等)、程序插装等
控制流
以下是几个相关概念
程序元素:一个程序元素通常是一个条件,一个简单的语句或者一块语句(多个连续语句)
控制流关系:一个程序的控制流关系(ControlFlowRelation)叙述了程序元素和它们执行的次序之间的联系
控制流图:对应于控制流关系的图被称为控制流图
控制流矩阵:由控制流图得到,反映相邻程序元素之间的先后顺序关系
控制流分析步骤
确定所有程序元素
根据程序元素之间的相互关系得到控制流图
将控制流图转换成控制流矩阵
通过数据结构的形式把控制流矩阵表示出来
借助算法对控制流进行分析,找出存在的问题
控制流矩阵:1:语句有先后顺序关系,0:语句无先后顺序关系
1
1
1
2
3 4 5 6
2
3
1
4
1
1
5
1
6
1
7
1
二维数组:A[6][6]
A[0][0]=A[1][1]=A[2][2]=A[3][3]=A[4][4]=A[3][5]=A[5][2]=1,其他为0
控制流分析能发现的问题
通过对控制流信息进行分析,确保写出的程序不应包含:
转向并不存在的标号;
没有用的语句标号;
从程序入口进入后无法达到的语句;
不能达到停机语句的语句。
数据流
数据流分析最初是随着编译系统要生成有效的目标码而出现的,这类方法主要用于代码优化。数据流分析法关键是数据的定义和引用。
数据的定义:如果程序中某一语句执行时能改变某程序变量V的值,则称V是被该语句定义的。
数据的引用:如果一语句的执行引用了内存中变量V的值,则说该语句引用变量V。
数据流分析步骤
根据代码得到数据流表
分析数据流表找到以下两种错误:
1、变量未定义但被引用
2、变量定义但未被引用
根据分析结果对代码进行修正和优化
1234
1
2
3
4
5
6
7
8
9
节点
被定义变量
被引用变量
1
X,Y,Z
2
X
W,X
3
X,Y
4
Y,Z
5
Y
V,Y
6
Z
V,Z
7
V
X
8
W
Y
9
Z
V
10
Z
Z
11
Z
11
问题:
节点2:W未定义被引用
节点5:V第一次未定义被引用
节点6:V第一次未定义被引用,Z定义未被引用节点8:W定义未被引用
信息流分析
信息流分析可以导出程序的信息流关系,为软件开发和确认提供了十分有益的工具。信息流分析法可以通过三个关系表给出,这三个关系为:
输入变量和语句关系:输入变量直接或间接影响语句的执行
语句和输出变量关系:语句执行直接或间接影响变量的输出
输入和输出变量关系:输入变量直接或间接影响输出变量
信息流分析步骤
根据代码得到三个关系表:输入变量和语句关系表、语句和输出变量关系表、输入和输出变量关系表
分析输入变量和语句关系表,查看对未定义的变量所有可能的引用,根据语句的执行情况来判断是哪个输入变量未定义
分析语句和输出变量关系表,查看所有可能会影响输出变量取值的语句,根据语句的执行情况来判断是哪句语句导致输出变量错误
分析输入和输出变量关系表,查看所有可能影响输出变量取值的输入变量,判断输
整除算法出变量会不会由一些非法的变量导出
整除算法
beginMNQRQR12
begin
M
N
Q
R
Q
R
1
2
3
Q:=0;
R:=M;
whileR=Ndobegin
1
2
√
1
2
√
√
√
MN
√
√
√
√
4
5
Q:=Q+1;R:=R-N
end
3
4
√
√
√
√
3
4
√
√
√
end
(b) (c)
整除算法中输入值、语句与输出值的关系
文档评论(0)