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 full-size slide

  2. Acceptance Test Driven Development

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  7. 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 full-size slide

  8. 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 full-size slide

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

    View full-size slide

  10. 共通認識
    - 「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 full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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




    仕様

    テスト

    View full-size slide

  15. ギャップ

    View full-size slide

  16. ギャップを埋めよう

    View full-size slide