生成AIによるアサーションは、テキストや視覚的な詳細を含む、アプリケーションのより複雑な側面を検証するのに非常に有効です。しかし、生成AIは本質的に非確定的であるため、信頼性の高い結果をもたらすアサーションを作成するには、説明を明瞭かつ簡潔に記述する必要があります。
この記事では、生成AIによるアサーションを作成し、テストする際に適用できるベストプラクティスをご紹介します:
mablの生成AI機能は、Google CloudのエンタープライズAIツール の上に構築されています。mablとサービスパートナーであるGoogle Cloudは、これらのモデルのトレーニングにお客様のデータを使用することはありません。mablにおける生成AIの利用についてご不明な点がございましたら、カスタマーサクセスマネージャーまでお問い合わせください。
アサーションの説明を明瞭かつ簡潔に記述する
生成AIによるアサーションが期待どおりに動作する可能性を高めるには、アサーションの説明を明瞭かつ簡潔に記述する必要があります。アサーションの説明は、十分に厳密でありながら過度に細かくならないようにすることが重要です。
アサーションの説明があいまい過ぎると、実際にはリグレッションや失敗になるケースでも、テストが成功する可能性があります。たとえば、the page has loaded
であることをアサートする場合、ページにフォームの送信ボタンのような重要なコンポーネントが実際には欠落していたとしても、ページが重大なエラーなしにロードされて、アサーションに成功する可能性があります。
反対に、具体的な条件が多すぎたり、組み合わせが複雑すぎたりすると、正しく評価を行うことが難しくなります。必要な場合は、いくつもの異なるケースや条件を含む複雑なアサーションを複数の生成AIによるアサーションに分割します。
テーブルの並べ替えを要求する場合、生成AIによるアサーションに使用されるモデルは「厳密な」昇順または降順になる傾向があります。テーブルに重複した値がある場合、アサーションは失敗します。このような場合は、並べ替えに重複値が含まれる可能性があることを、より明瞭にアサーションの説明に記述する必要があります。
例を追加する
アサーションの説明の末尾に例を追加して、正確な内容に焦点を合わせてテストを行えるようにします。
For example, the assertion should fail in cases like…, …, or …. The should pass in cases like…, …, …
like … or …
such as … or …
いくつかの成功および失敗シナリオをテストする
生成AIは本質的に非確定的であるため、生成AIによるアサーションの結果は実行のたびに変わることがあります。信頼性の高いアサーションを作成するには、いくつかの成功および失敗シナリオをテストし、結果が満足なものでない場合はアサーションの説明を記述し直します。
ページが日本語で表示されていることをアサートする必要があるとします。次の例は、結果に基づいてアサーションの説明を記述し直していく過程を示しています。
アサーションの説明: "ページが日本語になっていること。" |
結果: "失敗 - ページのほとんどは日本語でしたが、'New'、'FRESH'、'latest'、'webhook'などの単語が英語になっていました。" |
アサーションの説明で例外を考慮していなかったため、結果で返された英単語を除外するようにアサーションの説明を修正します。
アサーションの説明: "'NEW'、'FRESH'、'latest'、'webhook'を除いて、ページが日本語になっていることを確認します。" |
結果: "失敗 - ページのほとんどは日本語でしたが、ページに'URL'などの英語の頭字語が存在します。" |
このフィードバックを受けて、例外を英語で表示することを許可するカテゴリに一般化することにしました。
アサーションの説明: ページが日本語になっていて、ブランド、名称、頭字語、一般的な日本語訳のない単語や"NEW" のような一般的な短い英単語の小さなバッジ以外の英語のテキストが含まれていないことを確認します。 |
結果: "成功 - 例外を除いて、このページは日本語になっています。" |
成功です。翻訳されていない [Submit] ボタンを含むページでこのアサーションをテストすることにしました。このアサーションは失敗するはずですが、失敗しません。この失敗シナリオの結果を踏まえ、いくつかの例を加えてアサーションの説明を再度更新します。
アサーションの説明: ページが日本語になっていて、ブランド、名称、頭字語、一般的な日本語訳のない単語や"NEW" のような一般的な短い英単語の小さなバッジ以外の英語のボタン、リンク、または大量のテキストが含まれていないことを確認します。このアサーションに成功する許可された英語の例: 背景色が周囲のテキストと異なる "latest" はバッジとみなされます。"Mt. Everest"、"John Doe"、"JavaScript"、"Pepsi"は翻訳の不要な名称やブランドです。"URL"、"API"、"E2E"、"webhook" は翻訳の不要な頭字語や単語です。このアサーションに失敗する英語の例: "Violation history"、"Submit"、"Cancel"、"OK"、"name"、"result" はすべて、許可された英語の例外条件を満たしておらず、日本語に翻訳されているべき英語の単語またはフレーズです。 |
結果: "失敗 - ページのほとんどは日本語で、ページ上のほとんどの英単語はアサーションの条件に適合していますが、このページには、アサーションの条件に適合しない英単語'submit' を含むボタンが存在します。" |
成功です。アサーションは失敗します。これは求めていた結果です。アサーションの説明を記述し直し、成功および失敗シナリオでアサーションをテストすることで、テストの目標を達成するためのアサーションを作成できます。
ブラウザーテストで、失敗シナリオをシミュレートするには、Chrome DevToolsを使用してページを手動で更新できます。