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.5k
ピラミッド、アイスクリームコーン、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
SQLアンチパターン第2版 データベースプログラミングで陥りがちな失敗とその対策 / Intro to SQL Antipatterns 2nd
twada
PRO
39
12k
AI時代のソフトウェア開発を考える(2025/07版) / Agentic Software Engineering Findy 2025-07 Edition
twada
PRO
157
72k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
109
86k
The Clean ArchitectureがWebフロントエンドでしっくりこないのは何故か / Why The Clean Architecture does not fit with Web Frontend
twada
PRO
82
33k
組織に自動テストを書く文化を根付かせる戦略(2024冬版) / Building Automated Test Culture 2024 Winter Edition
twada
PRO
37
12k
組織に自動テストを書く文化を根付かせる戦略(2024秋版) / Building Automated Test Culture 2024 Autumn Edition
twada
PRO
14
7k
これまでと違う学び方をしたら挫折せずにRustを学べた話 / Programming Rust techramen24conf LT
twada
PRO
33
29k
開発生産性の観点から考える自動テスト(2024/06版) / Automated Test Knowledge from Savanna 202406 Findy dev-prod-con edition
twada
PRO
37
35k
自動テスト実行結果の目的を整理する / Organizing objectives of automated test results
twada
PRO
14
3.5k
Other Decks in Programming
See All in Programming
GitHubとGitLabとAWS CodePipelineでCI/CDを組み比べてみた
satoshi256kbyte
4
220
ファインディ株式会社におけるMCP活用とサービス開発
starfish719
0
310
ユーザーも開発者も悩ませない TV アプリ開発 ~Compose の内部実装から学ぶフォーカス制御~
taked137
0
150
Navigation 2 を 3 に移行する(予定)ためにやったこと
yokomii
0
140
基礎から学ぶ大画面対応(Learning Large-Screen Support from the Ground Up)
tomoya0x00
0
420
OSS開発者という働き方
andpad
5
1.7k
AIでLINEスタンプを作ってみた
eycjur
1
230
テストカバレッジ100%を10年続けて得られた学びと品質
mottyzzz
2
590
How Android Uses Data Structures Behind The Scenes
l2hyunwoo
0
420
AIと私たちの学習の変化を考える - Claude Codeの学習モードを例に
azukiazusa1
10
3.8k
はじめてのMaterial3 Expressive
ym223
2
260
モバイルアプリからWebへの横展開を加速した話_Claude_Code_実践術.pdf
kazuyasakamoto
0
320
Featured
See All Featured
Making Projects Easy
brettharned
117
6.4k
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.9k
Code Review Best Practice
trishagee
70
19k
Practical Orchestrator
shlominoach
190
11k
Gamification - CAS2011
davidbonilla
81
5.4k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
188
55k
Embracing the Ebb and Flow
colly
87
4.8k
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: 忠実性(本番環境との類似度) 中心から離れるほど高スコア
৴པੑͷߴ͍࣮ߦ݁Ռʹ ͍࣌ؒͰ౸ୡ͢Δঢ়ଶΛอͭ͜ͱͰɺ ։ൃऀʹࠜڌ͋Δࣗ৴Λ༩͑ɺ ιϑτΣΞͷΛ࣋ଓՄೳʹ͢Δ͜ͱ ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