2015-11-26 #cooketn. speaker: @m_seki, @miwa719
Our Testing@m_seki | @miwa719
View Slide
େࣄͳ͜ͱ
େࣄͳ͜ͱ֏ͷRubyKaigiࢀՃඅ༻ͷεϙϯαʔืूεϥΠυεϙϯαʔTγϟπεϙϯαʔεςοΧʔεϙϯαʔgumroad.com/m_sekisuzuri.jp/m_seki
slide sponsors嫣鹈،ؙة٦ךֿהח鑫׃ֻזؔٝٓ؎ٝ⸇דֹ؝ىُصذ؍״TBQQPSPCFBNHJUIVCJP؟ٝٓ؎ؤ⳿ꨡד遤ֻ3VCZ8PSME$POGFSFODFծ嫣䎃㥨鐰㹋倵⚥דׅկ勻䎃װתׅךדծֶ㉏ְさׇ♴ְׁZBODZB虠加歕ջ梾楤㼔枾䒍莔ռ׀勻䏄ֶ䖉׃גֶתׅ!PHJKVOսטվ䎃剢ַך➬✲!1613-ֿחכֿחכ!IJCBSJZBջأذ؍٦ـؤռ䋆涪㡰⚥!NB5BLBZVLJ,BNJZBNB!UBLLJJ
more slide sponsorsE3VCZח״ⴓ侔٥8FCفؚٗٓىؚٝ ؔ٦ي爡F#PPL4UPSFIUUQFTUPSFPINTIBDPKQUJUMFT1!IJTBTIJN
T-shirts sponsorsTV[VSJKQN@TFLJ
sticker sponsors
Pragmatic Bookshelf Author
ࠓ֓ཁ୲Ͱ͢ઃܭͱςετCheckingͱTestingײ͡Δɾյ͢
ϓϩͷແ৬αϥϦʔϚϯϞʔυԿ͠ͳ͍
ιϑτΣΞͷ։ൃιϑτΣΞͷ։ൃɼ̎छྨͷ࡞ۀΛؚΜͰ͍ΔɽઃܭͱςετͰ͋Δɽ(ιϑτΣΞͷ৴པੑ p.33)
ઃܭͱʮܭըʹैͬͯܗΛ͑Δ͜ͱɽʯ͜ͷҙຯΛͱΕɼཁٻతΛఆΊΔ͜ͱʹ࢝·ΓɼϓϩάϥϜΛॻ͘͜ͱʹࢸΔιϑτΣΞͷࣄશମʹΘͨΓɼͦΕͧΕͷ໘ʹԠͯ͡ɼઃܭ͕͋Δͱߟ͑Δ͜ͱ͕Ͱ͖Δɽ(ιϑτΣΞͷ৴པੑ p.33)
ςετͱΤϥʔΛൃݟ͢ΔతͰϓϩάϥϜΛ࣮ߦ͢Δաఔ͕ςετͰ͋Δɽ(ιϑτΣΞͷ৴པੑ p.194)
Α͍ςετΤϥʔΛൃݟͰ͖ͨςετ͕ޭΤϥʔΛൃݟ͢Δ֬ͷߴ͍ͷ͕Α͍
Checking vs TestingCheckingطͷใͷ֬ೝͪ෬ͤTesting৽͍͠ใΛ୳͢ɻະͷΛʂ୳͠ʹߦ͘
TestingͱFeelingJaSST 2015جௐߨԋʮ͋Εʁ͜ͷɼͲ͔͕͜ѱ͍ؾ͕͢Δ…ʯ ςελʔײͰؾͮ͘͜ͱ͕Ͱ͖·͢ɻ͜ͷιϑτΣΞୀ۶ͩͳɼෆͩͳɼͲ͔͍͜ʹ͍͘ͳ…ͦ͏͍ͬͨϑΟʔϦϯά͕େͰ͢ɻͦΕͳʹ͔ѱ͍ͷ͕͋Δ͜ͱΛ͍ࣔͯ͠·͢ɻ(gihyo.jp ςελʔͷ“ϑΟʔϦϯά”Λݚ͗·ͤ ᴷJaSST Tokyo 2015جௐߨԋϨϙʔτ)
ࢲͨͪͷTestingײ͡Δཧղ͢Δɾյ͢
ײ͡Δ͍ͭײ͡Δͷ͔ରԿ͔ײͨ͡ޙͲ͏͢Δ͔
͍ͭײ͡Δͷ͔Λͷલʹͯ͠ேձͰΛฉ͍ͯ͜Ε·Ͱͷݏͳ͜ͱ͔Β...
Λͷલʹͯ͠ҙ֎ͳৼΔ͍͍ʹ͔ͬ͘͜͞ѱ͞աڈͷͱͷྨࣅੑ
ேձͰΛฉ͍ͯேձʹݶΒͣɺ;ͩΜͷձϓϩάϥϚͷଶɺݴ༿ࣗ৴ͷͳ͞ɾ͋Γ͗͢Δࣗ৴ʮ༷Ͱ͢ʯʮ߹ҙ͠·ͨ͠ʯ࡞Γํ
ରԿ͔༷࣮ϓϩάϥϚνʔϜ
ײͨ͡ޙͲ͏͢Δ͔FeelingΛཧղ͢ΔͬͯΈΔ / ฉ͍ͯΈΔߟ͑ͳ͕Β৮ͬͯΈΔ͜͏ͨ͠ΒͲ͏ͳΔ͔ͳ͜͏ͳͬͯͨΒϢʔβࠔΔͳ
͠Β͓͍ͪͩ͘͘͞✓ ࣍NJXBTUZMF
miwa style͓͔͍ͭ͠͞Ͳ͔͜Βͬͯ͘ΔͷͩΖ͏
today’s storiesேձ͔ΒԿΛΔͷ͔͋ΔνέοτͷTesting
ேձ͔ΒԿΛΔͷ͔
ேձ͔ΒԿΛΔͷ͔• Θ͕ͨ͠ேձͰ...• ԿΛؾʹͯ͠Λฉ͍͍ͯΔͷ͔• ԿΛΓ• Ͳ͏ςετ͠Α͏ͱ͍ͯ͠Δͷ͔
ேձ͔ΒԿΛΔͷ͔• ୲ऀΛΔ• ᎍΊ͍ͯΔ͜ͱΛΔ• ϓϩάϥϚʔ͕ࠞཚͯ͠Δ͜ͱΛΔ• ϓϩάϥϚʔ͕৺ͯ͠Δ͜ͱΛΔ• ใࠂ͞Εͨόά͔Βଟ͘ͷ͜ͱΛΔ
୲ऀΛΔ• ࠷ྑͷΞΫηεઌΛΔ• Θͨ͠ͷٙΛϓϩάϥϚʔʹฉ͍ͯΒ͑Δ• ͦͷͰ͙͢ʹճ͕Β͑Δ• ͜Εςελʔʹͱͬͯɺͤͳ͜ͱʂ• ͲΜͳਓͳͷ͔ΛΔ• ͦͷਓʹ߹ΘͤͯςετͷτοϐϯάΛΞϨϯδ
ᎍΊ͍ͯΔ͜ͱΛΔ• ్தͰ༷͕มΘͬͨΓ• ࣮ํ๏ͰᎍΊͨΓ• ͏·͘ಈ͔ͳ͍͜ͱ͕ଟ͍• ͋Δ෦ͰΓ্͕ͬͯ͠·ͬͨνέοτ• ͦΕҎ֎ͷ෦͕͋ͬ͞ΓྲྀΕͯ͠·͏͜ͱগͳ͘ͳ͍• ͜Μͳνέοτཁҙʂ• มԽԌ্ͨ͠ͱ͜Ζ͚ͩͰͳ͘ɺ·ΜΜͳ͘ςετ͠·͢Α
ϓϩάϥϚʔ͕ࠞཚͯ͠Δ͜ͱΛΔ• νέοτʹॻ͍ͯ͋Δ༰• ͔ΓͮΒ͍• ͨΒจষ͕͍• ຊਓ͔Βઆ໌Λฉ͍ͯΑ͔͘Βͳ͍• ຊਓΑ͔ͬͯ͘ͳ͍ͷ͔͠Εͳ͍• ͜Μͳνέοτཁҙʂ• νέοτ൪߸Λ΄΅खாʹϝϞͯ͠ɺϖϯͰ͙ΔͬͱғΈ·͢
ϓϩάϥϚʔ͕৺ͯ͠Δ͜ͱΛΔ• ͪΌΜͱ࡞Δ͠࡞ΕΔͱࢥ͍ͬͯΔͰ͠ΐʁ• ·ΘΓͷงғؾपลͷ͔Βɺةͳͦ͏ͳͱ͜ΖΛ૾͢Δ• إ৭ͷτʔϯͳΜ͔ؾʹ͠·͢• ෆ҆ͳͱ͖ෆ҆ͦ͏ʹͯͨ͠΄͏͕͍͍• ࣗ৴ຬʑʹ͍ͯ͠ΔͱɺΒΕΔΑʢ͏ͪͷνʔϜʣ• ૾ͨ͠৺͝ͱΛɺ։ൃऀςελʔʹ͢• ͲΜͳςετΛ͠Α͏ͱͯ͠Δͷ͔ʢ࣮͢Δͱ͖ʹؾʹͯ͠Β͑Δʣ• ேձதTesting͍ͯ͠ΔʢΤΞʔςεςΟϯάʁʣ
ใࠂ͞Εͨόά͔Βଟ͘ͷ͜ͱΛΔ• ৽͍͠ࢹ• ϓϩάϥϚʔଞͷςελʔɺͲ͜ͷԿΛؾʹ͍ͯ͠Δͷ͔• ώϯτ͕૿͑Δ• ͦΜͳόά͕ग़ΔͳΒɺ͋ͦ͜ͷ͋Εେৎͳͷ͔ʁ• Βͳ͔ͬͨաڈΛΔ• ੲͷνέοτʹḪΔ͜ͱ͕͋Δ• Θͨ͠ͷΒͳ͍աڈͷ։ൃͰى͖͍ͯͨ͜ͱ• ;Δ·͍ΛΓɺޡղ͍༷ͯͨ͠ʹؾͮ͘
ேձ͔ΒԿΛΔͷ͔• ୲ऀΛΔ• ᎍΊ͍ͯΔ͜ͱΛΔ• ϓϩάϥϚʔ͕ࠞཚͯ͠Δ͜ͱΛΔ• ϓϩάϥϚʔ͕৺ͯ͠Δ͜ͱΛΔ• ใࠂ͞Εͨόά͔Βଟ͘ͷ͜ͱΛΔhttp://miwa719.hatenablog.com/entry/daily2015051001
͋ΔνέοτͷTesting
͋ΔνέοτͷTesting• νέοτΛಡΉ• ಈ͔ͯ͠ΈΔ• Testing
νέοτΛಡΉ• ͳʹ͕ग़དྷΔΑ͏ʹͳͬͨͷʁ• ग़དྷͨ͜ͱͲ͏ͬͨΒ͔Δͷʁ• ࣮தʹى͖͍ͯͨ͜ͱ• ேձͰͷΈΜͳͷ༷ࢠΛࢥ͍ग़͠ͳ͕Βɺ͞Βͬͱ͓͞Β͍• ͲͪΒ͔ͱݴ͏ͱɺ৽ͨͳؾ࣋ͪͰ• ΄΅खாಡΈฦ͢ʢؾʹͳͬͨ͜ͱ͕ϝϞͯ͋͠Δʣேձேձேձ͖ͷ͏͓ͱͱ͍ ͖ͬ͞ʜʜʜ
νέοτΛಡΉ• ͍͍͋͠• ͨ͘͞Μॻ͍ͯ͋Δ• આ໌͕ίʔυͬΆ͍ʢ໊ؔͱม໊Λͭͳ͛ͯจষʹͯ͠Δʣ• ʮௐࠪதͰ͢ʯʮۤઓதͰ͢ʯʮΓ͠·͢ʯ• ͋ͬ͞Γ͠ա͍͗ͯΔ• ͏·͘ߦ͖ա͍͗ͯΔ•ேձேձேձ͖ͷ͏͓ͱͱ͍ ͖ͬ͞ʜʜʜ
νέοτΛಡΉ݁ہɺͲ͏ॻ͍ͯ͋ͬͯ͏ேձேձேձ͖ͷ͏͓ͱͱ͍ ͖ͬ͞ʜʜʜ
͋ΔνέοτͷTesting• νέοτΛಡΉ• ಈ͔ͯ͠ΈΔ• Testingேձேձேձ͖ͷ͏͓ͱͱ͍ ͖ͬ͞ʜʜʜ
ಈ͔ͯ͠ΈΔ• νέοτʹॻ͍ͯ͋ΔςετέʔεΛ࣮ʹ• جຊతͳಈ͖ํΛΔ• Checkingͷؾ࣋ͪ• ෆ۩߹ݟ͔ͭΒͳ͍• ςετέʔεͷखॱ͕ؒҧͬͯΔ͘Β͍•ேձேձேձ͖ͷ͏͓ͱͱ͍ ͖ͬ͞ʜʜʜ
ಈ͔ͯ͠ΈΔ• ϑΝʔετΠϯϓϨογϣϯ• ॳݟʹײ͡ΔʮԿ͔ʯΛେʹ• ேձ։ൃऀͱͷձ͔ΒɺΘ͕ͨ͠૾͍ͯͨ͠Ϟϊͱͷࠩ• ͠Β͘ܦ͔ͬͯΒɺॳݟͷʮ͜ΕʯΛײ͡Δͷ͍͠• ͜ͷ͋ͨΓ͔ΒɺͩΜͩΜTestingͷؾ࣋ͪ•ேձேձேձ͖ͷ͏͓ͱͱ͍ ͖ͬ͞ʜʜʜ
Testing• ςετέʔεΛมܗ͢Δ• ԿΛ༩͑ͨΒʢ༩͑ͳ͔ͬͨΒʣɺԿ͕Ͳ͏ͳΔͷ͔• ్தͷॲཧΛࢥ͍ු͔ͳ͕Βɺૢ࡞ͷλΠϛϯάΛਤΔ• ෳࡶͳͷ΄Ͳɺͻͱͭͻͱͭஸೡʹ• ໘ͳͷ΄Ͳɺམͪண͍ͯͬ͘͡Γͱ• ͍ͷछྨڧ͞ʹΑͬͯɺมܗ۩߹ʢόϦΤʔγϣϯʣΛม͑Δேձேձேձ͖ͷ͏͓ͱͱ͍ ͖ͬ͞ʜʜʜ
Testing• ؔ࿈͢Δ͔͠Εͳ͍ػೳͱͷ૬ੑ• ʹͳ͍͍ͬͨͭͩͨͰ͖ͯΔ• ·ͩʹͳ͍ͬͯͳ͍ɺݟ͑ͳ͍ͷΛ୳ཱྀ͢• ԿΛ༩͑ͯಈ͘ͷ͔ɺͦΕͲ͔͜ΒདྷΔͷ͔• Կ͕࡞ΒΕΔͷ͔ɺͦΕΛ͏ػೳɺ͍ͦ͏ͳ͍ػೳ• Ұॹʹ͍ͬͯͨΒͲ͏ͳΔ• νέοτͷΩʔϫʔυݕࡧʢࢹΛ͘͢ΔɺͻΒΊ͖ͷώϯτʣேձேձேձ͖ͷ͏͓ͱͱ͍ ͖ͬ͞ʜʜʜ
Testing• 101 Things I Learned in Architecture School• ήγϡλϧτͷʮਤͱʯཧ•
Testing• ςελʔϞʔυ͔ΒϢʔβʔϞʔυ• ϢʔβʔͲΜͳؾ࣋ͪͰɺ͜Εʹ৮ΕΔͷ͔• ৮Εͨͱ͖ͷख৮Γɺݟͨɺશମͱͯ͠ͷ౷Ұײ• ৮Εͨ͋ͱɺϢʔβʔԿΛ͠Α͏ͱࢥ͏ͷ͔• ϢʔβʔͷϢʔβʔͷϢʔβʔ• Γ͍ͨ͜ͱ͕ɺຊʹͰ͖͍ͯΔͷ͔ͳʁேձேձேձ͖ͷ͏͓ͱͱ͍ ͖ͬ͞ʜʜʜ
Testing• աڈʹى͖ͨݏͳ͜ͱ• Θͨͨͪ͠ͷνʔϜͰى͖ͨ͜ͱ• ։ൃऀɺςελʔͱͷձ͔Β• 10ͷνέοτ͔Β• ͱͳΓͷνʔϜͰى͖ͨ͜ͱ• χϡʔεʹͳ͍ͬͯͨ͜ͱ• ;ͩΜͷੜ׆͔Βேձேձேձ͖ͷ͏͓ͱͱ͍ ͖ͬ͞ʜʜʜ
Testing• ͜Ε͔Βى͖Δ͔͠Εͳ͍ݏͳ͜ͱ• ேձʑͷΈΜͳͱͷձΛࢥ͍ग़͠ͳ͕Β• ࢼͤͳ͍৺͝ͱɺ୭͔ʹͯ͠ΈΔʢ։ൃऀɺςελʔʣ• ΄΅खா͔ΒώϯτΛேձேձேձ͖ͷ͏͓ͱͱ͍ ͖ͬ͞ʜʜʜ
Testing• ࡢͱͷҧ͍• ͳΜͱͳ͘͘ͳͬͨײ͕͢͡Δ• ࡢಈ͍͍ͯͨͷʹɺࠓಈ͔ͳ͍• ࡢͱݟ͑ํ͕ҧ͏• ୭৮ͬͯͳ͍ͣͷɺ͋ͷػೳ͕ಈ͔ͳ͍Αʁ•ேձேձேձ͖ͷ͏͓ͱͱ͍ ͖ͬ͞ʜʜʜ
Testing• ϓϩάϥϚʔͱͷձ• ேձͰͷٙɺΘ͔Βͳ͍͜ͱΛڭ͑ͯΒ͏• ฉ͍ͯͳ͍ͷʹ• ͜͏͍͏ͱ͜Ζ͕ෆ҆ͳΜͰ͢ΑͶ• ࣮͜Εɺ͜͏͜͏͜͏͍͏࡞Γʹͳ͍ͬͯ·ͯ͠ɺɺɺ• ΈΜͳஸೡʹʢΘͨ͠ʹΘ͔ΔΑ͏ʹʣڭ͑ͯ͘ΕΔ• ϓϩάϥϚʔͱҰॹʹTesting͢Δ͜ͱʂேձேձேձ͖ͷ͏͓ͱͱ͍ ͖ͬ͞ʜʜʜ
Testing• ϓϩͷແ৬ͱͷձ• ٿͰ͘Δ͜ͱ͕ଟ͍• ʮ͖ͬͱ͜͜ʹόά͕͋Δ͔Βɺࢼͯ͠Έͯʔʯ• Θͨ͠ͷςετΛࢭΊʹ͘ΔΓ• ʮٳΜͩΒʯ• Θͨࣗ͠Testing͞Ε͍ͯΔʁேձேձேձ͖ͷ͏͓ͱͱ͍ ͖ͬ͞ʜʜʜ
Testing• ςελʔͱͷձ• ؾʹ͢Δ͜ͱ͕શવ͕ͪ͏• ͓͔͍͠ͱײͨ͜͡ͱΛɺಉ྅ͲͷΑ͏ʹײ͡Δͷ͔• ͕ࣗײ͡Δʮ͓͔͠͞ʯͷ͍ٙ• ςετͰձ• TestingΛݟͤ߹͏ʢࢸۙڑʹ͍Δ͔Βࣗવʹݟ͑ͪΌ͏ʣ• ϖΞςεςΟϯάேձேձேձ͖ͷ͏͓ͱͱ͍ ͖ͬ͞ʜʜʜ
Testing• ͓͔͠͞Λݟ͚ͭͨΒ։ൃऀͷݩGo!!• ݱΛݟͯΒ͏ʢॏཁʣ• Կ͔ΛΓ͕͍ͨͬͯΔͱ͖͕͋Δ• ͦͷͰҰॹʹTestingͨ͠Γɺ࠶ςετͨ͠Γ• ͓͔͠͞ͷݪҼ͕͔Δͱɺخͦ͠͏ʹ͠ʹདྷͯ͘ΕΔ• ཌͷேձͰ͔Δͷ͚ͩͲ• ʮࠓίϛοτ͢ΔͷͰɺ໌·ͨςετ͍ͯͩ͘͠͞ʯேձேձேձ͖ͷ͏͓ͱͱ͍ ͖ͬ͞ʜʜʜ
miwa styleேձேձேձ͖ͷ͏͓ͱͱ͍ ͖ͬ͞ʜʜʜ͓͔͍ͭ͠͞Ͳ͔͜Βͬͯ͘ΔͷͩΖ͏
miwa styleͷ͓͞Β͍ேձ͔ΒԿΛΔͷ͔୲ऀɾϓϩάϥϚ͔ΒᎍΊࣄɾࠞཚɾ৺ɾ͍͋ΔνέοτͷTestingνέοτΛಡΉಈ͔ͯ͠ΈΔTesting
ͨ͘͞Μ৺ͯ͠Δ৺ΛΔேձேձேձ͖ͷ͏͓ͱͱ͍ ͖ͬ͞ʜʜʜ
ςετ͢ΔςετΛॻ͘͡Όͳ͍ேձேձேձ͖ͷ͏͓ͱͱ͍ ͖ͬ͞ʜʜʜ
͠Β͓͍ͪͩ͘͘͞✓ ؾ͍ͮͨ͜ͱ
ͳΜͰͰ͖ͯΔΜͩΖ͏ࣗຫ͓͖͍ͯͨ͠
FeelingΛҭΉײͨ͜͡ͱΛେʹͯ͘͠ΕΔਓͨͪ
ۭؾਓϛεΛ͢Δ ͱ͍͏ࣄ࣮Λड͚ೖΕͯΔ
ଓ͖৽༁ ΤΫετϦʔϜϓϩάϥϛϯάͰʂ