Android における UI テスト設計戦略
by
Kyohei Kato
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Android における UI テスト設計戦略 Android / iOS Test Night 番外編
Slide 2
Slide 2 text
自己紹介 •加藤恭平(ksfee684) ‣クックパッド株式会社 技術部品質向上グループ ‣ レシピサービスアプリで UI テストなどを担当 ‣おすすめは M:tG
Slide 3
Slide 3 text
Android における UI テスト設計戦略
Slide 4
Slide 4 text
No content
Slide 5
Slide 5 text
Kotlin を活用した いい感じの DSL による いい感じの Espresso Test
Slide 6
Slide 6 text
対象者 •ざっくりとした Kotlin 言語に関する知識 •ざっくりと Espresso の API に関する知識
Slide 7
Slide 7 text
背景 •Espresso を利用したテストを実装する環境が整ってい ない •Espresso を直に利用するのはちょっと… •テストケースをリーダブルにしつつ、裏の実装も簡単 にしたい
Slide 8
Slide 8 text
Robot Pattern •Jake が発表した Instrument Test 実装パターン ‣ Kotlin 言語をうまく活用 ‣ https://academy.realm.io/posts/kau-jake-wharton- testing-robots/ •Page Object Pattern ライク
Slide 9
Slide 9 text
Robot Pattern PaymentRobot payment = new PaymentRobot(); ResultRobot result = payment .amount(42_00) .recipient("
[email protected]
") .send(); result.isSuccess();
Slide 10
Slide 10 text
Robot Pattern payment { amount(4200) recipient("
[email protected]
") } send { isSuccessful() }
Slide 11
Slide 11 text
もうちょっと欲張る •すべての操作に対してアサーションを挿入可能に •Kotlin の DSL に形式にもう少し従って
Slide 12
Slide 12 text
Kotlin を活用した いい感じの DSL による いい感じの Espresso Test
Slide 13
Slide 13 text
Scope Pattern
Slide 14
Slide 14 text
Scope Pattern •Robot Pattern を拡張 •各画面を Scope として定義 •各操作はアサーションと基本的にセット ‣ アサーションブロックを受け取る ‣ ネストするコマンドも存在している
Slide 15
Slide 15 text
Scope Pattern
Slide 16
Slide 16 text
各画面を Scope として定義
Slide 17
Slide 17 text
各画面を Scope として定義 •StepScope と ResultScope(e.g RecipeEditStepScope) •テストケースはシングルエントリーポイントから RootScope 下で実行される •各 Scope(画面)は RootScope の拡張関数として定義 •Scope 自身をレシーバとするラムダ関数を引数として受 け取る
Slide 18
Slide 18 text
各画面を Scope として定義
Slide 19
Slide 19 text
各画面を Scope として定義
Slide 20
Slide 20 text
各画面を Scope として定義
Slide 21
Slide 21 text
操作はアサーションとセット
Slide 22
Slide 22 text
操作はアサーションとセット
Slide 23
Slide 23 text
操作はアサーションとセット
Slide 24
Slide 24 text
ネストする操作
Slide 25
Slide 25 text
ネストする操作
Slide 26
Slide 26 text
ネストする操作
Slide 27
Slide 27 text
まだまだこれから •DslMarker がうまく動かない •スタックトレースがわかりにくい