Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
[RMPxQuipper meetup #3]開発のための開発~スマホアプリ向けe2eテストの...
Search
Naoki Ainoya
September 29, 2016
Programming
2.5k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
[RMPxQuipper meetup #3]開発のための開発~スマホアプリ向けe2eテストの検証導入事例を通じて~
【RMP×Quipper】Food&Drink meetup #3 - connpass
http://rmp-quipper.connpass.com/event/39082/
Naoki Ainoya
September 29, 2016
More Decks by Naoki Ainoya
See All by Naoki Ainoya
Looker BEACON 2021 / How we implemented Scalebase Analytics with Looker
ainoya
0
2.8k
Salesforce Application Development with GitHub Actions and sfdx-cli
ainoya
1
3.9k
Scalebase Analytics powered by Looker
ainoya
0
2.6k
SPIFFE in Action
ainoya
4
1.7k
How Developer Support Works
ainoya
10
2.8k
リクルートマーケティングパートナーズでのDeployGate活用事例
ainoya
2
4.5k
How to play Scala on dockerized infrastructure
ainoya
4
3.3k
prevs.io開発の裏側とコンテナ仮想化時代のAPI運用
ainoya
4
2.5k
ビルドパイプラインツールをGoで作った話
ainoya
3
2.7k
Other Decks in Programming
See All in Programming
Domain-Driven Transformation
hschwentner
2
2.3k
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
360
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
190
自サークルのIdPからログアウトできるようになるまで
taiseiue
1
130
Java 27新機能 / Java 27 new features
kishida
2
210
AIに “答え“を書かせるのを やめてみた
___akari11
0
110
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
740
見えないものを探る要求要件定義に必要な基本的思考 / invisible-requirement-thinking
minodriven
15
8k
カツオ、ご期待ください
suneo3476
0
160
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
640
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
1
410
Jetpack Compose Mechanisms
skydoves
2
640
Featured
See All Featured
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
720
A Soul's Torment
seathinner
8
3.7k
Thoughts on Productivity
jonyablonski
76
5.4k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
450
Writing Fast Ruby
sferik
630
63k
A Modern Web Designer's Workflow
chriscoyier
699
190k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
540
How to Talk to Developers About Accessibility
jct
2
570
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Transcript
։ൃͷͨΊͷ։ൃ ~εϚϗΞϓϦ͚e2eςετͷಋೖΛ௨ͯ͠~
ࣗݾհ • @ainoya • ૬୩ थʢ͍͋ͷ ͳ͓͖ʣ • ~2013/8 mixi:
Chef,ϓϥΠϕʔυΫϥυͷߏங • ~2015 RTC: ϓογϡ௨ج൫,ࣾFWͷอक • ~2016/3 RMP: ελσΟαϓϦӳ୯ޠɾENGLISHΤϯδχΞ • ~ࠓ RMP: ։ൃࢧԉάϧʔϓ
ٕज़ྖҬ • AWS/docker • Perl/Ruby/Java/Go/Scala/Swift • ΞϓϦ͔ΒΠϯϑϥ·Ͱઙ͘͘…
։ൃࢧԉνʔϜʹ͍ͭͯ • ϓϩμΫτ։ൃ෦ͷԣஅ৫
ϓϩμΫτ։ൃΛՃͤ͞Δͨ Ίͷ։ൃ • ࣾherokuͷߏங(deis on GCP) • σʔλղੳج൫ߏஙࢧԉ • e2eςετͷݕূ(Appium/Selenium)
• ݕূཧͷվળ(OpenSTFͷಋೖ)
e2eςετͷݕূɾಋೖ
ͳͥεϚϗΞϓϦͷe2eςε τΛΔͷ͔
ϦϦʔεલͷQA • εϓϨουγʔτͷखॱॻΛͱʹςελʔ ͕࿑ಇूతʹ࣮ࢪ
ςετέʔε͕ΒΉͱɺखಈςετʹ͔ ͔Δίετɾ͕͔࣌ؒʹͳΒͳ͘ͳΔ • ͕͔͔࣌ؒΔͱ͍͑ɺεϚϗΞϓϦɺ Ϣʔβʹόάमਖ਼Λಧ͚Δ·Ͱ͕͔͔࣌ؒΔ • Ώ͑ʹWebΞϓϦΑΓQA͔ͬ͠ΓΊʹ͠ ͍ͨ
ࣗಈԽ͍ͨ͠ • εϓϨουγʔτʹखॱॻͱ֬ೝ߲͕໌هͰ͖ ΔͳΒɺਓखͰΔඞཁͳ͍ɻࣗಈԽ͢Δ͖ • QAͰςελʔʹ͓ئ͍͢Δ͜ͱɺਓͰͳ͍ͱ Ͱ͖ͳ͍ςετʢ୳ࡧతςετʣ͚ͩʹ͍ͨ͠ • ࣗಈԽͰ͖ΔͳΒɺCIʹΈࠐΊQAஈ֊Ͱؾ ͮ͘σάϨΛૣظൃݟͰ͖ΔϝϦοτ͋Δ
ͳͥͰ͖͍ͯͳ͍ͷ͔ • εϚϗΞϓϦ͚e2eςετͷٕज़ൃల్্ • ֶशίετ͕ͱΜͰͳ͘ߴ͍ʢςετϑϨʔϜ ϫʔΫͷཧղɾ࣮ߦڥͷཧղɾςετͷॻ͖ํʣ • ϓϩμΫτ։ൃΛ͍ͯ͠ΔΤϯδχΞ͕ยखؒͰಋ ೖɾӡ༻͢Δͷݫ͍͠ •
݁ՌɺʮΈΜͳΓ͍ͨͱࢥͬͯΔ͚Ͳ·ͩͰ͖ͳ ͍ʯঢ়ଶ͕ͣͬͱଓ͍͍ͯΔ
ಋೖʹɺͬ͘͡ΓࠊΛਾ͑ ͯۛຯΛ͢ΔϦιʔε͕ඞཁ ։ൃج൫ۀͱͯ͠ઐͰऔΓΉ͖՝
ͱ͍͏Θ͚Ͱ͜͜ϲ݄e2eς ετͷಋೖݕূʹऔΓΜͰ͖ ͨ
Φʔτϝʔγϣϯ ϑϨʔϜϫʔΫ ςετ ϑϨʔϜϫʔΫ e2eςετڥͷ֓؍(ਤʣ 34QFD BQQJVN@MJC BQQJVN TFSWFS 0QFO45'
4BVDFMBCT "OESPJE࣮ػ "OESPJE࣮ػ "OESPJE࣮ػ J04γϛϡϨʔλ J04γϛϡϨʔλ J04γϛϡϨʔλ ςετϑΝʔϜ
ΦʔτϝʔγϣϯϑϨʔϜϫʔ Ϋ • appiumΛར༻ • seleniumͱಉ͡ΠϯλϑΣʔεͰios/android ΞϓϦͷૢ࡞͕Մೳ IUUQXXXQJMMBSHMPCBMDPNTJUFTEFGBVMUpMFTBQQJVNQOH
ςετϑϨʔϜϫʔΫʢςετ ίʔυ෦ʣ • rspecΛ࠾༻ • rubyεΫϦϓτͰ୭Ͱؾܰʹॻ͚Δͱ͍͏Λॏࢹ • ΞϓϦͱಉ͡ίʔυ(JavaSwift)Ͱॻ͔ͳ͍ͷͰɺ͏·͍͚͘ಉ ҰΞϓϦͷҟछϓϥοτϑΥʔϜؒͰςετίʔυΛڞ༗Ͱ͖Δ IUUQCQCMPHTQPUDPN*)9V1IZ$XJ5XL%U#4P*""""""""-")9Z4ISWM'TT$MBTT
%JBHSBNQOH
ςετέʔεྫ • UIཁૉͷબ۩ମతͳૢ࡞ΛPageObjectʹدͤΔ • RSpecͷςετέʔε͕ςετγφϦΦͱͯͦ͠ͷ··ಡΊΔΑ͏ʹͳΓɺ͔Γ͍͢
androidςετϑΝʔϜ • openstfΛར༻ɻࣾͷ࣮ػݕূ্Ͱςε τ࣮ߦՄೳ
iosςετϑΝʔϜ • saucelabsΛར༻ɻiosγϛϡϨʔλΛฒྻىಈͯ͠ςετߴ Խ͕Ͱ͖Δ
۩ମతͳςετͷྲྀΕ • ςετγφϦΦͷ࡞ • ΞϓϦૢ࡞ͷΩʔʹͳΔUIཁૉ໊ͷநग़ • arc(appium ruby console)Λ༻ •
ςετίʔυ࡞ • page objectύλʔϯΛϕʔεʹrspecͰ • ςετ࣮ߦ • openstf/saucelabs্Ͱ࣮ߦ • ςετ݁Ռͷू • εΫϦʔϯγϣοτΛػछʹ·ͱΊͯ
ը૾ࠩൺֱ(ݕূத) • Perceptual diffsʹΑΔσάϨͷݕग़ڧԽ https://github.com/uber/image-diff
ͬͯΈͯͷײ • ͖ͪΜͱӡ༻ΛճͤΕɺσάϨͷૣظൃݟʹཱͭιϦϡʔγϣϯ ʹͳΔ • ͔͠͠ͳ͕ΒɺεϚϗΞϓϦͷe2eςετՃͱϝϯςʹ͔ͳΓͷ ίετ͕͔͔Δ (Web/Seleniumͱൺ͍ͯΖ͍Ζൃల్্ʣ • ϢχοτςετͷΑ͏ʹ։ൃऀ͕ؾܰʹॻ͘ͷ·͍ͩ͠
• ·ͱΊͯ࣌ؒΛऔͬͯςετॻ͘ͷΛ͕ΜΔ͔ɺઐଐςετΤϯδ χΞ͕·ͱΊͯॻ͘ͷ͕ݱ࣮తͱײͨ͡ • ςετέʔε૿͗ͣ͢͠࠷ݶʹͱͲΊΔͷ͕·͍͠ʢϝϯς ίετͷ؍Ͱʣ
͓ΘΓʹɿ։ൃͷͨΊͷ։ൃ • ֤ϓϩμΫτͷٕज़తෛ࠴ɺجຊతʹ֤νʔϜͷΤϯδχΞ͕ͨͪࣄऀ ͱͯ͠ฦࡁ͢Δ • ͕ɺͲ͏ͯ͜͠΅Εٿൃੜͯ͠͠·͏ • νʔϜʹ͍Δͱݟ͍͑ͯͳ͍ࢹ͋Δ • ։ൃج൫άϧʔϓʢ෦ԣஅ৫ʣ͕͜΅ΕٿΛर͍ʹߦ͘
• ϓϩμΫτ։ൃͷڞ௨՝Λநग़ͯ͠ղܾʹऔΓΉ • ʮΈΜͳΓ͍ͨͱࢥͬͯΔ͚Ͳ·ͩղܾͰ͖͍ͯͳ͍՝ʯ͕Γଓ͚Δ ঢ়ଶΛແ͘͢ • e2eςετͷಋೖݕূͦͷҰ
We are Hiringʂ • Γ͍ͨ͜ͱଞʹͨ͘͞Μ͋Δɺๅͷࢁ • ϚʔέςΟϯάΦʔτϝʔγϣϯج൫ • σʔλղੳج൫ •
ηΩϡϦςΟϚωδϝϯτ • ಈը࠶ੜج൫ • R&Dʢػցֶशɾਂֶशetc..) • ্هͷΩʔϫʔυʹͽΜͱདྷͨํɺҰॹʹ՝ղܾʹऔΓΜͰ͘ΕΔ ํΛืूத
e2eςετ͡ΊΔͳΒandroid ͔Β͕͓͢͢Ί • iOSͷॾʑͷڍಈ͕͘ɺςετέʔεΛॻ͘ͷʹ͕͔͔࣌ؒΔ • appium͔Βͷૢ࡞͕͍ɺpageΦϒδΣΫτ͕औΓͮΒ͍ɺ accessiblity identifierΛઃఆͯ͠͏·͘ཁૉ͕ͱΕͳ͍ɺetc… • Androidͷ΄͏͕ॾʑૢ࡞͘͢͠ɺ͘͘͞͞ςετέʔεॻ͚Δ
• appiumͷԠૣ͍ɻମײͰiOSͷഒҎ্ͷ͞Ͱॻ͚Δ • ͱ͘ʹAndroid/iOS྆ํల։͍ͯ͠ΔΞϓϦͷ߹ɺ·ͣAndroid൛ ͰςετέʔεΛͤ͞ΔˠiOSʹςετέʔεҠ২͕ޮ͕ྑ͍ͱ ײͨ͡