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
18
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
290
How to manage a good work environment
anchorcable
0
100
TDD is not slowly.
anchorcable
1
520
3日坊主でも勉強したい
anchorcable
5
5.5k
Design It! is good for architect.
anchorcable
0
120
今だからこそ分かる報連相 / How to do Hou/Ren/Sou!
anchorcable
0
650
TDD supports us all the time.
anchorcable
0
310
I read Tokumaru book on ABD.
anchorcable
1
96
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
32
6.4k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
3
360
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.5k
How GitHub (no longer) Works
holman
312
140k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
RailsConf 2023
tenderlove
29
970
A Modern Web Designer's Workflow
chriscoyier
693
190k
4 Signs Your Business is Dying
shpigford
182
22k
YesSQL, Process and Tooling at Scale
rocio
170
14k
Side Projects
sachag
452
42k
BBQ
matthewcrist
85
9.4k
Testing 201, or: Great Expectations
jmmastey
41
7.2k
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/