💻 Claude Code入門 📖 約22分で読めます

Claude Codeでテストコードを書かせるテクニック

単体テストからE2Eテストまで、AIによるテスト自動生成

クロガイド

クロガイド|Claude&Claude Codeを無料で学ぼう

AI基礎からプロンプト術、Claude Codeの使い方まで。知識レッスンとクイズ式トレーニングで、AIスキルを段階的にアップ。ユーザー登録不要、すべて無料で今すぐ始められます。

はじめに ― なぜClaude Codeでテストを書くのか

テストコードは品質保証の要ですが、手動で書くのは時間がかかり、単調な作業になりがちです。Claude Codeを活用すれば、既存コードを読み取ってテストケースを自動生成し、エッジケースの見落としも減らせます。

Claude Codeによるテスト生成のメリット

  • 時間短縮: テストコードを書く時間を最大80%削減
  • 網羅性: 人間が見落としがちなエッジケースを自動提案
  • 一貫性: プロジェクト内で統一されたテストスタイルを維持
  • 学習効果: テストの書き方を実例から学べる

単体テスト(Unit Test)の生成

まず最も基本的な単体テストの生成方法を見ていきましょう。言語・フレームワーク別に効果的なプロンプトを紹介します。

JavaScript / TypeScript(Jest)

テスト対象のコード

// utils/calculator.ts
export function calculateTax(price: number, taxRate: number): number {
  if (price < 0) throw new Error('Price must be non-negative');
  if (taxRate < 0 || taxRate > 1) throw new Error('Tax rate must be between 0 and 1');
  return Math.round(price * (1 + taxRate));
}

export function formatCurrency(amount: number, locale = 'ja-JP'): string {
  return new Intl.NumberFormat(locale, {
    style: 'currency',
    currency: 'JPY'
  }).format(amount);
}

Claude Codeへの指示

> utils/calculator.ts の単体テストをJestで書いて。
> 以下を含めて:
> - 正常系テスト(代表的な入力値)
> - 境界値テスト(0、最大値付近)
> - 異常系テスト(不正な入力でエラーが出ること)
> - テストはdescribe/itで構造化して日本語で記述

Claude Codeが生成するテストコード

// utils/__tests__/calculator.test.ts
import { calculateTax, formatCurrency } from '../calculator';

describe('calculateTax', () => {
  describe('正常系', () => {
    it('税率10%で正しく計算される', () => {
      expect(calculateTax(1000, 0.1)).toBe(1100);
    });

    it('税率0%の場合は元の価格が返る', () => {
      expect(calculateTax(1000, 0)).toBe(1000);
    });

    it('小数点以下は四捨五入される', () => {
      expect(calculateTax(999, 0.08)).toBe(1079);
    });
  });

  describe('境界値', () => {
    it('価格0円の場合は0が返る', () => {
      expect(calculateTax(0, 0.1)).toBe(0);
    });

    it('税率100%の場合は価格の2倍が返る', () => {
      expect(calculateTax(500, 1)).toBe(1000);
    });
  });

  describe('異常系', () => {
    it('負の価格でエラーがスローされる', () => {
      expect(() => calculateTax(-100, 0.1)).toThrow('Price must be non-negative');
    });

    it('税率が1を超えるとエラーがスローされる', () => {
      expect(() => calculateTax(100, 1.5)).toThrow('Tax rate must be between 0 and 1');
    });

    it('負の税率でエラーがスローされる', () => {
      expect(() => calculateTax(100, -0.1)).toThrow('Tax rate must be between 0 and 1');
    });
  });
});

Python(Pytest)

Pytestでのテスト生成指示

> services/user_service.py のテストをpytestで書いて。
> - fixtureを使ってテストデータを準備
> - parametrizeで複数パターンをテスト
> - モックはunittest.mockを使用
> - 非同期関数はpytest-asyncioを使用

PHP(PHPUnit)

PHPUnitでのテスト生成指示

> app/Services/OrderService.php のテストをPHPUnitで書いて。
> - @dataProvider でテストデータを分離
> - モックオブジェクトはcreateMockを使用
> - setUp/tearDownで初期化と後処理
> - @covers アノテーションでカバレッジ明示

TDD(テスト駆動開発)ワークフロー

Claude CodeはTDDワークフローにも活用できます。先にテストを書き、そのテストを通る実装コードを生成する流れです。

Claude CodeでのTDD手順

  1. Red(失敗するテストを書く): 「この仕様のテストを先に書いて。実装はまだしないで」
  2. Green(テストを通す実装): 「このテストが通る最小限の実装を書いて」
  3. Refactor(リファクタリング): 「テストが通る状態を維持しつつ、コードをきれいにリファクタリングして」

TDDの会話例

> ショッピングカート機能をTDDで作りたい。
> まずテストを書いて。仕様:
> - 商品を追加できる
> - 同じ商品を追加すると数量が増える
> - 商品を削除できる
> - 合計金額を計算できる(税込み)
> - カートを空にできる
> 実装はまだ書かないで、テストだけ。

