目录
一、基于结构的测试辅助技术
1、词法和语法分析
-
标号交叉引用表
-
变量交叉引用表(变量定义与引用表)
-
子程序、宏和函数表
-
等价表
-
常数表
2、程序插桩和驱动技术
-
程序插桩技术
-
程序驱动技术
二、基于结构测试的综合策略
1、应尽量先用工具对被测软件进行静态分析
2、可采取先静态后动态的组合方式
3、覆盖率是对动态测试用例设计是否充分的监督
4、根据安全风险要求,应使用与之对应的覆盖率标准来衡量代码需要被多少测试用例进行充分测试
5、在不同的测试阶段,测试的侧重点不同
(1)单元测试阶段
-
以代码检查和静态分析度量工具检查和动态测试为主
(2)系统测试阶段
-
在使用编码规则检查和静态分析度量工具对代码进行扫描检查后,主要根据黑盒测试的结果,采取相应的白盒测试作为补充
三、测试覆盖准则
1、ESTCA覆盖准则
(1)规则1:为了检测rel符号的错误
-
对于A rel B(rel可以是<、>、=)型分支谓词
-
应适当的选择A与B的值,使得当测试执行到该分支语句时,A>B、A<B、A=B的情况分别出现一次
(2)规则2:为了检查差1之类的错误
-
对于A rel C(rel可以是<、>;A是变量,C是常量)型分支谓词
-
当rel为>时,应适当的选择A的值,使得A=C+M
-
M是最小单位的正数,若A和C均为整型,则M=1
(3)规则3:为了检测程序语句中的错误,如该引用变量的却引用了常量
-
对于外部输入变量赋值,使其在每一测试用例中均有不同的值和符号,并与同一组测试用例中其他变量的值和符号不一致
2、层次LCSAJ覆盖准则
-
第一层:语句覆盖
-
第二层:分支覆盖
-
第三层:LCSAJ覆盖(即程序中的每一个LCSAJ都至少在测试中被经历过一次)
-
第四层:是两两LCSAJ覆盖(即程序中的每两个首尾相连的LCSAJ组合起来都至少在测试中被经历过一次......直到第n+2层,每n个首尾相连的LCSAJ组合起来都至少在测试中被经历过一次)