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.5k
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
10
4.2k
Perl and Riak
myfinder
2
3.4k
Other Decks in Technology
See All in Technology
「隙間家具OSS」に至る道/Fujiwara Tech Conference 2025
fujiwara3
7
6.5k
Kotlin Multiplatformのポテンシャル
recruitengineers
PRO
2
150
生成AI × 旅行 LLMを活用した旅行プラン生成・チャットボット
kominet_ava
0
160
なぜfreeeはハブ・アンド・スポーク型の データメッシュアーキテクチャにチャレンジするのか?
shinichiro_joya
2
490
.NET AspireでAzure Functionsやクラウドリソースを統合する
tsubakimoto_s
0
190
あなたの知らないクラフトビールの世界
miura55
0
130
駆け出しリーダーとしての第一歩〜開発チームとの新しい関わり方〜 / Beginning Journey as Team Leader
kaonavi
0
120
技術に触れたり、顔を出そう
maruto
1
160
AIアプリケーション開発でAzure AI Searchを使いこなすためには
isidaitc
1
120
三菱電機で社内コミュニティを立ち上げた話
kurebayashi
1
360
ドメイン駆動設計の実践により事業の成長スピードと保守性を両立するショッピングクーポン
lycorptech_jp
PRO
13
2.3k
GoogleのAIエージェント論 Authors: Julia Wiesinger, Patrick Marlow and Vladimir Vuskovic
customercloud
PRO
0
160
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.4k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
173
51k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
The Cost Of JavaScript in 2023
addyosmani
46
7.2k
Code Review Best Practice
trishagee
65
17k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
We Have a Design System, Now What?
morganepeng
51
7.3k
Faster Mobile Websites
deanohume
305
30k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.9k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
570
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༵