1.文献综述:(课题背景,意义以及当前国内外研究现状)
本课题选题的背景
软件产品在开发和维护过程中,因移除软件内在缺陷、完善已有功能、重构已有代码或提高运行性能等, 需要执行代码修改并触发软件演化.随着以统一过程和敏捷方法为代表的增量、迭代式开发过程的流行,软件 演化频率也随之迅速提高并亟需经济、有效的测试方法来确保演化后软件产品的质量.回归测试作为一种有效的方法,可有效保证代码修改的正确性并避免代码修改对被测程序其他模块产生的副作用.但统计数据表明,回 归测试一般占软件产品测试预算的80%以上,占软件维护预算的50%以上.为了大幅度削减这部分开销,国内外研究人员对自动高效的回归测试技术展开了深入研究,而回归测试中测试用例维护策略的设定是一个核心问题。
本课题的目的及意义
回归测试中重新执行所有已有的策略存在如下问题:
- 在一些测试场景中,若测试用例数量较多或单个测试用例执行开销较大,则项目实际预算不允许执行完所有测试用例.
- 部分代码修改会影响到被测模块的原有外部接口或内在语义,并导致部分测试用例失效.
- 若代码修改生成新的测试需求,则需额外设计新的测试用例.
针对上述问题,学术界和工业界提出了测试用例优先排序(test case prioritization,简称 TCP),TCP技术中采用的排序准则一般建立在对源代码,需求或模型的分析基础上,应用十分广泛,不仅成功应用到传统软件测试中,也逐渐成功应用到像图形用户界面测试,Web应用测试等特定领域中。
目前看来,TCP问题是回归测试中的一个重要研究热点,具有丰富的理论价值和应用前景。虽然已经取得了一定的成果,但是,现有的大量新颖有效的TCP技术与最优解之间仍然存在一定的差距,并没有一个排序准则在不同的程序的测试中总是最为有效,再者,将TCP技术与其他回归测试技术结合,寻找TCP技术新的应用领域,对影响TCP技术有效性的内在影响因素的深入分析等对降低软件测试的成本都有着重要的研究意义。
国内外研究状况分析
目前国内外对测试用例优化技术的研究,依次从代码,模型,需求三个角度来看TCP技术可以分为基于代码的TCP技术,基于模型的TCP技术,基于需求的TCP技术。
基于代码的TCP技术主要有贪婪法,机器学习法,融合专家知识法等,其中贪婪法依据程序实体(语句,分支或函数)覆盖能力,为其设置权重来指导测试用例的排序,又分为Total策略和Additional策略,假设测试用例有m个,需要覆盖的程序实体有n个,则Total策略的时间复杂度为o(mn),Additional策略的时间复杂度为o(m2n),上述两种策略都与最优解之间存在一定的差距,根据Additional策略有人提出来2-Optimal策略,该策略每次需要选出两个测试用例,时间复杂度为o(m3n)。机器学习法主要是李征等人提出的将启发式技术用于TCP问题的的方法,他们考虑了爬山法和遗传算法两种启发式搜索技术,其中爬山法属于局部搜索算法,容易陷入局部最优,遗传算法属于全局搜素算法,实践证明,Additional策略,2-Optimal策略和遗传算法要优于其他方法,绝大多数情况下,Additional策略和2-Opptimal策略的有效性要优于遗传算法,爬山法和Total策略。
