[RMPxQuipper meetup #3]開発のための開発~スマホアプリ向けe2eテストの検証導入事例を通じて~
by
Naoki Ainoya
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
։ൃͷͨΊͷ։ൃ ~εϚϗΞϓϦ͚e2eςετͷಋೖΛ௨ͯ͠~
Slide 2
Slide 2 text
ࣗݾհ • @ainoya • ૬୩ थʢ͍͋ͷ ͳ͓͖ʣ • ~2013/8 mixi: Chef,ϓϥΠϕʔυΫϥυͷߏங • ~2015 RTC: ϓογϡ௨ج൫,ࣾFWͷอक • ~2016/3 RMP: ελσΟαϓϦӳ୯ޠɾENGLISHΤϯδχΞ • ~ࠓ RMP: ։ൃࢧԉάϧʔϓ
Slide 3
Slide 3 text
ٕज़ྖҬ • AWS/docker • Perl/Ruby/Java/Go/Scala/Swift • ΞϓϦ͔ΒΠϯϑϥ·Ͱઙ͘͘…
Slide 4
Slide 4 text
։ൃࢧԉνʔϜʹ͍ͭͯ • ϓϩμΫτ։ൃ෦ͷԣஅ৫
Slide 5
Slide 5 text
ϓϩμΫτ։ൃΛՃͤ͞Δͨ Ίͷ։ൃ • ࣾherokuͷߏங(deis on GCP) • σʔλղੳج൫ߏஙࢧԉ • e2eςετͷݕূ(Appium/Selenium) • ݕূཧͷվળ(OpenSTFͷಋೖ)
Slide 6
Slide 6 text
e2eςετͷݕূɾಋೖ
Slide 7
Slide 7 text
ͳͥεϚϗΞϓϦͷe2eςε τΛΔͷ͔
Slide 8
Slide 8 text
ϦϦʔεલͷQA • εϓϨουγʔτͷखॱॻΛͱʹςελʔ ͕࿑ಇूతʹ࣮ࢪ
Slide 9
Slide 9 text
ςετέʔε͕ΒΉͱɺखಈςετʹ͔ ͔Δίετɾ͕͔࣌ؒʹͳΒͳ͘ͳΔ • ͕͔͔࣌ؒΔͱ͍͑ɺεϚϗΞϓϦɺ Ϣʔβʹόάमਖ਼Λಧ͚Δ·Ͱ͕͔͔࣌ؒΔ • Ώ͑ʹWebΞϓϦΑΓQA͔ͬ͠ΓΊʹ͠ ͍ͨ
Slide 10
Slide 10 text
ࣗಈԽ͍ͨ͠ • εϓϨουγʔτʹखॱॻͱ֬ೝ߲͕໌هͰ͖ ΔͳΒɺਓखͰΔඞཁͳ͍ɻࣗಈԽ͢Δ͖ • QAͰςελʔʹ͓ئ͍͢Δ͜ͱɺਓͰͳ͍ͱ Ͱ͖ͳ͍ςετʢ୳ࡧతςετʣ͚ͩʹ͍ͨ͠ • ࣗಈԽͰ͖ΔͳΒɺCIʹΈࠐΊQAஈ֊Ͱؾ ͮ͘σάϨΛૣظൃݟͰ͖ΔϝϦοτ͋Δ
Slide 11
Slide 11 text
ͳͥͰ͖͍ͯͳ͍ͷ͔ • εϚϗΞϓϦ͚e2eςετͷٕज़ൃల్্ • ֶशίετ͕ͱΜͰͳ͘ߴ͍ʢςετϑϨʔϜ ϫʔΫͷཧղɾ࣮ߦڥͷཧղɾςετͷॻ͖ํʣ • ϓϩμΫτ։ൃΛ͍ͯ͠ΔΤϯδχΞ͕ยखؒͰಋ ೖɾӡ༻͢Δͷݫ͍͠ • ݁ՌɺʮΈΜͳΓ͍ͨͱࢥͬͯΔ͚Ͳ·ͩͰ͖ͳ ͍ʯঢ়ଶ͕ͣͬͱଓ͍͍ͯΔ
Slide 12
Slide 12 text
ಋೖʹɺͬ͘͡ΓࠊΛਾ͑ ͯۛຯΛ͢ΔϦιʔε͕ඞཁ ։ൃج൫ۀͱͯ͠ઐͰऔΓΉ͖՝
Slide 13
Slide 13 text
ͱ͍͏Θ͚Ͱ͜͜ϲ݄e2eς ετͷಋೖݕূʹऔΓΜͰ͖ ͨ
Slide 14
Slide 14 text
Φʔτϝʔγϣϯ ϑϨʔϜϫʔΫ ςετ ϑϨʔϜϫʔΫ e2eςετڥͷ֓؍(ਤʣ 34QFD BQQJVN@MJC BQQJVN TFSWFS 0QFO45' 4BVDFMBCT "OESPJE࣮ػ "OESPJE࣮ػ "OESPJE࣮ػ J04γϛϡϨʔλ J04γϛϡϨʔλ J04γϛϡϨʔλ ςετϑΝʔϜ
Slide 15
Slide 15 text
ΦʔτϝʔγϣϯϑϨʔϜϫʔ Ϋ • appiumΛར༻ • seleniumͱಉ͡ΠϯλϑΣʔεͰios/android ΞϓϦͷૢ࡞͕Մೳ IUUQXXXQJMMBSHMPCBMDPNTJUFTEFGBVMUpMFTBQQJVNQOH
Slide 16
Slide 16 text
ςετϑϨʔϜϫʔΫʢςετ ίʔυ෦ʣ • rspecΛ࠾༻ • rubyεΫϦϓτͰ୭Ͱؾܰʹॻ͚Δͱ͍͏Λॏࢹ • ΞϓϦͱಉ͡ίʔυ(JavaSwift)Ͱॻ͔ͳ͍ͷͰɺ͏·͍͚͘ಉ ҰΞϓϦͷҟछϓϥοτϑΥʔϜؒͰςετίʔυΛڞ༗Ͱ͖Δ IUUQCQCMPHTQPUDPN*)9V1IZ$XJ5XL%U#4P*""""""""-")9Z4ISWM'TT$MBTT%JBHSBNQOH
Slide 17
Slide 17 text
ςετέʔεྫ • UIཁૉͷબ۩ମతͳૢ࡞ΛPageObjectʹدͤΔ • RSpecͷςετέʔε͕ςετγφϦΦͱͯͦ͠ͷ··ಡΊΔΑ͏ʹͳΓɺ͔Γ͍͢
Slide 18
Slide 18 text
androidςετϑΝʔϜ • openstfΛར༻ɻࣾͷ࣮ػݕূ্Ͱςε τ࣮ߦՄೳ
Slide 19
Slide 19 text
iosςετϑΝʔϜ • saucelabsΛར༻ɻiosγϛϡϨʔλΛฒྻىಈͯ͠ςετߴ Խ͕Ͱ͖Δ
Slide 20
Slide 20 text
۩ମతͳςετͷྲྀΕ • ςετγφϦΦͷ࡞ • ΞϓϦૢ࡞ͷΩʔʹͳΔUIཁૉ໊ͷநग़ • arc(appium ruby console)Λ༻ • ςετίʔυ࡞ • page objectύλʔϯΛϕʔεʹrspecͰ • ςετ࣮ߦ • openstf/saucelabs্Ͱ࣮ߦ • ςετ݁Ռͷू • εΫϦʔϯγϣοτΛػछʹ·ͱΊͯ
Slide 21
Slide 21 text
ը૾ࠩൺֱ(ݕূத) • Perceptual diffsʹΑΔσάϨͷݕग़ڧԽ https://github.com/uber/image-diff
Slide 22
Slide 22 text
ͬͯΈͯͷײ • ͖ͪΜͱӡ༻ΛճͤΕɺσάϨͷૣظൃݟʹཱͭιϦϡʔγϣϯ ʹͳΔ • ͔͠͠ͳ͕ΒɺεϚϗΞϓϦͷe2eςετՃͱϝϯςʹ͔ͳΓͷ ίετ͕͔͔Δ (Web/Seleniumͱൺ͍ͯΖ͍Ζൃల్্ʣ • ϢχοτςετͷΑ͏ʹ։ൃऀ͕ؾܰʹॻ͘ͷ·͍ͩ͠ • ·ͱΊͯ࣌ؒΛऔͬͯςετॻ͘ͷΛ͕ΜΔ͔ɺઐଐςετΤϯδ χΞ͕·ͱΊͯॻ͘ͷ͕ݱ࣮తͱײͨ͡ • ςετέʔε૿͗ͣ͢͠࠷ݶʹͱͲΊΔͷ͕·͍͠ʢϝϯς ίετͷ؍Ͱʣ
Slide 23
Slide 23 text
͓ΘΓʹɿ։ൃͷͨΊͷ։ൃ • ֤ϓϩμΫτͷٕज़తෛ࠴ɺجຊతʹ֤νʔϜͷΤϯδχΞ͕ͨͪࣄऀ ͱͯ͠ฦࡁ͢Δ • ͕ɺͲ͏ͯ͜͠΅Εٿൃੜͯ͠͠·͏ • νʔϜʹ͍Δͱݟ͍͑ͯͳ͍ࢹ͋Δ • ։ൃج൫άϧʔϓʢ෦ԣஅ৫ʣ͕͜΅ΕٿΛर͍ʹߦ͘ • ϓϩμΫτ։ൃͷڞ௨՝Λநग़ͯ͠ղܾʹऔΓΉ • ʮΈΜͳΓ͍ͨͱࢥͬͯΔ͚Ͳ·ͩղܾͰ͖͍ͯͳ͍՝ʯ͕Γଓ͚Δ ঢ়ଶΛແ͘͢ • e2eςετͷಋೖݕূͦͷҰ
Slide 24
Slide 24 text
We are Hiringʂ • Γ͍ͨ͜ͱଞʹͨ͘͞Μ͋Δɺๅͷࢁ • ϚʔέςΟϯάΦʔτϝʔγϣϯج൫ • σʔλղੳج൫ • ηΩϡϦςΟϚωδϝϯτ • ಈը࠶ੜج൫ • R&Dʢػցֶशɾਂֶशetc..) • ্هͷΩʔϫʔυʹͽΜͱདྷͨํɺҰॹʹ՝ղܾʹऔΓΜͰ͘ΕΔ ํΛืूத
Slide 25
Slide 25 text
e2eςετ͡ΊΔͳΒandroid ͔Β͕͓͢͢Ί • iOSͷॾʑͷڍಈ͕͘ɺςετέʔεΛॻ͘ͷʹ͕͔͔࣌ؒΔ • appium͔Βͷૢ࡞͕͍ɺpageΦϒδΣΫτ͕औΓͮΒ͍ɺ accessiblity identifierΛઃఆͯ͠͏·͘ཁૉ͕ͱΕͳ͍ɺetc… • Androidͷ΄͏͕ॾʑૢ࡞͘͢͠ɺ͘͘͞͞ςετέʔεॻ͚Δ • appiumͷԠૣ͍ɻମײͰiOSͷഒҎ্ͷ͞Ͱॻ͚Δ • ͱ͘ʹAndroid/iOS྆ํల։͍ͯ͠ΔΞϓϦͷ߹ɺ·ͣAndroid൛ ͰςετέʔεΛͤ͞ΔˠiOSʹςετέʔεҠ২͕ޮ͕ྑ͍ͱ ײͨ͡