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

エンジニア総出でE2Eテストを自動化した話 / genbaweb01

B8e501d93b98a553abf0b5cee0c33503?s=47 yasaichi
July 12, 2017

エンジニア総出でE2Eテストを自動化した話 / genbaweb01

Web現場Meetup〜GMOペパボ×ピクスタ〜エンジニアによる技術・組織改善の裏側(2017/07/12)

B8e501d93b98a553abf0b5cee0c33503?s=128

yasaichi

July 12, 2017
Tweet

Transcript

  1. ΤϯδχΞ૯ग़ͰE2EςετΛ ࣗಈԽͨ͠࿩ Yuichi Goto (@_yasaichi) July 12, 2017 @ Webݱ৔Meetup

  2. self.inspect • ϐΫελגࣜձࣾ ɹ ٕज़ਪਐνʔϜϦʔμʔ • Twitter: @_yasaichi • GitHub:

    yasaichi • Blog: http://web-salad.hateblo.jp
  3. ϐΫελͷ͝঺հ

  4. ձࣾ֓ཁ • ઃཱ೔: 2005೥8݄25೔ • ैۀһ਺: ୯ମ75໊ʢ3݄຤࣌఺ʣ • ཧ೦: ΠϯλʔωοτͰϑϥοτͳੈքΛͭ͘Δ

    • ࣄۀ಺༰: PIXTA, fotowaͷӡӦ
  5. https://pixta.jp σδλϧૉࡐͷΦϯϥΠϯϚʔέοτϓϨΠε 6ϲࠃޠల։த

  6. https://fotowa.com ग़ுࡱӨϚονϯάαʔϏε

  7. ຊ୊

  8. ຊൃදʹ͍ͭͯ • ࿩͢͜ͱ: • ͳͥE2EςετΛࣗಈԽ͢Δඞཁ͕͔͋ͬͨ • ΍ͬͯΑ͔ͬͨ͜ͱɺ৽ͨʹݟ͖͑ͯͨ͜ͱ • ࿩͞ͳ͍͜ͱ: •

    E2Eςετʹؔ͢Δٕज़తͳ಺༰
  9. Agenda എܠͱ໨త ɹ ࣮ࢪ಺༰ͱ੒Ռ ɹ ΍ͬͯΑ͔ͬͨ͜ͱ ɹ ࠓޙͷ՝୊

  10. PIXTAͷߏ੒ • ෳ਺ΞϓϦέʔγϣϯͰߏ੒ • ຊମ: ϞϊϦγοΫͳRailsΞϓϦέʔγϣϯ • ↑͔Β੾Γग़ͨ͠ෳ਺ͷϚΠΫϩαʔϏε • ओͳϑϨʔϜϫʔΫ͸RailsͰɺࣗಈςετΛ

    RSpecͰهड़
  11. Ruby/RailsपΓͷվળͷྺ࢙ • 2015೥: ৽ଔೖࣾޙͷॳλεΫ͕Ruby 2ܥ΁ͷ
 ɹɹɹɹΞοϓάϨʔυʢʂʣ • 2016೥: ࣗಈςετߴ଎Խ →

    ֦ॆ
 Rails 4ܥ΁ΞοϓάϨʔυ • 2017೥: ٕज़ਪਐνʔϜ݁੒
 ΞοϓάϨʔυ࡞ۀΛϝϯόʔʹҠৡத ࠓ೔ͷ࿩͸͜͜
  12. 2016೥࣌఺ͷࣗಈςετঢ়گ • Model/Controller spec: ී௨ʹ͋Δ • Request Spec: ͪΐͬͱ͋Δ •

    Feature Spec: օແ → ϒϥ΢β͔Βૢ࡞ͨ࣌͠ʹຊ౰ʹಈ͘ͷʁ
  13. Ͳ͏ͳΔ͔ͱ͍͏ͱ… • େن໛ͳϦϦʔεΛߦ͏৔߹ 1. ςετγφϦΦʢ͍ͬͺ͍ʣΛ༻ҙ 2. ϢʔβʔαϙʔτͷํͳͲʹڠྗΛཁ੥ 3. શһͰ֤γφϦΦΛख࡞ۀͰ֬ೝ
 =

    खಈͰେྔͷE2EςετΛ͍ͯͨ͠
  14. E2EςετΛࣗಈԽ͢Δͧʂ • ݐલ: Ruby/RailsͷΞοϓάϨʔυΛ҆શ͔ͭ
 ܧଓతʹߦ͍ͬͯͨ͘Ί • ຊԻ: • ຖճଞ෦ॺͱͷௐ੔͢ΔͷΛ΍Ί͍ͨ •

    ख࡞ۀʹΑΔ֬ೝ͕େมͳͷͰ΍Ί͍ͨ
  15. Agenda ɹ എܠͱ໨త ࣮ࢪ಺༰ͱ੒Ռ ɹ ΍ͬͯΑ͔ͬͨ͜ͱ ɹ ࠓޙͷ՝୊

  16. E2Eςετ߹॓Λ։࠵ • طଘͷςετγφϦΦΛFeature SpecԽ͢Δ • ର৅: 57γφϦΦ • ظؒ: 2िؒʢ10Ӧۀ೔ʣ

    • νʔϜϝϯόʔ: 9໊
  17. ϓϩδΣΫτମ੍ਤ E2Eςετ߹॓νʔϜ PM: ࢲ … ΞϓϦέʔγϣϯΤϯδχΞ: 8໊ ΤϯδχΞϦʔμʔ ࢧԉ ϦʔμʔͱϓϩδΣΫτͷ


    ؔΘΓʹ͍ͭͯ͸ޙ΄Ͳ
  18. ੒Ռ • ظؒ಺ʹର৅γφϦΦશͯΛFeature Specʹ
 མͱ͠ࠐΈɺmasterʹmergeͰ͖ͨ • Feature SpecΛॻ͖׳Ε͍ͯͳ͍ϝϯόʔͷ
 εΩϧΞοϓ͕Ͱ͖ͨ →

    ܧଓతͳΞοϓάϨʔυͷͨΊͷج൫͕Ͱ͖ͨ
  19. ߹॓Ҏ߱ͰͷมԽ • Rails 4ܥ΁ͷΞοϓάϨʔυ࣌ͷϓϩηε 1. ࣗಈςετ͕௨ΔΑ͏ʹؤுΔ 2. staging؀ڥͰ؆୯ͳಈ࡞֬ೝΛ͢Δ → ҎલΑΓ΋଎͘ਐΊΒΕΔΑ͏ʹͳͬͨ

  20. Agenda ɹ എܠͱ໨త ɹ ࣮ࢪ಺༰ͱ੒Ռ ΍ͬͯΑ͔ͬͨ͜ͱ ɹ ࠓޙͷ՝୊

  21. ౰ͨΓલͷ͜ͱ͕େࣄͩͬͨ 1. ࣄલ४උΛͪΌΜͱ΍Δ 2. ࡞ۀʹूதͰ͖Δ؀ڥΛ࡞Δ 3. PMͱͯ͠ଞͷ୭ΑΓ΋ʮઈରʹ໨ඪΛୡ੒ ͢Δͧʂʯͱ͍͏ؾ࣋ͪΛ࣋ͬͯߦಈ͢Δ

  22. 1. ࣄલ४උΛͪΌΜͱ΍Δ • ҎԼΛ߹॓લʹ४උɾڞ༗ • γφϦΦͷׂΓৼΓ • 1γφϦΦͷணखʙmerge·Ͱͷϑϩʔ • Feature

    SpecΛॻ࣌͘ͷϧʔϧͱαϯϓϧ • ૝ఆ͞ΕΔ࣭໰ͱͦͷ౴͑ɹͳͲ
  23. ϐΫελͰ͸։ൃؔ࿈ͷ ৘ใڞ༗ʹesaΛར༻

  24. 2. ࡞ۀʹूதͰ͖Δ؀ڥ࡞Γ • ظؒதͷ։ൃΛࢭΊʢཁௐ੔ʣɺׂΓࠐΈ
 λεΫ͸ΤϯδχΞϦʔμʔ͕ରԠ͢Δ • ձٞࣨΛऴ೔ି͠੾ͬͯͦ͜Ͱ࡞ۀ͢Δ • ిݯपΓΛ੔උͯ͠σΟεϓϨΠΛ࣋ͪࠐΉ •

    ؁Ίͷ͓΍ͭΛ࣋ͪدΔ
  25. None
  26. 3. PM͕ڧ͍ؾ࣋ͪΛ࣋ͭ • PMʢ= ࢲʣʹ͔͔͍ͬͯͨϓϨογϟʔ • ։ൃΛࢭΊͯߦ͏ͨΊɺ૬Ԡͷ݁ՌΛग़͢
 ͜ͱΛίϛοτ͍ͯ͠Δ • ࣗಈԽର৅ͷγφϦΦ͕͚ͬ͜͏ଟ͍

    • Feature SpecΛॻ͖׳Εͳ͍ϝϯόʔͷଘࡏ
  27. ٕज़ͱؾ࣋ͪͰϦʔυ͢Δ • ίʔυϨϏϡʔΛߦ͍඼࣭Λ୲อ͢Δ • ໰୊ʹͳΓͦ͏ͳՕॴΛઌճΓͯ͠ରࡦ͢Δ • ऴ൫Ͱ͸٧·͍ͬͯΔϝϯόʔͱϖΞϓϩΛ ߦ͍ٕज़తͳ໰୊Λղܾ͢Δ PMࣗΒҰ൪Ωπ͍໰୊Λղ͖ʹߦ࢟͘ΛݟͤΔ ͜ͱͰϝϯόʔ΋ؤுͬͯ͘Εͨʢͱࢥ͏ʣ

  28. Agenda ɹ എܠͱ໨త ɹ ࣮ࢪ಺༰ͱ੒Ռ ɹ ΍ͬͯΑ͔ͬͨ͜ͱ ࠓޙͷ՝୊

  29. ৽ͨͳ՝୊ • ։ൃΛࢭΊΔͱ͖ͷௐ੔͕େม • ҙٛΛઆ໌ͯ͠ཧղͯ͠΋Β͏౒ྗΛ͢Δ • ੒ՌΛग़͠ଓ͚ͯ৴པஷۚΛ͢Δ • େن໛ϦϦʔε࣌ͷΠϯϑϥ࡞ۀ΋໘౗Ͱ ͋ͬͨ͜ͱʹؾͮ͘

    ͻͱͭͷ໰୊Λղܾͨ͜͠ͱͰ ผͷ໰୊͕ݟ͖͑ͯͨ
  30. େن໛ϦϦʔεͷݱঢ়ͱࠓޙ • ݱঢ়: ·ͩख࡞ۀ͕ଟ͍ • AWS OpsWorksͷStackΛผʹ1ͭ༻ҙ͢Δ • Route 53ͷ஋ΛखಈͰௐ੔͠Blue/Green

    → ίϯςφٕज़Λ༻͍ͨৗ࣌Blue/GreenσϓϩΠ
 ࣮ݱʹ޲͚ٕͯज़ݕূத
  31. Զୡͷઓ͍͸͜Ε͔Βͩʂ

  32. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ ຊൃදͷϒϩά൛: http://texta.pixta.jp/entry/2016/06/15/115000