株式会社renue
AI導入・DXの悩みをプロに相談してみませんか?
AIやDXに関する悩みがありましたら、お気軽にrenueの無料相談をご利用ください。 renueのAI支援実績、コンサルティングの方針や進め方をご紹介します。
なぜAIプロジェクトには従来と異なるテスト戦略が必要なのか
従来のソフトウェアテストは「同じ入力に対して同じ出力が返ること」を前提としています。しかしAI(特にLLM)は非決定的です。同じプロンプトを10回実行すれば10個の異なる回答が返ります。全てが正しいかもしれませんが、出力は確率分布であり、単一の正解ではありません。
LangChainの2026年State of AI Agentsレポートによると、57%の組織がエージェントを本番運用していますが、品質がデプロイの最大障壁(32%)と回答しています。
本記事では、AIの非決定性に対応する3層テスト戦略と、実務で使える評価フレームワークを解説します。
3層テスト戦略
| 層 | 対象 | テスト方法 | 実行タイミング |
|---|---|---|---|
| Layer 1:決定論的テスト | ツール呼び出し、引数パース、レスポンスフォーマット、ステートマシン遷移 | 従来の単体テスト(pytest等) | 毎コミット(CI) |
| Layer 2:プロパティベーステスト | 出力の構造的特性(JSON準拠、必須フィールド存在、文字数制限) | スキーマバリデーション + アサーション | 毎コミット(CI) |
| Layer 3:LLM評価テスト | 回答の品質(正確性、関連性、有害性、忠実性) | LLM-as-a-Judge + 人間評価 | main マージ時 or 日次 |
Layer 1:決定論的テスト
AIシステムの中にも決定論的に動作する部分が必ずあります。ツールの呼び出しロジック、入力のバリデーション、レスポンスのフォーマット変換など。ここは従来のユニットテストで100%カバーできます。
- ツール選択ロジックのテスト(入力パターンに対して正しいツールが選ばれるか)
- 入力バリデーション(不正な入力に対して適切なエラーが返るか)
- レスポンス整形(LLMの出力がJSON形式に正しく変換されるか)
Layer 2:プロパティベーステスト
LLMの出力内容は毎回変わりますが、出力が満たすべき「性質」は固定できます。
| プロパティ | テスト内容 | 例 |
|---|---|---|
| 構造 | 出力がスキーマに準拠しているか | JSONの必須フィールドが全て存在する |
| 長さ | 出力が規定の文字数/トークン数以内か | 要約が500文字以内 |
| 禁止 | 出力に含まれてはいけない情報がないか | 個人情報、禁止語句が含まれていない |
| 言語 | 出力が指定言語で生成されているか | 日本語で回答(英語混入なし) |
Layer 3:LLM評価テスト
回答の「品質」を評価するテストです。4つのベースライン指標で評価します。
| 指標 | 内容 | 測定方法 |
|---|---|---|
| 回答関連性 | 質問に対して的確に回答しているか | LLM-as-a-Judge(別のLLMが採点) |
| 忠実性 | 参照データに基づいた回答か(ハルシネーションなし) | 回答の各主張をソースと照合 |
| 有害性 | 有害・不適切な内容が含まれていないか | コンテンツフィルタ + LLM判定 |
| ツール正確性 | 正しいツールが正しいパラメータで呼ばれたか | ツール呼び出しログの検証 |
実務上のポイント:LLM評価テストは非決定的なため、3回以上実行してスコアを平均化することで、単発の揺れを吸収してください。
テストケース設計のフレームワーク
| カテゴリ | テスト項目 | 合格基準 |
|---|---|---|
| 正常系 | 標準的な入力に対して正しい出力が返るか | 正答率85%以上(100件中85件正解) |
| 境界系 | 非常に長い入力、空入力、特殊文字を含む入力 | エラーハンドリングが適切に動作 |
| 攻撃系 | プロンプトインジェクション、脱獄試行 | 有害な出力がゼロ |
| 性能系 | 同時接続数、レスポンスタイム | 同時200接続でP95レスポンス5秒以内 |
| 回帰系 | モデル/プロンプト変更後に既存テストが通るか | 変更前と同等以上のスコア |
評価パイプラインの設計
- テストデータセット準備:正常系100件 + 境界系20件 + 攻撃系10件を用意
- 自動実行:CI/CDパイプラインに組み込み、PRごとにLayer 1-2、mainマージ時にLayer 3を実行
- スコア記録:各テスト結果をMLflow等で記録し、プロンプトバージョンとの紐付け
- 閾値チェック:スコアが閾値を下回った場合はPRをブロック
- 人間レビュー:Layer 3で低スコアだったケースは人間がレビューし、テストケースを追加
よくある失敗と回避策
失敗1:「テストが全件通る」を目指す
LLMの出力は非決定的なため、100%の通過率は非現実的です。「90%以上が通過し、残り10%は許容範囲内」という基準設計が実務的です。
失敗2:テストデータを一度作って放置
AIの利用が進むと、想定外の入力パターンが出てきます。本番で発生した問題を都度テストケースに追加するフィードバックループを回してください。
失敗3:Layer 3(品質評価)を省略する
「Layer 1-2が通ったから大丈夫」は危険です。構造的に正しくても内容が的外れな回答は検出できません。品質評価は必ず実施してください。
FAQ
Q1. AIのテストにどのツールを使えばよいですか?
2026年の主要ツールはDeepEval、Braintrust、LangSmith、Arize Phoenix、ConfidentAIです。Layer 1-2はpytest、Layer 3はDeepEvalまたはBraintrustが適しています。
Q2. テストケースは何件必要ですか?
最低100件(正常系80+境界系10+攻撃系10)が目安です。本番運用後は、実際のユーザー入力から定期的にテストケースを追加し、500件以上を目指してください。
Q3. LLM-as-a-Judgeの信頼性は?
GPT-4やClaude Opusを評価者として使うと、人間の評価者との一致率が80〜90%に達します。ただし、微妙なニュアンスの判定は人間レビューで補完してください。
Q4. テストにどのくらいのコストがかかりますか?
Layer 3のLLM評価テストはAPIコールが発生するため、100件×3回実行で数千〜数万円/回です。CI/CDに組み込む場合は月額のAPI予算を事前に確保してください。
Q5. モデルを変更した時のテストはどうしますか?
全テストケースで回帰テストを実行し、変更前のスコアと比較してください。スコアが5%以上低下した場合はリリースを保留し、原因を調査します。
AIプロジェクトの品質保証でお困りですか?
renueでは、AIシステムのテスト戦略設計から評価パイプライン構築、本番運用の品質管理まで一気通貫で支援しています。AI評価APIの開発実績に基づき、非決定的なAIシステムの品質を確保します。
