AIを使用したテストデータ作成について意見が欲しいです。
単体テストの質の向上、生産性を上げるために生清AIを使用したいと考えていますが、具体的にどのような手順で行うのかイメージができていません。
AIに仕様書、詳細設計(データベースの情報)を参照させ、テスト時に使用するテーブルデータ、必要なテストケース生成などを行っている方(テストコードよりもテストデータ、ケース)、具体的にどのような方法を使っているか教えていただきたいです。
単体テストの質の向上、生産性を上げるために生清AIを使用したいと考えていますが、具体的にどのような手順で行うのかイメージができていません。
AIに仕様書、詳細設計(データベースの情報)を参照させ、テスト時に使用するテーブルデータ、必要なテストケース生成などを行っている方(テストコードよりもテストデータ、ケース)、具体的にどのような方法を使っているか教えていただきたいです。
テーブルデータを生成させたい場合は仕様書よりもDDLを提示しています。
以下はプロンプトの例です。
以下のテーブル定義に対して、単体テスト用のテストデータをCSV形式で出力してください。
1行目はヘッダ行とし、UTF-8想定です。
テストケース:
テーブル定義:
CREATE TABLE ~
実際にAIエージェント(Claude Code)を使って開発していますが、テストデータ・テストケースの生成には2つのアプローチが効果的でした。
① TDD(テスト駆)でAIに書かせる
CLAUDE.mdやカーソルルール等に「テストを先に書く」ルールを設定しておくと、AIがユースケースから逆算してテストケースとテストデータを自動生成します。自分の場合、10個のユーザーストーリーから正常系・異常系・境界値を含めて約500件のテストが生成されました。
ポイントは、仕様書やDDLをコンテキストとして渡すだけでなく、「テストを先に書いてから実装」というワークフロー自体をルール化することです。AIは実装コードがない状態の方が、仕様に忠実なテストケースを生成してくれます。
② E2Eテストの自動生成
単体テストに加えて、PlaywrightのTest Agentsを使うと、画面操作ベースの結合テストも自動生成できます。テストデータのセットアップも含めてAIが設計してくれるので、手動でCSVを作る工程がかなり減ります。
手前味噌ですが下記がイメージです
Claude CodeにTDDを強制する — CLAUDE.mdでテストファーストをAIに叩き込む方法 (https://zenn.dev/kenimo49/articles/claude-code-tdd-force-test-first)
はじめまして。非エンジニアですが、Claude(Anthropic)と組んで毎日この手の作業をやっています。具体的な手順を書きます。
DDL(CREATE TABLE文)をそのままClaudeに貼って、こう聞きます。
以下のテーブル定義を読んで、各カラムのデータ型・制約・外部キー関係を整理してください。
[ここにDDLを貼る]
これで「どのテーブルが何と繋がってるか」をAIが把握します。
ここが肝です。「テストデータ作って」だけだと汎用的すぎるデータが出ます。 テスト観点を指定します。
上記テーブルに対して、以下の観点でテストデータをINSERT文で生成してください。
- 正常系: 典型的なデータ 5件
- 境界値: 文字列最大長、数値の上限下限、NULL許容カラムのNULL
- 異常系の手前: 外部キー参照先が存在するギリギリのケース
- 日付系: 過去日、未来日、当日、うるう年
出力形式: そのまま実行できるINSERT文。コメントで各行のテスト意図を書いて。
「コメントでテスト意図を書いて」が重要です。なぜそのデータなのかが残るので、後から見て意味がわかります。
仕様書に「ステータスが"承認済"の注文のみ出荷可能」みたいな業務ルールがあれば、それも追加で食わせます。
追加の業務ルール:
- ステータスが"approved"の注文のみ出荷処理に進む
- 金額が10万円以上は上長承認が必要
- 同一ユーザーの注文は1日5件まで
上記ルールの境界を突くテストデータを追加してください。
特に「ルール違反だがDBの制約には引っかからないデータ」を重点的に。
この「DBの制約には引っかからないがビジネスルール違反」のデータが一番価値が高いです。 単体テストで本当に拾いたいのはここなので。
dosanko_tousan — 非エンジニア・主夫。Claude(Anthropic)と組んで3,540時間。AIの使い方を毎日研究しています。
質問あればお気軽にどうぞ。