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
0
290
書評: 単体テストの考え方/使い方
HACK.BAR 8/26の発表資料です
https://hackbar.connpass.com/event/290968/
mikan
August 26, 2023
Tweet
Share
More Decks by mikan
See All by mikan
RepositoryのSSoT化
mikanichinose
0
32
Kotlin Multiplatform 始めました
mikanichinose
1
120
Web APIをなぜつくるのか
mikanichinose
0
1.9k
イベントをどう管理するか
mikanichinose
3
320
ライブラリでしかお目にかかれない珍しい実装
mikanichinose
2
420
Strong Skipping Mode によってrecompositionはどう変わったのか
mikanichinose
0
260
Modeling UiEvent
mikanichinose
0
61
UIの構成要素に関する考察
mikanichinose
0
59
再考: 監視可能オブジェクト
mikanichinose
0
74
Other Decks in Technology
See All in Technology
古き良き Laravel のシステムは関数型スタイルでリファクタできるのか
leveragestech
1
630
LLM とプロンプトエンジニアリング/チューターをビルドする / LLM, Prompt Engineering and Building Tutors
ks91
PRO
1
210
AI Agentを「期待通り」に動かすために:設計アプローチの模索と現在地
kworkdev
PRO
2
380
AI AgentOps LT大会(2025/04/16) Algomatic伊藤発表資料
kosukeito
0
120
AWSのマルチアカウント管理 ベストプラクティス最新版 2025 / Multi-Account management on AWS best practice 2025
ohmura
4
200
7,000名規模の 人材サービス企業における プロダクト戦略・戦術と課題 / Product strategy, tactics and challenges for a 7,000-employee staffing company
techtekt
0
260
DuckDB MCPサーバーを使ってAWSコストを分析させてみた / AWS cost analysis with DuckDB MCP server
masahirokawahara
0
540
ソフトウェア開発現代史: "LeanとDevOpsの科学"の「科学」とは何か? - DORA Report 10年の変遷を追って - #DevOpsDaysTokyo
takabow
0
200
10分でわかるfreeeのQA
freee
1
12k
Spice up your notifications/try!Swift25
noppefoxwolf
2
340
大AI時代で輝くために今こそドメインにディープダイブしよう / Deep Dive into Domain in AI-Agent-Era
yuitosato
1
270
20250413_湘南kaggler会_音声認識で使うのってメルス・・・なんだっけ?
sugupoko
1
380
Featured
See All Featured
Gamification - CAS2011
davidbonilla
81
5.2k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.6k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.3k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
13
660
Writing Fast Ruby
sferik
628
61k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
178
53k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
21k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Mobile First: as difficult as doing things right
swwweet
223
9.6k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
135
33k
What's in a price? How to price your products and services
michaelherold
245
12k
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 つの性質を持っている リファクタリング耐性 リグレッションに対する保護 迅速なフィードバック 保守性 → どのようなバランスで持つべきなのかが解説してある
最後に
全員読みましょう