LLMを使った自動GUIテストの進化
大規模言語モデルを使ってモバイルアプリのGUIテストを改善する新しいアプローチ。
― 1 分で読む
目次
モバイルアプリは日常生活に欠かせないもので、その品質を確保することは良いユーザー体験にとってめっちゃ重要だよね。アプリの品質をチェックする一つの方法は、グラフィカルユーザーインターフェイス(GUI)の自動テストを通じて行うこと。こういうテストはユーザーがアプリとどうやってやり取りするかをチェックして、すべてがちゃんと動いているかを確認するんだけど、従来の自動GUIテスト方法は重要な問題を見逃しちゃったり、リアルなユーザー行動を完全に再現できていないことが多いんだ。
より良いテストの必要性
現在の自動テスト方法はカバレッジに悩まされることが多くて、ユーザーがアプリとどうやってやり取りするかのすべての可能性をテストできてないことがあるんだよね。それに、大量のトレーニングデータに依存しすぎることもあって、集めるのが難しいんだ。モバイルアプリは画面がいっぱいあって、複雑なやり取りがあるからテストするのがチャレンジなんだよね。この複雑さのせいで、よりリアルなアクションを効果的に生成できる新しいアプローチが必要なんだ。
大規模言語モデルの活用
大規模言語モデル(LLM)の成功に触発されて、モバイルGUIテストのための新しい方法を提案するよ。GPT-3みたいなLLMは自然言語を理解して質問に答えるのが得意なんだ。GUIテストをQ&Aタスクみたいに扱うことで、LLMを使ってモバイルアプリとやり取りしてテストスクリプトを生成できるんだ。
我々のアプローチ
どんな風に動くの?
我々のアプローチはまずアプリのGUIから情報を集めることから始めるよ。レイアウトや現在の状態を含む情報を集めて、それを元にLLMへのプロンプトを作るんだ。モデルはアプリ内で次に取るべきステップを示すレスポンスを生成するよ。その後、この提案されたアクションを実行して、結果をLLMにフィードバックして、そのアプローチを洗練させるんだ。
情報収集
必要な情報は二つのタイプに分けられるよ:静的コンテキストと動的コンテキスト。
- 静的コンテキスト:これにはアプリに関する一般的な情報、現在テスト中の特定のGUIページ、そしてそのページのウィジェットの詳細が含まれるよ。
- 動的コンテキスト:これには現在のテスト進行状況が含まれていて、ページやウィジェットがどれだけやり取りされたかを示すよ。
この情報は、テストプロセスの中でLLMが次に何をすべきかを決定するためにめっちゃ重要なんだ。
プロンプトの生成
抽出した情報を使って、LLMに入力するプロンプトを生成するよ。このプロンプトはGUIの現在の状態を説明し、LLMがどんなアクションを取るべきかを尋ねるんだ。プロンプトをうまく構造化することで、LLMがコンテキストをよりよく理解できて、有益なレスポンスを生成するようにするよ。
アクションとウィジェットのマッチング
LLMがアクションを生成したとき、その自然言語での説明をアプリのウィジェットに対応する特定のアクションに変換する必要があるんだ。これはニューラルマッチングネットワークを使って行うよ。このネットワークはLLMが提案したアクションを取り込み、その説明に基づいて適切なウィジェットを見つけ出すんだ。
効果の評価
新しいアプローチを試すために、人気のあるモバイルアプリをいくつか選んで評価したよ。既存の方法とそのパフォーマンスを比較して、二つの主要な要素に焦点を当てたんだ:
- アクティビティカバレッジ:これはどれだけ多くのアプリ機能がテストされたかを測るもの。
- バグ検出:これはテスト中に見つかったバグの数をカウントするよ。
結果として、我々の方法は71%のアクティビティカバレッジを達成して、他の方法よりかなり高かったんだ。さらに、最もパフォーマンスの良いベースラインよりも36%多くのバグを検出することができて、我々の方法の効果を証明したよ。
新たなバグ検出
別のアプリセットでも我々のアプローチを試して、他の人が見逃したバグを見つけられるか見たんだ。このテストのラウンドでは、48の新しいバグを発見して、そのうち25はすでに開発者によって確認されて修正されたんだ。
パフォーマンスの分析
我々のアプローチは幾つかの強みを示したよ:
- セマンティックテキスト入力:LLMはリアルなテキスト入力を生成できるから、複雑なフォームやページをナビゲートしやすくなってる。
- 複合アクション:複数のアクションを順番に必要とするタスクを処理できるんだ。例えば、異なる入力が関連するフォームの記入みたいなやつ。
- 長いテストトレース:モデルはアクションの履歴を保持できるから、テストの流れをよりよく理解できるんだ。
- テストケースの優先順位付け:我々の方法はアプリの最も重要な部分のテストに焦点を当てる傾向があって、効率を最大化してる。
自動GUIテストの未来
自動GUIテストは常に進化しているよ。我々のアプローチは、LLMの機能をテストプロセスに統合することで大きな前進を示しているんだ。これからも方法をさらに洗練させて、LLMがGUIテストを向上させる理由を理解していきたいと思ってるよ。
まとめ
というわけで、我々の仕事はモバイルアプリの自動GUIテストについて新しい考え方を紹介しているんだ。LLMを使うことで、より人間らしいテストアクションを生成できて、より良いカバレッジとバグ検出につながるんだ。このアプローチはモバイルアプリの品質を確保するだけでなく、未来のよりスマートで効率的なテスト方法の道を切り開くんだ。
タイトル: Chatting with GPT-3 for Zero-Shot Human-Like Mobile Automated GUI Testing
概要: Mobile apps are indispensable for people's daily life, and automated GUI (Graphical User Interface) testing is widely used for app quality assurance. There is a growing interest in using learning-based techniques for automated GUI testing which aims at generating human-like actions and interactions. However, the limitations such as low testing coverage, weak generalization, and heavy reliance on training data, make an urgent need for a more effective approach to generate human-like actions to thoroughly test mobile apps. Inspired by the success of the Large Language Model (LLM), e.g., GPT-3 and ChatGPT, in natural language understanding and question answering, we formulate the mobile GUI testing problem as a Q&A task. We propose GPTDroid, asking LLM to chat with the mobile apps by passing the GUI page information to LLM to elicit testing scripts, and executing them to keep passing the app feedback to LLM, iterating the whole process. Within it, we extract the static context of the GUI page and the dynamic context of the iterative testing process, design prompts for inputting this information to LLM, and develop a neural matching network to decode the LLM's output into actionable steps to execute the app. We evaluate GPTDroid on 86 apps from Google Play, and its activity coverage is 71%, with 32% higher than the best baseline, and can detect 36% more bugs with faster speed than the best baseline. GPTDroid also detects 48 new bugs on the Google Play with 25 of them being confirmed/fixed. We further summarize the capabilities of GPTDroid behind the superior performance, including semantic text input, compound action, long meaningful test trace, and test case prioritization.
著者: Zhe Liu, Chunyang Chen, Junjie Wang, Mengzhuo Chen, Boyu Wu, Xing Che, Dandan Wang, Qing Wang
最終更新: 2023-05-16 00:00:00
言語: English
ソースURL: https://arxiv.org/abs/2305.09434
ソースPDF: https://arxiv.org/pdf/2305.09434
ライセンス: https://creativecommons.org/publicdomain/zero/1.0/
変更点: この要約はAIの助けを借りて作成されており、不正確な場合があります。正確な情報については、ここにリンクされている元のソース文書を参照してください。
オープンアクセスの相互運用性を利用させていただいた arxiv に感謝します。
参照リンク
- https://beta.openai.com/docs/models/gpt-3
- https://play.google.com/store/apps
- https://openai.com/blog/chatgpt/
- https://github.com/testinging6/GPTDroid
- https://youtu.be/xvPURrLIr_w
- https://github.com/Socrates/Socrates
- https://dl.acm.org/ccs.cfm
- https://youtu.be/1qbPwKLDspA
- https://ctan.org/pkg/algorithmicx
- https://ctan.org/pkg/listings
- https://ctan.org/pkg/tcolorbox