$30 off During Our Annual Pro Sale. View Details »

TODOリストの整理を通じて実行すべきテストを考える #tddbc / TDDBC 2020 Online LT

nihonbuson
August 01, 2020

TODOリストの整理を通じて実行すべきテストを考える #tddbc / TDDBC 2020 Online LT

以下のイベントの投影資料です。
https://tddbc.connpass.com/event/181973/

【発表資料中のURL】
P2 Agile Testing Condensed Japanese Edition
https://leanpub.com/agiletesting-condensed-japanese-edition

P4 プログラミングのお題: 自動販売機 (設計進化重視バージョン)
https://gist.github.com/yattom/884741ecbd3c660fb393b2d7b116b4b2

P25 見てわかるテスト駆動開発 / TDD Live and Workshop 2019 Spring
https://speakerdeck.com/twada/tdd-live-and-workshop-2019-spring?slide=12

P27 動作するきれいなコード / Clean code that works - SeleniumConf Tokyo 2019
https://speakerdeck.com/twada/clean-code-that-works-seleniumconf-tokyo-2019?slide=45

P31 書籍『エクストリームプログラミング』
https://www.ohmsha.co.jp/book/9784274217623/

P34 テストエンジニアがTDDブートキャンプに参加してきました #TDDBC
https://nihonbuson.hatenadiary.jp/entry/2018/10/05/090000

P34 「テスト駆動開発の『駆動』は誤訳なんじゃないか」と言われて改めて考えた話
https://nihonbuson.hatenadiary.jp/entry/2020/07/07/183000

P34 Agile Testingのエッセンス #scrumosaka / Agile Testing Essence
https://speakerdeck.com/nihonbuson/agile-testing-essence

nihonbuson

August 01, 2020
Tweet

More Decks by nihonbuson

Other Decks in Technology

