论文部分内容阅读
软件测试作为保障软件质量的重要途径已经渗入到软件开发的整个周期之中。然而,在执行软件测试时所需的代价占据软件开发总代价的50%以上,如何使用较少的测试用例检测出最多的系统故障是软件测试研究的关键问题。组合测试方法作为一种功能测试方法,可以在保证检错能力的情况下,利用较少的测试用例检测出因素间相互作用导致的系统故障。但是,最小测试用例集的生成在组合测试中仍是一个NP-hard问题。粒子群优化算法作为一种群智能算法,由于具有参数少、演化过程简单、通用性强等特点而被用于最小组合测试用例集的研究中。但是,该算法在搜寻最优解时存在过早的收敛于局部最值、后期搜索精度低等问题。因此,本文主要通过对粒子群优化算法的改进,解决粒子群优化算法存在的问题,提升算法生成测试用例的效率,减少测试用例集的规模。本文的具体工作由以下几个方面组成:(1)为了解决粒子群优化算法容易陷入局部最优的问题,本文采用约简粒子群优化算法(RAPSO)生成组合测试用例集。首先对进化方程中的速度项进行约简,使粒子群优化算法仅依靠位置的更新来实现算法的迭代,避免了人为设置粒子速度带来的误差,提高了粒子群优化算法的收敛速度;然后,在RAPSO算法进化过程中采用了根据粒子当前适应度值与聚集度动态调整惯性权重取值的策略,能够有效地避免算法在搜寻最优解时过早的收敛于局部最值。(2)为了生成规模更小的测试用例集,本文对约简粒子群优化算法的惯性权重取值策略以及适应度函数进行改进。针对RAPSO算法进化方程的特点,提出一种能够根据当前粒子与最优粒子间的距离对惯性权重取值进行自适应调整的策略,该策略能够对粒子的搜索范围进行动态调整,提高RAPSO算法的寻优能力;为了评价当前生成的测试用例与已生成测试用例之间的关系,在适应度函数中引入汉明距,选取平均汉明距最小的测试用例作为最优测试用例,提高生成最小测试用例集的可能。(3)本文采用21个包含任意覆盖强度的矩阵对上述两种方法进行验证,并将其与几种经典的算法相比较,实验结果表明本文方法能够处理任意强度的覆盖矩阵,可以生成规模更小的测试用例集。