论文部分内容阅读
组合测试是实现高覆盖率测试的有效方法,因其能极大提高测试效率,已成功的应用到软件测试领域中。组合测试技术不仅研究如何生成规模小的测试用例集来覆盖尽量多的故障模式,当某条测试用例引发软件故障时,快速精确找到引发故障的因素组合,即故障定位,也是组合测试中的一个重要问题,这有助于测试人员找到原因并对系统进行改进。本课题在研究现有组合故障定位算法基础上提出安全值未知系统的组合故障定位算法、事件序列故障定位算法和支持约束的故障定位算法,为高可靠、高安全、高有效的软件开发提供基础保障。针对现有故障定位算法均以系统安全值已知为前提,对安全值未知的待测系统还没有行之有效的定位方法的问题,提出了一种基于伪安全值的故障定位算法。通过利用伪安全值定位分析,获得非确定性交互集,利用该集合更新伪安全值继续执行测试,多次迭代直至获得真实安全值,实现故障定位。目前针对事件序列测试的研究集中在事件序列测试用例生成方面,还没有发现学者提出针对事件序列的故障定位方法。本课题针对由于相邻事件交互引发软件故障的情况,提出一种基于故障插入的事件序列故障定位算法。根据事件序列测试集的执行结果,获得一个非确定的事件交互集,并引入适应值、错误概率等概念。对每一个非确定事件交互,首先构造互补事件序列,然后将非确定事件交互插入生成附加测试用例执行测试,排除误检。针对实际待测系统输入参数间常存在约束的问题,对组合故障定位提出利用独立性安全点、局部安全点进行安全值替换,或利用避开约束点的伪安全值进行安全值计算,从而避免附加测试用例引入约束;对于事件序列故障定位则在构造互补事件序列、非确定事件交互插入两个过程采用约束避免选择策略来处理约束,从而实现支持约束的故障定位。结合实验室开发的联合试验平台,开发故障定位工具,并采用某舰载火控系统模拟器嵌入式软件作为被测对象进行系统测试,验证本文算法在组合测试故障定位、安全值计算、事件序列故障定位,约束处理等方面的有效性。