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
600
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
Rails初心者がパスキーを実装してみて大変だったこと
ktombow
0
160
Secure Your Coding Agent Like It’s Malware (v1.5) 🇬🇧 @Code.talks 2026
richargh
0
110
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
3
1.5k
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
1.2k
SFCで実現する病院・医療システムの動的組み立て式UI
koukimiura
1
170
AIが実装を担う時代の「技術設計」と「チームマネジメント」
kamina_zzz
2
250
まずはコードより業務と向き合う:テーブル解体のためにPdMを呼んだ話
sakawe_ee
0
190
TanStack Vue Query と Pinia Colada から学ぶ非同期状態の型設計
aoshi
0
640
우리의 Nitro Modules는 당신의 Turbo Modules보다 아름답다
l2hyunwoo
0
260
ActionController meets Protocol Buffers
sorah
1
800
仕様駆動開発入門 (何を作るかを先に決めて渡す) | 目指せ Kiro マスター 05
inariku
PRO
2
100
當我們開始不讀 Code - AI Agent 時代,Code Review 與 Clean Code 還剩下什麼?
jame2408
1
370
Featured
See All Featured
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
450
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
240
The Mindset for Success: Future Career Progression
greggifford
PRO
0
560
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
470
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Building AI with AI
inesmontani
PRO
1
1.4k
Context Engineering - Making Every Token Count
addyosmani
9
1.3k
Believing is Seeing
oripsolob
1
270
Designing for Timeless Needs
cassininazir
1
560
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Code Reviewing Like a Champion
maltzj
529
40k
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*ςετͰڍಈΛอূ͢Δ ‣ ෦*'ΛϦϑΝΫλϦϯά
͜Ε͔Βͷలͱ՝ ‣ ల ‣ ৽نͷػೳՃɾվमͷ͍ͭͰʹςετέʔεΛՃ͍ͯ͘͠ ‣ ͍ΖΜͳύϥϝʔλͰࣗಈεΫϦʔϯγϣοτ ‣ ՝ ‣
ςετϓϩδΣΫτͷߏ͕େԽͦ͠͏ ‣ ͔͔࣌ؒΔͷͰ·ͩ$*Ͱճͤͳ͍