论文部分内容阅读
软件测试是保证软件质量的重要而有效的手段,已成为软件工程中重要且不可或缺的一个环节。随机测试以其无偏性,自动化高,速度快和易于实现等优点使其成为近年来软件测试领域的一个研究热点。然而,盲目性和低覆盖率的缺点使得随机测试一直无法成功地投入实际应用。适应性随机测试是对随机测试的有效改进。然而,适应性随机测试也有耗时过多等不足之处。
本文针对适应性随机测试的耗时过多的缺点,提出了一种变概率的随机测试,以提高随机测试的效果。本文的主要工作如下:
(1)使用变概率的手段,来实现适应性随机测试。适应性随机测试的主要目标是尽可能地使测试用例均匀地分布于整个测试输入域空间内。变概率的随机测试是通过在测试执行过程中动态地改变整个测试输入域空间内不同区域的测试用例的生成概率来实现这一目的。同时由于保留了随机测试的主体,使得整个算法能够很好的继承随机测试的优点;
(2)提出计算局部概率的解决方法来提高变概率的随机测试的速度。采用合理的算法将测试用例的生成分为两个步骤:子输入域空间的选择和子输入域空间内测试用例的生成。通过只计算局部测试输入域空间内的测试用例的生成概率的手段避免了大量的计算,从而实现了快速生成测试用例的目的;
(3)提出一种新的动态的测试结束方案,而不仅仅局限于只发现程序的第一个错误。彻底摒弃以往适应性随机测试发现一个错误就停止测试的测试终止条件,合理利用变概率的随机测试的特性在测试过程中动态地设定允许生成的测试用例数目的阈值,从而实现在保留变概率的随机测试的优点的前提下发现多个程序错误的测试方法。