0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

テストコードで性格が出る? ChatGPT・Claude・Gemini三者三様(3部作の1作目)

0
Last updated at Posted at 2026-08-16

先日、こんな記事を見つけた

ふむふむ
色々考えました・・・・

僕の結論・・・

複数のAIにきいたらいいんじゃね??
という結論です

じゃあ、どうしようか?

1:適当なプログラムつくって
2:複数のAIにテストさせて
3:それぞれ比較

したらどう??(強引だなあ・・・・)

てなわけで、ChatGPT、Claude、Geminiに同じプログラムをテストしました

https://github.com/mitsuosa0903/Qiita-github
こちらに今回のテストのためのプログラムのせました

で、テスト方法はこっち
(少し長いですが、再現性を持たせるため、ベタッとやります。見にくいのはすんません)

<引用ここから>
以下の枠内のテキストをそのままコピーして、別AIに送信します:
以下の【仕様書】に基づき、予約管理システムの単体テスト (TypeScript + Vitest)をゼロから作成してください。
【仕様書】 - 予約データ: { id, userName, startTime (Date), endTime (Date), numberOfPeople, status ('CONFIRMED'| 'CANCELLED') }

  • 半開区間 [startTime, endTime) による重複判定(startA < endB かつ startB < endA で重複)
    • 定員判定: 指定時間帯の最大同時滞在人数 > maxCapacity でエラー
    • 要件1: 予約登録 (CONFIRMED)
    • 要件2: 予約一覧取得 (フィルタ・ソート)
    • 要件3: 予約キャンセル (CANCELLED)
    • 要件4: 同一時間帯の重複予約禁止 (OverlappingReservationError)
    • 要件5: 定員超過禁止 (ExceedsCapacityError)
    • 要件6: 過去日時への予約禁止 (PastReservationError) ※開始時刻 < 現在時刻はエラー
    • 要件7: 開始時刻 == 終了時刻 は予約不可 (InvalidTimeRangeError)
    • 要件8: 終了時刻 < 開始時刻 は予約不可 (InvalidTimeRangeError)
    • 要件9: 存在しない予約のキャンセルはエラー (ReservationNotFoundError)
    • 要件10: 二重キャンセル不可 (ReservationAlreadyCancelledError) 【出力形式】 tests/external_ai.test.ts として保存できる Vitest のテストコード(describe, it, expect)のみを出力してください

<引用ここまで>

で、ChatGPT、Claude、Geminiにテストのファイルを書いてもらいました。

<重要 ここから>
なお、3つのAIには実装コードを見せず、同じ仕様書だけを渡しています。各AIが生成したテストコードや、他のAIのテスト結果も共有していません。
<ここまで>

つまり

                   仕様書
                     │
                     ▼
                ┌──────────┐
                │ 1つの実装 │
                └──────────┘
                   │ │ │
      ┌────────────┘ │ └────────────┐
      ▼              ▼              ▼
   ChatGPT         Claude         Gemini
   独立テスト       独立テスト       独立テスト
      │              │              │
      ▼              ▼              ▼
   29 tests       41 tests       28 tests
      │              │              │
      └──────────────┼──────────────┘
                     ▼
                98 tests
                     ▼
                 98 PASS

という感じです

ちなみに、今回の予約管理システムの実装と、生成されたテストコードの配置・実行にはAntigravity CLIを使いました。

【再現手順】別AIにテストを作らせて検証するステップ

「実装したAIとは別のAIにテストを作らせる」手順は非常にシンプルです。

Step 1: 仕様書を用意する

実装AIに作成させた仕様書(SPECIFICATION.md)、または以下の要件プロンプトを用意します。

Step 2: 外部AIにテストコードを出力させる

ChatGPT、Claude、GeminiなどのWeb画面またはCLIに、以下のプロンプトをそのまま貼り付けます。

【プロンプト】
以下の【仕様書】に基づき、予約管理システムの単体テスト(TypeScript + Vitest)をゼロから作成してください。
既存の実装コードは見ずに、仕様書のみをOracle(正しさの基準)として扱ってください。

【仕様書】

  • 予約データ: { id, userName, startTime (Date), endTime (Date), numberOfPeople, status ('CONFIRMED'|'CANCELLED') }
  • 半開区間 [startTime, endTime) による重複判定(startA < endB かつ startB < endA で重複)
  • 定員判定: 指定時間帯の最大同時滞在人数 > maxCapacity でエラー
  • 要件1〜10(登録、一覧、キャンセル、重複禁止、定員超過禁止、過去日時禁止、開始=終了不可、終了<開始不可、未存在IDキャンセル不可、二重キャンセル不可)

【出力形式】
tests/external_ai.test.ts としてそのまま保存できる Vitest コード(describe, it, expect)のみを出力してください。
境界値(隣接時間、現在時刻ジャスト等)や意図的な破壊テストを含めてください。

Step 3: ファイルを配置してテストを実行する

出力されたコードを保存し、ターミナルで実行します。

1. 出力されたテストコードを配置

保存先: tests/external_ai.test.ts

2. テストを実行

npx vitest run tests/external_ai.test.ts

<プロンプトはここまで>

続きは次回
(少しねたバレしているな・・・)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?