Transcript

  1. TODOリストの
    整理を通じて
    実行すべきテストを
    考える
    ブロッコリー
    (@nihonbuson)

    View Slide

  2. 自己紹介
    ● ブロッコリー
    ● 職業
    ○ テストエンジニア
    ● 社外活動
    ○ JaSST Review実行委員長
    ○ WACATE実行委員
    ○ 書籍『Agile Testing Condensed』
    翻訳

    View Slide

  3. 本発表の題材

    View Slide

  4. 題材
    ● 自動販売機 (設計進化重視バージョン)
    ● お題は事前に与えられていた
    ○ お題1. ボタンを押すとコーラが出る
    ■ ボタンを押すとコーラが出ます。
    ○ お題2. お金を払う
    ■ 100円硬貨を投入してから
    ボタンを押すとコーラが出ます。
    ■ 100円硬貨以外は投入できません。
    ● どのような会話をして取り組んだか紹介します。

    View Slide

  5. お題1.
    ボタンを押すとコーラが出る

    View Slide

  6. お題1. ボタンを押すとコーラが出る
    public String buy() {
    return "コーラを購入しました";
    }

    View Slide

  7. お題1. ボタンを押すとコーラが出る
    public String buy() {
    return "コーラを購入しました";
    }
    「購入する」って
    なんですかね?
    お金を入れて商品を
    手に入れたあと、
    お釣りを
    もらうことかな 相手

    View Slide

  8. お題1. ボタンを押すとコーラが出る
    public String buy() {
    return "コーラを購入しました";
    }
    このコード内の
    「購入する」は
    今回のお題に比べて
    色々なことを
    含んでそう

    ああ、確かに
    そうですねー。
    それなら… 相手

    View Slide

  9. お題1. ボタンを押すとコーラが出る
    public String pushButton() {
    return "コーラ";
    } 私
    ああ、確かに
    そうですねー。
    それなら… 相手
    このコード内の
    「購入する」は
    今回のお題に比べて
    色々なことを
    含んでそう

    View Slide

  10. お題2. お金を払う

    View Slide

  11. お題2. お金を払う
    100円硬貨を投入してからボタンを押すとコーラが出ます。
    100円硬貨以外は投入できません。
    (TODOリスト)
    (私の発言)

    (相手の発言)
    相手

    View Slide

  12. お題2. お金を払う
    100円硬貨を投入してからボタンを押すとコーラが出ます。
    100円硬貨以外は投入できません。
    どんなテストが
    ありますかね?

    まず、100円硬貨を
    投入するとボタンが
    有効になるかですかね 相手

    View Slide

  13. お題2. お金を払う
    ● 100円硬貨を
    入れるとボタンが有効 どんなテストが
    ありますかね?

    まず、100円硬貨を
    投入するとボタンが
    有効になるかですかね 相手
    100円硬貨を投入してからボタンを押すとコーラが出ます。
    100円硬貨以外は投入できません。

    View Slide

  14. お題2. お金を払う
    ● 100円硬貨を
    入れるとボタンが有効
    ● 100円以外の硬貨を
    入れるとボタンが無効
    なるほど。
    他にはどんなテスト
    がありますか?

    えっと、100円以外の
    硬貨を投入したら、
    ボタンが有効に
    ならない場合ですかね 相手
    100円硬貨を投入してからボタンを押すとコーラが出ます。
    100円硬貨以外は投入できません。

    View Slide

  15. お題2. お金を払う
    ● 100円硬貨を
    入れるとボタンが有効
    ● 100円以外の硬貨を
    入れるとボタンが無効
    ○ 10円硬貨
    なるほど。
    『100円以外』とは具
    体的にはどんな値が
    考えられますか?

    例えば、
    10円硬貨ですかね。 相手
    100円硬貨を投入してからボタンを押すとコーラが出ます。
    100円硬貨以外は投入できません。

    View Slide

  16. お題2. お金を払う
    ● 100円硬貨を
    入れるとボタンが有効
    ● 100円以外の硬貨を
    入れるとボタンが無効
    ○ 10円硬貨
    なるほどー。
    ちなみに、これらは
    ボタンが有効になる
    条件を考えてますね

    100円硬貨を投入してからボタンを押すとコーラが出ます。
    100円硬貨以外は投入できません。
    そうですねー
    相手

    View Slide

  17. お題2. お金を払う
    ● ボタンが有効になる条件
    ○ 100円硬貨を
    入れるとボタンが有効
    ○ 100円以外の硬貨を
    入れるとボタンが無効
    ■ 10円硬貨
    なるほどー。
    ちなみに、これらは
    ボタンが有効になる
    条件を考えてますね

    100円硬貨を投入してからボタンを押すとコーラが出ます。
    100円硬貨以外は投入できません。
    そうですねー
    相手

    View Slide

  18. お題2. お金を払う
    ● ボタンが有効になる条件
    ○ 100円硬貨を
    入れるとボタンが有効
    ○ 100円以外の硬貨を
    入れるとボタンが無効
    ■ 10円硬貨
    他にはどんなテスト
    をしたいですかね?

    ボタンを押した結果の
    テストをしたいです 相手
    100円硬貨を投入してからボタンを押すとコーラが出ます。
    100円硬貨以外は投入できません。

    View Slide

  19. お題2. お金を払う
    ● ボタンが有効になる条件
    ○ 100円硬貨を
    入れるとボタンが有効
    ○ 100円以外の硬貨を
    入れるとボタンが無効
    ■ 10円硬貨
    ● ボタンを押した結果
    他にはどんなテスト
    をしたいですかね?

    ボタンを押した結果の
    テストをしたいです 相手
    100円硬貨を投入してからボタンを押すとコーラが出ます。
    100円硬貨以外は投入できません。

    View Slide

  20. お題2. お金を払う
    ● ボタンが有効になる条件
    ○ 100円硬貨を
    入れるとボタンが有効
    ○ 100円以外の硬貨を
    入れるとボタンが無効
    ■ 10円硬貨
    ● ボタンを押した結果
    ○ ボタンが有効ならボタンを
    押すとコーラが出る
    ボタンを押した結果
    のテストって、
    具体的にはどんなこ
    とを考えてますか?

    ボタンが有効な場合に
    限り、ボタンを押すと
    コーラが出るとか… 相手
    100円硬貨を投入してからボタンを押すとコーラが出ます。
    100円硬貨以外は投入できません。

    View Slide

  21. お題2. お金を払う
    ● ボタンが有効になる条件
    ○ 100円硬貨を
    入れるとボタンが有効
    ○ 100円以外の硬貨を
    入れるとボタンが無効
    ■ 10円硬貨
    ● ボタンを押した結果
    ○ ボタンが有効ならボタンを
    押すとコーラが出る
    ○ ボタンが無効ならボタンを
    押しても何も出ない
    確かにそうですね。
    それ以外だと
    どうですか?

    ボタンが無効な場合、
    ボタンを押すと
    何も出ないことを
    テストしたいですね。
    相手
    100円硬貨を投入してからボタンを押すとコーラが出ます。
    100円硬貨以外は投入できません。

    View Slide

  22. お題2. お金を払う
    ● ボタンが有効になる条件
    ○ 100円硬貨を
    入れるとボタンが有効
    ○ 100円以外の硬貨を
    入れるとボタンが無効
    ■ 10円硬貨
    ● ボタンを押した結果
    ○ ボタンが有効ならボタンを
    押すとコーラが出る
    ○ ボタンが無効ならボタンを
    押しても何も出ない
    100円硬貨を投入してからボタンを押すとコーラが出ます。
    100円硬貨以外は投入できません。
    会話を進めていくことで、
    お題を分解した形で
    TODOを作成できた!

    View Slide

  23. お題2. お金を払う
    ● ボタンが有効になる条件
    ○ 100円硬貨を
    入れるとボタンが有効
    ○ 100円以外の硬貨を
    入れるとボタンが無効
    ■ 10円硬貨
    ● ボタンを押した結果
    ○ ボタンが有効ならボタンを
    押すとコーラが出る
    ○ ボタンが無効ならボタンを
    押しても何も出ない
    100円硬貨を投入してからボタンを押すとコーラが出ます。
    100円硬貨以外は投入できません。
    会話を進めていくことで、
    お題を分解した形で
    TODOを作成できた!
    必要なスキル
    ● 抽象化/具体化能力
    ● チームで納得して
    進める力

    View Slide

  24. TDDサイクルで
    忘れがちな部分

    View Slide

  25. TDDのサイクルで忘れがちな部分
    https://speakerdeck.com/twada/tdd-live-and-workshop-2019-spring?slide=12

    View Slide

  26. TDDのサイクルで忘れがちな部分
    https://speakerdeck.com/twada/tdd-live-and-workshop-2019-spring?slide=12

    View Slide

  27. TDDのサイクルで忘れがちな部分
    https://speakerdeck.com/twada/clean-code-that-works-seleniumconf-tokyo-2019?slide=45

    View Slide

  28. TDDのサイクルで忘れがちな部分
    https://speakerdeck.com/twada/clean-code-that-works-seleniumconf-tokyo-2019?slide=46

    View Slide

  29. TDDのサイクルで忘れがちな部分
    https://speakerdeck.com/twada/tdd-live-and-workshop-2019-spring?slide=12

    View Slide

  30. TDDのサイクルで忘れがちな部分
    https://speakerdeck.com/twada/tdd-live-and-workshop-2019-spring?slide=12
    「設計をしない」
    という誤解がある

    View Slide

  31. TDDはテストによって運転されるもの
    テストは一度作って終わりではなく、
    常に調整し続けるもの!
    「運転というのはね、車を正しい方向に走らせることじゃない
    の。常に注意を払って、こっちに行ったら少し戻して、あっち
    に行ったら少し戻して、そうやって軌道修正していくものよ」
    これがXPのパラダイムだ。注意して、適応して、変更する。
    書籍『エクストリームプログラミング』第2章より

    View Slide

  32. まとめ

    View Slide

  33. まとめ
    ● TDDBCの参加者の頃に体験した会話を再現した
    ● 具体的な例と抽象化を用いることで、
    より明確なTODOリストを作成することができた
    ● 以下の2つの活動はTDDサイクルをする上で
    忘れがちになるが、とても大切
    ○ Refactoring
    ○ 次の目標を考える

    View Slide

  34. 参考文献
    ● テストエンジニアがTDDブートキャンプに参加してきました #TDDBC
    ○ https://nihonbuson.hatenadiary.jp/entry/2018/10/05/090000
    ● 見てわかるテスト駆動開発 / TDD Live and Workshop 2019 Spring
    ○ https://speakerdeck.com/twada/tdd-live-and-workshop-2019-spring
    ● 動作するきれいなコード / Clean code that works - SeleniumConf
    Tokyo 2019
    ○ https://speakerdeck.com/twada/clean-code-that-works-seleniumconf-tokyo-2019
    ● 「テスト駆動開発の『駆動』は誤訳なんじゃないか」と言われて改めて
    考えた話
    ○ https://nihonbuson.hatenadiary.jp/entry/2020/07/07/183000
    ● Agile Testingのエッセンス #scrumosaka / Agile Testing Essence
    ○ https://speakerdeck.com/nihonbuson/agile-testing-essence

    View Slide