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
費用対効果の高いテストコードを書くために意識したこと.pdf
Search
Kaoru Hotate
December 16, 2019
Programming
3
4.9k
費用対効果の高いテストコードを書くために意識したこと.pdf
2019/12/16 年末だよ Android/iOS Test Night - 2019
https://testnight.connpass.com/event/155429/
Kaoru Hotate
December 16, 2019
Tweet
Share
More Decks by Kaoru Hotate
See All by Kaoru Hotate
20240607_人を動かし続ける力_ピープルマネジメントへの内発的動機づけの工夫
hotatekaoru
2
400
20210528_MedPeer_事業成長を加速させたエンジニアリングのウラ側
hotatekaoru
0
1.3k
新規プロジェクトのリードエンジニアになるために
hotatekaoru
6
2.7k
リファクタリングチャンスを探せ
hotatekaoru
2
490
Dependabotからの脱却
hotatekaoru
0
460
Fat Modelに対処する 6つのリファクタリングパターン
hotatekaoru
13
4.4k
MobPro2Points
hotatekaoru
0
110
ViewModelをプロダクトに導入した🤖
hotatekaoru
1
220
僕らのリファクタリングは裏切らない
hotatekaoru
2
2.7k
Other Decks in Programming
See All in Programming
Reduxモダナイズ 〜コードのモダン化を通して、将来のライブラリ移行に備える〜
pvcresin
2
680
overlayPreferenceValue で実現する ピュア SwiftUI な AdMob ネイティブ広告
uhucream
0
110
uniqueパッケージの内部実装を支えるweak pointerの話
magavel
0
920
CI_CD「健康診断」のススメ。現場でのボトルネック特定から、健康診断を通じた組織的な改善手法
teamlab
PRO
0
180
LLMとPlaywright/reg-suitを活用した jQueryリファクタリングの実際
kinocoboy2
4
670
プログラマのための作曲入門
cheebow
0
540
Go Conference 2025: Goで体感するMultipath TCP ― Go 1.24 時代の MPTCP Listener を理解する
takehaya
7
1.6k
2分台で1500examples完走!爆速CIを支える環境構築術 - Kaigi on Rails 2025
falcon8823
3
3k
タスクの特性や不確実性に応じた最適な作業スタイルの選択(ペアプロ・モブプロ・ソロプロ)と実践 / Optimal Work Style Selection: Pair, Mob, or Solo Programming.
honyanya
3
140
Serena MCPのすすめ
wadakatu
4
900
10年もののAPIサーバーにおけるCI/CDの改善の奮闘
mbook
0
770
WebエンジニアがSwiftをブラウザで動かすプレイグラウンドを作ってみた
ohmori_yusuke
0
170
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.7k
A designer walks into a library…
pauljervisheath
209
24k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Optimizing for Happiness
mojombo
379
70k
4 Signs Your Business is Dying
shpigford
185
22k
What's in a price? How to price your products and services
michaelherold
246
12k
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.9k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.2k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Transcript
අ༻ରޮՌͷߴ͍ ςετίʔυΛॻͨ͘Ίʹߟ͑ͨ͜ͱ ,BPSV)PUBUF!QVSVOLBPSV ͩΑ"OESPJEJ045FTU/JHIU UFTU@OJHIU 1
อཱ֜ ,BPSV)PUBUF 5XJUUFS!QVSVOLBPSV ϝυϐΞגࣜձࣾ ‣ 3VCZ ‣ J04
‣ "OESPJEϲ݄ ࣗݾհ 2
͖͔͚ͬ 3 6OJU5FTU͔Βॻ͍͍ͯ͜͏ .PEFM7JFX.PEFM͔Β ॻ͖·͠ΐ͏ ॻ͚ΔՕॴ͔Βॻ͍͍ͯ͜͏ όάͷଟ͍Օॴ͔Βॻ͜͏ શ෦ਖ਼ͦ͠͏ ˞ͦͷϓϩδΣΫτͷঢ়گͰ
͖͔͚ͬ 4 ςετͷʮԿΛΔ͔ʯʮԿ͔ΒΔ͔ʯɺ ϓϩδΣΫτʹΑͬͯҟͳΔͷͰʁ ‣ ΞϓϦͷۀछɾαʔϏεͷ༰ ‣ ϓϩμΫτϥΠϑαΠΫϧ ‣ खಈςετͰͷ୲อͷํ
ςετίʔυΛॻ͘త͔Βɺ ͲͷςετΛॻ͖͔͘அ͠ͳ͍ͱɺ ςετͷఆண࣮ݱͰ͖ͳͦ͞͏
ࠓ͢͜ͱ 5 ͕୲͍ͯ͠ΔαʔϏεʹɺ ͔ΒςετίʔυΛॻ͘͜ͱʹͳΓ·ͨ͠ ʮඅ༻ରޮՌͷߴ͍ςετίʔυʯͱԿ͔ʁʹ͍ͭͯߟ͑ɺ ࣮ફͨ݁͠Ռىͬͨ͜͜ͱΛ͠·͢
ΞδΣϯμ 6 ϓϩδΣΫτͷঢ়گΛѲ͢Δ ςετίʔυͷతΛߟ͑Δ ςετίʔυͷํΛ·ͱΊΔ ࣮ࡍʹى͖ͨ͜ͱΛৼΓฦΔ
͓ͼ 7 ͷ༰্ɺࣗͷϓϩδΣΫτͷઆ໌͕ଟ͘ͳ͍ͬͯ·͢ ڵຯͳ͍ਓ͍Βͬ͠ΌΔͱࢥ͍·͕ྃ͢͝ঝ͍ͩ͘͞
ϓϩδΣΫτͷঢ়گΛѲ͢Δ 8
αʔϏεઆ໌ 9
ͬ͘͟Γͷػೳઆ໌ 10 B ձһొɾϩάΠϯػೳ C ΧϝϥͰࡱӨͨ͠ॲํᝦͷૹ৴ػೳ D ϓογϡ௨डऔΓػೳ E νϟοτϝοηʔδૹड৴ػೳ
"OESPJE.77.Λ࠾༻ 7JFX7JFX.PEFM3FQPTJUPSZ.PEFM
αʔϏεͷϓϩμΫτϥΠϑαΠΫϧ 11 IUUQTCJ[IJOUKQLFZXPSEΑΓ ͜ͷลʁ ˞͋͘·ͰϓϩδΣΫτͰͷओ؍తͳҙݟͰ͢
ςετίʔυͷతΛߟ͑Δ 12
13 ςετΛॻͭ͘ͷత Jਖ਼͘͠ಈ͘͜ͱΛ୲อ͢Δ JJ։ൃ࣌ͷಈ࡞ݕূΛ͘͢Δ JJJϨϏϡʔ࣌ؒΛ͘͢Δ JWΤϯδχΞ͕ײ͡Δਫ਼ਆతෛ୲ΛݮΒ͢ ˞ίʔυͷ࣭Λ୲อ͢Δɾ༷Λ໌จԽ͢ΔͳͲɺଞͷཧ༝ߟ͑ΒΕΔ͕ɺ ςετΛॻ͘෭࣍తͳϝϦοτͩͱߟ͑ͨͷͰɺআ֎͍ͯ͠·͢
Jਖ਼͘͠ಈ͘͜ͱΛ୲อ͢Δ 14 త ‣ όά͕ϦϦʔε͞ΕΔ֬ΛݮΒ͢ ‣ όάൃੜʙमਖ਼ྃʹ͔͚Δ࣌ؒΛݮΒ͢ ‣ σάϨΛ͙
ςετίʔυͷಛ ‣ աڈͷόάൃੜසͷߴ͍Օॴ͔Βॻ͘ ‣ ෳࡶͳΫϥεը໘͔Βॻ͘ ‣ ݺͼग़͞ΕΔॲཧ͕ଟ͍Օॴ͔Βॻ͘
Jਖ਼͘͠ಈ͘͜ͱΛ୲อ͢Δ 15 ͲΜͳϓϩδΣΫτʹద͍ͯ͠Δ͔ <>͘ଓ͚Δ༧ఆͷαʔϏεͰ͋Δ <>ҙਤͨ͠ڍಈʹͳΒͳ͍࣌ͷӨڹɾӨڹֹ͕େ͖͍ <>ػೳमਖ਼͕ଟ͍ <>ϥΠϒϥϦͷΞοϓσʔτΛ͢Δස͕ߴ͍ <>2"νʔϜ͕͍ͳ͍ ˓ º
º ˚ ˓
JJ։ൃ࣌ͷಈ࡞ݕূΛ͘͢Δ 16 త ‣ ࣮ػͰͷಈ࡞ݕূ͕໘ͳՕॴʹରͯ͠ɺ ςετίʔυͰͷڍಈ֬ೝΛߦ͏ ‣ ֬ೝ࿙ΕΛ͙ Δ͜ͱ
‣ ಈ࡞ݕূ͕໘ͳ෦ͷ6OJU5FTUΛॻ͘ ΤϥʔॲཧϨΞέʔεͷڍಈ୲อͳͲ
JJ։ൃ࣌ͷಈ࡞ݕূΛ͘͢Δ 17 ͲΜͳϓϩδΣΫτʹద͍ͯ͠Δ͔ <>"1*ͷNPDLڥ͕ͳ͍ <>ෳࡶͳભҠέʔε͕ଟ͍ <>ΤϯδχΞ͕ಈ࡞ݕূΛαϘΓ͕ͪ ˓ ˚ ˚
JJJϨϏϡʔ࣌ؒΛ͘͢Δ 18 త ‣ ϨϏϡʔ࣌ʹɺςετίʔυͰ୲อ͞Ε͍ͯΔՕॴͷ खಈνΣοΫΛߦ͏࣌ؒΛ͘͢Δ Δ͜ͱ ‣ ෳࡶͳॲཧɺݟ͚ͨͩͰࣗ໌Ͱͳ͍Օॴ͔Β6OJU5FTUΛॻ͘
JJJϨϏϡʔ࣌ؒΛ͘͢Δ 19 ͲΜͳϓϩδΣΫτʹద͍ͯ͠Δ͔ <>ϨϏϡʔจԽ͕͋Δ ଞʹཁҼ͋Γͦ͏͚ͩͲɾɾɾ º
JWΤϯδχΞ͕ײ͡Δਫ਼ਆతෛ୲ΛݮΒ͢ 20 త ‣ ϦϦʔε࣌ʹɺΤϯδχΞʹ͔͔ΔաͷۓுΛ΄͙͢ ‣ ςετͰ୲อ͞Ε͍ͯΔͱ͍͏҆৺ײΛ༩͑Δ Δ͜ͱ ‣
ࣦഊ࣌ʹӨڹͷେ͖͍Օॴ͔Βɺ6*5FTU6OJU5FTUΛॻ͘
JWΤϯδχΞ͕ײ͡Δਫ਼ਆతෛ୲ΛݮΒ͢ 21 ͲΜͳϓϩδΣΫτʹద͍ͯ͠Δ͔ <>ҙਤͨ͠ڍಈʹͳΒͳ͍࣌ͷӨڹɾӨڹֹ͕େ͖͍ <>ϦϦʔεલʹυΩυΩ͢Δ <>ϦϦʔεલʹख͕͑Δ <>ϦϦʔεલʹׇ͕͘ ˓ ˓ ˓
˓
ςετίʔυͷํΛ·ͱΊΔ 22
23 ςετΛॻͭ͘ͷత Jਖ਼͘͠ಈ͘͜ͱΛ୲อ͢Δ JJ։ൃ࣌ͷಈ࡞ݕূΛ͘͢Δ JJJϨϏϡʔ࣌ؒΛ͘͢Δ JWΤϯδχΞ͕ײ͡Δਫ਼ਆతෛ୲ΛݮΒ͢
24 ςετΛॻͭ͘ͷత Jਖ਼͘͠ಈ͘͜ͱΛ୲อ͢Δ JJ։ൃ࣌ͷಈ࡞ݕূΛ͘͢Δ JJJϨϏϡʔ࣌ؒΛ͘͢Δ JWΤϯδχΞ͕ײ͡Δਫ਼ਆతෛ୲ΛݮΒ͢
25 ԿΛΔ͔ʢϨΠϠʔ͝ͱͷΓ͚ʣ ਖ਼͘͠ಈ͘͜ͱΛ ୲อ͢Δ ಈ࡞ݕূΛ ͘͢Δ ਫ਼ਆతෛ୲Λ ݮΒ͢ 7JFX ˚
º ˚ 7JFX.PEFM ˓ ˚ ˚ 3FQPTJUPSZ ˓ ˓ ˓ .PEFM ˓ ˚ ˓ 3FQPTJUPSZɺඞͣ6OJU5FTUΛॻ͘ .PEFMɺෳࡶͳ෦͔Β6OJU5FTUΛॻ͘
26 ԿΛΔ͔ʢػೳ͝ͱͷΓ͚ʣ ਖ਼͘͠ಈ͘͜ͱΛ ୲อ͢Δ ಈ࡞ݕূΛ ͘͢Δ ਫ਼ਆతෛ୲Λ ݮΒ͢ ձһొ ˓
˓ ˕ ॲํᝦը૾ૹ৴ ˓ ˚ ˓ ௨डऔΓ ˚ ˓ ˚ ϝοηʔδૹड৴ ˚ ˚ º ʮձһొʯ6*5FTU6OJU5FTUΛཏ͢Δ ʮॲํᝦը૾ૹ৴ʯ6OJU5FTUΛཏ͢Δ
27 ԿΛΔ͔ʢ·ͱΊʣ ্͔Βॱʹߦ͏ J3FQPTJUPSZͷ6OJU5FTUΛॻ͘ JJʮձһొʯͷ6OJU5FTU6*5FTUΛॻ͘ JJJෳࡶͳ.PEFMͷ6OJU5FTUΛॻ͘ JWʮॲํᝦը૾ૹ৴ʯͷ6OJU5FTUΛॻ͘
࣮ࡍʹى͖ͨ͜ͱΛৼΓฦΔ 28
29 ԿΛΔ͔ʢ·ͱΊʣ ্͔Βॱʹߦ͏ J3FQPTJUPSZͷ6OJU5FTUΛॻ͘ JJʮձһొʯͷ6OJU5FTU6*5FTUΛॻ͘ JJJෳࡶͳ.PEFMͷ6OJU5FTUΛॻ͘ JWʮॲํᝦը૾ૹ৴ʯͷ6OJU5FTUΛॻ͘ ձһొϑϩʔม͑Α͏
30 ײͨ͜͡ͱ ಛʹ࠷ॳͷϑΣʔζ͔ΒςετΛॻ͍͍ͯ͘߹ɺ ϏδωεαΠυͱίϛϡχέʔγϣϯΛͱͬͯɺ ࠷ળͷςετํΛࡦఆ͍ͯ͜͠͏ɻ ઌਓͷܙʹԊͬͯɺී௨ʹ࣮͍͚ͯ͠ ͍͍ײ͡ͷςετํ͕ݐͯΒΕͨؾ͕͢Δɻ ςετίʔυΛఆணͤ͞Δͱ͍͏͜ͱΛॏࢹ͢ΔͷͰ͋Εɺ ͳͥΔ͔Λɺ୲ऀ͕͖ͪΜͱཧղ͍ͯ͠Δ͖ɻ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ 31