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
[RMPxQuipper meetup #3]開発のための開発~スマホアプリ向けe2eテストの...
Search
Naoki Ainoya
September 29, 2016
Programming
2.4k
1
Share
[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.5k
SPIFFE in Action
ainoya
4
1.7k
How Developer Support Works
ainoya
10
2.7k
リクルートマーケティングパートナーズでのDeployGate活用事例
ainoya
2
4.5k
How to play Scala on dockerized infrastructure
ainoya
4
3.2k
prevs.io開発の裏側とコンテナ仮想化時代のAPI運用
ainoya
4
2.5k
ビルドパイプラインツールをGoで作った話
ainoya
3
2.7k
Other Decks in Programming
See All in Programming
〜バイブコーディングを超えて〜 チームで実験し続けたAI駆動開発
tigertora7571
0
210
実践ハーネスエンジニアリング:ステアリングループを実例から読み解く / Practical Harness Engineering: Understanding Steering Loops Through Real-World Examples
nrslib
5
5.6k
【ディップ|26年新卒研修資料】TDD実装演習
dip_tech
PRO
0
190
AWSはOSSをどのように 考えているのか?
akihisaikeda
0
120
AI時代だからこそ「Bloc」を採用する価値があるのかもしれない
takuroabe
0
200
「なんか〇〇ライブラリで脆弱性あるみたいなんだけど。。。」から始める脆弱性対応 / First Steps in Vulnerability Response
mackey0225
2
130
20年以上続くプロダクトでも使い続けられる静的解析ツールを求めて
matsuo_atsushi
0
150
AIを導入する前にやるべきこと
negima
2
370
Oxlintはいかにしてtsgolintのlint ruleを呼び出しているのか
syumai
0
270
AI駆動開発勉強会 広島支部 第一回勉強会 AI駆動開発概要とワークショップ
hayatoshimiu
0
220
なぜあなたのコードには「コシ」がないのか?〜AI時代に問う、最後まで美味しい設計と戦略〜 #phpconkagawa / phpconkagawa2026
shogogg
0
210
検索設計から 推論設計への重心移動と Recall-First Retrieval
po3rin
5
1.7k
Featured
See All Featured
Believing is Seeing
oripsolob
1
130
Navigating Team Friction
lara
192
16k
Prompt Engineering for Job Search
mfonobong
0
310
How Software Deployment tools have changed in the past 20 years
geshan
0
33k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
160
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
180
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
180
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
190
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
300
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
120
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ʹςετέʔεҠ২͕ޮ͕ྑ͍ͱ ײͨ͡