Claude Code:
テストを先に作成します。実装は空のクラスのみ用意します。

[cart.test.ts を作成]
[Cart クラスのスタブを作成]

現在すべてのテストは失敗します(Red状態)。
次に「テストを通す実装を書いて」と指示してください。

結合テスト・E2Eテストの生成

単体テストだけでなく、複数のコンポーネントが連携する結合テストや、ブラウザ操作を模倣するE2Eテストもclaude Codeで生成できます。

APIの結合テスト

API結合テストの指示例

> api/routes/users.ts のAPIエンドポイントの結合テストを書いて。
> - supertestを使用
> - テスト用DBはインメモリSQLiteを使用
> - 各テスト前にDBをリセット
> - CRUD全操作のテスト
> - 認証が必要なエンドポイントは認証トークン付きで
> - ステータスコードとレスポンスボディの両方を検証

E2Eテスト(Playwright / Cypress)

E2Eテストの指示例

> ログイン→商品検索→カート追加→購入完了のE2Eテストを
> Playwrightで書いて。
> - Page Object Modelパターンを使用
> - スクリーンショットを各ステップで撮影
> - タイムアウトは30秒に設定
> - CI環境でのヘッドレス実行に対応

テストカバレッジの改善

既存のテストのカバレッジを向上させたい場合、Claude Codeに現状を分析させて不足分を補うことができます。

カバレッジ改善の会話例

> npm test -- --coverage の結果、
> src/services/payment.ts のカバレッジが45%しかない。
> カバーされていない行・分岐を特定して、
> 追加テストを書いて。カバレッジ80%以上を目標にして。

Claude Code:
payment.ts を分析します...

カバーされていない箇所:
1. L23-30: タイムアウト時のリトライ処理
2. L45-52: 部分返金の計算ロジック
3. L67-75: 通貨変換のエッジケース

これらをカバーするテストを追加します...
[テスト追加完了]

追加後の推定カバレッジ: 87%

モック・スタブの効果的な生成

外部APIやデータベースに依存するコードをテストする場合、モックやスタブが必要です。Claude Codeに適切なモックを生成させるコツを紹介します。

依存対象モック手法指示のコツ
外部APIHTTPリクエストのモック「nockでAPIレスポンスをモックして」
データベースインメモリDB / リポジトリモック「テスト用のインメモリDBで置き換えて」
ファイルシステム仮想FS / tmpdir「memfsを使ってファイル操作をモックして」
日時Date / timerのモック「jest.useFakeTimersで時刻を固定して」
環境変数process.envのモック「テスト前後でenv変数を復元して」

注意: モックを多用しすぎると、テストが実装に強く依存し、リファクタリング時にテストが壊れやすくなります。Claude Codeに「モックは最小限にして、できるだけ実際の依存関係を使って」と指示するのも有効です。

まとめ

  • Claude Codeへの指示にはテストフレームワーク名・パターン・カバー範囲を明示する
  • 正常系・境界値・異常系の3パターンを必ず含めるよう指示する
  • TDDワークフローでは「テストだけ先に書いて」と明確に伝える
  • カバレッジ改善は「現在の数値」と「目標値」を伝えると効果的
  • モックは依存対象と使用ライブラリを具体的に指定する
  • E2Eテストではページオブジェクトモデルなどのパターン採用を指示する

Claude Code入門の他のガイド

