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
1.1k
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
580
cookpad-summer-internship-2020-android
ksfee684
0
8.2k
cookpad.apk#5
ksfee684
0
660
cookpad.apk#4
ksfee684
0
710
Testing in weekly release
ksfee684
0
860
UI テストで楽するための技術
ksfee684
0
510
Espresso Driver を用いた Appium テストとその仕組み
ksfee684
0
6.8k
Other Decks in Technology
See All in Technology
Kusakabe_面白いダッシュボードの表現方法
ykka
0
280
AI アクセラレータチップ AWS Trainium/Inferentia に 今こそ入門
yoshimi0227
1
240
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1k
歴史から学ぶ、Goのメモリ管理基礎
logica0419
14
2.8k
習慣とAIと環境 — 技術探求を続ける3つの鍵
azukiazusa1
2
260
Introduction to Bill One Development Engineer
sansan33
PRO
0
350
人工知能のための哲学塾 ニューロフィロソフィ篇 第零夜 「ニューロフィロソフィとは何か?」
miyayou
0
460
ALB「証明書上限問題」からの脱却
nishiokashinji
0
190
[PR] はじめてのデジタルアイデンティティという本を書きました
ritou
1
810
SES向け、生成AI時代におけるエンジニアリングとセキュリティ
longbowxxx
0
320
みんなでAI上手ピーポーになろう! / Let’s All Get AI-Savvy!
kaminashi
0
130
Oracle Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
2
890
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
61
48k
The browser strikes back
jonoalderson
0
310
Scaling GitHub
holman
464
140k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
120
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
150
Java REST API Framework Comparison - PWX 2021
mraible
34
9.1k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.2k
The SEO Collaboration Effect
kristinabergwall1
0
330
Un-Boring Meetings
codingconduct
0
180
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
410
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
270
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 がうまく動かない •スタックトレースがわかりにくい