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
3年間考え続けてきたWebアプリケーションにおけるテストの話
Search
ayato
February 15, 2018
Programming
300
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
3年間考え続けてきたWebアプリケーションにおけるテストの話
ayato
February 15, 2018
More Decks by ayato
See All by ayato
マイクロサービス内で動くAPIをF#で書いている
ayato0211
1
1.6k
Clojureという言語が私逹にもたらしたもの
ayato0211
6
3.2k
Re:REPL-Driven Development
ayato0211
3
1.4k
Meta Template Engine
ayato0211
2
1.2k
超変換! Hiccup data structure!!
ayato0211
2
670
About Integrant
ayato0211
0
600
Muscle Assert
ayato0211
0
320
Clojureを用いたWebアプリケーション開発
ayato0211
2
3.2k
翻訳にまつわるエトセトラ
ayato0211
6
1.3k
Other Decks in Programming
See All in Programming
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
0
130
OSもどきOS
arkw
0
590
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
1
440
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
130
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
170
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
240
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
8.2k
ふつうのFeature Flag実践入門
irof
8
4.2k
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
750
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
560
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
280
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
360
Featured
See All Featured
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
540
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
Docker and Python
trallard
47
3.9k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
450
WCS-LA-2024
lcolladotor
0
660
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
310
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.1k
Making the Leap to Tech Lead
cromwellryan
135
9.9k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.5k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Transcript
ؒߟ͑ଓ͚͖ͯͨ 8FCΞϓϦέʔγϣϯ ʹ͓͚Δςετͷ
͋ͽʔ $ZCP[V4UBSUVQT JOD $MPKVSFྺ झຯ&NBDT ݈߁
ࠓͷ
͜Μͳ͜ͱ͢Α എܠ ؒ8FCΞϓϦέʔγϣϯΛ࡞͍ͬͯΔ ͦΕͳΓʹࣦഊΛܦݧͨ͠ ༰ ͍͠Α͔͘Βͳ͍ͱࢥͬͨͱ͜Ζͷղܾ ࡦΛڞ༗͍ͨ͠
ҙ ඞͣ͜͠Ε͕ϕετͱࢥ͍ͬͯͳ͍ Իָੑͷҧ͍ͱ͔͋Δͱࢥ͏ 5%%ʹϑΥʔΧεͨ͠͠·ͤΜ Ͱ͖ͳ͍ ࢀߟఔʹฉ͍ͯͶ
$MPKVSF ؔϓϩάϥϛϯά ͔ͩΒςετ؆୯ͩΑʂ
ςετॻ͘ͷ؆୯ͩΑͶʁ ࢀরಁաੑෆมੑʹΑΓςετ͕༰қ ७ਮͳؔΛॻ͘ͷͰςετ͕༰қ
(require '[clojure.test :as t]) (defn f [x y] (+ x
y)) (t/deftest f-test (t/is (= (f 1 2) 3))
(require '[clojure.test :as t]) (defn f [x y] (+ x
y)) (t/deftest f-test (t/is (= (f 1 2) 3))
࣮ࡍʜ ݱ࣮ͷੈքͰ֎෦ͷγεςϜͱ࿈ܞ͢Δ ։ൃ࣌ʹςετ͕ಉ͡3&1-ͷ্Ͱ࣮ߦ͞ΕͯࠔΔ 03.͕ͳ͍͔ΒΠϯϝϞϦ%#͑ͳ͍ ؔΛࠩ͠ସ͑Α͏ͱ͢Δͱฒྻ࣮ߦͰ͖ͳ͍ ڊେͳσʔλߏͷൺֱͰۤ࿑͢Δ ҙͷ͕ؔظͨ͠௨Γʹ࣮͞Ε͍ͯΔ͔͔Βͳ͍ DMPKVSFTQFDΛHFOFSBUJWFUFTUʹͬͯۤ࿑͢Δ 3JOHϋϯυϥͷςετ͍͠
࣮ࡍʜ ݱ࣮ͷੈքͰ֎෦ͷγεςϜͱ࿈ܞ͢Δ ։ൃ࣌ʹςετ͕ಉ͡3&1-ͷ্Ͱ࣮ߦ͞ΕͯࠔΔ 03.͕ͳ͍͔ΒΠϯϝϞϦ%#͑ͳ͍ ؔΛࠩ͠ସ͑Α͏ͱ͢Δͱฒྻ࣮ߦͰ͖ͳ͍ ڊେͳσʔλߏͷൺֱͰۤ࿑͢Δ ҙͷ͕ؔظͨ͠௨Γʹ࣮͞Ε͍ͯΔ͔͔Βͳ͍ DMPKVSFTQFDΛHFOFSBUJWFUFTUʹͬͯۤ࿑͢Δ 3JOHϋϯυϥͷςετ͍͠ ࢥͬͨΑΓ
ςετ͍͠
جຊํ
جຊํ DMPKVSFUFTUΛجຊʹߟ͑Δ ϞοΫΑΓϦΞϧؔ ฒྻԽͰ͖ΔΑ͏ʹ࣮͢Δ
DMPKVSFUFTUΛجຊʹߟ͑Δ DMPKVSFUFTUͷ্ʹ࡞ΒΕ֦ͨுϓϥάΠϯΛ ར༻͢ΔͨΊ DMPKVSFTQFDͷDMPKVSFUFTUDIFDLͱͷ౷߹ ಠࣗͷςεςΟϯάϑϨʔϜϫʔΫରԠ ͪʹͳΓ͕ͪ
ϞοΫΑΓϦΞϧؔ ϞοΫΛదʹར༻͢Δͷ͍͠ ԿΛςετ͍ͨ͠ͷ͔Α͔͘Βͳ͍ϞοΫ Λར༻ͨ͠ςετ͕ॻ͔ΕΔ
ฒྻԽͰ͖ΔΑ͏ʹ࣮͢Δ ςετͲ͏͕ͬͯ૿͑ͯ͘Δ ಈతܕ͚ݴޠςετ͕࣌ؒʹͳΔ ͕͋Δҹ ฒྻԽ͢Δ͔Ͳ͏͔ͱ͔͘ɺςετͷ࣮ߦ ॱংλΠϛϯάͳͲʹΑͬͯյΕͳ͍Α͏ͳ ಠཱͨ͠ςετΛॻ͚ΔΑ͏ʹ͢Δ
࣮ફฤ
ݱ࣮ੈքʹ͓͚Δ՝ ݱ࣮ͷੈքͰ֎෦ͷγεςϜͱ࿈ܞ͢Δ ։ൃ࣌ʹςετ͕ಉ͡3&1-ͷ্Ͱ࣮ߦ͞ΕͯࠔΔ 03.͕ͳ͍͔ΒΠϯϝϞϦ%#͑ͳ͍ ؔΛࠩ͠ସ͑Α͏ͱ͢Δͱฒྻ࣮ߦͰ͖ͳ͍ ڊେͳσʔλߏͷൺֱͰۤ࿑͢Δ ҙͷ͕ؔظͨ͠௨Γʹ࣮͞Ε͍ͯΔ͔͔Βͳ͍ DMPKVSFTQFDΛHFOFSBUJWFUFTUʹͬͯۤ࿑͢Δ 3JOHϋϯυϥͷςετ͍͠
ݱ࣮ͷੈքͰ֎෦ͷ γεςϜͱ࿈ܞ͢Δ
՝ ֎෦γεςϜςετ࣌ʹଓͰ͖ͳ͍ͨ͘͠ ͳ͍͜ͱ͕͋Δ ςετͷʹϝʔϧඈΜͰ͘Δͱ͔ݏͩ ֎෦γεςϜͳͷͰɺ͖ʹ͢Δͷ͕͍͠ ֎෦γεςϜ͕͑ͳ͍ͱ͖ʹςετ͚͜Δͷ ͪΐͬͱʜ
ղܾࡦ $PNQPOFOU*OUFHSBOUͱ͍͏ϥΠϑαΠΫϧ ཧ༻ͷϚΠΫϩϑϨʔϜϫʔΫΛར༻͢Δ ޙ͔ΒಥͬࠐΉͷେมͳͷͰɺ࠷ॳ͔Βͬ ͓͖ͯ·͠ΐ͏ ֎෦γεςϜΛίϯϙʔωϯτԽͯ͠ɺςετ ༻ίϯϙʔωϯτʹࠩ͠ସ͑Δ
։ൃ࣌ʹςετ͕ ಉ͡3&1-ͷ্Ͱ ࣮ߦ͞ΕͯࠔΔ
՝ ଟ͘ͷϓϩάϥϛϯάݴޠͰςετ ผϓϩηεͰ࣮ߦ͞ΕΔ͜ͱ͕ଟ͍ ։ൃதʹςετΛ࣮ߦ͢Δ߹ʹ3&1-͔Β ςετΛ࣮ߦ͢Δ͜ͱ͕͋Δ 3&1-˺ಉҰ+7.Πϯελϯε ӌᮣʹBMUFSWBSSPPUͱ͔Ͱ͖ͳ͍ ։ൃͱςετͰϦιʔεΛ͍͚͍ͨ
ղܾࡦ BMUFSWBSSPPUΛΘͳ͍ XJUISFEFGTͳͲΛར༻͢ΔͱͱΓ͋͑ͣ٢ ωʔϜεϖʔεʹϕλͰϦιʔεΛఆٛ͠ͳ͍ $PNQPOFOU*OUFHSBOUΛར༻͢Δ͜ͱ NPVOUMJUFXJUITFTTJPOͱ͍͏Έ༗Γ
03.͕ͳ͍͔Β ΠϯϝϞϦ%# ͑ͳ͍
՝ 42-Λॻ͔͘ɺΫΤϦϏϧμͰΈཱͯΔ ςετ࣌ʹΠϯϝϞϦ%#Λར༻͢Δͷ͕͍͠ %#ݻ༗ͷػೳͱ͔͍͕ͪ03.͕ٵऩͯ͠ ͘ΕΔࠩҟ͕ٵऩ͞Εͳ͍ ࣮ߦ͕ؾʹͳΔ͚ͲɺϞοΫͨ͘͠ͳ͍
ղܾࡦ ฒྻԽͰଟগΧόʔͰ͖Δ ͋Δ͍42-ඪ४͚ͩͰͯ͢ॻ͘ ͭΒ͍
ؔΛࠩ͠ସ͑Α͏ ͱ͢Δͱ ฒྻ࣮ߦͰ͖ͳ͍
՝ ͍ΘΏΔϞοΫ͍ͨ͠γʔϯ BMUFSWBSSPPUXJUISFEFGTΛ͏ͱฒྻͰ ࣮ߦͰ͖ͳ͍
ղܾࡦ 1SPUPDPMΛ࣮͓ͬͯͯ͘͠ SFJGZΛ࣮ͬͯΛࠩ͠ସ͑ͨΓ͢Δ %VDUͷ#PVOEBSZͷߟ͑ํ TISVCCFSZͱ͍͏ϥΠϒϥϦ͕ྑ͍
ڊେͳσʔλߏͷ ൺֱͰۤ࿑͢Δ
՝ ಛผͳΫϥεͰͳ͘ϚοϓϕΫλ͚ͩͰ σʔλΛදݱ͢Δ Ͳ͏ͯ͠ωετͨ͠Γɺཁૉ͕ଟ͘ͳͬͨΓ ͢Δͱൺֱ͕͘͠ͳΔ ؔ৺͕͋Δཁૉ;ͨͭɺΈͬͭఔ Ͳͷཁૉ͕ҧͬͨͷ͔͔Βͳ͍
ղܾࡦ ڵຯ͕͋ΔൣғͷൺֱΛߦ͍͍ͨ GVEKFͱ͍͏ϥΠϒϥϦΛ͏ͱDPNQBUJCMFͱ ͍͏දݱ͕͑Δ σʔλߏͷͲ͕͜ҧ͔ͬͨΓ͍ͨ GMBSFͱ͍͏ϥΠϒϥϦΛ͏ͱৄ͍͠EJGG͕ ΈΕΔ
ҙͷ͕ؔظͨ͠ ௨Γʹ࣮͞Ε͍ͯΔ͔ ͔Βͳ͍
՝ ΨϕʔδΠϯΨϕʔδΞτʹͳΓ͍͢ ҙͷؔΛςετ͍ͯ͠Δͱ͜ΖͰɺ·ͱ ͳೖग़ྗΛظ͢ΔΑ͏ʹςετ͕ॻ͚ͯɺ ࣮ࡍʹݺͼग़͠ଆͰͲͷΑ͏ͳ͕͞ΕΔͷ ͔ฦ͞ΕΔͷ͔͔Βͳ͍ ύοͱݟಈ͍͍ͯΔ͚Ͳɺ࣮ظͨ͠ಈ ࡞Ͱͳ͔ͬͨͱ͍͏ࣄଶ͕ى͜Δ
ղܾࡦ ظ͍ͯ͠ΔίτΛDMPKVSFTQFDͰॻ͘ JOTUSVNFOUΛར༻͢Ε͋Δఔ͙͜ͱ͕ Ͱ͖Δ JOTUSVNFOUҙͰىಈ͠ͳ͚Ε͍͚ͳ͍ͷ Ͱɺςετ࣌ʹඞͣىಈ͞ΕΔΑ͏ʹ͢Δ
DMPKVSFTQFDΛ HFOFSBUJWFUFTUʹ ͬͯۤ࿑͢Δ
՝ DMPKVSFTQFDΛHFOFSBUJWFUFTUʹར༻͢Δͱ σʔλͷੜͷਫ਼͕ྑ͘ͳ͍͜ͱ͕͋Δ ͕͔͔࣌ؒͬͨΓɺσʔλͷੜʹࣦഊ͢Δ νΣοΫ͢ΔଆͷDMPKVSFTQFD៉ྷʹॻ͚ͯ ɺͦΕΛຬͨ͢σʔλͷੜޮ͕ѱ͍ DMPKVSFUFTUDIFDL͕ґଘؔʹೖͬͯ͘Δ ϓϩμΫγϣϯͰෆཁ
ղܾࡦ σʔλͷੜํ๏ͪΌΜͱࢦఆ͢Δ TQFDઐ༻ͷωʔϜεϖʔεΛ࡞ͯ͠ɺEFWϓ ϩϑΝΠϧͷͱ͖ͷΈར༻͢ΔΑ͏ʹ͢Δ
3JOHϋϯυϥͷ ςετ͕͍͠
՝ 3JOHϋϯυϥड͚औΔϦΫΤετΛ࠶ݱ͢Δ ͷ͕໘ ϦΫΤετϚοϓΛ฿͢Δඞཁ͕͋Δ ࣮ࡍʹϛυϧΣΞ͕ద༻͞Εͨޙͷ
ղܾࡦ ؤுͬͯϛυϧΣΞΛద༻ͨ͠ޙͷΛ࡞Δ SJOHNPDLͱ͔దʹͬͯ฿ ϛυϧΣΞΛద༻ͨ͠ϋϯυϥΛςετ͢Δ LFSPEPOΛར༻͢Δ एׯςετͷੑ࣭͕ҟͳΔ ϒϥβͷͳ͍ϒϥβςετ
·ͱΊ
·ͱΊ ݱ࣮ੈքݫ͍͠ ԿΛॏཁࢹ͢Δ͔ʹΑͬͯɺΞϓϩʔνมΘͬ ͯ͘Δ ؤுͬͯςετॻ͖·͠ΐ͏