Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introduction to ATDD (ATDD入門)

E5776f3e377ada97ff384eaa4a110b28?s=47 CHO
August 30, 2018

Introduction to ATDD (ATDD入門)

E5776f3e377ada97ff384eaa4a110b28?s=128

CHO

August 30, 2018
Tweet

Transcript

  1. Introduction to ATDD ATDD入門 2018.08.30

  2. Acceptance Test Driven Development

  3. TDDとは TDD (Test Driven Development)を簡 潔に表せば、右のよ うな手法になる。

  4. Specification Pyramid ルール ワークフロー 技術詳細 会員なら半額、会員じゃなければ 2割引 会計処理で会員かどうかを判定し、会員なら支払い 金額を商品合計金額の半額にする。会員じゃなけれ ば80%にする。

    PaymentProcessでisMemberをチェックする。 trueならtotalPaymentをtotalPriceの半分にする。 falseなら0.8にする。 POの関心 ギャップが生 じる
  5. Specification Pyramid ルール ワークフロー 技術詳細 会員なら半額、会員じゃなければ 2割引 会計処理で会員かどうかを判定し、会員なら支払い 金額を商品合計金額の半額にする。会員じゃなけれ ば80%にする。

    PaymentProcessでisMemberをチェックする。 trueならtotalPaymentをtotalPriceの半分にする。 falseなら0.8にする。 POの関心 ギャップが生 じる A T D D
  6. ATDDとは - 実例を使ってドメインに関する共通認識を持たせる - 例を組み合わせたセットは仕様とテストスイートになる - 受け入れテストを自動的に検証する - 製品開発は受け入れテストの完了に集中させる -

    受け入れテストケースを利用して機能変更の議論を行う https://www.slideshare.net/tcmak/atdd-in-practice
  7. None
  8. ATDDとBDD - ATDDとBDD (Behavior-driven development) の関係性について諸説あり - 「BDDはATDDの改良版だ」 https://blog.jbrains.ca/permalink/the-worlds-shortest-article-on-behavior-driven-develop ment-revisited

    - 「BDDとATDDのフォーカスが違う」 http://bufferings.hatenablog.com/entry/2014/09/11/083430 - 「BDD = ATDD + TDD」 http://toolsqa.com/blogs/test-approach-and-comparisons-between-atdd-tdd-and-bdd/ - ATDDとBDDの違いについて深掘りしなくてもいい - 何を目指して作るかさえ明確化すればいいでしょう
  9. Specification by Example ちなみに、Specification by Example (SbE) という言葉も存在する。 ATDDの類義語だと考えば結構でしょう。 https://less.works/less/technical-excellence/specification-by-example.html

    他に、Example-Driven Development (EDD)やStorytest-Driven Development (SDD)があったりするが、気にせず同一視すれば OK http://xunitpatterns.com/example-driven%20development.html https://www.industriallogic.com/blog/storytest-driven-development-article/
  10. ATDDの特徴 - 共通認識 - ユビキタス言語 - 実行可能な要求/実例 - 生きているドキュメント https://www.slideshare.net/pekkaklarck/atdd-using-robot-framework

  11. 共通認識 - 「Given(前提)」→「前提 / 状態 / 状況」 - 「When(もし)」→「アクション :

    もし〜ならば / したら」 - 「Then(ならば)」→「結果 : 〜になる / が起きる」 - Given(前提) 私の銀行口座に預金があり、 かつ最近引き出していない (my bank account is in credit, and I made no withdrawals recently,) - When(もし) 私は限度より低い金額を引き出す (I attempt to withdraw an amount less than my card's limit,) - Then(ならば) 引き出しはエラーと警告なく完了できる (the withdrawal should complete without errors or warnings) https://www.agilealliance.org/glossary/gwt
  12. ユビキタス言語 開発者 PO 引き出し

  13. ユビキタス言語? 開発者 PO ?

  14. 実行可能な要求/生きていくドキュメント

  15. - Specification Driven by Examples - Examples Implemented by Tests

    例 例 例 例 仕様 例 テスト
  16. ギャップ

  17. ギャップを埋めよう