Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

self.inspect • ϐΫελגࣜձࣾ ɹ ٕज़ਪਐνʔϜϦʔμʔ • Twitter: @_yasaichi • GitHub: yasaichi • Blog: http://web-salad.hateblo.jp

Slide 3

Slide 3 text

ϐΫελͷ͝঺հ

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

https://pixta.jp σδλϧૉࡐͷΦϯϥΠϯϚʔέοτϓϨΠε 6ϲࠃޠల։த

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

ຊ୊

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

Ruby/RailsपΓͷվળͷྺ࢙ • 2015೥: ৽ଔೖࣾޙͷॳλεΫ͕Ruby 2ܥ΁ͷ
 ɹɹɹɹΞοϓάϨʔυʢʂʣ • 2016೥: ࣗಈςετߴ଎Խ → ֦ॆ
 Rails 4ܥ΁ΞοϓάϨʔυ • 2017೥: ٕज़ਪਐνʔϜ݁੒
 ΞοϓάϨʔυ࡞ۀΛϝϯόʔʹҠৡத ࠓ೔ͷ࿩͸͜͜

Slide 12

Slide 12 text

2016೥࣌఺ͷࣗಈςετঢ়گ • Model/Controller spec: ී௨ʹ͋Δ • Request Spec: ͪΐͬͱ͋Δ • Feature Spec: օແ → ϒϥ΢β͔Βૢ࡞ͨ࣌͠ʹຊ౰ʹಈ͘ͷʁ

Slide 13

Slide 13 text

Ͳ͏ͳΔ͔ͱ͍͏ͱ… • େن໛ͳϦϦʔεΛߦ͏৔߹ 1. ςετγφϦΦʢ͍ͬͺ͍ʣΛ༻ҙ 2. ϢʔβʔαϙʔτͷํͳͲʹڠྗΛཁ੥ 3. શһͰ֤γφϦΦΛख࡞ۀͰ֬ೝ
 = खಈͰେྔͷE2EςετΛ͍ͯͨ͠

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

E2Eςετ߹॓Λ։࠵ • طଘͷςετγφϦΦΛFeature SpecԽ͢Δ • ର৅: 57γφϦΦ • ظؒ: 2िؒʢ10Ӧۀ೔ʣ • νʔϜϝϯόʔ: 9໊

Slide 17

Slide 17 text

ϓϩδΣΫτମ੍ਤ E2Eςετ߹॓νʔϜ PM: ࢲ … ΞϓϦέʔγϣϯΤϯδχΞ: 8໊ ΤϯδχΞϦʔμʔ ࢧԉ ϦʔμʔͱϓϩδΣΫτͷ
 ؔΘΓʹ͍ͭͯ͸ޙ΄Ͳ

Slide 18

Slide 18 text

੒Ռ • ظؒ಺ʹର৅γφϦΦશͯΛFeature Specʹ
 མͱ͠ࠐΈɺmasterʹmergeͰ͖ͨ • Feature SpecΛॻ͖׳Ε͍ͯͳ͍ϝϯόʔͷ
 εΩϧΞοϓ͕Ͱ͖ͨ → ܧଓతͳΞοϓάϨʔυͷͨΊͷج൫͕Ͱ͖ͨ

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

1. ࣄલ४උΛͪΌΜͱ΍Δ • ҎԼΛ߹॓લʹ४උɾڞ༗ • γφϦΦͷׂΓৼΓ • 1γφϦΦͷணखʙmerge·Ͱͷϑϩʔ • Feature SpecΛॻ࣌͘ͷϧʔϧͱαϯϓϧ • ૝ఆ͞ΕΔ࣭໰ͱͦͷ౴͑ɹͳͲ

Slide 23

Slide 23 text

ϐΫελͰ͸։ൃؔ࿈ͷ ৘ใڞ༗ʹesaΛར༻

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

3. PM͕ڧ͍ؾ࣋ͪΛ࣋ͭ • PMʢ= ࢲʣʹ͔͔͍ͬͯͨϓϨογϟʔ • ։ൃΛࢭΊͯߦ͏ͨΊɺ૬Ԡͷ݁ՌΛग़͢
 ͜ͱΛίϛοτ͍ͯ͠Δ • ࣗಈԽର৅ͷγφϦΦ͕͚ͬ͜͏ଟ͍ • Feature SpecΛॻ͖׳Εͳ͍ϝϯόʔͷଘࡏ

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

େن໛ϦϦʔεͷݱঢ়ͱࠓޙ • ݱঢ়: ·ͩख࡞ۀ͕ଟ͍ • AWS OpsWorksͷStackΛผʹ1ͭ༻ҙ͢Δ • Route 53ͷ஋ΛखಈͰௐ੔͠Blue/Green → ίϯςφٕज़Λ༻͍ͨৗ࣌Blue/GreenσϓϩΠ
 ࣮ݱʹ޲͚ٕͯज़ݕূத

Slide 31

Slide 31 text

Զୡͷઓ͍͸͜Ε͔Βͩʂ

Slide 32

Slide 32 text

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