Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
深いい勉強会
Search
FujiKinaga
May 21, 2018
0
76
深いい勉強会
FujiKinaga
May 21, 2018
Tweet
Share
More Decks by FujiKinaga
See All by FujiKinaga
Flutterで実装する実践的な攻撃対策とセキュリティ向上
fujikinaga
2
870
最新のCompose Multiplatform を使うとiOSとAndroidアプリはどれくらい作れるのか
fujikinaga
2
680
Androidのテストの理解を深めてみた
fujikinaga
0
68
開発案件の進み方
fujikinaga
0
100
深いい勉強会 vol.10
fujikinaga
0
91
深いい勉強会 vol.9
fujikinaga
0
110
Understanding Dagger2 Part1
fujikinaga
0
59
Mater of Subscription
fujikinaga
0
72
深いい勉強会
fujikinaga
2
78
Featured
See All Featured
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
82
Optimising Largest Contentful Paint
csswizardry
37
3.5k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
2
3.8k
First, design no harm
axbom
PRO
1
1.1k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
1
1.3k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
130
SEO for Brand Visibility & Recognition
aleyda
0
4.1k
Site-Speed That Sticks
csswizardry
13
1k
Writing Fast Ruby
sferik
630
62k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
38
Heart Work Chapter 1 - Part 1
lfama
PRO
3
35k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
130
Transcript
UIςετͷࣗಈԽʹ࢛ۤീ͍ۤͯ͠Δ ਂ͍͍ษڧձvol.5 Fuji Kinaga
࠳ંͷཤྺ • UIͷςετɺFacebookͱTwitterͷϩάΠϯͰͭ·ͮ͘ • FirebaseTestLabͷInstrumentationςετ࣮ߦͷํͰͭ·ͮ͘ • FacebookͷεύϜٙʹͭ·ͮ͘ • PythonͷϧʔτݖݶͰͭ·ͮ͘ •
εΫϦʔϯγϣοτΛऔΔϥΠϒϥϦͷબఆͰͭ·ͮ͘ • ςετίʔυͷKotlinԽͰͭ·ͮ͘ • GradleɺyamlϑΝΠϧͷॻ͖ํʹͭ·ͮ͘
࠳ંͷཤྺ • UIͷςετɺFacebookͱTwitterͷϩάΠϯͰͭ·ͮ͘ • FirebaseTestLabͷInstrumentationςετ࣮ߦͷํͰͭ·ͮ͘ • FacebookͷεύϜٙʹͭ·ͮ͘ • PythonͷϧʔτݖݶͰͭ·ͮ͘ •
εΫϦʔϯγϣοτΛऔΔϥΠϒϥϦͷબఆͰͭ·ͮ͘ • ςετίʔυͷKotlinԽͰͭ·ͮ͘ • GradleɺyamlϑΝΠϧͷॻ͖ํʹͭ·ͮ͘
FacebookɺTwitterɺ͍Ζ͍Ζͳ • ΞϓϦ͕εϚϗʹೖ͍ͬͯΔ߹ͱͳ͍߹Ͱڍಈ͕ҧ͏ • Ωϟογϡ͕͍ͬͯΔ߹ͱͳ͍߹Ͱڍಈ͕ҧ͏ • FacebookΞϓϦ༗ΓͩͱΩϟογϡͰଈϩάΠϯ • TwitterΞϓϦ༗ΓͰ࿈ܞ͢ΔϘλϯΛԡ͢ඞཁ͋Γ •
WebViewͱωΠςΟϒͰIDͷऔಘͷํ๏͕શવҧ͏ - ωΠςΟϒ : "com.twitter.android:id/ok_button" - Σϒ : “username_or_email" and “password”
࠳ંͷཤྺ • UIͷςετɺFacebookͱTwitterͷϩάΠϯͰͭ·ͮ͘ • FirebaseTestLabͷInstrumentationςετ࣮ߦͷํͰͭ·ͮ͘ • FacebookͷεύϜٙʹͭ·ͮ͘ • PythonͷϧʔτݖݶͰͭ·ͮ͘ •
εΫϦʔϯγϣοτΛऔΔϥΠϒϥϦͷબఆͰͭ·ͮ͘ • ςετίʔυͷKotlinԽͰͭ·ͮ͘ • GradleɺyamlϑΝΠϧͷॻ͖ํʹͭ·ͮ͘
gCloud CLI͔ΒͱAndroidStudio͔ΒՄೳ • travisϑΝΠϧͰgCloudίϚϯυΛ͍ɺApkͷσΟϨΫτϦ Λਖ਼͘͠ࢦఆͯ͠apkग़དྷͯ·ͤΜͱౖΒΕͨ • minSdkVersion(nanaAPI17Ҏ্ɺUIςετAPI18Ҏ্) • TestReleaseϏϧυͩͱಈ͍ͯ͘Εͳ͍ •
ݱࡏݟ͍͑ͯΔը໘ͷActivityΠϯελϯεΛऔಘ͢Δํ๏͕࠷ ॳΘ͔Βͳ͔ͬͨ(εΫγϣΛࡱΔ࣌ʹඞཁʹͳΔ)
࠳ંͷཤྺ • UIͷςετɺFacebookͱTwitterͷϩάΠϯͰͭ·ͮ͘ • FirebaseTestLabͷInstrumentationςετ࣮ߦͷํͰͭ·ͮ͘ • FacebookͷεύϜٙʹͭ·ͮ͘ • PythonͷϧʔτݖݶͰͭ·ͮ͘ •
εΫϦʔϯγϣοτΛऔΔϥΠϒϥϦͷબఆͰͭ·ͮ͘ • ςετίʔυͷKotlinԽͰͭ·ͮ͘ • GradleɺyamlϑΝΠϧͷॻ͖ํʹͭ·ͮ͘
Fuji͕ϧάΞΠ͔ΒϩάΠϯ͠Α͏ͱ͍ͯ͠·͢ • FirebaseTestLabͷւ֎ʹ͋Δ • FacebookϩάΠϯͷςετέʔεͩ ͚100%ࣦഊ͢Δ • ςετͷͨͼʹύεϫʔυมߋਏ ͍… •
ςετϢʔβʔ࡞Ε͍͚ͨ(୯७)
࠳ંͷཤྺ • UIͷςετɺFacebookͱTwitterͷϩάΠϯͰͭ·ͮ͘ • FirebaseTestLabͷInstrumentationςετ࣮ߦͷํͰͭ·ͮ͘ • FacebookͷεύϜٙʹͭ·ͮ͘ • PythonͷϧʔτݖݶͰͭ·ͮ͘ •
εΫϦʔϯγϣοτΛऔΔϥΠϒϥϦͷબఆͰͭ·ͮ͘ • ςετίʔυͷKotlinԽͰͭ·ͮ͘ • GradleɺyamlϑΝΠϧͷॻ͖ํʹͭ·ͮ͘
Macඪ४ͷPythonϧʔτ੍ݶ͖ • screenshot-tests-for-android/facebookΛ͏ͨ ΊʹPythonͷPillow(ը૾ղੳ)ϥΠϒϥϦ͕ඞཁ ͩͬͨ • pipίϚϯυड͚͚ͯ͘Εͳ͍ • usr/local/binʹPythonΛೖΕͯύεΛΓସ͑Δ ඞཁ͕͋ͬͨ
࠳ંͷཤྺ • UIͷςετɺFacebookͱTwitterͷϩάΠϯͰͭ·ͮ͘ • FirebaseTestLabͷInstrumentationςετ࣮ߦͷํͰͭ·ͮ͘ • FacebookͷεύϜٙʹͭ·ͮ͘ • PythonͷϧʔτݖݶͰͭ·ͮ͘ •
εΫϦʔϯγϣοτΛऔΔϥΠϒϥϦͷબఆͰͭ·ͮ͘ • ςετίʔυͷKotlinԽͰͭ·ͮ͘ • GradleɺyamlϑΝΠϧͷॻ͖ํʹͭ·ͮ͘
UIςετͷ݁ՌΛݟ͑ΔԽ͍ͨ͠ • Spoon/Square - Ұ൪ݹ͍ϥΠϒϥϦ - ҆ఆͯ͠Δ͕ɺGradleͰೖΕΔʹผͷϓϥάΠϯ͕ඞཁ • Screenshot-tests-for-android/Facebook -
PillowΛͬͯεΫγϣͷը૾Λൺֱͯࠩ͠Λݕূ͢Δ͜ͱ͕Ͱ͖Δ - View୯ମ(Widget/ViewGroup)ɺLitho/FacebookͷViewͷεΫγϣ ΛऔΕͨΓɺHierarchyViewerͷ֦ுػೳΛͬͯViewͷ֊ΛݟΔ͜ ͱͰ͖Δ • CloudTestingScreenShotter/Firebase - FirebaseTestLabͱ࿈ܞͰ͖Δ - طଘͷCIͱͷ࿈ܞ͕؆୯
࠳ંͷཤྺ • UIͷςετɺFacebookͱTwitterͷϩάΠϯͰͭ·ͮ͘ • FirebaseTestLabͷInstrumentationςετ࣮ߦͷํͰͭ·ͮ͘ • FacebookͷεύϜٙʹͭ·ͮ͘ • PythonͷϧʔτݖݶͰͭ·ͮ͘ •
εΫϦʔϯγϣοτΛऔΔϥΠϒϥϦͷબఆͰͭ·ͮ͘ • ςετίʔυͷKotlinԽͰͭ·ͮ͘ • GradleɺyamlϑΝΠϧͷॻ͖ํʹͭ·ͮ͘
࠳ંͷཤྺ • UIͷςετɺFacebookͱTwitterͷϩάΠϯͰͭ·ͮ͘ • FirebaseTestLabͷInstrumentationςετ࣮ߦͷํͰͭ·ͮ͘ • FacebookͷεύϜٙʹͭ·ͮ͘ • PythonͷϧʔτݖݶͰͭ·ͮ͘ •
εΫϦʔϯγϣοτΛऔΔϥΠϒϥϦͷબఆͰͭ·ͮ͘ • ςετίʔυͷKotlinԽͰͭ·ͮ͘ @Rule @JvmFieldΛ͚Δ • GradleɺyamlϑΝΠϧͷॻ͖ํʹͭ·ͮ͘
࠳ંͷཤྺ • UIͷςετɺFacebookͱTwitterͷϩάΠϯͰͭ·ͮ͘ • FirebaseTestLabͷInstrumentationςετ࣮ߦͷํͰͭ·ͮ͘ • FacebookͷεύϜٙʹͭ·ͮ͘ • PythonͷϧʔτݖݶͰͭ·ͮ͘ •
εΫϦʔϯγϣοτΛऔΔϥΠϒϥϦͷબఆͰͭ·ͮ͘ • ςετίʔυͷKotlinԽͰͭ·ͮ͘ • GradleɺyamlϑΝΠϧͷॻ͖ํʹͭ·ͮ͘
ࢼߦࡨޡͨ͠ • androidTest༻ͷManifestϑΝΠϧΛ࡞ͬͯ minSdkVersionΛΦʔόʔϥΠυͯ͠มߋ͢Δ ඞཁ͕͋ͬͨ • debugDevelopmentͱ debugDevelopmentAndroidTestͷapkϑΝΠ ϧΛ࡞Δඞཁ͕͋ͬͨ
ϝϞ • Jenkins×OpenSTF×FacebookScreenshotͰ࡞ͬͨΓ͔͕ͨͬͨ͠ OpenSTF͕҆ఆ͠ͳ͍Β͘͠ɺ࣮༻తͰͳ͍Β͍͠ by ΫοΫύου • Genymotion on Demand͕͍͍Β͍͠
by ΫοΫύου • SpoonͱFacebookScreenshotಋೖͰ͖ͨͷͷɺϏϧυλΠϓͷࢦఆ ϨϙʔτϑΝΠϧεΫγϣͷॻ͖ग़͠ॴͷࢦఆͷํ͕ෳࡶͰ্ख ͍͔͘ͳ͔ͬͨ • Ϟδϡʔϧ͚·ͩ·ͩෆ໌ྎͳ෦͕ଟ͍ • AndroidStudio͔ΒϏϧυ͢Δͱςετޭ͢Δ͕ɺcronͰճ͢ͱ FacebookͱTwitterͷςετ্͕ख͍͔͘ͳ͍