AI開発

バイブコーディングで作ったコードは誰がテストするのか — AI生成コードの品質保証を考える

アツメル株式会社|6分で読めます
バイブコーディングとテスト戦略のイメージ

コードが速く書ける時代に、テストだけが残された

バイブコーディングの普及で、エンジニアがコードを書く速度は確かに上がった。実装そのものに費やす時間は短くなり、プロトタイプを数時間で作れるようになった。

しかし、あるジレンマが生じている。

コードは速く生成できるのに、そのコードが「正しく動くか」を確認する作業は、依然として人間に依存している。

いや、正確に言えば「依存しがち」だ。AIに任せようにも、「何をもって正しいか」の基準が曖昧なままでは、テストを書くことも自動化することもできない。


AIが書いたコードのテスト、誰が書くか問題

バイブコーディングで実装を進めると、多くの場合こんな状況になる。

  1. AIがコードを生成する
  2. 動かしてみると「なんとなく動く」
  3. テストはあとで書こう、という判断になる
  4. 機能が増えると「あとで書く」コストが増大する
  5. 結果としてテストなしで本番に出る

これはAIのせいではない。テストを書くための「仕様」が存在しないことが問題なのだ。

TDD(テスト駆動開発)の文脈では、テストは実装の検証ではなく「仕様の表現」だとされる。「この関数は、この入力に対してこの出力を返す」という合意があってはじめて、テストは書ける。

バイブコーディングは実装を速くするが、その前工程にある「何を作るか」の合意を省略しがちだ。結果として、テストを書く根拠が消える。


AI生成コードのテストにある3つの課題

1. 意図が読めない

人間が書いたコードには、変数名やコメントに意図が滲む。しかしAIが生成したコードは、見た目は整っていても、なぜその実装になったかが不明なことが多い。テストを書こうとして「これ、何をチェックすればいいんだっけ」となる。

2. エッジケースが隠れる

AIはパターンから最適解を生成する。だから「よくあるケース」には強い。しかし、業務固有のエッジケース(「この取引だけ手数料が異なる」「このユーザーだけ権限が違う」)は、プロンプトに明示しなければ見落とされる。

テストでこれを後から発見するのは、デバッグの仕事になってしまう。

3. テスト自体もAI任せにするとループする

「テストもAIに書かせればいい」という発想は合理的だ。しかし、仕様が不明確なままAIにテストを書かせると、実装に合わせたテストが生成される。実装が間違っていれば、テストも間違って通る。これは「グリーンになるだけのテスト」であり、品質保証にならない。


仕様が先にあれば、AIはテストも正確に書ける

ここで仕様駆動開発(SDD)が役に立つ。

仕様書が先にあれば、「何をもって正しいか」が決まっている。AIへの指示はこうなる。

以下の仕様に基づいてテストケースを生成してください:
- 入力: ユーザーID、金額
- 正常系: 金額が0以上の場合、トランザクションを作成して成功を返す
- 異常系1: 金額がマイナスの場合、エラーコードE001を返す
- 異常系2: ユーザーが存在しない場合、エラーコードE404を返す
- 制約: 1日あたりの上限は100万円。超過した場合はE002を返す

このように仕様が構造化されていれば、AIはそれに忠実なテストを書ける。実装よりも先にテストが書け、テストが通る実装をAIに書かせる流れになる。これはTDDの発想と同じだ。


バイブコーディング × TDD — 速さと品質を両立する現実解

「仕様書を書く時間がない」という声をよく聞く。しかし、仕様書はドキュメントである必要はない。

会話メモでもよい。箇条書きでもよい。

重要なのは「何を作るか」の合意が、チームとAIの間で共有されていることだ。

実践的なアプローチとして:

  1. 着手前に5分だけ仕様を書く: 正常系・異常系・制約をざっと箇条書きにする
  2. その仕様からAIにテストを生成させる: playwrightやjestのテストコードを仕様から直接出力させる
  3. テストが通る実装をAIに書かせる: バイブコーディングはここで使う
  4. 仕様に変更があればテストから更新する: 実装よりテストを先に変える

このサイクルを回せば、AIの高速実装と品質保証を両立できる。


SIer現場での現実

大規模なSIer案件では、テストは工程として独立していることが多い。結合テスト、システムテスト、受入テストがフェーズで区切られ、それぞれに工数がある。

AI導入で実装工程を短縮しても、テスト工程の工数はほぼ変わらないという現象が起きている。なぜなら、テスト設計の根拠になる仕様が曖昧なままだからだ。

仕様が曖昧 → テスト設計に時間がかかる → AIで実装を速くした恩恵が消える

これを解決するのが「上流からの仕様構造化」だ。要件定義の段階でAIが読める形式の仕様書を作れば、テスト設計も自動化できる。AIを実装フェーズにだけ使うのではなく、上流から連携させる発想が必要になる。


まとめ

バイブコーディングの品質問題は、AIの能力の問題ではない。「何を作るか」の合意が先行しているかどうかの問題だ。

仕様が先にあれば、AIはテストも実装も正確に書ける。仕様がなければ、速く書けるだけで、正しく書けているかどうかは誰にも分からない。

コードを速く書くためにAIを使うなら、AIがテストを書けるような仕様を先に作る習慣を持つこと。それが、バイブコーディング時代の品質保証の出発点だ。


AI開発の品質保証や仕様書の構造化に関心がある方は、ぜひお問い合わせからご相談ください。


関連記事

#バイブコーディング#テスト#品質保証#仕様駆動開発#AI開発

AI仕様書エディタKakusillに興味がありますか?

無料トライアルで、AIと開発する体験をすぐにお試しいただけます。

お問い合わせ