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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
ayato
February 15, 2018
Programming
3
290
3年間考え続けてきたWebアプリケーションにおけるテストの話
ayato
February 15, 2018
Tweet
Share
More Decks by ayato
See All by ayato
マイクロサービス内で動くAPIをF#で書いている
ayato0211
1
1.3k
Clojureという言語が私逹にもたらしたもの
ayato0211
6
3.1k
Re:REPL-Driven Development
ayato0211
3
1.3k
Meta Template Engine
ayato0211
2
1.2k
超変換! Hiccup data structure!!
ayato0211
2
640
About Integrant
ayato0211
0
590
Muscle Assert
ayato0211
0
300
Clojureを用いたWebアプリケーション開発
ayato0211
2
3.2k
翻訳にまつわるエトセトラ
ayato0211
6
1.3k
Other Decks in Programming
See All in Programming
Ruby x Terminal
a_matsuda
7
580
朝日新聞のデジタル版を支えるGoバックエンド ー価値ある情報をいち早く確実にお届けするために
junkiishida
1
360
Head of Engineeringが現場で回した生産性向上施策 2025→2026
gessy0129
0
210
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
230
Claude Codeセッション現状確認 2026福岡 / fukuoka-aicoding-00-beacon
monochromegane
4
390
今更考える「単一責任原則」 / Thinking about the Single Responsibility Principle
tooppoo
3
1.4k
Agent Skills Workshop - AIへの頼み方を仕組み化する
gotalab555
14
7.9k
Premier Disciplin for Micro Frontends Multi Version/ Framework Scenarios @OOP 2026, Munic
manfredsteyer
PRO
0
210
AWS Infrastructure as Code の新機能 2025 総まとめ 〜SA 4人による怒涛のデモ祭り〜
konokenj
10
3.2k
ふつうの Rubyist、ちいさなデバイス、大きな一年
bash0c7
0
480
grapheme_strrev関数が採択されました(あと雑感)
youkidearitai
PRO
1
210
AIプロダクト時代のQAエンジニアに求められること
imtnd
2
700
Featured
See All Featured
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.9k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
340
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
220
GitHub's CSS Performance
jonrohan
1032
470k
Discover your Explorer Soul
emna__ayadi
2
1.1k
GraphQLの誤解/rethinking-graphql
sonatard
75
11k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.1k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.8k
Marketing to machines
jonoalderson
1
5k
How Software Deployment tools have changed in the past 20 years
geshan
0
32k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.4k
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Λར༻͢Δ एׯςετͷੑ࣭͕ҟͳΔ ϒϥβͷͳ͍ϒϥβςετ
·ͱΊ
·ͱΊ ݱ࣮ੈքݫ͍͠ ԿΛॏཁࢹ͢Δ͔ʹΑͬͯɺΞϓϩʔνมΘͬ ͯ͘Δ ؤுͬͯςετॻ͖·͠ΐ͏