最終更新:2025年11月29日|テスト駆動AI活用、品質保証のベストプラクティスを反映

概要

AIはテストコード生成に非常に有効です。ただし、テスト設計(何をテストするか)は人間が行い、テストコードの実装をAIに依頼するのが効果的なアプローチです。

基本原則

テスト設計 = 人間:何をテストするか、どんなケースを検証するかは人間が決める

テスト実装 = AI:設計に基づいたテストコードの記述はAIに依頼

推奨フロー

テスト設計 テストコード生成 テスト確認 実装生成 テスト実行 結果検証

ステップ1: テスト設計(人間)

テストケースを設計する

以下の観点でテストケースを洗い出します:

  • 正常系:期待通りの入力での動作
  • 異常系:エラー入力、境界値、エッジケース
  • 境界値:上限・下限、空、null
  • 組み合わせ:複数条件の組み合わせ
例:ユーザー作成関数のテスト設計 【正常系】 - 有効なメール・パスワードでユーザー作成成功 - 作成後にユーザーIDが返る 【異常系】 - 無効なメール形式でエラー - パスワードが短すぎる(8文字未満)でエラー - 既存メールで重複エラー 【境界値】 - パスワード8文字(最小)で成功 - パスワード7文字でエラー - メール最大長(255文字)で成功

ステップ2: テストコード生成(AI)

AIへの依頼テンプレート

【対象コード】 def create_user(email: str, password: str) -> User: # 実装... 【テストフレームワーク】 pytest 【テストケース】 1. 正常系:有効なメール・パスワードでユーザー作成成功 2. 異常系:無効なメール形式でValidationError 3. 異常系:パスワード7文字でValidationError 4. 境界値:パスワード8文字(最小)で成功 5. 異常系:既存メールでDuplicateEmailError 上記のテストケースを実装してください。 モックは必要に応じて使用してください。

ステップ3: テスト確認(人間)

⚠️ 確認すべきポイント

  • 設計したテストケースが網羅されているか
  • アサーション(検証内容)が正しいか
  • モックの使い方が適切か
  • テストが独立しているか(他のテストに依存していないか)
  • テスト名がわかりやすいか

ステップ4: 実装生成(AI)

テストが整ったら、実装をAIに依頼します。

✓ 良い依頼例

以下のテストがすべてパスする実装を作成してください。 【テストコード】 def test_create_user_success(): user = create_user("test@example.com", "password123") assert user.email == "test@example.com" assert user.id is not None def test_create_user_invalid_email(): with pytest.raises(ValidationError): create_user("invalid-email", "password123") ... 【制約】 - パスワードはbcryptでハッシュ化 - バリデーションはPydanticを使用

AIにエッジケースを提案させる

AIはエッジケースの提案にも有効です。人間が見落としがちなケースを発見できます。

エッジケース提案の依頼

以下の関数について、テストすべきエッジケースを提案してください。 def calculate_discount(price: float, quantity: int, is_member: bool) -> float: # 価格と数量から割引を計算 ... 【現在のテストケース】 - 通常価格、数量1、非会員 - 会員割引適用 【追加すべきエッジケースを教えてください】

AIの提案例:

  • 価格が0の場合
  • 価格が負の場合
  • 数量が0の場合
  • 数量が非常に大きい場合(オーバーフロー)
  • 小数点以下の丸め処理

注意点

参考文献

次へ

検証と責任

効果的なプロンプト設計

← 目次へ戻る