关键词:
软件测试
并行程序
分支转换
关键通信
测试数据生成
摘要:
软件测试是保证并行程序可靠性和准确性的有效途径。通信是并行程序不可忽视的重要特征,对程序的执行效率有着重要影响。繁多复杂的通信是影响并行程序测试效率的关键因素。鉴于此,本文从通信覆盖转换、测试对象选择和测试数据生成三个方面,研究有效的并行程序通信测试方法。针对并行程序通信覆盖问题,本文提出基于分支转换的通信覆盖测试理论及方法。首先,基于并行程序特点,将进程间通信分为确定性通信和不确定性通信;其次,针对不同类型的通信,将对通信的覆盖问题转换为对不同进程间通信语句的覆盖问题;然后,考虑进程间通信发送和接收的匹配顺序,将对通信语句的覆盖问题转换为对通信语句所在分支的覆盖问题;最后,使用遗传算法生成覆盖不同类型通信的测试数据。针对通信测试对象选择问题,通过分析影响通信关键性的因素,本文提出基于通信关键性的测试对象选择方法。首先,考虑并行程序自身特点,综合通信语句所在结构类型与通信传递变量等特征确定影响通信关键性的因素;其次,基于影响关键性的因素建立通信关键性评价指标;然后,基于不同评价指标的影响程度提出通信关键性评价方法,计算通信关键性得分;最后,基于通信关键性采用适当的方法选择出关键通信作为测试对象。针对通信测试数据生成问题,本文将通信关键性和分支转换相结合,利用通信关键性改进适应度函数,并基于分支转换生成覆盖通信的测试数据。首先,分析并行程序通信特征以确立影响通信关键性的因素,并计算通信关键性得分;其次,基于不同因素下的关键性得分对通信进行分类;然后,利用分支转换策略将并行程序的通信覆盖转换为通信所在的分支覆盖;最后,基于通信关键性改进适应度函数,针对不同场景下的通信覆盖问题,采用多种群遗传算法生成满足通信覆盖的测试数据。本文工作为并行程序通信测试提供了一种有效的解决方案,与其他方法的对比实验分析表明,本文方法可以有效减小测试通信的规模,降低测试代价,提高并行程序的测试效率。