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
ピラミッド、アイスクリームコーン、SMURF: 自動テストの最適バランスを求めて / Pyra...
Search
Takuto Wada
PRO
October 29, 2024
Programming
10
2.1k
ピラミッド、アイスクリームコーン、SMURF: 自動テストの最適バランスを求めて / Pyramid Ice-Cream-Cone and SMURF
2024年10月29日(火)13:00 ~ 14:30
バルテス共催セミナー「開発失敗につながる偏ったテストしてませんか?プロが教える本当に考えるべきテストバランスのとり方」
Takuto Wada
PRO
October 29, 2024
Tweet
Share
More Decks by Takuto Wada
See All by Takuto Wada
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
88
52k
The Clean ArchitectureがWebフロントエンドでしっくりこないのは何故か / Why The Clean Architecture does not fit with Web Frontend
twada
PRO
79
30k
組織に自動テストを書く文化を根付かせる戦略(2024冬版) / Building Automated Test Culture 2024 Winter Edition
twada
PRO
33
11k
組織に自動テストを書く文化を根付かせる戦略(2024秋版) / Building Automated Test Culture 2024 Autumn Edition
twada
PRO
14
6.7k
これまでと違う学び方をしたら挫折せずにRustを学べた話 / Programming Rust techramen24conf LT
twada
PRO
33
28k
開発生産性の観点から考える自動テスト(2024/06版) / Automated Test Knowledge from Savanna 202406 Findy dev-prod-con edition
twada
PRO
36
27k
自動テスト実行結果の目的を整理する / Organizing objectives of automated test results
twada
PRO
14
3.4k
変更容易性と理解容易性を支える自動テスト(2024/02版) / Automated Test Knowledge from Savanna 202402 YAPC::Hiroshima edition
twada
PRO
22
14k
実録レガシーコード改善 / Working with Legacy Code: the True Record
twada
PRO
112
52k
Other Decks in Programming
See All in Programming
Language Server と喋ろう – TSKaigi 2025
pizzacat83
2
590
少数精鋭エンジニアがフルスタック力を磨く理由 -そしてAI時代へ-
rebase_engineering
0
120
がんばりすぎないコーディングルール運用術
tsukakei
1
120
CursorとDevinが仲間!?AI駆動で新規プロダクト開発に挑んだ3ヶ月を振り返る / A Story of New Product Development with Cursor and Devin
rkaga
5
1.9k
Zennの運営完全に理解した #完全に理解したTalk
wadayusuke
1
110
Proxmoxをまとめて管理できるコンソール作ってみました
karugamo
1
380
CRUD から CQRS へ ~ 分離が可能にする柔軟性
tkawae
0
220
Perlで痩せる
yuukis
1
580
JVM の仕組みを理解して PHP で実装してみよう
m3m0r7
PRO
1
240
ワイがおすすめする新潟の食 / 20250530phpconf-niigata-eve
kasacchiful
0
170
推論された型の移植性エラーTS2742に挑む
teamlab
PRO
0
130
JSAI2025 RecSysChallenge2024 優勝報告
unonao
1
340
Featured
See All Featured
Fontdeck: Realign not Redesign
paulrobertlloyd
84
5.5k
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Product Roadmaps are Hard
iamctodd
PRO
53
11k
Rebuilding a faster, lazier Slack
samanthasiow
81
9k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
52
2.8k
A Tale of Four Properties
chriscoyier
159
23k
YesSQL, Process and Tooling at Scale
rocio
172
14k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
105
19k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.2k
Code Review Best Practice
trishagee
68
18k
GraphQLとの向き合い方2022年版
quramy
46
14k
Transcript
ϐϥϛουɺΞΠεΫϦʔϜίʔϯɺ4.63' ࣗಈςετͷ࠷దόϥϯεΛٻΊͯ 5BLVUP8"%" 0DU !όϧςεڞ࠵ηϛφʔ !U@XBEB !UXBEB 📷🙆 🙆 !UXBEB
JEUXBEB
ͳͥࣗಈςετΛ ॻ͘ͷͩΖ͏͔
IUUQTXXX fl JDLSDPNQIPUPTNEHSPVQ ࣗಈςετΛॻ͘ओతࢦඪΛʮίετݮʯʹ͢Δͱɺظతʹࣗಈς ετͷֶशίετɺதظతʹอकίετʹΑͬͯࢥͬͨΑ͏ͳίετݮޮ Ռ͕ಘΒΕͣɺखಈςετʹΔͱ͍͏அΛͯ͠͠·͍͕ͪͰ͢ ࣗಈςετҎ֎ͷٕज़ࢪࡦͰίετݮΛओతʹ͢Δͱࣦഊ͕ͪ͠Ͱ͢ ΞϯνύλʔϯίετݮΛओతʹ͢Δ
IUUQTXXXPSFJMMZDPKQCPPLT ʰ(PPHMFͷιϑτΣΞΤϯδχΞϦϯάʱQ ࣗಈςετͷಈػৗʹมԽΛՄೳʹ͢ΔͨΊ
IUUQTUXJUUFSDPNUPLPSPUFOTUBUVT มߋ༰қੑͷߴ͍ιϑτΣΞʹΑΔΞδϦςΟͷ֫ಘ
ͯ͢ΛΞδϟΠϧͳܗͰػೳͤ͞Δʹɺ༏Εͨઃܭʹ͚ͨϓϥΫςΟεΛ ࣮ફ͢Δඞཁ͕͋Γ·͢ɻͱ͍͏ͷɺ༏ΕͨઃܭʹΑͬͯมߋ͕༰қʹͳΔͨ ΊͰ͢ɻͦͯ͠มߋ͕༰қͰ͋Δ߹ɺ͋ΒΏΔϨϕϧͰ᪳ͳ͘ௐ͕Մೳʹ ͳΔͷͰ͢ɻ ͦΕ͕ͦ͜ΞδϦςΟʔͱ͍͏ͷͳͷͰ͢ɻ ʰୡਓϓϩάϥϚʔୈ൛ʱQ ΞδϦςΟͷຊ࣭͋ΒΏΔϨϕϧͰ᪳ͳ͘มԽ͢Δ
ͳͥࣗಈςετΛॻ͘ͷ͔ 🙅 ίετΛݮ͢ΔͨΊ 🙆 ૉૣ᪳͘ͳ͘มԽ͠ଓ͚ΔྗΛಘΔͨΊ
৴པੑͷߴ͍࣮ߦ݁Ռʹ ͍࣌ؒͰ౸ୡ͢Δঢ়ଶΛอͭ͜ͱͰɺ ։ൃऀʹࠜڌ͋Δࣗ৴Λ༩͑ɺ ιϑτΣΞͷΛ࣋ଓՄೳʹ͢Δ͜ͱ ࣗಈςετͷత
৴པੑͷߴ͍࣮ߦ݁Ռʹ ͍࣌ؒͰ౸ୡ͢Δঢ়ଶΛอͭ͜ͱͰɺ ։ൃऀʹࠜڌ͋Δࣗ৴Λ༩͑ɺ ιϑτΣΞͷΛ࣋ଓՄೳʹ͢Δ͜ͱ ࣗಈςετͷత
ςετࣗಈԽͱاۀͷۀͷҼՌؔ IUUQTXXXBNB[PODPKQEQ ςετͷࣗಈԽʹ͓͍ͯɺ*5ύϑΥʔϚϯεͷ ༧ଌईͱͳΓ͏Δ͜ͱ͕໌ͨ͠ͷ࣍ͷͭ ৴པੑͷߴ͍ࣗಈςετΛඋ͑Δ͜ͱ ։ൃऀओମͰड͚ೖΕςετΛ࡞ɾཧ͠ɺ खݩͷ։ൃڥͰ؆୯ʹ࠶ݱɾमਖ਼Ͱ͖Δ͜ͱ ʰ-FBOͱ%FW0QTͷՊֶʱQʢ˞༁ΛҰ෦มߋʣ
IUUQTXXXBNB[PODPKQEQ ςετʹ߹֨ͨ͠ιϑτΣΞͰ͋ΕϦϦʔεՄೳɺෆ߹֨Ͱ͋Εॏେͳ ෆ۩߹͕͋ΔɺͱνʔϜ͕֬৴Ͱ͖ΔΑ͏ͳςετΛ࣮ࢪ͍ͯ͠Δ͜ͱ ޡݕʢِཅੑGBMTFQPTJUJWFʣݟಀ͠ʢِӄੑGBMTFOFHBUJWFʣ͕ଟ ͘ɺ৴པੑʹ͚ܽΔςετεΠʔτ͕͋·Γʹଟ͗͢Δ ৴པͷߴ͍ςετεΠʔτΛ࡞Γ্͛Δܧଓతͳྗͱ ࢿՁ͕͋Δ ৴པੑͷߴ͍ࣗಈςετΛඋ͑Δ͜ͱ
ʰ-FBOͱ%FW0QTͷՊֶʱQʢ˞༁ΛҰ෦มߋʣ
ޭͱࣦഊɺِཅੑͱِӄੑ IUUQTHJIZPKQEFWTFSJBMTBWBOOBMFUUFS Օॴͷಛఆͱम෮ σϓϩΠɺϚʔδ σϓϩΠɺϚʔδ Օॴͷಛఆͱम෮
৴པੑͷߴ͍࣮ߦ݁Ռʹ ͍࣌ؒͰ౸ୡ͢Δঢ়ଶΛอͭ͜ͱͰɺ ։ൃऀʹࠜڌ͋Δࣗ৴Λ༩͑ɺ ιϑτΣΞͷΛ࣋ଓՄೳʹ͢Δ͜ͱ ࣗಈςετͷత
Ϣχοτ ΠϯςάϨʔγϣϯ && ίετ ࣮ੑ ςετέʔε ߴ
ߴ ܾఆੑ ςετϐϥϛου
ςετϐϥϛουͱΞΠεΫϦʔϜίʔϯΞϯνύλʔϯ IUUQTXBUJSNFMPOCMPHJOUSPEVDJOHUIFTPGUXBSFUFTUJOHJDFDSFBNDPOF
ςετࣗಈԽͱاۀͷۀͷҼՌؔ IUUQTXXXBNB[PODPKQEQ ςετͷࣗಈԽʹ͓͍ͯɺ*5ύϑΥʔϚϯεͷ ༧ଌईͱͳΓ͏Δ͜ͱ͕໌ͨ͠ͷ࣍ͷͭ ৴པੑͷߴ͍ࣗಈςετΛඋ͑Δ͜ͱ ։ൃऀओମͰड͚ೖΕςετΛ࡞ɾཧ͠ɺ खݩͷ։ൃڥͰ؆୯ʹ࠶ݱɾमਖ਼Ͱ͖Δ͜ͱ ʰ-FBOͱ%FW0QTͷՊֶʱQʢ˞༁ΛҰ෦มߋʣ
IUUQTXXXPSFJMMZDPKQCPPLT ʰγεςϜӡ༻ΞϯνύλʔϯʱQ ͳͥΞΠεΫϦʔϜίʔϯʹͳͬͯ͠·͏ͷ͔ߏత
IUUQTXXXUIPVHIUXPSLTDPNSBEBSUFDIOJRVFTCSPBEJOUFHSBUJPOUFTUT &&ςετͷաࢿ5FDIOPMPHZ3BEBSͰʮ)0-%ʯʹϨʔςΟϯά͞Εͨ
IUUQTXXXUIPVHIUXPSLTDPNSBEBSUFDIOJRVFTCSPBEJOUFHSBUJPOUFTUT ςετࣗಈԽͷྗশࢍʹ͢Δ͕ɺࢲ͕ͨͪޮՌతͰͳ͍ͱߟ͑Δൣͳ౷߹ςετ ʢ˞&&ςετʣʹաࢿ͍ͯ͠Δ৫Λଟ͘ݟ͔͚Δɻ ͜ͷΑ͏ͳςετɺඞཁͳΠϯϑϥɺσʔλɺαʔϏεΛͯ͢උ͑ͨϑϧػೳͷςετ ڥΛඞཁͱ͢ΔͨΊɺ໌Β͔ʹίετ͕͔͔Δɻ ͜ΕΒͯ͢ͷґଘؔͷదͳόʔδϣϯΛཧ͢Δʹɺ͔ͳΓͷௐΦʔόʔϔου͕ ඞཁͱͳΓɺϦϦʔεαΠΫϧ͕͘ͳΓ͕ͪͰ͋Δɻ ࠷ޙʹɺςετͦͷͷ͕੬͘ʹཱͨͳ͍͜ͱଟ͍ɻྫ͑ɺςετ͕ࣦഊͨ͠ͷ͕৽͠ ͍ίʔυͷ͍ͤͳͷ͔ɺόʔδϣϯͷෆҰகʹΑΔґଘؔͷ͍ͤͳͷ͔ɺڥͷ͍ͤͳͷ͔ Λஅ͢Δʹ࿑ྗ͕͔͔ΓɺΤϥʔϝοηʔδ͕ΤϥʔͷݪҼΛಥ͖ࢭΊΔॿ͚ʹͳΔ͜ͱ
΄ͱΜͲͳ͍ɻ ͜ΕΒͷ൷ɺࣗಈԽ͞ΕͨʮϒϥοΫϘοΫεʯ౷߹ςετΛҰൠతʹࢹ͍ͯ͠Δ͜ ͱΛҙຯ͢ΔͷͰͳ͍͕ɺΑΓ༗༻ͳΞϓϩʔνɺࣗ৴ͱϦϦʔεසͷόϥϯεΛͱ ΔͷͰ͋Δͱߟ͑Δɻ &&ςετͷաࢿ5FDIOPMPHZ3BEBSͰʮ)0-%ʯʹϨʔςΟϯά͞Εͨ
4.63'େ͖Ίͷࣗಈςετ܈ͷઃܭ࣌ʹߟྀ͖͢τϨʔυΦϑ IUUQTUFTUJOHHPPHMFCMPHDPNTNVSGCFZPOEUFTUQZSBNJEIUNM S: 動作スピード M: 保守性 U: リソース使用率 R: 信頼性(決定性、安定性)
F: 忠実性(本番環境との類似度) 中心から離れるほど高スコア
৴པੑͷߴ͍࣮ߦ݁Ռʹ ͍࣌ؒͰ౸ୡ͢Δঢ়ଶΛอͭ͜ͱͰɺ ։ൃऀʹࠜڌ͋Δࣗ৴Λ༩͑ɺ ιϑτΣΞͷΛ࣋ଓՄೳʹ͢Δ͜ͱ ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