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

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

最終更新:
💡 「何ができたらOK?」を先に決めてから作る、ゴール先行の開発術

顧客・ビジネス、開発、テストの視点を持つ人が協力し、機能を実装する前に受入テストを具体化する開発手法。利用者が期待する振る舞いを共有し、それを確かめながら実装を進める。

📌 このページのポイント
ATDD:何をできればよいか、先に共有 顧客・業務 開発 テスト 例を具体化 実装する 確かめる 受入例:注文を確定する 前提:在庫と購入情報がそろっている 操作:注文確定 → 結果:注文番号を表示 合格だけで、すべての品質を保証しない
上段は協力する視点、中段の矢印は例の具体化から実装・確認へ進む流れ。下段は受入例で、Given-When-Thenは表現形式の一例。ツール導入やテスト合格だけを完成の保証とはしない。
ひよこ ひよこ
ATDDってTDDとどう違うの?
ペンギン先生 ペンギン先生
TDDではコードに近いテストを先に書いて実装を導くよ。ATDDでは顧客・開発・テストの視点を持ち寄り、利用者が何をできればよいかを受入テストにする。見る範囲が違うので、両方を組み合わせられるんだ。
ひよこ ひよこ
受入テストってどう書くの?
ペンギン先生 ペンギン先生
前提・操作・期待する結果を具体的にしよう。Given-When-Thenという書き方なら、たとえば「前提:在庫のある商品がカートに入り、購入情報がそろっている」「操作:注文を確定する」「結果:注文番号が表示される」という例にできる。必須の形式ではないよ。
ひよこ ひよこ
非エンジニアにも分かるの?
ペンギン先生 ペンギン先生
業務の言葉で具体例を話し合うことが大事だよ。曖昧な要件や認識の違いを実装前に見つけやすくなる。テストを自動化する場合もあるけれど、ツールを入れるだけで認識が一致するわけではないんだ。
ひよこ ひよこ
BDDとは何が違うの?
ペンギン先生 ペンギン先生
利用者の振る舞いを具体例で共有する点など、かなり重なるよ。ATDDでは受入テストを先に作って実装を導く点が強調される。BDDとの境界を厳密に固定するより、何を話し合い、どう確かめるかをチームでそろえよう。
ひよこ ひよこ
受入テストが全部通れば完成?
ペンギン先生 ペンギン先生
定義した例に合うことを確認できても、未定義のケースや性能・安全性などをすべて保証するわけではないよ。必要なテストや完成条件も確認しよう。例を細かく増やしすぎると保守が重くなるので、重要な業務ルールや例外を選ぶんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ATDD」って出てきたら「受入テストを先に書いてからコードを書く開発手法」と思えればだいたいOK!
📖 おまけ:英語の意味
「Acceptance Test-Driven Development」 = 受入テスト駆動開発
💬 受入テストを先に具体化し、開発の方向を導くという意味だよ。テストに合格したことだけで、あらゆる品質や完成条件を満たしたとは限らないんだ。

参考資料

← 用語集にもどる