DRIFT: Deep Reinforcement Learning for Functional Software Testing

Luke Harries,Rebekah Storan Clarke,Timothy Chapman,Swamy V. P. L. N. Nallamalli,Levent Ozgur,Shuktika Jain,Alex Leung,Steve Lim,Aaron Dietrich,José Miguel Hernández-Lobato,Tom Ellis,Cheng Zhang,Kamil Ciosek
DOI: https://doi.org/10.48550/arXiv.2007.08220
2020-07-16
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.
Machine Learning,Artificial Intelligence
What problem does this paper attempt to address?
### Problems the Paper Aims to Solve This paper aims to address the issues of efficiency and automation in software testing. Specifically: 1. **Inefficiency and High Cost of Manual Testing**: Traditional manual testing methods are not only time-consuming but also costly. Manual testing becomes even more challenging when testing complex user interfaces (GUI). 2. **Limitations of Existing Automated Testing Tools**: Existing automated testing tools typically use fixed random strategies, resulting in low test coverage and inefficiency. These tools perform poorly when handling complex tasks and struggle to adapt to changes in the software. 3. **Need for Efficient and Automated Software Testing**: With the development of Continuous Integration and Continuous Delivery (CI/CD), efficient software testing has become particularly important. Especially for critical systems like operating systems, it is essential to ensure the stability and security of core functions. To this end, the paper proposes a framework based on Deep Reinforcement Learning (DRL) called DRIFT (Deep Reinforcement learning for Functional software-Testing) for functional software testing. DRIFT models the state-action value function using Graph Neural Networks (GNN) and employs Batch Reinforcement Learning (Batch-RL) for training, enabling efficient triggering of required software functions in a fully automated environment.