  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.