Claude Code導入ガイド ― Windows/Mac完全対応
Claude Codeのインストールから初回起動まで、OS別に完全対応 ・ 約30分
Claude Codeの主要スラッシュコマンドと活用法
16個のスラッシュコマンドを完全網羅。使い方・実行例・組み合わせテクニックまで ・ 約15分
Claude Codeの権限設定(パーミッション)完全ガイド
セキュリティと利便性を両立する権限管理の全知識 ・ 約18分
Claude Codeのモデル切り替え活用術 ― Opus・Sonnet・Haikuの使い分け
タスクに応じた最適なモデル選択でコストと品質を両立する方法 ・ 約15分
Claude Codeのセッション管理術 ― 効率的な作業の進め方
セッションの開始・継続・再開を使いこなして、長期プロジェクトを効率的に進める ・ 約12分
Claude Codeのコマンドラインオプション完全リファレンス
全CLIオプションを網羅。起動時に使える引数を徹底解説 ・ 約20分
Claude Codeのプロジェクト設定(.claude/)完全ガイド
.claudeディレクトリとCLAUDE.mdを使いこなしてチーム開発を効率化 ・ 約15分
Claude Codeの出力フォーマットとパイプ活用術
--printモードとパイプを使った自動化・スクリプト連携の実践テクニック ・ 約15分
Claude Codeのキーボードショートカットと操作効率化
知っておくべきショートカットキーと入力テクニックで作業速度を2倍に ・ 約12分
Claude Codeのアップデートとバージョン管理
最新版への更新方法からダウングレード、トラブル対処まで ・ 約10分
Claude Codeの/doctorコマンドとトラブル診断
問題発生時の診断フローとよくあるエラーの解決方法 ・ 約12分
CLAUDE.mdの書き方完全ガイド ― プロジェクト指示書のベストプラクティス
プロジェクトの文脈をAIに正確に伝える設定ファイルの書き方 ・ 約20分
Claude Codeのメモリ機能 ― 会話をまたいだ記憶の活用法
プロジェクト固有の知識を永続化して効率を最大化する ・ 約18分
.claude/settings.jsonの設定項目一覧と活用法
Claude Codeの動作を細かく制御する設定ファイルの全貌 ・ 約15分
プロジェクト別CLAUDE.mdテンプレート集 ― コピペで使える10パターン
React・Next.js・Python・PHP・WordPress等、主要技術スタック別テンプレート ・ 約25分
チーム開発でのCLAUDE.md運用術
チーム全員がAIを最大限活用するための共有設定と運用ルール ・ 約20分
Claude CodeでGitを使いこなす ― 基本操作編
自然な日本語でGitを操作する方法を基本から解説 ・ 約20分
Claude Codeでコミットメッセージを自動生成する
変更内容を分析して最適なコミットメッセージを提案してくれるAI活用術 ・ 約18分
Claude CodeでPR(プルリクエスト)を作成・レビューする
AI支援によるPR作成からコードレビューまでの実践的ワークフロー ・ 約20分
Claude Codeでブランチ戦略を実践する
Git Flow・GitHub Flow・トランクベースを理解し、AIで効率的にブランチを管理 ・ 約20分
Claude Codeでコンフリクト解決をAIに任せる
マージの衝突が起きても慌てない。AIによるコンフリクト解決の実践ガイド ・ 約18分
Claude Codeでgit logを分析して変更履歴を理解する
コミット履歴からバグの原因特定やプロジェクトの変遷を把握する ・ 約22分
Claude Codeでリリースノートを自動生成する
コミット履歴からユーザー向け・開発者向けリリースノートを作成する ・ 約20分
Claude Codeのコンテキスト節約術 ― トークンを無駄にしない10の方法
コンテキストウィンドウを理解し、トークン消費を最適化するテクニック集 ・ 約18分
/compactコマンド徹底解説 ― 会話を圧縮して作業を続ける
/compactの仕組み・使いどころ・カスタム指示を完全網羅 ・ 約15分
大規模プロジェクトでのClaude Code活用戦略
大規模コードベースでの効率的なAI活用パターンとベストプラクティス ・ 約20分
.gitignoreとClaude Code ― 読み込みファイルの最適制御
ファイル探索の仕組みを理解し、ノイズを減らして精度を上げる ・ 約14分
効率的なタスク分割術 ― 1セッションの最適な使い方
タスク境界の見極めとセッション計画で生産性を最大化 ・ 約16分
Claude CodeのSkills機能入門 ― カスタムコマンドで作業を効率化
組み込みスキルからカスタムワークフローまで完全ガイド ・ 約15分
Claude Codeのフック(Hooks)でワークフローを自動化する
PreToolUse・PostToolUseフックで品質と安全性を自動で担保 ・ 約18分
カスタムスラッシュコマンドの作り方 ― 自分だけのワークフローを構築
.claude/commands/ディレクトリで独自コマンドを定義する方法 ・ 約16分
MCPサーバーでClaude Codeを拡張する ― 外部ツール連携ガイド
Model Context Protocolで無限の拡張性を手に入れる ・ 約18分
Claude CodeとVS Code・JetBrainsの連携活用法
ターミナルAIとIDEを組み合わせた最強の開発環境構築 ・ 約15分
Claude Codeでウェブサイトを0から作る実践ガイド
プロジェクト作成からデプロイまでの完全チュートリアル ・ 約20分
Claude Codeでリファクタリングを効率化する
安全なコード改善をAIと一緒に進める方法 ・ 約22分
Claude Codeでドキュメントを自動生成する
README・API文書・コードコメントを効率的に作成 ・ 約20分
Claude Codeでバグを素早く見つけて修正するテクニック
エラー解析からホットフィックスまでのデバッグワークフロー ・ 約20分
Claude CodeでREST APIを設計・実装する
要件定義からテストまでAPI開発の全工程をAIと進める ・ 約25分
Claude Codeでデータベース設計を相談・実装する
ER図からマイグレーションまでDB設計をAIに相談 ・ 約22分
Claude Codeで既存プロジェクトを分析・理解する
新しいコードベースのオンボーディングをAIで加速 ・ 約22分

Claude Code入門のレッスンも読む

読んだら、次はクイズで確認!

トレーニングで学んだ知識を定着させましょう。

Claude Code入門のトレーニングへ