AIに結合テスト仕様書を作らせるなら、Markdownを1枚挟むと良い

May
2026-08-28
2026-08-28

はじめに

担当しているプロジェクトでは、既存システムに対する追加開発を行っており、今回対応した主な機能は次のとおりです。

  • 申請管理機能
  • 通知機能
  • ファイル出力機能
  • 既存画面の改修

これらの機能について、リリース前に結合テスト仕様書を作成する必要がありました。

ゼロから作成すると、対象機能や関連処理の調査だけでも時間がかかります。

そこで今回は、普段の業務で行っている Claude Code と Claude(チャット)を使ったテスト仕様書の作成方法を紹介します。

全体の流れ

AIを使う工程を2つに分け、その間に人のレビューを挟みます。Claude Codeでテストケースを洗い出し、人がレビューした後、チャットでテスト仕様書の形式に整えます。

なぜ2ステップに分けるのか

Claude Codeに提出用の仕様書まで作らせることもできます。スクリプトを作成すればExcelへの出力も可能です。

それでも分けているのは、途中に人がレビューする工程を入れたいからです。

Markdownの段階で一度確認することで、「何をテストするか」と「どう見せるか」を分けて考えられます。

仕様書の形式まで一気に作らせると、内容の誤りに気づいたときに作り直しになりますが、Markdownの段階であればテキストのまま直せます。

後工程にチャットを使う理由

ここで重要なのは工程を分けること自体で、後工程のツールは必ずしもチャットである必要はありません。レビュー後にそのままClaude Codeへ整形を指示しても、目的は達成できます。

そのうえでチャットを使っているのは、次の理由です。

  • 整形の作業にリポジトリを読ませる必要がない
  • 列の並びや表現を対話しながら調整しやすい
  • コードやリポジトリに余計な変更を加えさせずに済む
  • Excelファイルをそのまま出力してもらえるため、転記の手間が発生しない

役割としては次のように使い分けています。

  • Claude Code — Issueとソースコードを確認して、テストケースを洗い出す
  • Claude(チャット) — レビュー済みの内容をテスト仕様書の形式に整える

作成手順

以下の3ステップで進めます。

Step 1:Claude Codeでテストケースを作る

対象プロジェクトでClaude Codeを起動し、次のような指示を出します。実際にはリポジトリ名やIssue番号を具体的に指定しています。

今回のリリース分のIssue(#XX〜)を確認し、実装済みのコードを読んだうえで
結合テストケースをMarkdownで作成してください。

■ 方針
- 正常系 / 異常系(入力エラー、権限エラー、排他制御、同時操作の競合)に分ける
- 各ケースに 画面 / API / DB / 通知 の期待結果を分けて記載
- ケースID、関連Issue番号、前提条件、操作手順を含める

■ 注意(共通)
- Issueの記述と実装が食い違う場合は実装を正とし、その差分を注記する
- 実装を読まずに一般論でケースを書かない
  (Laravelの場合は Controller / Service / FormRequest / Rules を追い、
    実際のバリデーションルールとエラーメッセージを引用する)

■ 注意(本プロジェクト固有)
- 認証エラーを「HTTP 200 + body内のcode」で返す箇所があるため、
  HTTPステータスとbody内codeを混同しない
- 権限(admin / user / partner)で結果が変わるエンドポイントは権限別に分ける

■ 横断シナリオを別章にまとめる
- 申請の処理中に、申請者が退会・退職した場合
- 設定変更が、別機能の判定に与える影響

「注意(本プロジェクト固有)」の部分は、自分の環境のエラー応答の形式や権限区分に読み替えてください。

効果があった指示

実際に使ってみて、特に効果があったのは次の3点です。

1. Issueと実装の差分を扱わせる

Issueの記述と最終的な実装に差分が生じる場合もあります。その場合は実装を正としたうえで差分を注記させることで、テストケースの作成がIssueと実装の突き合わせも兼ねます。

2. 確認してほしい処理を具体的に指定する

参照するレイヤーを指定しないと、どのプロジェクトにも当てはまる一般的なケースが並びます。追ってほしい箇所を挙げることで、実際のバリデーションルールやエラーメッセージが反映された内容になります。

3. 横断シナリオを別章にする

機能単位で書かせると、機能をまたぐケースが出てきません。既存機能や別機能との連携は章を分けて明示的に依頼します。

Step 2:内容をレビューする

AIが作った内容をそのまま使うことはありません。実装と照らし合わせて確認します。

特に抜けやすいのが、今回のリリース分のIssueだけでは見えない、既存機能との連携部分です。追加した機能は既存機能の上で動く一方、その連携部分はIssueに書かれていないことも多いため、足りないテストケースは実装者が追加・修正します。

Step 3:チャットで仕様書にする

レビューしたMarkdownをClaudeに渡して、テスト仕様書の形式に整えてもらいます。

最終的な提出物はExcelです。チャットにはMarkdownを渡したうえで「この内容でExcelのテスト仕様書を作成してください」と依頼し、ファイルとして出力してもらいます。

test-spec-sample-wide

内容はStep 2で確認済みなので、ここでは主に体裁を確認します。

使ってみて

一番大きいのは、ゼロから書き始めなくて良いことです。最初から「何が足りないか」を探す作業に入れます。

一方で、AIの出力がそのまま使えるわけではありません。

特に既存機能との連携など、Issueだけでは分からない部分は人による確認が必要です。

AIにたたき台を作ってもらい、最後の品質は人のレビューで担保するようにしています。

今後試したいこと

現在はチャットで毎回仕様書の形式に整えています。

今後は、決まったテンプレートに出力するスクリプトをClaude Codeで作成し、この工程もさらに短縮できないか試してみたいと思います。整形の手順が固まってきたので、対話で調整する必要が少なくなってきたためです。

まとめ

  • Claude Codeで洗い出す → 人がレビューする → チャットで整える
  • Markdownを挟むのは、内容を確定させてから体裁に進むため
  • Issueだけでは既存機能との結合部分が抜ける。そこは実装者が補う