【えーてぃーでぃーでぃー】

ATDD(受入テスト駆動開発) とは?

💡 「何ができたらOK?」を先に決めてから作る、ゴール先行の開発術
📌 このページのポイント
ATDD(受入テスト駆動開発)のサイクル ビジネス 開発者 QA ← 3者で議論 ① 受入テスト定義 Given-When-Then で仕様を記述 ② コード実装 テストを通すために コードを書く ③ テスト合格 受入テストがパス = 機能完成 TDD 開発者がユニットテストを先に書く スコープ: コードレベル ATDD チーム全員で受入テストを先に書く スコープ: ビジネス要件レベル
ATDDのイメージ
ひよこ ひよこ

ATDDってTDDとどう違うの?

ペンギン先生 ペンギン先生

TDDは開発者がユニットテストを先に書くのに対し、ATDDはビジネス側も含めたチーム全員で受入テストを先に定義するんだ。スコープが「コード」から「ビジネス要件」に広がっている感じだね

ひよこ ひよこ

受入テストってどう書くの?

ペンギン先生 ペンギン先生

よく使われるのが「Given-When-Then」形式だよ。たとえば「Given: カートに商品が3個ある、When: 注文ボタンを押す、Then: 注文確認メールが届く」みたいに、誰でも読める形で書くんだ

ひよこ ひよこ

非エンジニアにも分かるの?

ペンギン先生 ペンギン先生

そこがATDDの最大のメリットだよ。テストが要件の「仕様書」にもなるから、ビジネス側と開発側の認識ズレを防げるんだ。「これが通ればOK」という明確なゴールができるわけだね

ひよこ ひよこ

BDDとは何が違うの?

ペンギン先生 ペンギン先生

正直かなり重なっているよ。ATDDは「受入テストを先に書く」プロセスにフォーカスし、BDDは「振る舞いを仕様として記述する」哲学にフォーカスしている。CucumberなどのBDDツールはATDDの実践にもそのまま使えるんだ

ひよこ ひよこ

デメリットはないの?

ペンギン先生 ペンギン先生

テストの定義にビジネス側の参加が必要だから、チームの協力体制が不可欠だよ。また、受入テストの粒度を細かくしすぎるとメンテナンスが大変になる。「ユーザーストーリー単位」で書くのがちょうどいいバランスだね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ATDD」って出てきたら「受入テストを先に書いてからコードを書く開発手法」と思えればだいたいOK!
📖 おまけ:英語の意味
「Acceptance Test-Driven Development」 = 受入テスト駆動開発
💬 TDD(テスト駆動開発)の考え方をビジネス要件レベルに拡張したものだよ。「受入テストに合格すること=完成」と定義するんだ
← 用語集にもどる