Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
エンジニア総出でE2Eテストを自動化した話 / genbaweb01
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Yuichi Goto
July 12, 2017
Technology
2.1k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
エンジニア総出でE2Eテストを自動化した話 / genbaweb01
Web現場Meetup〜GMOペパボ×ピクスタ〜エンジニアによる技術・組織改善の裏側(2017/07/12)
Yuichi Goto
July 12, 2017
More Decks by Yuichi Goto
See All by Yuichi Goto
[Teaser] Type-Safe Lightweight DDD with Effect Schema
yasaichi
3
550
Google Cloud を用いたソフトウェア開発の内製化組織の早期立ち上げの実現 / Rapid Establishment of In-House Software Development Teams Using Google Cloud
yasaichi
1
1.7k
[EN] Robust and Scalable API Gateway Built on Effect
yasaichi
3
460
Effectで作る堅牢でスケーラブルなAPIゲートウェイ / Robust and Scalable API Gateway Built on Effect
yasaichi
9
2.5k
あるRailsエンジニアがビジネスリーダーに転身するまで
yasaichi
9
3.3k
Active Recordから考える次の10年を見据えた技術選定 / Architecture decision for the next 10 years at PIXTA
yasaichi
50
23k
Active Recordから考える次世代のRuby on Railsの方向性 / Directions for the next generation of Ruby on Rails: From the viewpoint of its Active Record
yasaichi
38
22k
ピクスタのエンジニアリングとCircleCI / Software Engineering with CircleCI at PIXTA
yasaichi
1
480
Ruby on Railsの正体と向き合い方 / What is Ruby on Rails and how to deal with it?
yasaichi
147
95k
Other Decks in Technology
See All in Technology
「勝手に広まる」人気 AI エージェントを爆速で作ろう!(AWS Summit Japan 2026講演資料)
minorun365
PRO
10
2.1k
40代で“やっとエンジニアになれた”――閉じた学びを開き、空の青さを知る / 20260628 Naoki Takahashi
shift_evolve
PRO
4
110
Oracle Cloud Infrastructure:2026年6月度サービス・アップデート
oracle4engineer
PRO
0
150
入門!AWS Blocks
ysuzuki
1
160
Agile and AI Redmine Japan 2026
hiranabe
3
350
【NRUG vol.18】KubernetesにおけるNew Relicデータ取得量削減の考え方
nrug_member
0
170
“詰む”前に仕組みを作れ 〜技術の波に溺れないためのキャッチアップ術〜
takasyou
2
420
GitHub Copilot app最速の発信の裏側
tomokusaba
1
200
不要なレビューをAIにまかせて AIコーディングの環境改善を加速した
shoota
1
230
新しいUbuntu/GNOMEが使いたいからXからWaylandへ移行頑張ってるの巻 2026-06-20
nobutomurata
0
150
Kiroで書いた 設計書 が AI レビューの 採点基準 になる
ezaki
0
140
iOS アプリの「これって不具合ですか?」を AI に調べてもらう
miichan
0
110
Featured
See All Featured
Leo the Paperboy
mayatellez
7
1.8k
The Curious Case for Waylosing
cassininazir
1
400
KATA
mclloyd
PRO
35
15k
The SEO identity crisis: Don't let AI make you average
varn
0
490
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Typedesign – Prime Four
hannesfritz
42
3.1k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
170
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
220
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
330
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.3k
HDC tutorial
michielstock
2
720
Transcript
ΤϯδχΞ૯ग़ͰE2EςετΛ ࣗಈԽͨ͠ Yuichi Goto (@_yasaichi) July 12, 2017 @ WebݱMeetup
self.inspect • ϐΫελגࣜձࣾ ɹ ٕज़ਪਐνʔϜϦʔμʔ • Twitter: @_yasaichi • GitHub:
yasaichi • Blog: http://web-salad.hateblo.jp
ϐΫελͷ͝հ
ձࣾ֓ཁ • ઃཱ: 20058݄25 • ैۀһ: ୯ମ75໊ʢ3݄࣌ʣ • ཧ೦: ΠϯλʔωοτͰϑϥοτͳੈքΛͭ͘Δ
• ࣄۀ༰: PIXTA, fotowaͷӡӦ
https://pixta.jp σδλϧૉࡐͷΦϯϥΠϯϚʔέοτϓϨΠε 6ϲࠃޠల։த
https://fotowa.com ग़ுࡱӨϚονϯάαʔϏε
ຊ
ຊൃදʹ͍ͭͯ • ͢͜ͱ: • ͳͥE2EςετΛࣗಈԽ͢Δඞཁ͕͔͋ͬͨ • ͬͯΑ͔ͬͨ͜ͱɺ৽ͨʹݟ͖͑ͯͨ͜ͱ • ͞ͳ͍͜ͱ: •
E2Eςετʹؔ͢Δٕज़తͳ༰
Agenda എܠͱత ɹ ࣮ࢪ༰ͱՌ ɹ ͬͯΑ͔ͬͨ͜ͱ ɹ ࠓޙͷ՝
PIXTAͷߏ • ෳΞϓϦέʔγϣϯͰߏ • ຊମ: ϞϊϦγοΫͳRailsΞϓϦέʔγϣϯ • ↑͔ΒΓग़ͨ͠ෳͷϚΠΫϩαʔϏε • ओͳϑϨʔϜϫʔΫRailsͰɺࣗಈςετΛ
RSpecͰهड़
Ruby/RailsपΓͷվળͷྺ࢙ • 2015: ৽ଔೖࣾޙͷॳλεΫ͕Ruby 2ܥͷ ɹɹɹɹΞοϓάϨʔυʢʂʣ • 2016: ࣗಈςετߴԽ →
֦ॆ Rails 4ܥΞοϓάϨʔυ • 2017: ٕज़ਪਐνʔϜ݁ ΞοϓάϨʔυ࡞ۀΛϝϯόʔʹҠৡத ࠓͷ͜͜
2016࣌ͷࣗಈςετঢ়گ • Model/Controller spec: ී௨ʹ͋Δ • Request Spec: ͪΐͬͱ͋Δ •
Feature Spec: օແ → ϒϥβ͔Βૢ࡞ͨ࣌͠ʹຊʹಈ͘ͷʁ
Ͳ͏ͳΔ͔ͱ͍͏ͱ… • େنͳϦϦʔεΛߦ͏߹ 1. ςετγφϦΦʢ͍ͬͺ͍ʣΛ༻ҙ 2. ϢʔβʔαϙʔτͷํͳͲʹڠྗΛཁ 3. શһͰ֤γφϦΦΛख࡞ۀͰ֬ೝ =
खಈͰେྔͷE2EςετΛ͍ͯͨ͠
E2EςετΛࣗಈԽ͢Δͧʂ • ݐલ: Ruby/RailsͷΞοϓάϨʔυΛ҆શ͔ͭ ܧଓతʹߦ͍ͬͯͨ͘Ί • ຊԻ: • ຖճଞ෦ॺͱͷௐ͢ΔͷΛΊ͍ͨ •
ख࡞ۀʹΑΔ֬ೝ͕େมͳͷͰΊ͍ͨ
Agenda ɹ എܠͱత ࣮ࢪ༰ͱՌ ɹ ͬͯΑ͔ͬͨ͜ͱ ɹ ࠓޙͷ՝
E2Eςετ߹॓Λ։࠵ • طଘͷςετγφϦΦΛFeature SpecԽ͢Δ • ର: 57γφϦΦ • ظؒ: 2िؒʢ10Ӧۀʣ
• νʔϜϝϯόʔ: 9໊
ϓϩδΣΫτମ੍ਤ E2Eςετ߹॓νʔϜ PM: ࢲ … ΞϓϦέʔγϣϯΤϯδχΞ: 8໊ ΤϯδχΞϦʔμʔ ࢧԉ ϦʔμʔͱϓϩδΣΫτͷ
ؔΘΓʹ͍ͭͯޙ΄Ͳ
Ռ • ظؒʹରγφϦΦશͯΛFeature Specʹ མͱ͠ࠐΈɺmasterʹmergeͰ͖ͨ • Feature SpecΛॻ͖׳Ε͍ͯͳ͍ϝϯόʔͷ εΩϧΞοϓ͕Ͱ͖ͨ →
ܧଓతͳΞοϓάϨʔυͷͨΊͷج൫͕Ͱ͖ͨ
߹॓Ҏ߱ͰͷมԽ • Rails 4ܥͷΞοϓάϨʔυ࣌ͷϓϩηε 1. ࣗಈςετ͕௨ΔΑ͏ʹؤுΔ 2. stagingڥͰ؆୯ͳಈ࡞֬ೝΛ͢Δ → ҎલΑΓ͘ਐΊΒΕΔΑ͏ʹͳͬͨ
Agenda ɹ എܠͱత ɹ ࣮ࢪ༰ͱՌ ͬͯΑ͔ͬͨ͜ͱ ɹ ࠓޙͷ՝
ͨΓલͷ͜ͱ͕େࣄͩͬͨ 1. ࣄલ४උΛͪΌΜͱΔ 2. ࡞ۀʹूதͰ͖ΔڥΛ࡞Δ 3. PMͱͯ͠ଞͷ୭ΑΓʮઈରʹඪΛୡ ͢Δͧʂʯͱ͍͏ؾ࣋ͪΛ࣋ͬͯߦಈ͢Δ
1. ࣄલ४උΛͪΌΜͱΔ • ҎԼΛ߹॓લʹ४උɾڞ༗ • γφϦΦͷׂΓৼΓ • 1γφϦΦͷணखʙmerge·Ͱͷϑϩʔ • Feature
SpecΛॻ࣌͘ͷϧʔϧͱαϯϓϧ • ఆ͞ΕΔ࣭ͱͦͷ͑ɹͳͲ
ϐΫελͰ։ൃؔ࿈ͷ ใڞ༗ʹesaΛར༻
2. ࡞ۀʹूதͰ͖Δڥ࡞Γ • ظؒதͷ։ൃΛࢭΊʢཁௐʣɺׂΓࠐΈ λεΫΤϯδχΞϦʔμʔ͕ରԠ͢Δ • ձٞࣨΛऴିͬͯͦ͜͠Ͱ࡞ۀ͢Δ • ిݯपΓΛඋͯ͠σΟεϓϨΠΛ࣋ͪࠐΉ •
Ίͷ͓ͭΛ࣋ͪدΔ
None
3. PM͕ڧ͍ؾ࣋ͪΛ࣋ͭ • PMʢ= ࢲʣʹ͔͔͍ͬͯͨϓϨογϟʔ • ։ൃΛࢭΊͯߦ͏ͨΊɺ૬Ԡͷ݁ՌΛग़͢ ͜ͱΛίϛοτ͍ͯ͠Δ • ࣗಈԽରͷγφϦΦ͕͚ͬ͜͏ଟ͍
• Feature SpecΛॻ͖׳Εͳ͍ϝϯόʔͷଘࡏ
ٕज़ͱؾ࣋ͪͰϦʔυ͢Δ • ίʔυϨϏϡʔΛߦ͍࣭Λ୲อ͢Δ • ʹͳΓͦ͏ͳՕॴΛઌճΓͯ͠ରࡦ͢Δ • ऴ൫Ͱ٧·͍ͬͯΔϝϯόʔͱϖΞϓϩΛ ߦ͍ٕज़తͳΛղܾ͢Δ PMࣗΒҰ൪Ωπ͍Λղ͖ʹߦ࢟͘ΛݟͤΔ ͜ͱͰϝϯόʔؤுͬͯ͘Εͨʢͱࢥ͏ʣ
Agenda ɹ എܠͱత ɹ ࣮ࢪ༰ͱՌ ɹ ͬͯΑ͔ͬͨ͜ͱ ࠓޙͷ՝
৽ͨͳ՝ • ։ൃΛࢭΊΔͱ͖ͷௐ͕େม • ҙٛΛઆ໌ͯ͠ཧղͯ͠Β͏ྗΛ͢Δ • ՌΛग़͠ଓ͚ͯ৴པஷۚΛ͢Δ • େنϦϦʔε࣌ͷΠϯϑϥ࡞ۀ໘Ͱ ͋ͬͨ͜ͱʹؾͮ͘
ͻͱͭͷΛղܾͨ͜͠ͱͰ ผͷ͕ݟ͖͑ͯͨ
େنϦϦʔεͷݱঢ়ͱࠓޙ • ݱঢ়: ·ͩख࡞ۀ͕ଟ͍ • AWS OpsWorksͷStackΛผʹ1ͭ༻ҙ͢Δ • Route 53ͷΛखಈͰௐ͠Blue/Green
→ ίϯςφٕज़Λ༻͍ͨৗ࣌Blue/GreenσϓϩΠ ࣮ݱʹ͚ٕͯज़ݕূத
Զୡͷઓ͍͜Ε͔Βͩʂ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ ຊൃදͷϒϩά൛: http://texta.pixta.jp/entry/2016/06/15/115000