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 は、アクセシビリティ API から得られる記号的表現を用いて GUI 状態-行動価値関数をモデル化するグラフニューラルネットワーク(GNN)を用いた深層強化学習フレームワークであり、ソフトウェアのサンプル効率的で自動化された機能的テストを可能にする。Windows 10 において、ランダムおよびハッシュベースのベースラインと比較して、2桁の性能向上を達成し、複数のテスト目的に一般化可能である。

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-学習およびハッシュベースのベースラインと比較して、テストカバレッジと耐性を向上させること。

提案手法

  • テスト目的を報酬関数で定義したマルコフ決定過程(MDP)としてソフトウェアテストを形式化する。
  • アクセシビリティ API から得られる記号的表現を用いて GUI 状態を木構造の記号的表現で表現する。
  • GUI 状態内の構造的依存関係を捉えるために、グラフニューラルネットワーク(GNN)を用いて Q 関数をモデル化する。
  • オンライン相互作用のコストを回避するため、オフラインデータセットを用いたバッチ強化学習によりエージェントを訓練する。
  • 推論時にターゲットタスクを確率的サンプリングすることで、マルチオブジェクティブ学習を可能にする DRIFT-Sampler を採用する。
  • 歴史的相互作用データから最適方策を学習するために、GNN を用いた関数近似を施した Q 学習アルゴリズムを用いる。

実験結果

リサーチクエスチョン

  • RQ1人為的に指定された特徴なしに、深層強化学習エージェントは機能的 GUI テスティングを学習できるか?
  • RQ2GUI 状態-行動価値をモデル化する際に GNN を用いることで、ハッシュベースの手法と比較して一般化性能が向上するか?
  • RQ31 つのエージェントで複数のテスト目的を同時に効率的に学習できるか?
  • RQ4DRIFT のサンプル効率性は、ランダムおよびヒューリスティックベースのテストベースラインと比較してどの程度高いか?
  • RQ5従来のハッシュベースのテスト手法が破綻するような小さな GUI 変更に対しても、エージェントは一般化可能か?

主な発見

  • DRIFT は Windows 10 において、ランダムベースラインと比較してテスト完了率で 2 桁の性能向上を達成した。
  • GNN を用いたモデルは、小さな GUI 変更に対しても効果的に一般化したが、Q-ハッシュベースラインは一般化に失敗した。
  • 設定アプリの「通知」と「Bluetooth デバイスのセットアップ」の両タスクを正常に完了させた。特に、温度 0.03 を用いた場合、Bluetooth タスクを 21 回成功させた。
  • 推論時に異なる目的をサンプリングすることで、マルチオブジェクティブテストにおいてフレームワークの耐性を示した。
  • オフラインデータからのバッチ RL 訓練により、学習中にオンライン環境との相互作用を必要とせず、効率的な学習が可能になった。
  • エージェントは重要な UI 要素を優先するよう学習し、ランダムまたはヒューリスティック方策と比較してカバレッジを向上させた。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。