テストケース生成

Prev Next

Nexus AI エージェントの「テストケース生成」は、仕様書あるいはテスト対象アプリケーションの振る舞いを記述したドキュメントなどをアップロードすると、それを元にテストケースを生成します。

「添付したファイルからテストケースを生成してください」といった非常にシンプルなプロンプトだけでも、ある程度網羅的なテストケースが生成できます。

また、プロンプトを書くことで生成されるテストケースの粒度感、網羅性、テスト観点などを調整することも可能です。

こちらのドキュメントでは、「テストケース生成」機能の基本的な使い方や出力結果のチューニング方法についてご紹介します。

1.基本的な使い方

入力とすべき仕様書

テスト実行エンジンとしてのNexusが最も得意とするテストは、画面からのユーザ観点でのテスト(E2Eテスト)です。したがって、Nexus AIが出力を得意とするテストもE2Eテストになります。

E2Eテストを作る上で最も参考になるのは、ユーザの振る舞いが記述された仕様書、つまり基本設計書、概要設計書、画面設計書などになります。あるいは、機能を追加する際にユーザの振る舞いを記述したチケット管理システム上のチケット、新機能の概要をまとめたメモなども入力に適しています。

一方で、ユーザの振る舞いではなくシステムの仕組みに着目した情報、例えば詳細設計書やデータベース仕様書などは、E2Eテストを作る情報としては適切ではありません。そのため、このような情報をアップロードしても、十分なテストケースが出力されない可能性が高くなります。

まずは基本の生成を試してみる

まずは手持ちの仕様書をアップロードし、テストケースを生成してみましょう。

  1. シナリオウィンドウを開き、「AIで生成」ボタンをクリックし、表示されるドロップダウンから「テストケース生成」を選択し、「AIエージェント」ウィンドウを起動してください。

  2. 「AIエージェント」ウィンドウに、仕様書をアップロードし、プロンプトとして「添付したファイルからテストケースを生成してください」と入力して「送信ボタン」()をクリックしてください。

  3. AIエージェントがテストケースを自動生成し、CSVファイルがダウンロードフォルダに保存されます。

生成結果を評価する

生成されたテストケースを以下の観点で評価してみてください。

  • 全体的な粒度感

    • 想定より細かい(妥当ではあるが細かすぎる、多すぎるなど)あるいは大雑把すぎる(正常系ばかりで準正常系、異常系のテストが少ない、など)

  • 精度

    • ハルシネーション(存在しない機能や不要なテストがあるなど)の有無

    • 想定しているテスト観点が網羅されているか

  • 根拠の過不足・有用性

    • なぜそのテストケースが出力されたのか根拠が正しいか、妥当か

この基本の生成結果を評価した上で、次のステップではプロンプトを変更し、求めるテストケースに近づけるように調整していきましょう。

2.粒度の調整

基本の生成を試した際の出力を見て、期待したテストケースとずれていることに気づいた時、最も多いのが粒度感の違いです。

粒度感と言ってもいろいろありますが、

  • ユーザ受け入れテスト(UAT)的なハイレベルなものを期待したのに、単体テスト(UT)あるいは結合テスト(IT)レベルの詳細なものが出ている(あるいはその逆)

  • シナリオテストのように1つのシナリオでユーザストーリーの全体をカバーして欲しかったのに、1シナリオで観点を1つずつテストしている(あるいはその逆)

  • ある項目に対して正常系のテストケースは出力されているが、準正常系や異常系がカバーされていない・数が少ない(あるいはその逆)

といった違いのことを指します。これを調整するには、以下の2つの方法があります。

テストケース数の指定

プロンプトに生成すべきテストケースの数を明確に指定することで、それに合わせてテストケースの粒度感も調整されます。

例えば基本の生成を行ったところ、概ね50個程度のテストケースが生成される場合を考えます(生成を繰り返すと少しずつ違った個数のテストが生成されるので、平均を取ったと考えます)。

この時、もっと詳細なテストを生成したければ

添付したファイルからテストケースを生成してください。その際、最低でも150個のテストケースが必要です。

と、平均数より大幅に大きい数を指定して生成させると、AIはその分だけ粒度を細かめに、観点を詳細にしてテストを生成しようとします。この場合、生成されるテストケース群の全般的に粒度が細かくなります。

詳細な指定

生成されたテストケースのうち項目Aに関しては重要なのでより網羅的にテストケースを出したい、という場合は、その項目Aに対して詳細な指定をすることでテストケースの粒度を調整します。

添付したファイルからテストケースを生成してください。その際、項目Aについては正常系に加え、考えうる異常系も全て網羅してください。

と言った細かい指定をすると効果的です。ただし、上記のプロンプトにより、必ずしも全網羅のテストケースを生成してくれるとは限らないので、必要であれば出力されたテストケースを元にしつつ、別の手法(二因子間網羅による網羅表の作成など)を使ってテストケースを膨らませてみてください。

3.精度向上

上記の粒度感を合わせても、思うようなテストケースが生成されない場合もあるでしょう。

特に、生成AIならではの問題と言えるハルシネーション(存在しない機能が出てくる、ありえない組み合わせが出現する、など)や、必要なテストケースの見落としといった問題を抑制する必要があるかもしれません。その際には、以下の方法が役に立つ場合があります。

付加情報の提供

まず、本来網羅されるべき機能やテスト観点などの高レイヤな情報が抜け落ちている場合、それを人間が補うことで、その先に出力されるテストケースの精度を高めることができます。

添付したファイルは、アプリケーションAの仕様書です。ここには、以下の機能が含まれています。
- 機能X
- 機能Y
- 機能Z
これを踏まえ、この仕様書からテストケースを生成してください。

上記の例では機能X,Y,Zとなっていますが、テスト観点などの情報を補ったり、そう言った情報が含まれた別のファイルを仕様書と合わせてアップロードしても有効です。

テストケース生成対象の絞り込み

上記のように、機能やテスト観点などを補うことで、AIが仕様書の理解を深めてより良いテストケース生成ができるようになります。

しかし、入力のサイズが大きくなればなるほど、AIは注意力散漫になり、テストケースの密度が低くなってしまう傾向があります。これを回避するために、テストケースの生成対象を絞り込むことで、AIの注意力を集中させて、結果的に生成されるテストケースの精度を高められます。

添付したファイルは、アプリケーションAの仕様書です。この仕様書の中に含まれる機能Xについてテストケースを生成してください。

このプロンプトだと、機能X、Y、Zの3つがあるときに、機能Xについてのテストケースしか生成されません。そのため、別なセッションで機能Yについてのテストケース、また別のセッションで機能Zについてのテストケースを生成させ、それらを連結することで、機能X、Y、Zの3つに対してのテストケースを作ることになります。手間はかかりますが、すべての機能のテストを1回のプロンプトで作成させるよりも、このように機能を絞って3回生成させて、それを連結させた方が良いテストケースが作成できる可能性が高まります。

留意点

  • 生成結果は毎回異なります。

    • 生成AIの特性上、同じ入力でも結果は毎回異なります。複数回試行し、最も品質の高いテストケースを選択してください。

  • 入力サイズに制限があります。

    • AIが一度に処理できるテキスト量(トークン数)には制限があります。大規模なドキュメントを使用する場合は、対象範囲を絞るなど工夫してください。

  • ドキュメントの品質が結果に影響します。

    • 入力ドキュメントがAIにとって読みやすい形式(構造化、整理されているなど、「AI-Ready」な状態)であるほど、出力されるテストケースの品質が高くなります。