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
mikan
August 26, 2023
Technology
490
0
Share
書評: 単体テストの考え方/使い方
HACK.BAR 8/26の発表資料です
https://hackbar.connpass.com/event/290968/
mikan
August 26, 2023
More Decks by mikan
See All by mikan
Navigation3でViewModelにデータを渡す方法
mikanichinose
0
660
「脳に収まるコードの書き方」を読んで学んだこと
mikanichinose
1
180
RepositoryのSSoT化
mikanichinose
0
86
Kotlin Multiplatform 始めました
mikanichinose
1
140
Web APIをなぜつくるのか
mikanichinose
0
3.6k
イベントをどう管理するか
mikanichinose
3
390
ライブラリでしかお目にかかれない珍しい実装
mikanichinose
2
490
Strong Skipping Mode によってrecompositionはどう変わったのか
mikanichinose
0
370
Modeling UiEvent
mikanichinose
0
130
Other Decks in Technology
See All in Technology
Azure PortalなどにみるWebアクセシビリティ
tomokusaba
0
260
ふりかえりがなかった職能横断チームにふりかえりを導入してみて学んだこと 〜チームのふりかえりを「みんなで未来を考える場」にするプロローグ設計〜
masahiro1214shimokawa
0
400
聞き手の目線で考えるプロポーザル
takefumiyoshii
0
400
明日からドヤれる!超マニアックなAWSセキュリティTips10連発 / 10 Ultra-Niche AWS Security Tips
yuj1osm
0
420
建設的な現実逃避のしかた / How to practice constructive escapism
pauli
4
330
Zero-Downtime Migration: Moving a Massive, Historic iOS App from CocoaPods to SPM and Tuist without Stopping Feature Delivery
kagemiku
0
240
NgRx SignalStore: The Power of Extensibility
rainerhahnekamp
0
230
プロンプトエンジニアリングを超えて:自由と統制のあいだでつくる Platform × Context Engineering
yuriemori
0
190
こんなアーキテクチャ図はいやだ / Anti-pattern in AWS Architecture Diagrams
naospon
1
320
申請待ちゼロへ!AWS × Entra IDで実現した「権限付与」のセルフサービス化
mhrtech
2
300
3つのボトルネックを解消し、リリースエンジニアリングを再定義した話
nealle
0
450
AI時代に新卒採用、はじめました/junior-engineer-never-die
dmnlk
0
270
Featured
See All Featured
Are puppies a ranking factor?
jonoalderson
1
3.3k
We Are The Robots
honzajavorek
0
210
Game over? The fight for quality and originality in the time of robots
wayneb77
1
160
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Raft: Consensus for Rubyists
vanstee
141
7.4k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
260
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
110
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
The SEO identity crisis: Don't let AI make you average
varn
0
440
The untapped power of vector embeddings
frankvandijk
2
1.7k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
sira's awesome portfolio website redesign presentation
elsirapls
0
210
Transcript
書評 : 単体テストの考え方 / 使い方 HACK.BAR 福岡 08/26 mikan( 一瀬喜弘)
自己紹介 object Mikan { val name = " 一瀬喜弘" val
company = "karabiner.tech" val hobby = listOf( " 漫画", " アニメ", " ゲーム", " 折り紙", "OSS 開発・コントリビュート", ) }
今日は この本の 紹介をします
まず始めに
エンジニア 全員 読んだほうがいい
None
t_wada さんもニッコリ 「この本を読めば私が言いそうなことが結構 載っている」 「失職の危機その1 」
この本を読むと以下のような疑問を解決してくれます " 単体" テストってどういう粒度なんだ? テストメソッドの命名ってなにが正しいんだ? " 良い" 単体テストを書くためには何を意識すればいいのか? モックとかスタブの使って良いとき/ 悪いときっていつだ?
前提認識 プロダクションコードもテストコードも全て 負債 書けば書くほど保守性は下がる = 次の開発はより時間がかかる確立が高くなる
テストの必要性
テストの必要性 開発を持続可能にする
持続可能とは?
持続不可能な状態 = 次の開発に 掛かるコストが無限大
None
無限大に発散しないようにする 戦略が 自動 テスト ` `
単体テストとは ?
単体と呼ばれる少量のコードを検証する 実行時間が短い 隔離された状態で実行可能
" 隔離された状態 " ?
" 単体 " ?
古典学派 vs ロンドン学派
古典学派
隔離 = 他のテストケースが影響 を与えないように隔離する 順番を変えても結果が同じ 依存はテストケース実行前に毎回作る
単体 = 振る舞い あるインプットを与えたときに期待したアウ トプットが出てくることを検証する 戻り値 or 状態 を検証
ロンドン学派
隔離 = テスト対象をそれ以外の 依存から隔離する 依存はすべてモックにする
単体 = クラス アウトプットが期待通りか 協力者オブジェクトのメソッドを決った回数 実行したか
この本は古典学派の立場を取っています → 理由は読んだら書いてあります
良いテストコードは 4 つの性質を持っている リファクタリング耐性 リグレッションに対する保護 迅速なフィードバック 保守性 → どのようなバランスで持つべきなのかが解説してある
最後に
全員読みましょう