自动生成用例的方法有多种,主要包括随机法、遗传算法、等价类划分法、约束求解法等。各种方法的适用范围、性能及生成的用例质量各不相同,具体见表1。从表1可以看出,约束求解法效率高,生成的用例质量也高,所以本项目中采用约束求解法作为主要的自动用例生成方法。另外,从表中也可以看出,受限于求解器的能力,约束求解法并不能适用于所有的模块,因此需要同其它方法配合共同生成用例集。
序号 | 方法名称 | 适用范围及特点 |
1 | 随机 | 适用范围广、效率低,用例质量较低 |
2 | 遗传 | 适用范围窄、效率低,用例质量较低 |
3 | 等价类划分 | 适用范围窄、性能高,用例具有针对性. |
4 | 约束求解 | 适用范围受限于约束求解器的能力和数据流分析能力,效率高。用例质量高。 |
表1 自动生成用例方法特点表
在静态分析阶段,除了进行普通的静态分析,还可以进行静态缺陷检测。静态缺陷检测是一种以在传统静态分析的技术基础上,数据流分析为基础,以路径遍历为手段,以发现尽量多的“通用缺陷”为目标的技术手段。将静态缺陷检测同用例自动生成、静态仿真、自动化测试等技术相结合,“通用缺陷”同项目的具体设计无关,比如著名的除0、越界访问、缓冲区溢出等。发现通用缺陷后,结合所在模块的输入数据的取值范围,可以自动生成对应于所发现缺陷的特定用例。具体用例生成的过程如下:
第一步:通过静态缺陷检测生成通用缺陷用例集
第二步:如果满足测试要求(覆盖率达标)的话则用例生成完毕。否则的话如应用约束求解法得到约束求解用例集。
第三步:如果通用缺陷用例集和约束求解用例集的并集能够满足测试目标的话,则用例生成完毕,如果不能满足目标的话,则为用例生成设定的测试资源没有耗尽的前提下,应用随机法生成随机用例集。
第四步:如果通用缺陷用例集、约束求解用例集、随机用例集的并集能够满足目标的话,用例生成完毕。否则的话,人工补充用例,直到测试要求得到满足,这部分称为补充用例集。