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
full test also want to end within 50ms
Search
Tatasuro Hisamori
September 21, 2013
Technology
11
7.6k
full test also want to end within 50ms
Tatasuro Hisamori
September 21, 2013
Tweet
Share
More Decks by Tatasuro Hisamori
See All by Tatasuro Hisamori
両面どころかインフラもTSでできるよ ~ 全方位TypeScriptによるプロダクト開発 ~
myfinder
11
4.6k
Perl and Riak
myfinder
2
3.4k
Other Decks in Technology
See All in Technology
「AI駆動PO」を考えてみる - 作る速さから価値のスループットへ:検査・適応で未来を開発 / AI-driven product owner. scrummat2025
yosuke_nagai
4
580
生成AI_その前_に_マルチクラウド時代の信頼できるデータを支えるSnowflakeメタデータ活用術.pdf
cm_mikami
0
110
Azure Well-Architected Framework入門
tomokusaba
1
290
SoccerNet GSRの紹介と技術応用:選手視点映像を提供するサッカー作戦盤ツール
mixi_engineers
PRO
1
170
BirdCLEF+2025 Noir 5位解法紹介
myso
0
190
SwiftUIのGeometryReaderとScrollViewを基礎から応用まで学び直す:設計と活用事例
fumiyasac0921
0
140
Where will it converge?
ibknadedeji
0
180
後進育成のしくじり〜任せるスキルとリーダーシップの両立〜
matsu0228
6
2.3k
VCC 2025 Write-up
bata_24
0
180
関係性が駆動するアジャイル──GPTに人格を与えたら、対話を通してふりかえりを習慣化できた話
mhlyc
0
130
Optuna DashboardにおけるPLaMo2連携機能の紹介 / PFN LLM セミナー
pfn
PRO
1
880
Flaky Testへの現実解をGoのプロポーザルから考える | Go Conference 2025
upamune
1
420
Featured
See All Featured
Building Adaptive Systems
keathley
43
2.8k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.7k
Unsuck your backbone
ammeep
671
58k
Into the Great Unknown - MozCon
thekraken
40
2.1k
Faster Mobile Websites
deanohume
310
31k
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.9k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.9k
We Have a Design System, Now What?
morganepeng
53
7.8k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.6k
Thoughts on Productivity
jonyablonski
70
4.9k
Transcript
ϑϧςετ NTͰऴΘΒ͍ͤͨ :"1$"TJBlGVMMUFTUBMTPXBOUUPFOEXJUIJONTz 139݄22༵
:"1$"TJBlGVMMUFTUBMTPXBOUUPFOEXJUIJONTz ςετڥͱ$* 139݄22༵
U6UJMT full test also want to end within 50ms •
ςετΛḿΒͤΔϢʔςΟϦςΟ • ଓઌDBΛςετ༻ʹஔ͖͑Δ • ςετຖʹىಈ͢Δmemcachedͷport൪߸Λஔ͖͑ Δ • ͳͲɺPerlҎ֎ͷϛυϧΣΞ࿈ܞΛαϙʔτ͢Δ 139݄22༵
UVUJMT.BLF)FMQFS full test also want to end within 50ms •
ϔϧύϞδϡʔϧ • खݩͰmake testΛΒͤΔ࣌ʹTest::PrettyʹΓସ͑ͨ ͍ͳͲͷཁٻΛٵऩ͢Δ • runtests ʹςετҰཡΛ͢લʹγϟοϑϧ͢Δ • ͳͲͷॲཧΛߦ͏ 139݄22༵
UVUJMT.BLF)FMQFS full test also want to end within 50ms •
ςετ࣮ߦॱংͷγϟοϑϧ • ͓͢͢Ί • Βͳ͍ؒʹॱংʹґଘ͢ΔςετΛॻ͍ͯ͠·ͬͯ ؾ͚ͮΔ • DBͷcleanup࿙Ε͕ൃੜ͢Δͷʹؾ͔ͮͳ͍έʔε • ಉ͡ϑΝΠϧ໊Λҧ͏ςετ͔Βࢀর͢Δέʔε 139݄22༵
:"1$"TJBlGVMMUFTUBMTPXBOUUPFOEXJUIJONTz 6LJHVNPͱͷ͖͍ͭ͋ 139݄22༵
• ಛʹखೖΕͤͣͦͷ··ར༻ • ͦͷඞཁͳ͍ͷͰ 6LJHVNP4FSWFS full test also want to
end within 50ms 139݄22༵
• ར༻͍ͯ͠ͳ͍ • ಠࣗͷ࣮Λͯ͠·͢ 6LJHVNP$MJFOU full test also want to
end within 50ms 139݄22༵
• CIΛ։࢝͢ΔͨΊͷΈ • ςετະ࣮ߦͷϒϥϯνΛ୳࣮ͯ͠ߦ • SQLiteʹ࣮ߦͨ͠ϒϥϯν໊/ϦϏδϣϯΛه • ςετ݁ՌΛUkigumo::ServerҎ֎ʹpost͢Δ • ࠓͷͱ͜Ζϝʔϧ͘Β͍
'0VU5FTUFS full test also want to end within 50ms 139݄22༵
:"1$"TJBlGVMMUFTUBMTPXBOUUPFOEXJUIJONTz ૿͑ͨςετͷ࣮ߦߴԽ 139݄22༵
• ͔͔࣌ؒΓ͗͢ • ϒϥϯν͕͍ͭ͋͘Δͱ݁Ռ͕Θ͔Δ·Ͱͨ͞ΕΔ • ϝϯόʔ / ։ൃҊ͕݅૿͑Ε૿͑Δ΄Ͳͨ͞ΕΔ • ͨ͞Εͨʹ
fail ͱ͔ͯͨ͠ΒΔؾ͕ͳ͘ͳΔ • ࣄނϦεΫ͕ߴ·Δ • ʮ͍͔ΒखݩͰमਖ਼͚ͨͩ͠ςετͯ͠ϦϦʔεʯ • ͦͯ͠୭ϑϧςετΛ͠ͳ͘ͳͬͯ… full test also want to end within 50ms 139݄22༵
εέʔϧ͢Δ ΓํʹมΘΔඞཁ͕͋Δ full test also want to end within 50ms
139݄22༵
ߴԽʹ͋ͨͬͯ :"1$"TJBlGVMMUFTUBMTPXBOUUPFOEXJUIJONTz 139݄22༵
• طଘͷςετΛॻ͖͑ͳ͍ • ॻ͔Εͨςετ͕ͦͷ··ಈ͘͜ͱ • طଘͷCIαʔόͱੑ͕ߴ͍ • Ukigumo::Server ܧଓ͍͍ͯͨ͠ •
εέʔϧ͢Δ͜ͱ • ςετ͕10ഒʹͳͬͯػೳ͢ΔΈͰ͋Δ͜ͱ ߴԽͷલఏ full test also want to end within 50ms 139݄22༵
• ࢄ࣮ߦͤ͞Δ • ෳͷαʔόͰࢄ࣮ߦ͠ɺϊʔυՃͰεέʔϧ͢Δ Α͏ʹ͍ͨ͠ • αʔόͷՃ/ϝϯς͕༰қ • ؆୯ͳconfigͰཧͯ͠ΏΔ;ΘʹՃ/ϝϯς͍ͨ͠ •
࠶࣮ߦ؆୯ʹग़དྷΔΑ͏ʹ͍ͨ͠ • ෳͷαʔόʹ͛ΔͷͰɺ͕͋ͬͨ࣌ʹ࠶࣮ߦ Λ͙͢Ͱ͖ΔΑ͏ʹ͍ͨ͠ ࣮ํ full test also want to end within 50ms 139݄22༵
ࢄ࣮ߦͷΈ :"1$"TJBlGVMMUFTUBMTPXBOUUPFOEXJUIJONTz 139݄22༵
Ϛελϊʔυ Ϋϥελϊʔυ 'test1.t' 'test2.t' 'test3.t' 'test4.t' 'test5.t' 'test6.t' ࣮ߦରςετ 'test1.t',
'test6.t' 'test2.t', 'test4.t' 'test3.t', 'test5.t' ࢄ࣮ߦͷΈ full test also want to end within 50ms 139݄22༵
• ςετͷϐοΫΞοϓ/γϟοϑϧ/ׂ • File::Find, List::MoreUtils Ͱऔಘͯ͠Ϋϥελʹׂ • Ϋϥελϊʔυͷ࣮ߦ໋ྩ /݁Ռडऔ •
Parallel::ForkManager, Net::OpenSSH Ͱฒྻ࣮ߦ • ݁Ռͷύʔεͱ Ukigumo ͷ post • failͷΧϯτ, LWP Ͱ post • ࣮ߦ • ϊʔυଆͰ TAP::Harness::runtests ʹςετΛ࣮ͯ͠ߦ ࣮ full test also want to end within 50ms 139݄22༵
࠶࣮ߦ :"1$"TJBlGVMMUFTUBMTPXBOUUPFOEXJUIJONTz 139݄22༵
• ϚελϊʔυͰ࠶࣮ߦWebAppΛىಈ • ࣮ࢪঢ়گΛอଘ͍ͯ͠ΔSQLite͔Β֘ϒϥϯνใΛ ফ͚ͩ͢ • Chrome ֦ுͰ Ukigumo ʹϘλϯՃ
• Ukigumo ͦͷͷʹखΛೖΕͨ͘ͳ͍ ࣮ full test also want to end within 50ms 139݄22༵
݁Ռ :"1$"TJBlGVMMUFTUBMTPXBOUUPFOEXJUIJONTz 139݄22༵
ߴԽͷ݁Ռ full test also want to end within 50ms OPEF
TFDT ˣ OPEF TFD 139݄22༵
• ૉʹαʔόΛͤεέʔϧ͢Δ • αʔόΛηοτΞοϓͯ͠ɺ୯ಠͰmake test͕௨ΕΫ ϥελʹೖՄೳ -‐> PuppetͰOK • ࠶࣮ߦϘλϯ͕ؾܰʹԡͤΔ
• ͍͍ͩͨ180ඵͰ݁Ռ͕ฦͬͯ͘ΔͷͰɺԿΒ͔ͷࣦഊ ͕͙͋ͬͯ͢࠶࣮ߦͰ͖Δ • खݩͰΔΑΓpushͨ͠΄͏͕͍ • ଞͷਓͷ։ൃΞΫςΟϏςΟ͕ݟ͑͘͢ͳΔ ݁Ռ full test also want to end within 50ms 139݄22༵
• “खݩͰΔΑΓpushͨ͠΄͏͕͍” • ʮͱΓ͋͑ͣpush͢ΔʯΈ͍ͨͳจԽʹ͚Δ • νʔϜϝϯόʔʹର͢ΔποίϛϏϦςΟ্͕͕Δ • ݁Ռɺ࣭ͷ্͕ਤΕΔ خ͍͠ޡࢉ full
test also want to end within 50ms 139݄22༵
خ͍͠ޡࢉ full test also want to end within 50ms ߴͳςετ
։ൃจԽΛม͑Δ 139݄22༵
͓ΘΓʹ͏ͻͱͭ :"1$"TJBlGVMMUFTUBMTPXBOUUPFOEXJUIJONTz 139݄22༵
ςετ ͲΜͲΜॻ͜͏ ͓ΘΓʹ 139݄22༵
͓ΘΓʹ 139݄22༵
͏QVTIຖʹ ϑϧςετ͠Α͏ ͓ΘΓʹ 139݄22༵
͓ΘΓʹ full test also want to end within 50ms ߴͳςετ
։ൃจԽΛม͑·͢ 139݄22༵