论文部分内容阅读
随着软件技术的飞速发展以及软件应用的广泛普及,用户对软件的可靠性和安全性提出了更深层次的要求。软件测试是保障软件质量、确保程序正确性的必经流程和必要手段。但是随着软件系统的规模日益扩大,软件结构的复杂程度不断提高,使得软件测试的工作量和消耗的成本不可避免地增长,因此,测试过程的优化研究成为减少测试工作量和降低消耗成本的一个重要途径。测试用例的数量是影响测试工作量的原因之一。一方面,数量太大会导致测试执行时间太长;另一方面,数量太少则不能保证测试的完备性。因此,测试用例集优化的目的就是找到原用例集的一个子集,使得该用例子集在保证一定的代码覆盖性和错误发现能力的基础上,规模尽可能减小。本文提出了一种基于需求分析的两阶段用例集优化方法,分为需求切片和用例集优化两个步骤,如下所述:第一阶段,提出一种根据需求形式化描述的结构程序的切片算法RDS(Requirement-driven Slicing),该算法从程序切片的思想出发,构建基础依赖表BDT(Basic Dependence Table)和函数依赖表FDT(Function Dependence Table),从需求的最终执行语句开始向前回溯,直到找到该需求的初始化位置为止。之后,计算需求切片间的相交、包含关系。相比类似的同步动态切片算法,本文提出的算法结构清晰简洁易于实现,时间和空间性能较为优越。实验证明,该算法与同步动态切片算法计算切片的精度相近,同时计算复杂度要明显低于后者。第二阶段,对于前一个阶段切片计算的结果,首先给出了公共路径约减算法PPR(Public-path reduction),该算法依据公共代码的DDGRAPH图,求出代表所有路径的最简路径。如果一个测试用例能够覆盖该代表路径,就能覆盖该段代码,从而降低了判断一个用例是否覆盖该段代码的计算复杂性。最后,给出了需求-用例调整算法,对需求集及其对应的测试用例集进行优化。实验表明,该算法的用例集约减效果优于同类的基于贪心思想的G算法和GRE算法。