测试用例优先排序(test case prioritization,简称TCP)问题是回归测试研究中的一个热点.通过设定特定排序准则,对测试用例进行排序以优化其执行次序,旨在最大化排序目标,例如最大化测试用例集的早期缺陷检测速率.TCP问题尤其适用于因测...
详细信息
测试用例优先排序(test case prioritization,简称TCP)问题是回归测试研究中的一个热点.通过设定特定排序准则,对测试用例进行排序以优化其执行次序,旨在最大化排序目标,例如最大化测试用例集的早期缺陷检测速率.TCP问题尤其适用于因测试预算不足以致不能执行完所有测试用例的测试场景.首先对TCP问题进行描述,并依次从源代码、需求和模型这3个角度出发对已有的TCP技术进行分类;然后对一类特殊的TCP问题(即测试资源感知的TCP问题)的已有研究成果进行总结;随后依次总结实证研究中常用的评测指标、评测数据集和缺陷类型对实证研究结论的影响;接着依次介绍TCP技术在一些特定测试领域中的应用,包括组合测试、事件驱动型应用测试、Web服务测试和缺陷定位等;最后对下一步工作进行展望.
持续集成测试用例优先排序技术(CITCP,Continuous Integration Test Case Prioritization)根据每次集成代码的不同连续地调整测试用例执行顺序,是一个连续决策的过程。强化学习是一种基于奖励机制的机器学习方法,核心是通过奖励函数对...
详细信息
持续集成测试用例优先排序技术(CITCP,Continuous Integration Test Case Prioritization)根据每次集成代码的不同连续地调整测试用例执行顺序,是一个连续决策的过程。强化学习是一种基于奖励机制的机器学习方法,核心是通过奖励函数对当前行为进行有效的评估,并反馈给智能体选择合适的后续行为,以实现期望的最大化。强化学习方法可以有效解决CITCP的序贯决策问题,以实现持续集成测试的快速反馈。奖励和智能体是决定强化学习质量的两个重要组成部分。奖励中的奖励函数设计和智能体中的奖励对象选择策略共同构成强化学习的奖励机制。在现有强化学习和持续集成测试用例优先排序结合方法中,奖励函数是基于当前执行失效测试用例的执行结果设计的,奖励对象选择策略就是对失效测试用例实施奖励,总体上是一种简单的奖励机制,既缺少理论层面奖励函数设计方法和奖励对象选择策略的基础研究,也缺少面向工业程序持续集成测试的实际应用方案。奖励机制是应用强化学习解决具体问题的关键,系统化地研究面向CITCP的强化学习奖励机制具有十分重要的理论意义和实际应用价值。本文针对基于强化学习的CITCP奖励机制进行研究,提出基于测试用例历史执行信息的奖励机制,即将测试用例历史执行信息作为奖励函数计算和奖励对象选择的基准。测试用例执行信息随着持续集成过程而更新,全部的历史执行信息可以构建为一个时序序列,相比当前执行结果可以更加有效地度量测试用例的潜在检错能力。基于时序序列模型研究了测试用例历史执行信息的特征提取方法,并进一步提出了三个奖励函数。在实证研究中发现工业程序的持续集成测试具有集成高频繁但测试低失效的特点,对CITCP提出新的挑战。一方面,高频繁的软件集成,会累积大量的测试用例历史执行信息,不但加剧了奖励计算资源的需求,而且会影响持续集成测试的快速反馈。基于失效测试与测试失效的相关性,本文进一步提出了基于时序滑动窗的奖励函数设计方法,分别从静态滑动窗和动态滑动窗开展研究。另一方面,低失效的测试用例数量,会导致强化学习中奖励对象稀少,引发强化学习的稀疏奖励问题。本文研究一种基于失效影响的奖励对象选择策略,在奖励失效测试用例的基础上,进一步增加失效影响高的通过测试用例作为奖励对象,有效解决了强化学习的奖励稀疏问题。本文的主要研究工作及贡献点如下:1.提出了基于测试用例历史执行信息的CITCP奖励函数设计方法。基于时序的测试用例历史信息可以展示测试用例完整的历史执行过程,进而更准确地度量其检错能力。本文基于时序模型研究了三种测试用例历史信息序列的特征提取方法,进一步设计了基于历史失效统计的奖励函数、基于历史失效密度的奖励函数和基于平均历史失效分布的奖励函数。相比较于基于测试用例当前执行结果的奖励函数,在增加有限计算开销的情况下,提出的奖励函数有效地提升了持续集成测试用例优先排序的效果。2.提出了基于时序滑动窗的CITCP奖励函数设计方法。在持续集成环境下,特别是实际工业程序的软件开发,高频繁率集成会累积庞大的测试用例历史信息,增加了奖励计算资源的需求。为了提高强化学习的奖励计算效率,基于失效测试与测试失效的相关性,分别提出基于静态滑动窗和自适应动态滑动窗的奖励函数,在有效提高奖励计算效率的基础上,进一步提升了持续集成测试用例优先排序效果。3.提出了基于失效影响的CITCP奖励对象选择策略。针对现有方法只对失效测试用例实施奖励,由于失效测试用例数量稀少引发强化学习的奖励稀疏问题,研究了一种基于失效影响分析的奖励对象选择策略,在奖励执行失效测试用例的基础上,进一步选择失效影响高的通过测试用例作为奖励对象,并分别提出基于测试的整体奖励对象选择策略、基于失效率的模糊奖励对象选择策略和基于测试频率的额外奖励对象选择策略,实现了强化学习的有效收敛。4.基于强化学习的CITCP开展了面向工业程序的实证研究。本文共收集了 14个工业数据集,包括4个前序研究中所使用的公共数据集和10个从实际持续集成测试日志采集的数据集。一方面实际工业数据集的特性为实证研究提出了挑战,另一方面基于实际工业数据集的实证研究为奖励机制提供了实际应用案例,为基于测试用例历史执行信息的奖励机制的有效性提供了支撑。
暂无评论