AIを使ってテスト仕様書を作成してみる

LyRH1819
2026-06-18
2026-06-18

ソフトウェア開発において、テスト仕様書の作成は欠かせない工程でありながら、地味に時間を奪われる作業のひとつです。例えば「どのAPIに、どんな条件で、何を送ったら、何が返ってくるか」をひとつひとつ表にまとめていく作業は、正確さが求められる分だけ集中力も消耗します。今回はAI(Claude)を活用して、このテスト仕様書作成を自動化した取り組みをご紹介します。

全体の流れ

「仕様書 → テストコード → Excel仕様書」という流れを自動化しました。

やったこと

取り組みの流れはシンプルです。今回は比較的簡単なAPIのテストの例を取り上げます。まずAPIの仕様書(Markdownファイル)をAIに読み込ませ、「このAPIに対してPlaywrightのテストコードを書いて」と依頼します。するとAIは仕様に基づいてテストケースを洗い出し、TypeScriptの"spec.ts"ファイルを生成します。

AIが生成するのは、正常系・異常系だけではありません。

  • 必須チェック
  • 桁数チェック
  • 重複チェック
  • 認証エラー
  • 権限エラー

など、仕様書に書かれた条件をもとにバリデーションケースまで自動で網羅してくれます。

次に、生成した"spec.ts" からExcel形式(.xlsx)のテスト仕様書を自動生成するスクリプトを用意しました。たとえば以下のようなアサーションを正規表現で解析します。

expect(res.status()).toBe(201)
expect(body.message).toBe('nameは必須です')

これを解析して、「期待ステータスコード」「期待レスポンス」の列へ自動転記します。

テスト項目 期待値
ステータスコード 201
エラーメッセージ nameは必須です

さらに、テストコードから仕様書を生成する流れは以下のようになります。

つまり、「テストを書けば仕様書も完成する」という一石二鳥の仕組みです。
テストコードを出力させた後に、テスト仕様書を作成させる事も出来ますが、こちらの場合だと一部の記載情報が簡略化される傾向にありました。簡略化されても問題はないのですが、対象画面や前提条件は記載されている方が分かり易いので、今回は同時に出力されるやり方をとっています。

AIと人間の役割分担

AIが生成したテストコード/テスト仕様書には基本的に、項目の抜けや間違いがあります。細かい条件による分岐や、詳細な記載内容を読み取れないようです。前提となる共通仕様の内容を優先する傾向にあり、共通仕様+特定のパターンの動作が組み合わさった時、エラー結果や動作内容に共通仕様部分のみが記載されます。つまり、人間がレビューすることで品質を向上させる必要があります 

たとえば、「ログイン済みユーザーの情報取得APIで、アカウントが削除済みだったら404では?」という指摘は、人間側のレビューから出たものでした。AIは"401 Unauthorized"を返すテストを書いていましたが、"common.md "の仕様と照らし合わせると"404 Not Found"が正しいと判明しました。

AIは高速にコードを書いてくれますが、

  • 仕様の微妙な解釈
  • ドキュメント間の整合性
  • 本当にその仕様でよいか

といった判断は、人間のレビューが不可欠です。

また、共通仕様をまとめた" common.md "を事前に読み込ませておくことで、個別APIに書かれていないルールもテストへ反映できます(ただ前述した通り、共通仕様が優先される傾向はみられます )。

  • エラーレスポンス形式
  • 認証方式
  • HTTPステータスのルール
  • 共通ヘッダー

などを統一できるため、「common.md を参考にして」と一言添えるだけで、全APIテストに一貫性が生まれました。

まとめ

AIを活用したテスト仕様書作成の最大のメリットは、「書く作業」から「確認する作業」へある程度転換できることです。

これまでは人間がゼロから仕様書を書いていましたが、AI導入後は「AIがたたき台を生成し、人間がレビュー・修正する」という流れになりました。これにより、作業時間の大幅短縮、テストケース漏れの削減、仕様書とテストコードの同期を実現できます。ただ同時に、テスト項目の内容としては簡略化して記載されるので、必要な情報は追加したり、以前から使用している「人間が作ったテスト仕様書」に内容を転記してみる事も必要になります。

各動作の導線や前提条件、入力内容の分岐などについては、手製の仕様書の方が管理しやすいかもしれません。AIが出力したテスト内容を確認するにしても、機能仕様が分かっていなければ、内容が合っているか判断する事も出来ないので、丸投げすると言うのはやはり危険ではあります。

AIに任せきりにするのではなく、「AIが書いたものを人間がレビューする」サイクルこそが品質担保には不可欠です。AIは“代わりに考える存在”ではなく、“高速でたたき台を作ってくれる機能”として活用するのが最も効果的だと感じました。