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

Introduction to ATDD (ATDD入門)

Cyan
August 30, 2018

Introduction to ATDD (ATDD入門)

Cyan

August 30, 2018
Tweet

More Decks by Cyan

Other Decks in Programming

Transcript

  1. Introduction to ATDD
    ATDD入門
    2018.08.30

    View Slide

  2. Acceptance Test Driven Development

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  6. ATDDとは
    - 実例を使ってドメインに関する共通認識を持たせる
    - 例を組み合わせたセットは仕様とテストスイートになる
    - 受け入れテストを自動的に検証する
    - 製品開発は受け入れテストの完了に集中させる
    - 受け入れテストケースを利用して機能変更の議論を行う
    https://www.slideshare.net/tcmak/atdd-in-practice

    View Slide

  7. View Slide

  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の違いについて深掘りしなくてもいい
    - 何を目指して作るかさえ明確化すればいいでしょう

    View Slide

  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/

    View Slide

  10. ATDDの特徴
    - 共通認識
    - ユビキタス言語
    - 実行可能な要求/実例
    - 生きているドキュメント
    https://www.slideshare.net/pekkaklarck/atdd-using-robot-framework

    View Slide

  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

    View Slide

  12. ユビキタス言語
    開発者 PO
    引き出し

    View Slide

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

    View Slide

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

    View Slide

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




    仕様

    テスト

    View Slide

  16. ギャップ

    View Slide

  17. ギャップを埋めよう

    View Slide