behavior-driven-testing について
behavior-driven-testing は、ユーザーに見える振る舞いを軸に、コード変更のテストを計画・検証するためのスキルです。段階的なワークフローと分岐マトリクスで、境界値やエラー、実環境のシナリオを網羅します。
主な機能
- 01分析・設計・実行の段階でテストを整理
- 02Gherkinで期待する振る舞いを定義
- 03状態遷移と分岐をマッピング
- 04同値分割と境界値のテストを設計
- 05ユニット・統合・E2Eテストを組み合わせ
- 06カバレッジとリリース条件を確認
活用シーン
- 01新しい要件のテスト可能な振る舞いを定義
- 02コード変更の影響を受ける分岐を確認
- 03空値・境界値・エラー応答のテストを追加
- 04リリース前にテストとカバレッジを検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ agent-next/ behavior-driven-testing --skill behavior-driven-testingインストール後、Claude Code で/behavior-driven-testingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdLICENSEreferences/analysis-phase.mddesign-phase.mdbranch-matrices.mdexecution-phase.mdtesting-principles.mdtest-templates.md詳細
ビヘイビア駆動テスト
コード構造ではなく、ユーザーの振る舞いを起点にします。ユーザーが到達できるすべての経路をテストし、分岐を漏れなく網羅し、エッジケースを想定だけで済ませないようにします。
基本原則
- 実装より振る舞い - コードの動作方法ではなく、ユーザーが目にするものをテストします
- 徹底的な網羅 - すべての分岐、すべての条件、すべてのエッジケースを対象にします
- コンテキストの把握 - すべてのテストで前提条件を明示します
- 実環境での検証 - モックはツールであり、目的地ではありません
ワークフローの概要
テストは3つのフェーズで進めます。順番に実施してください。
Analysis → Design → Execution → Verify Coverage → Ship (or loop back)
分析フェーズ:
- 要件定義 - Gherkin 仕様で「正しい」振る舞いを定義します
- コード変更の追跡 - 何が変更されたかを正確に把握します
- 状態マシンの分析 - すべての UI 状態と遷移をマッピングします
- 分岐のマッピング - 分岐マトリクスを作成します(中核となる成果物)
設計フェーズ: 5. テストケースの設計 - 同値分割法と境界値分析を適用します 6. 影響分析 - 新しいコードが既存の振る舞いを壊さないことを確認します 7. テストの優先順位付け - P0(すべてのコミット)→ P3(定期的)
実行フェーズ: 8. テストデータの準備 - フィクスチャ、モック、ファクトリーを作成します 9. テストの実装 - ユニットテスト、統合テスト、E2E テストを記述します 10. テストの実行 - フェーズごとにテストを実行します(ローカル → CI → ステージング) 11. カバレッジの検証 - 分岐マトリクスが完了していることを確認します
クイックリファレンス:必ずテストする分岐
| カテゴリー | テストケース | 優先度 |
|---|---|---|
| 空の値 | null、undefined、""、" "(空白文字)、[]、{} | P0 |
| 境界値 | min-1、min、min+1、max-1、max、max+1 | P1 |
| 認証状態 | ログイン済み、ログアウト済み、読み込み中、セッション期限切れ | P0 |
| API レスポンス | 200+データ、200+空、400、401、403、404、500、タイムアウト、オフライン | P0 |
| ユーザーの予測不能な操作 | ダブルクリック、素早い画面遷移、操作中の更新、戻るボタン | P1 |
空白文字の落とし穴(最もよくあるバグ)
// ❌ WRONG - whitespace " " is truthy!
if (!text) throw new Error('Required');
// ✅ CORRECT
if (!text?.trim()) throw new Error('Required');
よくある間違い
| 間違い | 問題点 | 対策 |
|---|---|---|
| 正常系のみをテストする | エラー処理の経路はコードの50%を占めます | すべての分岐をテストします |
| 空の値のテストを省略する | 本番環境で最もよくあるバグです | null、undefined、""、空白文字を個別にテストします |
| すべてをモックする | モックは実際の問題を隠します | 統合テストとE2Eテストを追加します |
| 「手動でテスト済み」 | 再現できず、信頼性もありません | 自動化します |
| 読み込み状態を無視する | ユーザーは読み込み中にも操作します | 読み込み中の振る舞いをテストします |
| ダブルクリックのテストを省略する | ユーザーは何でもダブルクリックします | 素早い操作をテストします |
分岐マトリクスのテンプレート
コードを変更するたびに、分岐マトリクスを作成します。
| ID | Condition | True Behavior | False Behavior | Priority | Status |
|----|-----------|---------------|----------------|:--------:|:------:|
| B01 | user.isPremium | Skip credit check | Check credits | P0 | ⬜ |
| B02 | credits >= required | Proceed | Show error | P0 | ⬜ |
| B03 | credits == required | Boundary: Proceed | - | P1 | ⬜ |
Status: ⬜ Pending | ✅ Passed | ❌ Failed
詳細なリファレンス
詳細なガイダンスが必要な場合にのみ、次のファイルを読み込んでください。
-
分析の詳細:references/analysis-phase.mdを参照
- Gherkin 仕様の形式
- 状態マシン図
- 分岐マッピングの完全な手法
-
テストテンプレート:references/test-templates.mdを参照
- ユニットテストの構成(Vitest/Jest)
- 統合テストのパターン
- E2E テストの例(Playwright)
-
分岐マトリクス:references/branch-matrices.mdを参照
- エントリーポイントの分岐
- 認証の分岐
- API レスポンスの分岐
- 入力検証の分岐
-
テストの原則:references/testing-principles.mdを参照
- モックテストと実環境テスト
- 手元にないテスト条件の作成
- 段階的なテスト戦略(1~4日目)
リリース前チェックリスト
リリース前に、次の項目を確認してください。
## Mock Tests (CI)
- [ ] All unit tests pass
- [ ] All integration tests pass
- [ ] Coverage thresholds met
## Real Tests (Before release)
- [ ] E2E tests pass on staging
- [ ] Manual smoke test on staging
- [ ] Core paths verified in real environment
## Branch Matrix
- [ ] All P0 branches tested
- [ ] All P1 branches tested
- [ ] No untested edge cases
## Production (After deploy)
- [ ] Smoke test passes
- [ ] Error rate monitoring normal
関連スキル
- test-driven-development - 先にテストを書き、その後に実装します
- systematic-debugging - 問題を体系的にデバッグします