A. Robotium
Robotium是一種開放式原始碼的Android自動化測試Library,其繼承自Android JUnit使用Android的Instrumentational框架並支援SDK Android 1.6以上版本。
Robotium不只能對APP進行白箱測試,如單元測試,甚至也可以進行黑箱測試,無需待測APP的原始碼,僅需待測APP包好的安裝檔(APK檔)。
另外在寫測試腳本時,若無程式原始碼而僅有APK檔時,則有兩件事情需特別注意:(1)需知道待測APP的package name及main activity這兩個資訊,(2)且對於APK檔需做重新簽名的動作,至於測試程式碼的撰寫格式可以到Robotium的官網[3]去下載測試腳本範例程式來修改,即可進行測試。
至2013年11月,最新的Robotium版本已更新到了4.3.1,提供支援的功能也是越來越多,從基本的一些簡單的APP畫面操作動作,如點擊按鈕、輸入欄位、各式滑動畫面方式、輸出結果數據比對、畫面拍照截圖,而進階的如,可加入等待時間、等待的事件條件設定、與APP具網路功能的混合測試。
B. MonkeyTalk
MonkeyTalk [4] 也是一套方便用於APP的自動化測試工具,跟其它介紹的自動化測試工具不同的是,本文唯獨MonkeyTalk不是Google而是Gorilla Logic這家公司所開發。可以對APP的操作過程進行側錄的動作來做出自動化測試腳本框架,接著再輸入測試的參數即可完成自動化測試腳本,對於回歸測試(即修改測試參數但不更動整個測試碼結構)上很方便,不只支援Android系統也適用於iOS系統的APP測試,另外也支援APP具網路功能的混合測試。MonkeyTalk不只支援命令格式,也有自己的IED操作介面,如圖1所示。
MonkeyTalk對於錄製腳本上雖然很方便,但有一點是需要注意的,因為MonkeyTalk需設定MonkeyTalk Agent去對APP進行呼叫,需要APP的原始碼才能進行呼叫,若無APP原始碼則無法進行MonkeyTalk的自動化測試。
C. UiAutomator
UiAutomator [5] 則是google自己推出的UI測試工具,其功能不限定於APP的測試,甚至可對狀態列、webview及手機上硬體按鈕的操作動作模擬。不需要待測APP的程式原始碼甚至也不需要APK檔,只要測試行動裝置上有安裝了待測APP即可。
UiAutomator的功能很強大,除了可以模擬手機螢幕上的點擊、對話框輸入、滑動螢幕、畫面截圖等基本功能外,甚至可以對行動裝置上進行更進一步的控制,如關掉螢幕、喚醒螢幕、旋轉螢幕、按Home鍵、點擊畫面上某個元件一段時間等動作。
但測試行動裝置其Android系統需4.1或以上的版本才有支援使用UiAutomator去進行操作測試。並且若需要進行輸出數據比對,則需把JUnit包含進專案才可,不像Robotium已經是繼承JUnit框架,不用特別引用即可使用JUnit所提供的數據比對函式/方法。
D. Monkeyrunner
Monkeyrunner [6] 則類似UiAutomator一樣,可對行動裝置畫面上進行模擬操作,也很方便。透過Monkeyrunner,也可以寫出一個Python程式執行安裝Android APP的動作,並執行,送出模擬點擊、螢幕滑動等動作,最後也可以對畫面進行截圖。
E. Monkey
Monkey [7] 則是針對Android APP進行畫面點擊的模擬,以下指令的方式,可以設定點擊的次數與點擊的時間間隔,但點擊的方式則無法控制確切的點擊位置,而是隨機的點擊,僅能透過設定亂數seed參數值來改變隨機點擊的方式。
其指令基本格式如下:
adb shell monkey [options] {event-count}
,其中
[options] : 表示配置monkey的設置
{event-count} : 表示monkey發送事件次數
其基本範例如下:
adb shell monkey -p your.package.name -v 500
,其中 -p 後面則是選擇要執行測試APP的package name、增加一個-v則在執行測試時會顯示一些測試的資訊,每增加一個-v就會多更多資訊,最多可以三個-v如-v –v –v、最後的500表示點擊畫面500次。
Monkey也可以設定不同種類的點擊百分比,如調整系統按鍵的百分比(如Home鍵、Back Off鍵、發話按鈕、斷話鍵、聲音大小聲等),調整APP啟動的百分比(透過startActivity()這個API呼叫Activity做為最大化測試涵蓋率到要測試的package方法),其語法句型範例如下:
adb shell monkey –p com.android.calculator2 –pct-touch 50 –pct-motion 50 -v 10
,此語法即設定將touch及motion事件頻率改為各50%。