LLMを用いたテスト自動作成の記事のご紹介

社内向けにTDDの説明資料を書いており、その調べ物をしているときにたまたま見つけた、LLMを用いたテストの自動作成に関する記事が大変興味深かったのでメモ。

経緯

TDDについての勉強会をすることになり、もろもろ資料としてまとめていた。

その中で、 Testing vs. Checking および Testing and Checking Refined に絡めて、 Checking vs Testing についても軽く触れておこうと該当記事を確認。

その際、記事を執筆された jason arbon 氏のその他の記事として、おすすめされていたのが「AI QuickStart for Testers」。

jarbon.medium.com

記事の内容

詳しくは該当の記事を見てもらえばわかるが、ざっくり意訳&要約。

  • テストしたいページのキャプチャをLLMに添付し、バグを見つけさせる
  • テストしたいページのキャプチャをLLMに添付し、テストケースを生成させる
    • 「経験豊富なテスターでも見逃す可能性のある、重要なバグを発見できるテストケースを作成してください。各テストケースについて、テスターがそれを見逃す可能性がある理由と、重要なバグである理由を説明してください。」のようなプロンプトを指定すると、さらに複雑なテストケースを作成させることができる
  • 「~のテストケースについて、問題やバグを起こす可能性のある例をいくつか挙げ、なぜそれが問題なのかを技術的な観点から説明してください。」のようなプロンプトで、具体例と詳細な説明をさせることができる
  • 自動テストのためのコードを生成させる
    • プログラミング言語やブラウザ操作自動化用のツール(Selenium, Playwright等)の指定が可能
    • POM(Page Object Model)に即したクラスの生成も可能
    • 「堅牢かつ冗長なコード」にするようプロンプトを追加することで、ログ出力やtry/catchのようなエラー処理が追加される
  • テスト計画の作成や、リバースエンジニアリングして製品要件/仕様のドキュメント作成を行うことも可能

画面キャプチャだけでなく、製品仕様をプロンプトに追加することでより精度を高めることも可能とのこと。

振り返り

ソフトウェアテストの効率化について、ちょうど考えていたところだったので大変参考になった。

特に、Page Object Modelを使うときに面倒だったページオブジェクトの作成を、この方法を使えばだいぶ簡略化できると感じた。

また、リバースエンジニアリングによる要件/使用のドキュメント作成も、どの程度のクオリティのものが出力されるのか興味深い。

いずれも機会があれば試してみたい。