見出し画像

LLMがE2Eテストの問題を鮮やかに解決するかもしれない

今年はChatGPTを始めとするLLM(Large Language Model)が話題をさらった年でした。ビジネスのあらゆるユースケースで様々な応用が試され共有され、ツール化された結果、生産性が大幅に向上した人も少なくないのではと思います。

とはいえ、LLMと周辺技術は擦られまくっている割に、キラーアプリ・サービスはまだ少数しか出ていないと感じる人も多いのではと思います。

様々な障壁を乗り越え、来年・再来年にかけてLLMの社会実装が本格化し定着していくと予測しますが、その中で個人的に激アツと感じているユースケースがE2E(エンドツーエンド)テストのドメインです。

E2EテストとLLMのシナジー

E2Eテストはアプリケーションが実際の動作環境(webブラウザやネイティブアプリなど)とユーザーシナリオで正常動作するかを自動で確認します。システム全体の連携をチェックする強力な統合テストですが、その複雑さからわずかな調整や意図しない変更でテストが失敗しやすく、修正に時間がかかることがあります。たとえば、「期間限定でログインボーナスを500ポイント配る」設定がONになった瞬間、来訪時にモーダルが出て特定のリンクが押せなくなりテストが壊れる....みたいなことが起こりがちです。

LLMでは、自然言語処理(NLU)を利用して人間の言葉でテストシナリオを記述することが可能です。これにより、エンジニアだけでなく、QAチームやドメインエキスパートもテスト作成や修正プロセスに参加できるのがポイントです。「ユーザーがアイテムをカートに追加し、チェックアウトする」といったシナリオを、LLMが自動的にテストケースに変換します。 Cucumber でやりたかったコンセプトに近いですね。

### プロンプトのイメージ ###
- https://deeeeepl.com にアクセスしてください
- 画面左部のテキストエリアにフォーカスを当ててください
- 「これはペンです」と入力してください
- 10秒待機してください
- 画面右部のテキストエリアに「This is a pen」と表示されることを確認してください。それ以外の際は、どういう状態になっているかを出力して終了してください。
- 画面右部のテキストエリアの上部のプルダウンから「フランス語」を選んでください
- 10秒待機してください
- 画面右部のテキストエリアに「Il s'agit d'un stylo.」と表示されることを確認してください。それ以外の際は、どういう状態になっているかを出力して終了してください。

LLMの使用は、テストケースの作成やメンテナンスの工数を削減するだけでなく、アプリケーションの変更によるテストの壊れるリスクも低減します。これは、自然言語で記述されたテストは、具体的な要素のIDやXPathに依存せず、UIの変更にも強いためです。LLMは「ログインボタンをクリックする」のようなあいまいな指示を理解し、UIが変わっても適切なアクションを実行できる柔軟性があります。安定化すればE2Eテストのアプローチそのものを変える可能性も秘めていると感じます。

その他、バグや問題の特定、テスト結果を解析、テストの網羅性の向上に関する情報を分かりやすい自然言語でまとめてドキュメントとレポートを作成する機能なども有効に思えます。

マルチモーダルLLM

さらに、GPT-4VのようなマルチモーダルLLMも、E2Eテストの可能性を拡大しそうです。従来は文字ベースのスクリプトやコード中心だったテストに画像や動画などの非言語情報を組み込むことが可能になるため、UI/UXをテスト対象とするE2Eでは特に有効な情報ソースとして機能し精度向上、柔軟性向上が期待できます。

例えば、ヘッドレスブラウザがテスト対象のUIのスクリーンショットも提供し、LLMに「この画面でログインフォームが表示されているか確認する」などと指示を与えることで、LLMは視覚情報を解析し、テストのアサーションを生成します。これにより、GUIの変更に柔軟に対応し、テストの信頼性と継続性を保つことが可能になります。

※ GPT-4Vでの動作イメージ

DOMツリーの情報に加えて、スクリーンショットも添付する
こうなる

さらに、新しいデザインのUIを実装した後のスクリーンショットを基準画像と比較することで、変更点を特定するプロセスが、LLMの高度な画像理解能力により自動化され、検出精度が向上します。これにより、意図した変更かどうかを正確に評価できるようになり、テストが壊れるリスクを減らしつつ、テストプロセスを迅速に再開できます。

現時点の制約

現段階では、LLMをE2Eテストに適用するにあたり、現実的な課題がいくつか存在します。主な障壁は、LLMアプリの運用では基盤モデルに高度な計算資源と最適化が必要となる点です。Azureやその他のベンダーのAPIはproduction用途ではまだ動作が不安定なことが多く、Rate Limitも非常に厳しいため運用で苦労しそうです。コスト面の問題もありますよね…..。

この問題は、サービスの進化と効率的なAIモデルの開発により、徐々に克服されると予想しますが、LLMアプリの広範囲な適用用途には時間がかかりそうです。その普及フェーズに到達するまでの過渡期には、技術の安定性やコスト効率を考慮しつつ、慎重な導入が求められます。

まとめ

LLMによるE2Eテストの変革は単なるテスト自動化ではなく、テスト作業の質を変え、テストがより継続的かつ透明なプロセスとなり、品質保証の概念そのものを再定義するかもしれません。E2Eのブラウザ自動化はそもそも奥深く難しいドメインであり、LLMの進化だけで望む結果が得られるとは思えないのも事実ですが、大きな市場なだけに伸びしろも大きいと思います。


こんぴゅです! 四谷から皆様に役立つテックな話題をお届けしております。もし100円でもサポいただければ励みになります。記事もグレードアップします。何卒よろしくお願いいたします