アジャイル開発においては、ユーザーストーリーをどのように「テスト可能な形」に落とし込むかが非常に重要です。
今回のテーマは、**Acceptance Test-Driven Development(ATDD:受け入れテスト駆動開発)**の「適用方法」です。
前回学んだ「TDD(テスト駆動開発)」や「BDD(振る舞い駆動開発)」の延長線上にあり、特にATDDはアジャイル環境で頻繁に使われる手法です。
🔍 ATDDとは?
**Acceptance Test-Driven Development(受け入れテスト駆動開発)**とは、
「開発を始める前に“受け入れテスト”を定義するアプローチ」です。
つまり、「何を作るか」より前に「どうすれば完成とみなせるか(受け入れ条件)」を明確にするという考え方です。
🧩 例:
たとえばユーザーストーリーが
「ユーザーは正しいIDとパスワードを入力すると、ログインできる」
であれば、ATDDでは次のように「受け入れテスト条件」を先に書きます。
|
テストケース |
入力 |
期待される結果 |
|---|---|---|
|
正常系(ポジティブ) |
正しいIDとパスワード |
ホーム画面が表示される |
|
異常系(ネガティブ) |
パスワードが間違っている |
エラーメッセージ「パスワードが違います」表示 |
このように、**開発前に“テスト観点から仕様を明確化する”**のがATDDの基本姿勢です。
🧠 ATDDの進め方(ステップごとの流れ)
① スペシフィケーション・ワークショップ(Specification Workshop)
まず最初に、開発チーム・テスト担当・ビジネス担当者の3者で集まり、
ユーザーストーリーを分析・議論・文書化します。
この段階で以下の点を確認します:
-
要件の曖昧さや不完全さを修正
-
欠落している条件や例外パターンを洗い出す
-
受け入れ条件を、チーム全体で共通理解する
👉 狙いは、早期に欠陥を防ぎ、修正コストを最小化すること。
✅ 例:
ユーザーストーリー:「パスワードを5回間違えるとアカウントがロックされる」
→ この時点で「何回目で警告を出すか」「解除条件は?」などを明確にしておく。
② テストの作成(Create the Tests)
次に、ワークショップで定義したシナリオをもとに、実際のテストケースを作成します。
これはチーム全体で作る場合もあれば、テスター単独で作成する場合もあります。
-
作成者がテスターなら、ビジネス担当がレビュー・承認する。
-
作成者がチーム全体なら、第三者(例:プロダクトオーナー)が検証する。
👉 この段階では、**「テスト=ユーザーストーリーの具体例」**という位置づけです。
③ ポジティブテスト(Positive Tests)
まずは**正常動作を確認するテスト(ポジティブテスト)**から始めます。
なぜなら、基本的な動作が通らない状態では、
異常系テストをしても意味がないからです。
例:
-
有効なクレジットカード番号で決済できるか?
-
有効なログイン情報でログインできるか?
④ ネガティブテスト(Negative Tests)と例外テスト
次に、異常パターンや例外条件をテストします。
これには、無効な入力や想定外の操作が含まれます。
例:
-
無効なメール形式を入力したらどうなるか?
-
必須項目を空欄にした場合、警告が出るか?
その後、**非機能要件(パフォーマンス・セキュリティ・UXなど)**も確認します。
⑤ スコープ外を避ける(No Out-of-Scope Examples)
ATDDでは、ユーザーストーリーに明示されていない内容を勝手に追加してはいけません。
つまり「テスト例はストーリー内の仕様に限定する」ことが鉄則です。
❌ 例:
ユーザーストーリーに「ソーシャルログイン機能」が書かれていないのに、
Facebookログインをテストする → スコープ外!
🌱 ATDDの効果まとめ
|
効果 |
内容 |
|---|---|
|
✅ 早期に欠陥を発見 |
ワークショップ段階で曖昧さを排除できる |
|
✅ 仕様の共通理解 |
開発者・テスター・ビジネス担当が同じ基準で考えられる |
|
✅ 自動化しやすい |
受け入れテストはそのままBDDツール(Cucumberなど)に移行可能 |
|
✅ リリース品質が安定 |
“完成”の基準が明確になるため、品質のぶれが減る |
💬 まとめ
-
ATDDは「開発前に受け入れ条件を明確化する」テスト駆動アプローチ。
-
チーム全体で協働し、曖昧さを減らし、修正コストを最小化する。
-
ポジティブ → ネガティブ → 非機能の順でテストを進める。
-
ユーザーストーリー外の内容は含めない。
このように、ATDDはアジャイルの原則「早期・頻繁なフィードバック」を実現するための、
非常に実践的なテクニックです。
🧭 次のステップ
次回は「3.3.3 振る舞い駆動開発(BDD)の適用」について解説します。
TDD・ATDD・BDDを比較しながら、どのように現場で使い分けるかを見ていきましょう。


コメント