Vol.12

テスト駆動開発とAIの組み合わせ

はじめに

コードを読まない開発でも、テストは重要です。むしろ、コードの中身を見ないからこそ、テストで品質を担保する必要があります。

テスト駆動開発(TDD)とは

【従来の開発】
実装 → テスト作成 → テスト実行

【テスト駆動開発】
テスト作成 → 実装 → テスト実行

「テストが先、実装が後」

AI開発におけるTDD

ステップ1:テスト仕様を書く

## テスト仕様:ユーザー登録API

### 正常系
- 有効なメール・パスワードで登録できる
- 登録後、user_idが返却される

### 異常系
- メール未入力でエラー
- パスワード7文字でエラー
- 登録済みメールでエラー

ステップ2:AIにテストコードを生成させる

指示:
「上記のテスト仕様に基づいて、
Jestを使ったテストコードを生成してください」

ステップ3:AIに実装させる

指示:
「生成したテストが全て通るように、
ユーザー登録APIを実装してください」

ステップ4:テスト実行で確認

$ npm test

✓ 有効なメール・パスワードで登録できる
✓ 登録後、user_idが返却される
✓ メール未入力でエラー
✓ パスワード7文字でエラー
✓ 登録済みメールでエラー

5 tests passed

テストの種類

1. 単体テスト

個々の関数やモジュールをテスト
→ 最も基本的なテスト
→ 高速に実行可能

2. 統合テスト

複数のモジュールを組み合わせてテスト
→ APIエンドポイントのテスト
→ データベースとの連携確認

3. E2Eテスト

ユーザー操作を模擬してテスト
→ ブラウザでの動作確認
→ 実際の利用シナリオを検証

AI開発でのテスト戦略

【推奨比率】
単体テスト:70%
統合テスト:20%
E2Eテスト:10%

【理由】
- 単体テストは高速で安定
- 統合テストでAPIの動作を確認
- E2Eは重要なフローのみ

テスト仕様書の書き方

## テストケース:ログイン機能

### TC-001: 正常ログイン
- 前提条件:登録済みユーザーが存在する
- 入力:正しいメール・パスワード
- 期待結果:JWTトークンが返却される

### TC-002: パスワード誤り
- 前提条件:登録済みユーザーが存在する
- 入力:正しいメール、誤ったパスワード
- 期待結果:AUTH_FAILEDエラー

### TC-003: 未登録ユーザー
- 前提条件:なし
- 入力:未登録のメールアドレス
- 期待結果:AUTH_FAILEDエラー

まとめ

AI開発でのテストは、仕様の検証という役割を持ちます。テスト仕様を明確に書き、AIにテストコードと実装を生成させることで、品質の高いシステムを構築できます。


次回:「中小企業のためのDX入門」