Skip to main content
QUICK REVIEW

[论文解读] DRIFT: Deep Reinforcement Learning for Functional Software Testing

Luke Harries, Rebekah Storan Clarke|arXiv (Cornell University)|Jul 16, 2020
Software Testing and Debugging Techniques参考文献 22被引用 13
一句话总结

DRIFT 是一种深度强化学习框架,利用图神经网络从符号化表示中建模 GUI 状态-动作价值函数,实现了样本高效、自动化的软件功能测试。在 Windows 10 上,其性能相比随机和基于哈希的基线方法高出两个数量级,并能跨多种测试目标实现泛化。

ABSTRACT

Efficient software testing is essential for productive software development and reliable user experiences. As human testing is inefficient and expensive, automated software testing is needed. In this work, we propose a Reinforcement Learning (RL) framework for functional software testing named DRIFT. DRIFT operates on the symbolic representation of the user interface. It uses Q-learning through Batch-RL and models the state-action value function with a Graph Neural Network. We apply DRIFT to testing the Windows 10 operating system and show that DRIFT can robustly trigger the desired software functionality in a fully automated manner. Our experiments test the ability to perform single and combined tasks across different applications, demonstrating that our framework can efficiently test software with a large range of testing objectives.

研究动机与目标

  • 为解决软件开发中手动 GUI 测试效率低下且成本高昂的问题。
  • 实现复杂软件系统在多样化目标下的完全自动化、样本高效测试。
  • 克服固定随机策略和基于启发式规则的智能体在 GUI 测试中的局限性。
  • 开发一种可泛化的框架,能够在无需针对特定任务进行特征工程的情况下测试多种功能。
  • 相比现有的 Q-learning 和基于哈希的基线方法,提升测试覆盖率和鲁棒性。

提出的方法

  • 将软件测试形式化为马尔可夫决策过程(MDP),并通过奖励函数定义目标。
  • 使用从可访问性 API 派生的树状符号化表示来表示 GUI 状态。
  • 利用图神经网络(GNN)建模 Q 函数,以捕捉 GUI 状态中的结构依赖关系。
  • 通过离线数据集进行批量强化学习训练,避免训练期间的在线交互成本。
  • 采用 DRIFT-Sampler 在推理过程中通过随机采样目标任务,实现多目标学习。
  • 使用基于 GNN 的函数逼近的 Q-learning 算法,从历史交互数据中学习最优策略。

实验结果

研究问题

  • RQ1深度强化学习智能体是否能够在无需人工指定特征的情况下学习执行功能 GUI 测试?
  • RQ2与基于哈希的方法相比,使用 GNN 建模 GUI 状态-动作值是否能提升泛化能力?
  • RQ3该框架能否通过单个智能体高效地同时学习多个测试目标?
  • RQ4DRIFT 的样本效率与随机和基于启发式规则的测试基线相比如何?
  • RQ5该智能体是否能泛化到会破坏传统基于哈希的测试方法的小型 GUI 变化?

主要发现

  • 在 Windows 10 上,DRIFT 在测试完成率方面相比随机基线高出两个数量级。
  • 基于 GNN 的模型能有效泛化到小型 GUI 变化,而 Q-hash 基线则无法泛化。
  • 该智能体成功完成了“设置”应用中的“通知”和“蓝牙设备设置”任务,使用温度为 0.03 时,蓝牙任务成功完成了 21 次。
  • 通过在推理过程中从不同目标中采样,该框架在多目标测试中表现出鲁棒性。
  • 从离线数据进行批量强化学习训练,实现了高效学习,且无需在训练期间进行在线环境交互。
  • 该智能体学会了优先关注关键 UI 元素,相比随机或启发式策略,显著提升了测试覆盖率。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。