Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
正しいテスト駆動開発についてまとめてみた
Search
k.ishikawa
April 04, 2024
Programming
0
30
正しいテスト駆動開発についてまとめてみた
2024-04-04 社内勉強会で発表した資料です
k.ishikawa
April 04, 2024
Tweet
Share
More Decks by k.ishikawa
See All by k.ishikawa
DDD 値オブジェクトってなあに?
ishikawa096
0
100
DDD ユビキタス言語ってなあに?
ishikawa096
0
20
リソース効率とフロー効率についてざっくりまとめてみた
ishikawa096
0
16
ChatGPT×AWS LambdaのSlack Botを社内運用してみた
ishikawa096
1
63
Other Decks in Programming
See All in Programming
モデル駆動設計をやってみようワークショップ開催報告(Modeling Forum2025) / model driven design workshop report
haru860
0
270
Socio-Technical Evolution: Growing an Architecture and Its Organization for Fast Flow
cer
PRO
0
330
ViewファーストなRailsアプリ開発のたのしさ
sugiwe
0
460
AIコーディングエージェント(skywork)
kondai24
0
170
UIデザインに役立つ 2025年の最新CSS / The Latest CSS for UI Design 2025
clockmaker
18
7.4k
Cell-Based Architecture
larchanjo
0
120
著者と進める!『AIと個人開発したくなったらまずCursorで要件定義だ!』
yasunacoffee
0
130
251126 TestState APIってなんだっけ?Step Functionsテストどう変わる?
east_takumi
0
320
Rediscover the Console - SymfonyCon Amsterdam 2025
chalasr
2
160
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
150
DevFest Android in Korea 2025 - 개발자 커뮤니티를 통해 얻는 가치
wisemuji
0
140
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
820
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
9
710
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Optimizing for Happiness
mojombo
379
70k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Fireside Chat
paigeccino
41
3.7k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
KATA
mclloyd
PRO
32
15k
Facilitating Awesome Meetings
lara
57
6.7k
Music & Morning Musume
bryan
46
7k
We Have a Design System, Now What?
morganepeng
54
7.9k
Transcript
正しいテスト駆動開発 (TDD)についてまとめ てみた 2024-04-04
きっかけ 下記の記事を読んで、テスト駆動開発につ いて曖昧に捉えていた部分や勘違いしてい た部分があったことに気がついた。 記事を参考に改めて情報を整理してみた。 【翻訳】テスト駆動開発の定義 https://t-wada.hatenablog.jp/entry/ canon-tdd-by-kent-beck
テスト駆動開発とは?
テスト駆動開発とは? →プログラミングの ワークフロー コードの書き方 または設計手法
テスト駆動開発とは? →プログラミングの ワークフロー コードの書き方 または設計手法 注意点 あくまでコードの書き方な ので、 「テストが揃って品質が上 がる」などは
副次的効果。 品質保証の方法ではな い。
テストコードを 先に書けば テスト駆動開発? 🤔
テストコードを 先に書けば テスト駆動開発? 🤔 テストコードを先に書くだけ ではテスト駆動開発ではない! よくある誤解
自動テスト テスト ファースト 開発者 テスト 1個流し インクリメンタル 開発 開発者が自分で テストコードを書くこと
RspecやPHPUnitなどの テスティングフレームワーク でテストを書くこと 先にテストを書くこと
自動テスト テスト ファースト 開発者 テスト 全て満たすのが TDD 1個流し インクリメンタル 開発
開発者が自分で テストコードを書くこと RspecやPHPUnitなどの テスティングフレームワーク でテストを書くこと 先にテストを書くこと
自動テスト テスト ファースト 開発者 テスト 全て満たすのが TDD 1個流し インクリメンタル 開発
開発者が自分で テストコードを書くこと メリット: 効果的なテスト を書きやすい RspecやPHPUnitなどの テスティングフレームワーク でテストを書くこと メリット: 自動化 先にテストを書くこと メリット: 必ずテストがかけ る。先に設計できる どれかだけでは TDDではない
TDDのワークフロー 1. テストリスト (TODOリスト)を書く 2. テストリストの中から ひとつだけ 選んで テストコードを書く 3.
実装して テストを成功させる (気づいたこ とはテストリストに追加) 4. テスト成功を維持しながら リファクタリン グ(設計修正) 5. テストリストが空になるまで 2に戻って繰 り返す
ステップ1 テストリスト 初めに、箇条書きメモで良いので期 待される動作をリストアップする。 右図は、いちど平文で書き出して、テスト容易性・ 重要度で整理したリスト。 よくある過ち : 実装の設計判断を混 ぜ込むこと。どう実装するかは一旦
無視するべし。 ヒント アイデアをよく理解してもら うのに 1 つの例では不十分 である場合は、あと 2 つほ ど紹介します。 https://www.youtube.com/watch?v=Q-FJ3XmFlT8&t=1145s
ステップ2 1つだけテスト書く あたかもすでに実装済みのように Classなどを呼び出して書く(使う側 の目線) アサーション(もしくはexpect…)から 書き始めて、上に向かって逆向きに 進めると書きやすい。 よくある過ち :
複数のテストを一気 に書いてしまうこと。だるいし無駄に なりやすい ヒント アイデアをよく理解してもら うのに 1 つの例では不十分 である場合は、あと 2 つほ ど紹介します。 https://www.youtube.com/watch?v=Q-FJ3XmFlT8&t=1145s
インターフェイスと実装の分離 設計には2種類ある。 ・ある振る舞いはどのように呼び出されるべきかの設計 インターフェイス(論理設計) ・システムはその振る舞いをどう実装するべきかの設計 実装(物理設計) Point!
インターフェイスと実装の分離 設計には2種類ある。 ・ある振る舞いはどのように呼び出されるべきかの設計 インターフェイス(論理設計) ・システムはその振る舞いをどう実装するべきかの設計 実装(物理設計) ステップ2 (テストを書く) で考える ステップ4
(リファクタリング) で考える Point!
ステップ3 とにかくテスト成功さ せる ベタ書きでもいいので一旦成功させ る。 ヒント アイデアをよく理解してもら うのに 1 つの例では不十分
である場合は、あと 2 つほ ど紹介します。 https://www.youtube.com/watch?v=Q-FJ3XmFlT8&t=1145s
ステップ4 リファクタリング ここでようやく実装の設計判断をす る。ベタ書きした場合はちゃんとし た実装に変更する。 よくある過ち : リファクタリングしすぎ ・早すぎる抽象化 ヒント
アイデアをよく理解してもら うのに 1 つの例では不十分 である場合は、あと 2 つほ ど紹介します。 https://www.youtube.com/watch?v=Q-FJ3XmFlT8&t=1145s
ステップ5 テストリストが空にな るまで繰り返す
TDDの効果 プログラミングの楽 しさが長続き 最初は楽しいけど現実が厳し くて削れてくるが、TDDなら心 の平穏を保って仕様変更でき る コードに自信が持て る プログラムがちゃんと動いてお
り、綺麗に書けている安心 開発の最小の フィードバックサイク ル アジャイルと相性が良い
参考 ・【翻訳】テスト駆動開発の定義(ブログ記事) https://t-wada.hatenablog.jp/entry/canon-tdd-by-kent-beck ・テスト駆動開発とは何であって、何でなかったのか?(ポッド キャスト) https://fukabori.fm/episode/114 ・見てわかるテスト駆動開発(ライブコーディング動画) https://www.youtube.com/watch?v=Q-FJ3XmFlT8&t=1145s ・テスト駆動開発(書籍)
ご清聴ありがとうござい ました テスト書こう!(自戒)