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
2
960
Android における UI テスト設計戦略
Kyohei Kato
February 20, 2019
Tweet
Share
More Decks by Kyohei Kato
See All by Kyohei Kato
After Party DroidKaigi 2021
ksfee684
0
480
cookpad-summer-internship-2020-android
ksfee684
0
7.9k
cookpad.apk#5
ksfee684
0
530
cookpad.apk#4
ksfee684
0
640
Testing in weekly release
ksfee684
0
770
UI テストで楽するための技術
ksfee684
0
430
Espresso Driver を用いた Appium テストとその仕組み
ksfee684
0
6.5k
Other Decks in Technology
See All in Technology
2024年版 運用者たちのLLM
nwiizo
3
600
どこよりも遅めなWinActor Ver.7.5.0 新機能紹介
tamai_63
0
190
フルカイテン株式会社 採用資料
fullkaiten
0
32k
Autonomous Database Serverless 技術詳細 / adb-s_technical_detail_jp
oracle4engineer
PRO
15
40k
事前準備が肝!AI活用のための業務改革
layerx
PRO
1
370
『GRANBLUE FANTASY Relink』ソフトウェアラスタライザによる実践的なオクルージョンカリング
cygames
0
110
社内の学びの場・コミュニティ形成とエンジニア同士のリレーションシップ構築/devreljapan2024
nishiuma
3
270
watsonx.ai Dojo 環境準備について
oniak3ibm
PRO
0
180
やってやろうじゃないかメカアジャイル! / Let's do it, mechanical agile!
psj59129
1
550
DuckDB雑紹介(1.1対応版)@DuckDB座談会
ktz
6
1.4k
ナレッジグラフとLLMの相互利用
koujikozaki
0
400
プロダクトエンジニアを支えるための開発生産性向上施策
tsukakei
0
140
Featured
See All Featured
For a Future-Friendly Web
brad_frost
174
9.3k
Clear Off the Table
cherdarchuk
91
320k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
157
15k
A better future with KSS
kneath
235
17k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
8.9k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.3k
Debugging Ruby Performance
tmm1
72
12k
Why Our Code Smells
bkeepers
PRO
334
56k
What the flash - Photography Introduction
edds
67
11k
The Illustrated Children's Guide to Kubernetes
chrisshort
47
48k
Art, The Web, and Tiny UX
lynnandtonic
294
20k
Designing the Hi-DPI Web
ddemaree
278
34k
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 がうまく動かない •スタックトレースがわかりにくい