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

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(テスト駆動開発)の考え方をビジネス要件レベルに拡張したものだよ。「受入テストに合格すること=完成」と定義するんだ
← 用語集にもどる