テストデータをAIに作らせる場合は、実在する顧客情報を少し書き換えて渡すより、必要な条件から架空のデータを設計します。正常な入力だけでなく、欠損、境界値、重複、型の誤りを区別すると、確かめたい動作が見えます。
AIが作った値をそのまま「正解」にしないことも大切です。何を検証するデータかと、期待する判定は人が決めます。
項目と入力条件を先に決める
例として、架空の在庫受付の入力を考えます。実際の顧客名や商品名は使いません。
| 項目 | 入力条件 |
|---|---|
| record_id | 空でない文字列。同じ入力内では重複不可 |
| item_code | 固定のテスト用コードから選ぶ |
| quantity | 0以上の整数 |
| note | 任意。空欄や改行を含む場合がある |
この条件なら、quantityが0の入力は正常です。「0は空と同じ」と扱う処理を見つけるため、独立したケースとして用意します。
AIにはケースの目的も出してもらう
次の条件で、架空のテストデータ案を作ってください。
対象:
在庫受付の入力検査。外部送信や本番登録はしない。
条件:
- 実在の氏名、住所、電話、メール、会社名を使わない。
- IDはTEST-で始める。商品コードはDEMO-A / DEMO-Bのみ。
- 通常、数量0、負数、文字列の数量、空ID、重複IDを含める。
- ケースごとに、目的、入力、期待する判定、理由を出す。
- 未指定の業務ルールを作らない。
- 期待する判定は人が確認するための案とする。
入力仕様:
{項目・型・必須条件・重複を調べる範囲}
条件と例を明示する方法は、OpenAIのプロンプト設計資料を参考にしています。実データを貼らなくても、検証する条件を伝えられます。
正常データと異常データを区別する
次は人が用意した記入例です。AIを実行して作ったデータではありません。
[
{"case": "zero", "input": {"record_id": "TEST-01", "item_code": "DEMO-A", "quantity": 0, "note": ""}, "expected": "accept"},
{"case": "negative", "input": {"record_id": "TEST-02", "item_code": "DEMO-B", "quantity": -1, "note": ""}, "expected": "reject"},
{"case": "string_quantity", "input": {"record_id": "TEST-03", "item_code": "DEMO-A", "quantity": "2", "note": ""}, "expected": "reject"}
]
型が違うことを確認するデータを、一括で数値へ変換しないようにします。CSVへ書き出すと、読込方法によって数値と文字列の違いが失われる場合があります。型の検査にはJSONなど、意図を保てる形式を選びます。
重複の検査は1行だけでは成立しません。同じrecord_idを2行に入れた一組のケースとして作り、どの行をエラーにするかも仕様に合わせて決めます。
データ案そのものを点検する
全ケースで項目名がそろっているか、正常例に禁止した値が混ざっていないか、異常例が意図した理由で失敗するかを確認します。負数の検査をしたい行でIDも空だと、どちらが原因で落ちたのか分かりにくくなります。
文字の長さ、改行、引用符、カンマ、全角文字なども、実際の入力経路に合わせて追加します。件数を増やすだけでなく、どの条件が未確認かを一覧に残します。
実行結果を期待値と照らす
データを投入した後は、実際の判定と期待値を比較します。不一致があれば、実装の誤りか、期待値の誤りか、仕様が未決定なのかを分けます。OpenAIの評価の指針にある、評価データと基準を継続的に見直す考え方も使えます。
テストファイルには架空データと分かる名称を付け、本番へ混ざらない保存先を選びます。処理の確認はPythonの基礎、欠損や取得漏れの確認はデータ欠損を調べる手順も参考になります。
