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
Android における UI テスト設計戦略
Search
Kyohei Kato
February 20, 2019
Technology
1.1k
2
Share
Android における UI テスト設計戦略
Kyohei Kato
February 20, 2019
More Decks by Kyohei Kato
See All by Kyohei Kato
After Party DroidKaigi 2021
ksfee684
0
590
cookpad-summer-internship-2020-android
ksfee684
0
8.2k
cookpad.apk#5
ksfee684
0
670
cookpad.apk#4
ksfee684
0
720
Testing in weekly release
ksfee684
0
880
UI テストで楽するための技術
ksfee684
0
520
Espresso Driver を用いた Appium テストとその仕組み
ksfee684
0
6.9k
Other Decks in Technology
See All in Technology
コミュニティ・勉強会を作るのは目的じゃない
ohmori_yusuke
0
250
AIでAIをテストする - 音声AIエージェントの品質保証戦略
morix1500
1
140
ハーネスエンジニアリングの概要と設計思想
sergicalsix
9
5.3k
Microsoft 365 / Microsoft 365 Copilot : 自分の状態を確認する「ラベル」について
taichinakamura
0
340
「SaaSの次の時代」に重要性を増すステークホルダーマネジメントの要諦 ~解像度を圧倒的に高めPdMの価値を最大化させる方法~
kakehashi
PRO
3
2.4k
AndroidアプリとCopilot Studioの統合
nakasho
0
120
「責任あるAIエージェント」こそ自社で開発しよう!
minorun365
9
2.2k
バイブコーディングで3倍早く⚪⚪を作ってみた
samakada
0
110
プラットフォームエンジニアリングの実践 - AWS コンテナサービスで構築する社内プラットフォーム / AWS Containers Platform Meetup #1
literalice
1
210
[最強DB講義]推薦システム | 基礎編
recsyslab
PRO
1
180
20260423_執筆の工夫と裏側 技術書の企画から刊行まで / From the planning to the publication of technical book
nash_efp
3
430
MLOps導入のための組織作りの第一歩
akasan
0
360
Featured
See All Featured
Building AI with AI
inesmontani
PRO
1
910
How to Ace a Technical Interview
jacobian
281
24k
Un-Boring Meetings
codingconduct
0
270
Building Adaptive Systems
keathley
44
3k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.4k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
140
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
360
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.4k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
410
Heart Work Chapter 1 - Part 1
lfama
PRO
6
35k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
170
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Transcript
Android における UI テスト設計戦略 Android / iOS Test Night 番外編
自己紹介 •加藤恭平(ksfee684) ‣クックパッド株式会社 技術部品質向上グループ ‣ レシピサービスアプリで UI テストなどを担当 ‣おすすめは M:tG
Android における UI テスト設計戦略
None
Kotlin を活用した いい感じの DSL による いい感じの Espresso Test
対象者 •ざっくりとした Kotlin 言語に関する知識 •ざっくりと Espresso の API に関する知識
背景 •Espresso を利用したテストを実装する環境が整ってい ない •Espresso を直に利用するのはちょっと… •テストケースをリーダブルにしつつ、裏の実装も簡単 にしたい
Robot Pattern •Jake が発表した Instrument Test 実装パターン ‣ Kotlin 言語をうまく活用
‣ https://academy.realm.io/posts/kau-jake-wharton- testing-robots/ •Page Object Pattern ライク
Robot Pattern PaymentRobot payment = new PaymentRobot(); ResultRobot result =
payment .amount(42_00) .recipient("
[email protected]
") .send(); result.isSuccess();
Robot Pattern payment { amount(4200) recipient("
[email protected]
") } send { isSuccessful()
}
もうちょっと欲張る •すべての操作に対してアサーションを挿入可能に •Kotlin の DSL に形式にもう少し従って
Kotlin を活用した いい感じの DSL による いい感じの Espresso Test
Scope Pattern
Scope Pattern •Robot Pattern を拡張 •各画面を Scope として定義 •各操作はアサーションと基本的にセット ‣
アサーションブロックを受け取る ‣ ネストするコマンドも存在している
Scope Pattern
各画面を Scope として定義
各画面を Scope として定義 •StepScope と ResultScope(e.g RecipeEditStepScope) •テストケースはシングルエントリーポイントから RootScope 下で実行される
•各 Scope(画面)は RootScope の拡張関数として定義 •Scope 自身をレシーバとするラムダ関数を引数として受 け取る
各画面を Scope として定義
各画面を Scope として定義
各画面を Scope として定義
操作はアサーションとセット
操作はアサーションとセット
操作はアサーションとセット
ネストする操作
ネストする操作
ネストする操作
まだまだこれから •DslMarker がうまく動かない •スタックトレースがわかりにくい