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
正しいテスト駆動開発についてまとめてみた
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
k.ishikawa
April 04, 2024
Programming
0
32
正しいテスト駆動開発についてまとめてみた
2024-04-04 社内勉強会で発表した資料です
k.ishikawa
April 04, 2024
Tweet
Share
More Decks by k.ishikawa
See All by k.ishikawa
DDD 値オブジェクトってなあに?
ishikawa096
0
130
DDD ユビキタス言語ってなあに?
ishikawa096
0
25
リソース効率とフロー効率についてざっくりまとめてみた
ishikawa096
0
22
ChatGPT×AWS LambdaのSlack Botを社内運用してみた
ishikawa096
1
65
Other Decks in Programming
See All in Programming
Go1.26 go fixをプロダクトに適用して困ったこと
kurakura0916
0
320
PostgreSQL を使った快適な go test 環境を求めて
otakakot
0
400
CopilotKit + AG-UIを学ぶ
nearme_tech
PRO
1
130
守る「だけ」の優しいEMを抜けて、 事業とチームを両方見る視点を身につけた話
maroon8021
3
270
2026年は Rust 置き換えが流行る! / 20260220-niigata-5min-tech
girigiribauer
0
220
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
370
PJのドキュメントを全部Git管理にしたら、一番喜んだのはAIだった
nanaism
0
230
Rails Girls Tokyo 18th GMO Pepabo Sponsor Talk
yutokyokutyo
0
200
Go 1.26でのsliceのメモリアロケーション最適化 / Go 1.26 リリースパーティ #go126party
mazrean
1
350
要求定義・仕様記述・設計・検証の手引き - 理論から学ぶ明確で統一された成果物定義
orgachem
PRO
21
11k
maplibre-gl-layers - 地図に移動体たくさん表示したい
kekyo
PRO
0
170
Rubyと楽しいをつくる / Creating joy with Ruby
chobishiba
0
200
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
34
9.2k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.5k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.2k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
190
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
94
Ethics towards AI in product and experience design
skipperchong
2
210
Odyssey Design
rkendrick25
PRO
2
530
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
280
Un-Boring Meetings
codingconduct
0
220
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.8k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
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 ・テスト駆動開発(書籍)
ご清聴ありがとうござい ました テスト書こう!(自戒)