I love TDD.

827dbd19908541482bac51ace8b86426?s=47 Dassimen
September 04, 2019

I love TDD.

こちらのイベントで発表した資料です
https://engineers.connpass.com/event/141228/

827dbd19908541482bac51ace8b86426?s=128

Dassimen

September 04, 2019
Tweet

Transcript

  1. テスト駆動開発はいいぞ。 September 4, 2019 | #engineers_lt #残暑に負けるな!自由研究LT大会 明日からやれる、現在も未来も支える開発手法 脱脂綿 (

    @anchor_cable )
  2. #engineers_lt 2 About Me 脱脂綿 ( @anchor_cable ) 東京都内に住む脱脂綿(=Twitter名)系エンジニア •

    株式会社ゆめみ ◦ サーバーサイドエンジニア • テスト駆動開発歴2ヶ月
  3. #engineers_lt 3 テスト駆動開発とは テスト駆動開発 (てすとくどうかいはつ、test-driven development; TDD) とは、プログラム開発手法の一種 で、プログラムに必要な各機能について、最初にテス トを書き(これをテストファーストと言う)、そのテ

    ストが動作する必要最低限な実装をとりあえず行った 後、コードを洗練させる、という短い工程を繰り返す スタイルである。 Wikipedia より引用
  4. 4 アジェンダ #engineers_lt TDDによる私の変化 TDDがもたらす恩恵 TDDの簡単な説明 1 2 3

  5. TDDの簡単な説明 1

  6. #engineers_lt 6 TDDの目指す所:動く綺麗なコード 動かない 動く 綺 麗 汚 い

  7. #engineers_lt 7 TDDの流れ Red Green Refactor

  8. #engineers_lt 8 TDDの流れ 動かない 動く 綺 麗 汚 い ①Red:

    動作しないテストを書く ②Green: テストを通すコードを書く ③Refactor: 動きを変えない事をテストしながら 安心してリファクタできる ④次のテストコードを書く
  9. #engineers_lt 9 TDDの流れ 動かない 動く 綺 麗 汚 い ①Red:

    動作しないテストを書く ②Green: テストを通すコードを書く ③Refactor: 動きを変えない事をテストしながら 安心してリファクタできる ④次のテストコードを書く
  10. #engineers_lt 10 TDDの流れ 動かない 動く 綺 麗 汚 い ①Red:

    動作しないテストを書く ②Green: テストを通すコードを書く ③Refactor: 動きを変えない事をテストしながら 安心してリファクタできる ④次のテストコードを書く
  11. #engineers_lt 11 TDDの流れ 動かない 動く 綺 麗 汚 い ①Red:

    動作しないテストを書く ②Green: テストを通すコードを書く ③Refactor: 動きを変えない事をテストしながら 安心してリファクタできる ④次のテストコードを書く
  12. #engineers_lt 12 TDDの流れ 動かない 動く 綺 麗 汚 い ①Red:

    動作しないテストを書く ②Green: テストを通すコードを書く ③Refactor: 動きを変えない事をテストしながら 安心してリファクタできる ④次のテストコードを書く
  13. #engineers_lt 13 TDDの流れサンプル(資料のみ) ex.FizzBuzz 1. 作ろうとしているコードからToDoリストを作る 「1を渡されたら1を返す」 「3を渡されたらFizzを返す」.... 2. ToDoリストの中の1つを選び、これを満たすテストコードを書く

    assertEqual(1,judgeFizzBuzz(1)) 3. テストコードの失敗を確認する(レッド) 4. テストコードを満たすプロダクションコードを書く(グリーン) return 1; 5. コードの重複を排除したり、綺麗にしたりする(リファクタリング) ToDoの粒度は最初は細かくした方 が良いが、確信を持っている部分に 関してはまとめても良い。
  14. TDDによる私の変化 2

  15. #engineers_lt 15 TDDでコードを書き始めたことによる変化

  16. #engineers_lt 16 TDDを知るまでの実装 一発で目標に届かせようとする

  17. #engineers_lt 17 TDDによる実装 堅実に目標に向かって進む

  18. #engineers_lt 18 TDDはあくまで手段 一発で到達する武器があるならOK

  19. #engineers_lt 19 既に武器がある人向け:歩幅の調節 目的のコードにたどり着くためのTDD以外のスマートな方法を知っていて何の不安も無いなら、 テストは不要。一抹の不安がある部分にだけテストを書けば良い。 何をテストすべきか? → 「不安が退屈に変わるまで」(「テスト駆動開発」第32章) 武器と併用して確認しながら進める

  20. TDDがもたらす恩恵 3

  21. #engineers_lt 21 TDDによる開発が一段落すると残るもの 「動作する綺麗なコード」と「動作を担保するテストコード」 手動テストは、同じコードに手を加えた時に再度行わなければならない テストコードはチームの資産となり、以後修正やリファクタをする時の支えになる  ↓ プロダクションコードが「動作する綺麗なコード」であり続ける

  22. #engineers_lt 22 TDDが目指すもの 私の目標は、プロジェクトが1年経っても開始直後の ようにキラキラした目でいられるようにすることだ。 TDDならそれができると考えている。 Kent Beck. テスト駆動開発 (Japanese

    Edition) 第32章 TDDを身につける より引用
  23. 23 まとめ #engineers_lt • TDDによる変化:小さなステップで確実に進める • TDDの恩恵:動く綺麗なコードが維持される • TDDの流れ:Red→Green→Refactor

  24. ご清聴ありがとうございました 興味を持ったら明日からやってみよう!

  25. #engineers_lt 25 Appendix 書籍:テスト駆動開発 Kent Beck (著), 和田 卓人 (翻訳) https://www.amazon.co.jp/dp/4274217884/ref=cm_sw_r_tw_dp_U_x_BWLBDb7XS8

    DYV (特に付録Cがオススメです!) Qiita:初心者プログラマーの僕が、テスト駆動開発を愛する5つの理由 https://qiita.com/anchor-cable/items/4b7b73bc1a2163ded6b6 (私の書いた記事です...内容が一部重複しています)