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
50
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
230
Dialogue for Design
anchorcable
1
320
How to manage a good work environment
anchorcable
0
120
TDD is not slowly.
anchorcable
1
580
3日坊主でも勉強したい
anchorcable
5
5.8k
Design It! is good for architect.
anchorcable
0
150
今だからこそ分かる報連相 / How to do Hou/Ren/Sou!
anchorcable
0
770
TDD supports us all the time.
anchorcable
0
360
I read Tokumaru book on ABD.
anchorcable
1
110
Featured
See All Featured
A Soul's Torment
seathinner
5
2.5k
Ruling the World: When Life Gets Gamed
codingconduct
0
170
Technical Leadership for Architectural Decision Making
baasie
3
290
sira's awesome portfolio website redesign presentation
elsirapls
0
190
Git: the NoSQL Database
bkeepers
PRO
432
66k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
240
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.4k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
200
How to Think Like a Performance Engineer
csswizardry
28
2.5k
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/