Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Write code with "Test First"
Search
Dassimen
May 14, 2024
0
17
Write code with "Test First"
Dassimen
May 14, 2024
Tweet
Share
More Decks by Dassimen
See All by Dassimen
Trying AWS Aurora Serverless.
anchorcable
0
200
Dialogue for Design
anchorcable
1
280
How to manage a good work environment
anchorcable
0
99
TDD is not slowly.
anchorcable
1
510
3日坊主でも勉強したい
anchorcable
5
5.4k
Design It! is good for architect.
anchorcable
0
110
今だからこそ分かる報連相 / How to do Hou/Ren/Sou!
anchorcable
0
640
TDD supports us all the time.
anchorcable
0
290
I read Tokumaru book on ABD.
anchorcable
1
94
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
9
680
Designing for humans not robots
tammielis
249
25k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
664
120k
Gamification - CAS2011
davidbonilla
80
5k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Navigating Team Friction
lara
183
14k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
What's new in Ruby 2.0
geeforr
342
31k
Documentation Writing (for coders)
carmenintech
65
4.4k
BBQ
matthewcrist
85
9.3k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.6k
Transcript
いいから黙って テストは最初に書いておけ May 15, 2024 | 強い思想LT サーバーサイド編 諸君、私はテストファーストが好きだ 鈴木智也
a.k.a だっしー
2 About Me 鈴木智也 a.k.a だっしー • サーバーサイドリードエンジニア • ゆめみは2社目
• ゆめみ在籍もうすぐ5年になりそう ◦ 新卒メンバーすげーと思いながら仕事をしてる日々 • GWはしまなみ海道走ってきました
3 今日話すこと テストファースト = 最初にテストを書く
4 話さないこと CI・CD For Keys カバレッジ テスト手法 テストコードの書き方 などなど
5 アジェンダ どのようにするのか? テスト駆動で開発する なぜテストファースト? 1 2 3
なぜテストファースト? 1
7 なぜテストファースト? 後からテストを書くのは労苦に近い • 動くコードは「完成」している • テストコードは将来の開発者のためのコード(諸説) • 出来上がったコードのどこにどのようにテストを書くかわからない •
お客さんからも催促されてる、手動テストも通ってる 「テストコードは後にしてリリースしようぜ」という悪魔の囁きが聞こえる
8 なぜテストファースト? 先に書くとどうなるのか • 動くコードは「完成」している ◦ 動くコードとテストコードが同時に揃って完成する • テストコードは将来の開発者のためのコード ◦
今の自分にとって役に立ってくれる • 出来上がったコードのどこにどのようにテストを書くかわからない ◦ 最初にテストコードを書いているので起きない • お客さんからも催促されてる、手動テストも通ってる ◦ ここはどうにもならない、実装が早くなるわけではない
どのようにするのか? 2
10 どのようにするのか? ある関数を実装する前に 実装しようとする関数のテストを書く • 関数名 • インターフェース ◦ 引数
◦ 戻り値 • メソッドならどの構造体をレシーバに取るのか これらを呼び出し側から見て違和感無いように作る sumArroundAlive() はまだ無いからエディタには怒られる
11 どのようにするのか? テストはお題から考えて書きやすい単位で テストを書く→実装コード書く際に書き辛いようなら、 テストの単位を細かくしたり粗くしたりする 先にTODOリストを作っておくのもいい FizzBuzzであればこんな感じで - 3の倍数が来たらFizzを返す -
5の倍数が来たらBuzzを返す - 15の倍数が来たらFizzBuzzを返す - どれにも当てはまらないなら数字を文字列に変換して返す
12 どのようにするのか? 初めは趣味プロでやってみるといい おすすめのお題 • FizzBuzz • Game of Life
cyber-dojoというTDD勉強用のプラットフォームもある (需要ありそうならモブプロ勉強会再開したい)
テスト駆動で開発する 3
14 テスト駆動で開発する テストファーストはテスト駆動のはじめの一歩 • 自然とテストしやすい設計になる • テストによって細かい単位で検証しながら進んでいける ……などなど、テストコードが「今現在の自分」にとって役立つものとなる
15 テスト駆動で開発する テスト駆動開発は仕事術でもある • テストをパスさせて次のテストを書く、というリズムを刻んで仕事が出来る • 差し込みタスクへの対応後、休み明けでもスムーズに仕事を再開できる
16 テスト駆動で開発する 令和の時代だからこその 恩恵がもうひとつ
17 テスト駆動で開発する Github Copilotが一撃で補完出来る ある程度小分けされた関数であれば、 テストを先に書いておけばCopilotの補完で完成する 逆も出来るかもだが、 やはりテストは網羅性の観点からも自分で書きたい
18 まとめ • まずは「先に書くだけ」から始められる • テストを先に書くと、テストが駆動して開発出来る • テストを後から書くのは面倒である
ご清聴ありがとうございました
20 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 (私の書いた記事です...内容が一部重複しています)
21 Special Thanks 私にテストの啓蒙をしてくださった方 @nihonbuson TDD ワイワイ会の皆さん(東京・沖縄の方は参加してみるといいかも) https://tddyyx.connpass.com/