Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[RMPxQuipper meetup #3]開発のための開発~スマホアプリ向けe2eテストの検証導入事例を通じて~

Naoki Ainoya
September 29, 2016

[RMPxQuipper meetup #3]開発のための開発~スマホアプリ向けe2eテストの検証導入事例を通じて~

【RMP×Quipper】Food&Drink meetup #3 - connpass
http://rmp-quipper.connpass.com/event/39082/

Naoki Ainoya

September 29, 2016
Tweet

More Decks by Naoki Ainoya

Other Decks in Programming

Transcript

  1. ։ൃͷͨΊͷ։ൃ
    ~εϚϗΞϓϦ޲͚e2eςετͷಋೖΛ௨ͯ͠~

    View Slide

  2. ࣗݾ঺հ
    • @ainoya
    • ૬໺୩ ௚थʢ͍͋ͷ΍ ͳ͓͖ʣ
    • ~2013/8 mixi: Chef,ϓϥΠϕʔυΫϥ΢υͷߏங౳
    • ~2015 RTC: ϓογϡ௨஌ج൫,ࣾ಺FWͷอक
    • ~2016/3 RMP: ελσΟαϓϦӳ୯ޠɾENGLISHΤϯδχΞ
    • ~ࠓ RMP: ։ൃࢧԉάϧʔϓ

    View Slide

  3. ٕज़ྖҬ
    • AWS/docker
    • Perl/Ruby/Java/Go/Scala/Swift
    • ΞϓϦ͔ΒΠϯϑϥ·Ͱઙ͘޿͘…

    View Slide

  4. ։ൃࢧԉνʔϜʹ͍ͭͯ
    • ϓϩμΫτ։ൃ෦ͷԣஅ૊৫

    View Slide

  5. ϓϩμΫτ։ൃΛՃ଎ͤ͞Δͨ
    Ίͷ։ൃ
    • ࣾ಺herokuͷߏங(deis on GCP)
    • σʔλղੳج൫ߏஙࢧԉ
    • e2eςετͷݕূ(Appium/Selenium)
    • ݕূ୺຤؅ཧͷվળ(OpenSTFͷಋೖ)

    View Slide

  6. e2eςετͷݕূɾಋೖ

    View Slide

  7. ͳͥεϚϗΞϓϦͷe2eςε
    τΛ΍Δͷ͔

    View Slide

  8. ϦϦʔεલͷQA
    • εϓϨουγʔτͷखॱॻΛ΋ͱʹςελʔ
    ͕࿑ಇू໿తʹ࣮ࢪ

    View Slide

  9. ςετέʔε͕๲ΒΉͱɺखಈςετʹ͔
    ͔Δίετɾ͕࣌ؒ͹͔ʹͳΒͳ͘ͳΔ
    • ͕͔͔࣌ؒΔͱ͸͍͑ɺεϚϗΞϓϦ͸ɺ
    Ϣʔβʹόάमਖ਼Λಧ͚Δ·Ͱ͕͔͔࣌ؒΔ
    • Ώ͑ʹWebΞϓϦΑΓ΋QA͸͔ͬ͠ΓΊʹ͠
    ͍ͨ

    View Slide

  10. ࣗಈԽ͍ͨ͠
    • εϓϨουγʔτʹखॱॻͱ֬ೝ߲໨͕໌هͰ͖
    ΔͳΒɺਓखͰ΍Δඞཁ͸ͳ͍ɻࣗಈԽ͢Δ΂͖
    • QAͰςελʔʹ͓ئ͍͢Δ͜ͱ͸ɺਓͰͳ͍ͱ
    Ͱ͖ͳ͍ςετʢ୳ࡧతςετʣ͚ͩʹ͍ͨ͠
    • ࣗಈԽͰ͖ΔͳΒɺCIʹ૊ΈࠐΊ͹QAஈ֊Ͱؾ
    ͮ͘σάϨΛૣظൃݟͰ͖ΔϝϦοτ΋͋Δ

    View Slide

  11. ͳͥͰ͖͍ͯͳ͍ͷ͔
    • εϚϗΞϓϦ޲͚e2eςετͷٕज़͸ൃల్্
    • ֶशίετ͕ͱΜͰ΋ͳ͘ߴ͍ʢςετϑϨʔϜ
    ϫʔΫͷཧղɾ࣮ߦ؀ڥͷཧղɾςετͷॻ͖ํʣ
    • ϓϩμΫτ։ൃΛ͍ͯ͠ΔΤϯδχΞ͕ยखؒͰಋ
    ೖɾӡ༻͢Δͷ͸ݫ͍͠
    • ݁ՌɺʮΈΜͳ΍Γ͍ͨͱࢥͬͯΔ͚Ͳ·ͩͰ͖ͳ
    ͍ʯঢ়ଶ͕ͣͬͱଓ͍͍ͯΔ

    View Slide

  12. ಋೖʹ͸ɺͬ͘͡ΓࠊΛਾ͑
    ͯۛຯΛ͢ΔϦιʔε͕ඞཁ
    ։ൃج൫ۀ຿ͱͯ͠ઐ೚ͰऔΓ૊Ή΂͖՝୊

    View Slide

  13. ͱ͍͏Θ͚Ͱ͜͜਺ϲ݄e2eς
    ετͷಋೖݕূʹऔΓ૊ΜͰ͖
    ͨ

    View Slide

  14. Φʔτϝʔγϣϯ

    ϑϨʔϜϫʔΫ
    ςετ
    ϑϨʔϜϫʔΫ
    e2eςετ؀ڥͷ֓؍(ਤʣ
    34QFD
    [email protected]
    BQQJVN
    TFSWFS
    0QFO45'
    4BVDFMBCT
    "OESPJE࣮ػ
    "OESPJE࣮ػ
    "OESPJE࣮ػ
    J04γϛϡϨʔλ
    J04γϛϡϨʔλ
    J04γϛϡϨʔλ
    ςετϑΝʔϜ

    View Slide

  15. ΦʔτϝʔγϣϯϑϨʔϜϫʔ
    Ϋ
    • appiumΛར༻
    • seleniumͱಉ͡ΠϯλϑΣʔεͰios/android
    ΞϓϦͷૢ࡞͕Մೳ
    IUUQXXXQJMMBSHMPCBMDPNTJUFTEFGBVMUpMFTBQQJVNQOH

    View Slide

  16. ςετϑϨʔϜϫʔΫʢςετ
    ίʔυ෦෼ʣ
    • rspecΛ࠾༻
    • rubyεΫϦϓτͰ୭Ͱ΋ؾܰʹॻ͚Δͱ͍͏఺Λॏࢹ
    • ΞϓϦͱಉ͡ίʔυ(Java΍Swift)Ͱॻ͔ͳ͍ͷͰɺ͏·͍͚͘͹ಉ
    ҰΞϓϦͷҟछϓϥοτϑΥʔϜؒͰςετίʔυΛڞ༗Ͱ͖Δ
    IUUQCQCMPHTQPUDPN*)9V1IZ$XJ5XL%U#4P*""""""""-")9Z4ISWM'TT$MBTT%JBHSBNQOH

    View Slide

  17. ςετέʔεྫ
    • UIཁૉͷબ୒΍۩ମతͳૢ࡞ΛPageObjectʹدͤΔ
    • RSpecͷςετέʔε͕ςετγφϦΦͱͯͦ͠ͷ··ಡΊΔΑ͏ʹͳΓɺ෼͔Γ΍͍͢

    View Slide

  18. androidςετϑΝʔϜ
    • openstfΛར༻ɻࣾ಺ͷ࣮ػݕূ୺຤্Ͱςε
    τ࣮ߦՄೳ

    View Slide

  19. iosςετϑΝʔϜ
    • saucelabsΛར༻ɻiosγϛϡϨʔλΛฒྻىಈͯ͠ςετߴ
    ଎Խ͕Ͱ͖Δ

    View Slide

  20. ۩ମతͳςετͷྲྀΕ
    • ςετγφϦΦͷ࡞੒
    • ΞϓϦૢ࡞ͷΩʔʹͳΔUIཁૉ໊ͷநग़
    • arc(appium ruby console)Λ࢖༻
    • ςετίʔυ࡞੒
    • page objectύλʔϯΛϕʔεʹrspecͰ
    • ςετ࣮ߦ
    • openstf/saucelabs্Ͱ࣮ߦ
    • ςετ݁Ռͷू໿
    • εΫϦʔϯγϣοτΛػछʹ·ͱΊͯ

    View Slide

  21. ը૾ࠩ෼ൺֱ(ݕূத)
    • Perceptual diffsʹΑΔσάϨͷݕग़཰ڧԽ

    https://github.com/uber/image-diff

    View Slide

  22. ΍ͬͯΈͯͷײ૝
    • ͖ͪΜͱӡ༻ΛճͤΕ͹ɺσάϨͷૣظൃݟʹ໾ཱͭιϦϡʔγϣϯ
    ʹͳΔ
    • ͔͠͠ͳ͕ΒɺεϚϗΞϓϦͷe2eςετ͸௥Ճͱϝϯςʹ͔ͳΓͷ
    ίετ͕͔͔Δ (Web/Seleniumͱൺ΂͍ͯΖ͍Ζൃల్্ʣ
    • ϢχοτςετͷΑ͏ʹ։ൃऀ͕ؾܰʹॻ͘ͷ͸·ͩ೉͍͠
    • ·ͱΊͯ࣌ؒΛऔͬͯςετॻ͘ͷΛ͕Μ͹Δ͔ɺઐଐςετΤϯδ
    χΞ͕·ͱΊͯॻ͘ͷ͕ݱ࣮తͱײͨ͡
    • ςετέʔε͸૿΍͗ͣ͢͠࠷௿ݶʹͱͲΊΔͷ͕๬·͍͠ʢϝϯς
    ίετͷ؍఺Ͱʣ

    View Slide

  23. ͓ΘΓʹɿ։ൃͷͨΊͷ։ൃ
    • ֤ϓϩμΫτͷٕज़తෛ࠴͸ɺجຊతʹ֤νʔϜͷΤϯδχΞ͕ͨͪ౰ࣄऀ
    ͱͯ͠ฦࡁ͢Δ
    • ͕ɺͲ͏ͯ͠΋͜΅Εٿ͸ൃੜͯ͠͠·͏
    • νʔϜ಺ʹ͍Δͱݟ͍͑ͯͳ͍ࢹ఺΋͋Δ
    • ։ൃج൫άϧʔϓʢ෦ԣஅ૊৫ʣ͕͜΅ΕٿΛर͍ʹߦ͘
    • ϓϩμΫτ։ൃͷڞ௨՝୊Λநग़ͯ͠ղܾʹऔΓ૊Ή
    • ʮΈΜͳ΍Γ͍ͨͱࢥͬͯΔ͚Ͳ·ͩղܾͰ͖͍ͯͳ͍՝୊ʯ͕࢒Γଓ͚Δ
    ঢ়ଶΛແ͘͢
    • e2eςετͷಋೖݕূ͸ͦͷҰ؀

    View Slide

  24. We are Hiringʂ
    • ΍Γ͍ͨ͜ͱ͸ଞʹ΋ͨ͘͞Μ͋Δɺๅͷࢁ
    • ϚʔέςΟϯάΦʔτϝʔγϣϯج൫
    • σʔλղੳج൫
    • ηΩϡϦςΟϚωδϝϯτ
    • ಈը࠶ੜج൫
    • R&Dʢػցֶशɾਂ૚ֶशetc..)
    • ্هͷΩʔϫʔυʹͽΜͱདྷͨํɺҰॹʹ՝୊ղܾʹऔΓ૊ΜͰ͘ΕΔ
    ํΛืूத

    View Slide

  25. e2eςετ͸͡ΊΔͳΒandroid
    ͔Β͕͓͢͢Ί
    • iOSͷॾʑͷڍಈ͕஗͘ɺςετέʔεΛॻ͘ͷʹ͕͔͔࣌ؒΔ
    • appium͔Βͷૢ࡞͕஗͍ɺpageΦϒδΣΫτ͕औΓͮΒ͍ɺ
    accessiblity identifierΛઃఆͯ͠΋͏·͘ཁૉ͕ͱΕͳ͍ɺetc…
    • Androidͷ΄͏͕ॾʑૢ࡞͠΍͘͢ɺ͘͘͞͞ςετέʔεॻ͚Δ
    • appiumͷ൓Ԡ΋ૣ͍ɻମײͰiOSͷഒҎ্ͷ଎͞Ͱॻ͚Δ
    • ͱ͘ʹAndroid/iOS྆ํల։͍ͯ͠ΔΞϓϦͷ৔߹͸ɺ·ͣAndroid൛
    ͰςετέʔεΛ׬੒ͤ͞ΔˠiOSʹςετέʔεҠ২͕ޮ཰͕ྑ͍ͱ
    ײͨ͡

    View Slide