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
100
TDD is not slowly.
anchorcable
1
520
3日坊主でも勉強したい
anchorcable
5
5.4k
Design It! is good for architect.
anchorcable
0
110
今だからこそ分かる報連相 / 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
95
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
326
24k
The Invisible Side of Design
smashingmag
298
50k
Designing Experiences People Love
moore
138
23k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
111
49k
GraphQLとの向き合い方2022年版
quramy
44
13k
Docker and Python
trallard
42
3.1k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Designing for Performance
lara
604
68k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Scaling GitHub
holman
458
140k
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/