はじめに
Claude Code(あるいは他のAIエージェント)にテストコードを書かせると、なぜか「動作確認にしかなっていない」「網羅性がない」「境界値を踏まない」しょっぱいテストばかり返ってくることがあります。
最近Qiitaでも話題になっていた「AIがしょっぱいテストケースを作る理由」を、自分の運用経験を踏まえて深掘りしてみます。
結論を先に書くと、しょっぱいテストの原因は、AIではなく『AIに渡している文脈』にあるということでした。
しょっぱいテストの典型パターン3つ
パターン1: ハッピーパスしか書かない
// AI生成: 「ユーザー作成のテストを書いて」
test('createUser creates a user', async () => {
const result = await createUser({ name: 'Alice', email: 'alice@example.com' });
expect(result.success).toBe(true);
});
正常系1ケースだけで終わる。重複メール・空文字・最大長超過などの境界は触れない。
パターン2: 振る舞いではなく実装をテスト
test('updates state correctly', () => {
const spy = jest.spyOn(store, 'setState');
doSomething();
expect(spy).toHaveBeenCalledTimes(1);
});
「リファクタしたら壊れるテスト」を量産する。本来は「結果として何が起きるか」をテストすべき。
パターン3: モックでガチガチ
外部依存をモックしすぎて、本物の挙動と乖離。「テストは通るが本番で落ちる」典型。
なぜしょっぱくなるのか — 文脈不足が原因
AIに「テストを書いて」とだけ伝えると、AIは「とりあえず動かす最小ケース」を出します。それは合理的な振る舞いです。
問題は 「品質基準を渡していない」 こと。
エンジニアは無意識のうちに、以下の文脈を持ってテストを書いています:
- このコードはどのレイヤーか(ドメイン / インフラ / UI)
- ビジネス的にクリティカルなパスはどこか
- 過去にどんなバグがあったか
- どこまでがチームの合意基準か
これらをAIは知りません。だから「中庸の最小限テスト」しか書けません。
改善パターン: テスト用「文脈ファイル」を渡す
実務で効いたのは、テスト生成時にAIに渡す 専用の指示ファイル を用意することでした。
.claude/skills/write-test/skill.md の例
# テスト作成スキル
## 必須カバレッジ
- 正常系: 最低2パターン(典型ケース・境界ケース)
- 異常系: 入力バリデーション失敗・外部APIエラー・タイムアウト
- 境界値: 空文字・最大長・null・undefined・型違い
## モックポリシー
- 外部API(fetch等)はモックOK
- 自プロジェクト内のロジック・ヘルパーはモック禁止(実物を使う)
- DBアクセスはテスト用DBを使う(モック禁止)
## 命名規則
- describe: 関数名
- test: 「[入力条件] → [期待挙動]」形式
## 過去の事故ベース
- メールアドレスは必ず大文字小文字を統一する(過去事故)
- 日付比較はタイムゾーンを明示する(過去事故)
このファイルを CLAUDE.md から参照させると、「テスト書いて」と一言指示するだけで、しょっぱくないテストが返ってくる確率が一気に上がります。
さらに踏み込んだ運用: テスト結果を学習させる
書かせたテストを実行した後の 失敗パターン をAIに記録させる仕組みを作ると、しょっぱさが継続的に減ります。
# テスト失敗時にAIに記録させる
npm test 2>&1 | claude code --skill record-test-failure
失敗の傾向(例: 「境界値テストを忘れがち」)を skill.md の「過去の事故ベース」セクションに自動追記させる。
これを1〜2週間回すと、AIが自分のチームのバグ傾向に「適応」していきます。
まとめ
AIがしょっぱいテストを生成する理由は、AIの能力不足ではなく、
- 品質基準が渡されていない(カバレッジ・モックポリシー)
- チーム固有の文脈が共有されていない(過去事故・命名規則)
- 継続的なフィードバックループがない(失敗を学習に変換していない)
の3点に集約されます。
逆に言えば、これらを CLAUDE.md や Skills に仕込んでおけば、AIは 「あなたのチーム専用のテスト書き」 に育てられます。
未経験者向けの講座を運営しています
未経験から Next.js + Supabase + Claude Code で Webアプリを作って公開するまで を、全20セッションで体系化した教材です。Claude Code を学習パートナーにする CLAUDE.md / Skills 設計までセットで含みます。
- 無料体験版(git clone してすぐ動く・最初の数セッション分・⭐ Star もよろしくお願いします)→ https://github.com/ayies128/next-ai-camp-trial
- 教材完全版+月5,500円〜のCTOメンタリング(全20セッション+チャット質問し放題)→ https://menta.work/plan/20251?ref=qiita
- YouTube『AIエンジニア情報局』(AI×開発ニュースを1本5分でキャッチアップできる別運営チャンネル・無料)→ https://www.youtube.com/channel/UC1rXVD9WYsQPQEWZyd-A1KA/?ref=qiita
※ Qiita 読者の方には易しすぎる内容なので、初心者の知り合いへの紹介や社内研修の参考としてどうぞ。