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
SDK開発にUIテストを導入してみた
Search
Victor Lee
June 21, 2018
Programming
2.4k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SDK開発にUIテストを導入してみた
Android Test Night #4で発表
Victor Lee
June 21, 2018
More Decks by Victor Lee
See All by Victor Lee
Create Flutter Plugins
konyavic
2
2.6k
ライブラリーだってクラッシュレポートが見たい
konyavic
0
590
5プラットフォームをサポートしているプッシュ通知SDKをFCMに移行した話
konyavic
2
1.3k
Background Execution LimitsのAndroid Pの変更点?
konyavic
0
580
Spoonを使わずにテストケースでスクショを撮りたい
konyavic
0
300
Other Decks in Programming
See All in Programming
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.8k
見えないものを探る要求要件定義に必要な基本的思考 / invisible-requirement-thinking
minodriven
15
7.9k
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
1
2.2k
FreeBSDでZabbixを動かす
kenkino
0
360
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
240
CodeRabbitの効果検証と過ごしてみた3ヶ月
armondando
0
190
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
5k
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
130
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
21
21k
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
0
400
setup-vp GitLab対応の裏側
naokihaba
0
150
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
560
Featured
See All Featured
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
300
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
580
So, you think you're a good person
axbom
PRO
2
2.2k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
610
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
250
Product Roadmaps are Hard
iamctodd
55
13k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Optimising Largest Contentful Paint
csswizardry
37
4k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
420
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Transcript
4%,։ൃʹ6*ςετΛಋೖͯ͠Έͨ "OESPJE5FTU/JHIU !LPOZBWJD
αʔϏεͷ͝հ
‣ ΞϓϦϚʔέςΟϯάࢧԉ ‣ ࢪࡦ ‣ ϓογϡ௨ ‣ ΞϓϦϝοηʔδ ‣ ੳ
‣ ఆྔੳ ‣ Ϣʔβʔૢ࡞ͷը
‣ ϓογϡ௨ ‣ ηάϝϯτ ‣ Ϧον௨ ‣ σΟʔϓϦϯΫ ‣ ֆจࣈ
‣ "#ςετ ‣ ίϯόʔδϣϯܭଌ ‣ ɾɾɾ
‣ ΞϓϦϝοηʔδ ‣ Ϣʔβʔૢ࡞ͰτϦΨʔ ‣ μΠΞϩάɾ ΦʔόʔϨΠɾόφʔ ‣ ηάϝϯτ ‣
"#ςετ ‣ ίϯόʔδϣϯܭଌ ‣ ɾɾɾ
ըͱϢʔβʔૢ࡞هͷ࠶ੜ
!LPOZBWJD ཥঝӹʢΓͪ͐Μ͍ʣɾग़ɾຊ ࡶ৯ܥΤϯδχΞ dࠐΈ04ݚڀ⾣dήʔϜ։ൃ⾣d4%,։ൃ
6*ςετಋೖͷഎܠ
ΞϓϦ։ൃऀ͔Β͢Δͱɺ Α͘Θ͔ΒΜ4%,ݏΘΕऀʹͳΓ͕ͪ
͓٬͞Μ͕҆৺ͯ͠ɺ ؆୯ʹ4%,ΛಋೖͰ͖ͯ΄͍͠ʂ
4%,ͷߏ ‣ ωΠςΟϒ4%,ʢJ04"OESPJEʣ ‣ 0CKFDUJWF$+BWB ‣ +BWB͚ͩݟΔͱϑΝΠϧɾ,ߦͷنײ ‣ ֎෦ϥΠϒϥϦʔҰΘͳ͍ ‣
NJO4EL7FSTJPO ‣ ֤ϑϨʔϜϫʔΫͷϓϥάΠϯ ‣ 6OJUZ$PDPTEY$PSEPWB.POBDB ‣ جຊతʹϒϦοδίʔυ͚ͩ ‣ ͲΜͲΜ૿͑Δʂ
4%,νʔϜ ‣ ਓͰ࡞ۀ୲ ‣ ϓϩμΫτ҆ఆظʹೖ͚ͬͨͲɺͦΕͰѹతਓखෆ ‣ ෆ۩߹ͷௐࠪˍमਖ਼ɺ༷มߋɺ04ΞοϓάϨʔυରԠɺ ςΫχΧϧαϙʔτɾɾɾ ‣ ͔ͳΓେ͖͍ΫϥΠΞϯτ͍Δ͔Β৻ॏʹΒͳ͍ͱ͍͚ͳ͍
‣ ͪΌΜͱ͔͚࣌ؒͯϨϏϡʔɾςετ͢Δ ‣ ҆ఆظʹೖ͔ͬͨΒͦ͜Γ͍ͨ͜ͱ͕૿͑Δ ‣ ςΫχΧϧɾσοτͷฦࡁ ‣ ςετͷࣗಈԽ
4%,։ൃͰ࣮ࢪ͍ͯ͠Δςετ ‣ ୯ମςετ ‣ 3PCPMFDUSJDϕʔεͷ6OJU5FTU ‣ $*Ͱճ͍ͯ͠Δ ‣ ͔ͬ͠ΓͰ͖͍ͯΔ ‣
։ൃऀʹΑΔखಈςετ ‣ ཏੑෆे ‣ 2"νʔϜʹΑΔखಈςετ ‣ ఆৗతʹΔ͜ͱ͍͠ ‣ BEIPDͳࣗಈςετ ‣ ͍ࣺͯ
4%,ςετͷ͠Έ
͠ΈͦͷҰ ‣ 4%,ʹ։ൃऀ͕৮Δͷ ‣ ςετͷ࠶ݱखॱʹɺίʔυΛॻ͘͜ͱؚ͕·Εͯ͠·͏ ‣ جຊతʹɺඇΤϯδχΞʹςετΛͤΒΕͳ͍ ‣ ςετΞϓϦΛ࡞Δ͜ͱͰ͖Δɺ͕
͠Έͦͷೋ ‣ ͓٬͞ΜͷΞϓϦߏ͞·͟· ‣ UBSHFU4EL7FSTJPO ‣ 4VQQPSU-JCSBSZͷόʔδϣϯ ‣ ςετΞϓϦͰ͍ΖΜͳঢ়گΛΧόʔ͖͠Εͳ͍
͠Έͦͷࡾ ‣ ରԠ͕͍ ‣ "OESPJEd ‣ ϥΠϑαΠΫϧ͕͍ ‣ աڈόʔδϣϯͷ4%,͕ੜ͖Ԇͼଓ͚Δ
6OJU5FTU͔ͬ͠Γ͍ͯ͠Δɺ͕ ‣ ີ݁߹ ‣ େྔͷ4IBEPXΦϒδΣΫτͱϦϑϨΫγϣϯ ‣ ϦϑΝΫλʔ͢ΔͨͼʹյΕΔ ‣ ͕ᐫʹͳΔ
ࣗಈςετͷϝϯςίετΛԼ͍͛ͨʜ खಈςετΛ؆୯ʹ৭ΜͳͰ࠶ݱ͍ͨ͠ʜ BEIPDͳςετΛҰͭʹ·ͱΊ͍ͨʜ
ͦ͏ͩɺ6*ςετΛಋೖ͠Α͏ʂ
6*ςετʹର͢Δظ ‣ *OTUSVNFOUFE5FTU ‣ ϒϥοΫϘοΫε ‣ ϦϑΝΫλϦϯάͰΫϥε໊͕มΘͬͯमਖ਼͕ཁΒͳ͍ ‣ ࣗಈԽ ‣
αʔόΛ༻ҙ͢Δඞཁ͕ͳ͍ʢ௨৴पΓΛϞοΫԽʣ
ςετέʔεͷྫ ‣ ΞϓϦىಈ ‣ ΞϓϦϝοηʔδͷը૾ϩʔυ͕࢝·Δ ‣ Πϯδέʔλ͕දࣔ͞ΕΔ ‣ λΠϜΞτ·Ͱʹը૾ϩʔυ͕ྃ͢Εɺ ͦΕΛදࣔ͢Δ
6*ςετͷઃܭ ‣ 3FQSP4%,ΛΈࠐΜͩɺԿ͠ͳ͍ςετΞϓϦ ‣ ೖྗ ‣ ௨৴ϞοΫͰαʔόϨεϙϯεΛࠐΉ ‣ 4%,"1*ͷݺͼग़͠ςετέʔεͰͦͷ··ॻ͚Δ ‣
ΞϓϦͷϥΠϑαΠΫϧมԽ͍ΖΜͳखஈͰ؆୯ʹͰ͖Δ ‣ ग़ྗ ‣ ௨৴ϞοΫͰαʔόϦΫΤετΛݕূ ‣ 6*FTQSFTTPͰݕূ ‣ ϑΝΠϧॻ͖ग़͠
ϋϚͬͨͱ͜Ζ
ϋϚͬͨͱ͜ΖͦͷҰ ‣ ௨৴ͷϞοΫԽ ‣ ϞοΫϥΠϒϥϦʔ ‣ QPXFSNPDL NPDLJUP ‣ ϏϧυΤϥʔ
‣ 63-TFU63-4USFBN)BOEMFS'BDUPSZ ‣ શ෦ͷίωΫγϣϯΛϋϯυϦϯά͠ͳ͍ͱ͍͚ͳ͍ ‣ Ұճ͔͠Ͱ͖ͳ͍
ϋϚͬͨͱ͜Ζͦͷೋ ‣ "OESPJE5FTU0SDIFTUSBUPS ‣ ςετέʔεؒͪΌΜͱϓϩηεΛ࠶্ཱͪ͛ͯ͘ΕΔ ‣ ΩϟογϡͷΫϦʔϯΞοϓͳͲઃఆͰ͖Δ ‣ "OESPJE5FTU0SDIFTUSBUPS͕ͳ͍ͱ ‣
λΠϛϯά͕ͣΕͯɺλΠϛϯάґଘͷςετ͕ۃʹෆ҆ఆ
ςετέʔεͷྫ @Test public void test_whenDownloadCompletedWithinTimeout_showMessageAfterAppLaunch() throws Throwable { setup(new JSONArray(Arrays.asList(createDialogMessage(""))));
mConnectionMockFactory.setTimeout(2900); mActivityRule.launchActivity(new Intent()); sleep(4000); check_messageIsShown(); } @Test public void test_whenDownloadExceededTimeout_dismissMessageAfterAppLaunch() throws Throwable { setup(new JSONArray(Arrays.asList(createDialogMessage("")))); mConnectionMockFactory.setTimeout(3100); mActivityRule.launchActivity(new Intent()); sleep(4000); check_messageIsDismissed(); } ‣
6*ςετಋೖޙ ‣ ߦͷϦϑΝΫλϦϯάͰ׆༂ʂ ‣ ϦϑΝΫλʔ͠ͳ͍ͱͭΒ͍αϒγεςϜ͕͋ͬͨ ‣ ৽نػೳͷ࣮ͱಉ࣌ʹϦϑΝΫλϦϯά͢Δͷϋʔυϧ͕ߴ ͔ͬͨ ‣ ෦*'Λม͑ͣʹಥ؏ࣄ
‣ 6*ςετͰڍಈΛอূ͢Δ ‣ ෦*'ΛϦϑΝΫλϦϯά
͜Ε͔Βͷలͱ՝ ‣ ల ‣ ৽نͷػೳՃɾվमͷ͍ͭͰʹςετέʔεΛՃ͍ͯ͘͠ ‣ ͍ΖΜͳύϥϝʔλͰࣗಈεΫϦʔϯγϣοτ ‣ ՝ ‣
ςετϓϩδΣΫτͷߏ͕େԽͦ͠͏ ‣ ͔͔࣌ؒΔͷͰ·ͩ$*Ͱճͤͳ͍