Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
テスト駆動開発 輪読会 Vol.5
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
masyus_work
August 11, 2020
Programming
210
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
テスト駆動開発 輪読会 Vol.5
masyus_work
August 11, 2020
More Decks by masyus_work
See All by masyus_work
ふりかえりとチームクレドが僕らにもたらしてくれたもの
masyus
2
360
【オンライン】Clean Architecture 達人に学ぶソフトウェアの構造と設計 輪読会 #16
masyus
0
170
Clean Architecture 達人に学ぶソフトウェアの 構造と設計_第10回
masyus
0
280
【オンライン】Clean Architecture 達人に学ぶソフトウェアの構造と設計 輪読会 #1
masyus
0
220
Chrome拡張で便利ツール作ってたら、思いがけず社内ツールを作ることになった話
masyus
0
180
開発速度UP & エンジニアポートフォリオ作成を同時実現する為の取り組み
masyus
0
210
メール文面確認テストを作りながら、テストについて改めて考えてみた
masyus
0
220
Other Decks in Programming
See All in Programming
[Dev Group Paris Octobre 26] Agentforce, SIforce, Claudeforce, Slackbot… on s'y retrouve ?
nabondance
0
120
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
370
GraphQL の onError と Nullability のこれから
quramy
0
170
Kotlinの15年とServer-Side Kotlin
n_takehata
1
160
RAG の “R” を Swift で覗いてみる 〜「意味から探す」検索の仕組み〜
nao_randd
0
170
AI-Powered Domain-Driven Design
ziobrando
0
220
우리의 Nitro Modules는 당신의 Turbo Modules보다 아름답다
l2hyunwoo
0
110
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
230
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
28
34k
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
130
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
2
1.2k
あなたの await、OS まで届いてる? strace で覗く JavaScript の非同期
hasutosasaki
1
850
Featured
See All Featured
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
570
Everyday Curiosity
cassininazir
0
360
The Invisible Side of Design
smashingmag
301
52k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
640
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
590
The Mindset for Success: Future Career Progression
greggifford
PRO
0
540
KATA
mclloyd
PRO
35
16k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
The SEO identity crisis: Don't let AI make you average
varn
0
590
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
580
Paper Plane (Part 1)
katiecoart
PRO
2
12k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
530
Transcript
テスト駆動開発 輪読会 Vol.5 第25〜28章 2020/08/11 @masyus_work
1~24章まで学んできた テスト駆動開発のTipsを紹介 1. テスト(名詞) 2. 独立したテスト 3. TODOリスト 4. テストファースト
5. アサートファースト 6. テストデータ 7. 明示的なデータ 第25章 テスト駆動開発の パターン
第25章 テスト駆動開発のパターン 1. テスト(名詞) - テスト(動詞) = 評価する - 手動のニュアンス
- テスト(名詞) = 合格か不合格かを判定する手順 - ★自動のニュアンス 2. 独立したテスト - テスト同士は独立にしておかないと、1つのFailで後続のテストも連鎖 的にFailしてしまうから良くないよね
第25章 テスト駆動開発のパターン 3. TODOリスト - やるべきことを粗い粒度で書き出す - 「すぐやる」「あとで」「やる必要なし」に仕分け - テストケースは後回しにしない
4. テストファースト - 実装後にテストを書くことってあまりない - テストを先に書くと、設計について考えたりスコープ制御するように なるので、テストを書くこと自体のストレスを減らせる上に、もっとテ ストを書くようになる
第25章 テスト駆動開発のパターン 5. アサートファースト - 実装した機能がどんな結果を返すかを評価するところから書く - 正しい結果とは何か・それをどう検証するかを設計に起こしやすく なる 6.
テストデータ - 2 (第1引数) - 3 (第2引数) = -1 - 3 (第1引数) -2 (第2引数) = 1 - 本番に近いデータを準備する - 並列試験中やリファクタリング前後の結果を評価する際便利
第25章 テスト駆動開発のパターン 7. 明示的なデータ - テストでマジックナンバーを使うのはアリ - 入力数字と期待値計算に使われた数字の関係性が読み取りやす い -
仮実装もやりやすくなる
テストを書き始めていくためのTips 1. 1歩を示すテスト 2. はじめのテスト 3. 説明的なテスト 4. 学習用テスト 5.
脱線はTODOリストへ 6. 回帰テスト 7. 休憩・やり直す・安い机に良い椅子 第26章 レッドバーの パターン
第26章 レッドバーのパターン 1. 一歩を示すテスト - 明白なものを取り除いた後に残るテストが、これから書くテスト - トップダウン or ボトムアップどちらからアプローチしても良い
2. はじめのテスト - 本物に近いテストから書かない - すぐに書けそうなテストから始める 3. 説明的なテスト - TDDを普及させるには、テストコードのように知識を共有する
第26章 レッドバーのパターン 4. 学習用テスト - 依存パッケージのテストを書いておくと、バージョンアップ後の機能変 化を検知しやすくなる 5. 脱線はTODOリストへ -
脇道に逸れたくなるけど、、仕事に戻りましょう 6. 回帰テスト - 機能追加等の際、システム全体のチェック作業に立ち返って想定外の 異常が発生していないかを調べるテスト - 不具合報告 → 不具合を再現させる最小テストを書こう
第26章 レッドバーのパターン 7. 休憩・やり直す・安い机に良い椅子 - 休憩: - アイデアを得るために必要 - 今日のゴールは妥当だったか?
- やり直す: - 手詰まったら思い切って実装し直すことも手 - 安い机に良い椅子: - 椅子はもちろんだが、机もこだわったほうが良いと思う(持論)
テストを上手に書く上での様々なTips 1. 小さいテスト 2. Mock Objectパターン 3. Self Shuntパターン 4.
Log Stringパターン 5. Crash Test Dummyパターン 6. 失敗させたままのテスト 7. きれいなチェックイン 第27章 テスティングの パターン
第27章 テスティングのパターン 1. 小さいテスト - そもそも大きなテストを書く必要がない実装を心がけるべし 2. Mock Objectパターン -
ネットワーク越しのリソースに依存させない - テスト速度UP、信頼性向上、可読性向上 3. Self Shuntパターン - テストケース自身がMock Objectのように振る舞う書き方で、あるオ ブジェクトが他のオブジェクトときちんとやりとりしているかをテストでき る
第27章 テスティングのパターン 4. Log Stringパターン - メソッドが正しい順序で呼び出されているかをテストするパターンで、 文字列を活用する - Observerパターンの通知順番テストで使える
5. Crash Test Dummyパターン - 仮実装でシミュレートする。例外テストする際に便利 - 無名クラスはPHPでも7以降からサポートされている
第27章 テスティングのパターン 6. 失敗させたままのテスト - 実装が途中でもコードを書くのを終わらせる時に有効 - 最後に書いたテストをわざと失敗させることで、次回コードを書く際にど こから着手すべきかの目印にする -
ただし個人で開発している時に限る 7. きれいなチェックイン - チームで開発している場合はテストを全て通した上で終えること
速やかにテストをグリーンにするためのTips 1. 仮実装を経て本実装へ 2. 三角測量 3. 明白な実装 4. 一から多へ 第28章
グリーンバーの パターン
第28章 グリーンバーのパターン 1. 仮実装を経て本実装へ - 動いていることには、動かないことよりも価値がある - 心理的に安全 - 目の前の問題に集中できる
2. 三角測量 - 仮実装から本実装へ移行させる為に有用
第28章 グリーンバーのパターン 3. 明白な実装 - 仮実装や三角測量せずともすぐに書けるコードは書いちゃおう - まずは動くコードを、次にきれいなコードを 4. 一から多へ
- オブジェクトのコレクションを扱う操作を実装する時に有効 - まずは単数が通るように実装 - 続いて複数が通るように実装し直す - 変更の分離も可能
1. 実際にテストコードを書く時、何に気をつけるべきかが分かった 2. テストコードを書く時にマジックナンバーは意図して頻繁に使っていたので 「やっぱりな〜」と思った 3. 仮実装、大いにアリ。実戦でもっと活用したい 4. Exceptionのテストは、現場で十分やれてない気がしている。今後積極的に 書いていく
5. Self Shuntパターンでのテストコードはあまり発想が無かった。現場に活か す 第25~28章を読んでみての感想