iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 29
0
自我挑戰組

Android API超初學!!系列 第 29

[Android API] [Day 29] Testing (2) 各種工具

今天接續昨天的話題,APP測試,一樣參考Android教學網站

小case測試

Robolectric

一個unittest的工具。若使用此工具,可使用AndroidX(前一篇文章提到的) Builder classes來產生測試需要的framework。
Robolectric編譯和執行速度都很快,因為可直接在workstation執行,不需要emulator。且使用Robolectric,就不需要使用mock frameworks(要一起使用也可以)。Robolectric更接近black box testing,不過我目前沒有實際操作過,不太理解unittest怎麼做到black box testing。

關於測試的術語(Ex. Mock),可參考這篇文章,寫得很清楚。

中case測試

這時候就可移到emulator上或裝置上測試了。現在還不用測整個APP,例如可以測試service、component整合等。也可測試一些需要硬體才可以執行的功能。
建議使用emulator或雲端測試服務(Ex. Firebase Test Lab)來取代實機,這樣可以在不同螢幕大小的機型上做測試。

Firebase Test Lab

使用Goodle data center的測試服務,可測試Android和iOS,而且是實機測試。若想使用該服務,Android需使用Espresso或UI Automator 2.0,iOS需使用XCTest。

大case測試

根據模擬使用者真正使用的行為來建case,如果APP很小,可能一個case就夠了。而且在寫大case的時候,中間應該包含眾多中case,以利於快速找到問題。

AndroidJUnitRunner

建立大case的工具,用來寫JUnit3 style和JUnit4 style的case(現在最新的是JUnit5)。

Espresso

測試UI的工具。是一種與UI thread同步的測試。可看這篇文章,說明得很詳細。

UI Automator

當系統升級時,UI Automator測試需要修改,例如修改Android版本等,所以跟系統有關的測試(Ex.螢幕截圖)再用。

Android Test Orchestrator

先來個英文單字時間,Orchestration,Wiki將之翻作協作配器法,而這個詞也同義於instrumentation。牛津字典解釋為"the arrangement of a piece of music in parts so that it can be played by an orchestra",白話就是管弦樂團中的樂器安排,再白話一點就是編曲了。

在資訊領域,這個詞用來表示一種概念而非技術,代表對系統的自動化安排。有點太抽象了,直接來看看Android Test Orchestrator做了什麼事。
這個工具可幫忙跑APP的test case,每一個test case就是一個Instrumentation。因為是分開執行,所以如果共享APP state,執行完之後會再把state改回去。且一個case crash也不會影響其他case。
Android Studio和Firebase Test Lab預設就有此工具囉。


上一篇
[Android API] [Day 28] Testing (1)、AndroidX、Jetpack
下一篇
[Android API] [Day 30] 我的APP開發注意事項
系列文
Android API超初學!!30

尚未有邦友留言

立即登入留言