幾款Android 應用自動化測試工具
本文介紹幾款流行的 Android應用自動化測試工具。
Monkey測試:隨機測試,壓力測試,執行在模擬器或實際裝置中。
MonkeyRunner測試:操作簡單,可錄製測試指令碼,視覺化操作,主要生成座標的自動化操作,移植性不強
Robotium 測試
Ronaorex 測試
Appium 測試
UI Automator 測試
TestBird測試
1、Monkey 測試
Monkey 即猴子,Monkey 測試,就像一隻猴子,在電腦面前,亂敲鍵盤在測試。
Monkey 測試主要用於Android 應用程式壓力測試的小工具,主要目的就是為了測試app是否會Crash。
Monkey 測試原理:Monkey 是 Android 中的一個命令列工具,可以執行在模擬器裡或實際裝置中。它向系統傳送偽隨機的使用者事件流(如按鍵輸入、觸控式螢幕輸入、手勢輸入等),實現對正在開發的應用程式進行壓力測試。通常也稱隨機測試或者穩定性測試。Monkey 測試是一種為了測試軟體的穩定性、健壯性的快速有效的方法。
1 > Monkey 特徵
A. 測試的物件僅為應用程式包,有一定的侷限性。
B. Monky 測試使用的事件流資料流是隨機的,不能進行自定義。
C. 可對 MonkeyTest的物件,事件數量,型別,頻率等進行設定。
D.Monkey 雖可根據一個指定的命令指令碼傳送按鍵訊息,但其不支援條件判斷,也不支援讀取待測介面的資訊來執行驗證操作。
E.Monkey 執行在裝置或模擬器上面,可以脫離PC執行,驗證待測應用在這些隨機性輸入面前是否會閃退或者崩潰。
2 > Monkey 程式介紹
① Monkey 程式由 Android 系統自帶,使用Java語言寫成,在Android檔案系統中的存放路徑是: /system/framework/monkey.jar; ② Monkey.jar 程式是由一個名為“ monkey ”的Shell指令碼來啟動執行,shell指令碼在Android檔案系統中 的存放路徑是:/system/bin/monkey; ③ Monkey 命令啟動方式:
a. 可以通過 PC 機 CMD 視窗中執行: adb shell monkey {+命令引數}來進行Monkey測試
b. 在PC上 adb shell進入Android系統,通過執行monkey {+命令引數}來進行Monkey 測試
c. 在Android機或者模擬器上直接執行monkey命令,可以在Android機上安裝Android終端模擬器
④ 對特定APP包進行測試的命令為 adb shell monkey -p <pakage.name>
3 > 例項
① 測試前提條件
a. 將手機恢復出廠設定
b. 恢復出廠設定後,進入設定-->關於手機-->高階設定-->勾選‘保持喚醒狀態’
c. 在設定->安全中設定解鎖圖案以及PIN碼
d. 連線 adb tool
e. 手機開啟後臺log(*#*#3646633#*#*),開啟main log,, mobile log和net log
② 測試步驟
a. 使用USB線連線手機和電腦
b. 在電腦中輸入Monkey命令:
adb shell monkey -p <package.name> --throttle 380 -v -s 3500 300000 >C:\monkey_log.txt
c. 在Monkey結束以後檢視它停留的介面並且做一些簡單的測試,如撥打電話,傳送資訊等
③ 測試結果
Monkey的測試結果可以通過monkey_log.txt 檢視,如果測試結果正常,在log最後一行會有monkey finished顯示並且手機執行正常。如果應用程式產生了應用程式不響應ANR(application notresponding)的錯誤,Monkey將會停止並報錯,如果應用程式崩潰Crash或接收到任何失控異常,Monkey也會停止並報錯。
a. 在執行Monkey命令時,遇到Crash或者ANR,就會自動終止。程式無響應的問題:在日誌中搜索 “ANR”
b.崩潰問題:在日誌中搜索“Exception” (如果出現空指標,NullPointerException) 肯定是有bug 例如在log最後一行顯示crashed at event ####of 300000 using seed 3500 。
c.最後搜尋“error”
一般我們執行Monkey時,在3萬次以內發生Crash的話就認為Monkey是有問題的,要提交PR。
④ 提交 Monkey 的PR
在執行Monkey命令時發生Crash或者ANR時需要提交PR,具體提交MonkeyPR的規則如下:
a. 標題:在PR標題中加上[Monkey] 內容:主要要包含自己執行的命令以及在多少次發生crash
b. 內容:主要要包含自己執行的命令以及在多少次發生crash
c .其它:在PR上要附上相關的Monkey log還有手機後臺開啟的log,如果有相關的強制關閉的圖片也可以貼上。
4 > Monkey 引數
Monkey命令:adb shell monkey -p <package.name> --throttle 380 -v -s 3500300000 > C:\monkey_log.txt,這個monkey命令,當monkey test過程中遇到Crash或者ANR,就會自動終止。
C:\monkey_log.txt指將Monkey 的log存在PC端的C盤根目錄下。
常規類引數
1、 -help
作用:列出簡單的用法
例:adb shell monkey -help 也可不寫help
2、-v
作用:命令列上的每一個-v都將增加反饋資訊的詳細級別。 Level0(預設),除了啟動、測試完成和最終結果外只提供較少的資訊。
Level1,提供了較為詳細的測試資訊,如逐個傳送到 Activity 的事件資訊。adb shell monkey -p com.shjt.map -v 100
Level2,提供了更多的設定資訊,如測試中選中或未選中的 Activity 資訊。adb shell monkey -p com.shjt.map -v -v 100
adb shell monkey -p com.shjt.map -v -v -v 100
比較常用的是-v -v -v,即最多詳細資訊,一般會儲存到指定檔案中供開發人員查詢bug原因時使用。
例:adb shell monkey -v 10
事件類引數
1、-s <seed>
作用:偽隨機數生成器的seed值。如果用相同的seed值再次執行monkey,將生成相同的事件序列。
例:adb shell monkey -s 1483082208904 -v 10
2、--throttle <milliseconds>
作用:在事件之間插入固定的時間(毫秒)延遲,你可以使用這個設定來減緩Monkey的執行速度,如果你不指定這個引數,則事件之間將沒有延遲,事件將以最快的速度生成。
注:常用引數,一般設定為300毫秒,原因是實際使用者操作的最快300毫秒左右一個動作事件,所以此處一般設定為300毫秒。
例:adb shell monkey --throttle 300 -v 10
3、--pct-touch <percent>
作用:調整觸控事件的百分比。(觸控事件是指在螢幕中的一個down-up事件,即在螢幕某處按下並擡起的操作)
注:常用引數,此引數設定要適應當前被測應用程式的操作,比如一個應用80%的操作都是觸控,那就可以將此引數的百分比設定成相應較高的百分比。
例:adb shell monkey --pct-touch 100 -v 10
4、--pct-motion <percent>
作用:調整motion事件百分比。(motion事件是由螢幕上某處一個down事件、一系列偽隨機的移動事件和一個up事件組成) 注:常用引數,需注意的是移動事件是直線滑動 例:adb shell monkey --pct-motion 100 -v 10
5、--pct-trackball<percent> 作用:調整滾動球事件百分比。(滾動球事件由一個或多個隨機的移動事件組成,有時會伴隨著點選事件) 注:不常使用引數,現在手機幾乎沒有滾動球,但滾動球事件中包含曲線滑動事件,在被測程式需要曲線滑動時可以選用此引數。 例:adb shell monkey --pct-trackball 100 -v 10
6、--pct-nav<percent> 作用:調整基本的導航事件百分比。(導航事件由方向輸入裝置的上下左右按鍵所觸發的事件組成) 注:不常用操作。 例:adb shell monkey --pct-nav 100 -v 10
7、--pct-majornav<percent> 作用:調整主要導航事件的百分比。(這些導航事件通常會導致UI介面中的動作事件,如5-way鍵盤的中間鍵,回退按鍵、選單按鍵) 注:不常用操作。 例:adb shell monkey --pct-majornav 100 -v 10
8、--pct-syskeys<percent> 作用:調整系統事件百分比。(這些按鍵通常由系統保留使用,如Home、Back、Start Call、EndCall、音量調節) 注:不常用。 例:adb shell monkey --pct-syskeys 100 -v 10
9、--pct-appswitch<percent> 作用:調整Activity啟動的百分比。(在隨機的時間間隔中,Monkey將執行一個startActivity()呼叫,作為最大程度覆蓋被測包中全部Activity的一種方法) 注:不常用。 例:adb shell monkey --pct-appswitch 100 -v 5
10、--pct-anyevent 作用:調整其他事件的百分比。(這包含所有其他事件,如按鍵、其他在裝置上不常用的按鈕等) 注:不常用。 例:adb shell monkey --pct-anyevent 100 -v 5
約束類引數
1、-p<allowed-package-name> 作用:如果你指定一個或多個包,Monkey將只允許訪問這些包中的Activity。如果你的應用程式需要訪問這些包(如選擇聯絡人)以外的Activity,你需要指定這些包。如果你不指定任何包,Monkey將允許系統啟動所有包的Activity。指定多個包,使用多個-p,一個-p後面接一個包名。 注:常用引數。 例:adb shell monkey -p com.Android.browser -v 10
2、-c<main-category> 作用:如果你指定一個或多個類別,Monkey將只允許系統啟動這些指定類別中列出的Activity。如果你不指定任何類別,Monkey將選擇謝列類別中列出的Activity,Intent.CATEGORY_LAUNCHER和Intent.CATEGORY_MONKEY。指定多個類別使用多個-c,每個-c指定一個類別。 注:不常用。
3、--dbg-no-events 作用:設定此選項,Monkey將執行初始啟動,進入一個測試Activity,並不會在進一步生成事件。為了得到最佳結果,結合引數-v,一個或多個包的約束,以及一個保持Monkey執行30秒或更長時間的非零值,從而提供了一個可以監視應用程式所呼叫的包之間轉換的環境。 注:不常用。
4、--hprof 作用:設定此選項,將在Monkey生成事件序列前後生成profilling報告。在data/misc路徑下生成大檔案(~5Mb),所以要小心使用。 注:不常用。
5、--ignore-crashes 作用:通常,應用發生崩潰或異常時Monkey會停止執行。如果設定此項,Monkey將繼續傳送事件給系統,直到事件計數完成。 注:常用。
6、--ignore-timeouts 作用:通常,應用程式發生任何超時錯誤(如“Application Not responding”對話方塊)Monkey將停止執行,設定此項,Monkey將繼續傳送事件給系統,直到事件計數完成。 注:常用。
7、--ignore-security-exception 作用:通常,當程式發生許可錯誤(例如啟動一些需要許可的Activity)導致的異常時,Monkey將停止執行。設定此項,Monkey將繼續傳送事件給系統,直到事件計數完成。 注:常用。
8、--kill-process-after-error 作用:通常,當Monkey由於一個錯誤而停止時,出錯的應用程式將繼續處於執行狀態。設定此項,將會通知系統停止發生錯誤的程序。注意,正常(成功)的結束,並沒有停止啟動的程序,裝置只是在結束事件之後簡單的保持在最後的狀態。
9、--monitor-native-crashes
作用:監視並報告Andorid系統中原生代碼的崩潰事件。如果設定--kill-process-after-error,系統將停止執行。
10、--wait-dbg
作用:停止執行中的Monkey,直到有偵錯程式和它相連線。
樣例:
adb shell monkey -p com.android.settings --throttle 380 -v -v -v -s 3500 300000 > E:\Test\monkey_log.txt
測試結果:
測試完成後均正確時會顯示Monkey finished:
有bug時,會出現error:
Events injected: 300
:Sending rotation degree=0, persist=false
:Dropped: keys=0 pointers=2 trackballs=0 flips=0 rotations=0
## Network stats: elapsed time=42700ms (0ms mobile, 0ms wifi, 42700ms not connected)
// Monkey finished
** Monkey aborted due to error.
Events injected: 8530
:Sending rotation degree=0, persist=false
:Dropped: keys=5 pointers=8 trackballs=0 flips=0 rotations=0
## Network stats: elapsed time=1016690ms (0ms mobile, 0ms wifi, 1016690ms not
connected)
2、 MonkeyRunner 測試
MonkeyRunner工具是使用 Jython (使用Java程式語言實現的Python)寫出來的,它提供了多個API,通過MonkeyRunner API 可以寫一個Python的程式來模擬操作控制Android裝置app,測試其穩定性並通過截圖可以方便地記錄出現的問題。
MonkeyRunner和Monkey沒有直接的關係。Monkey是在裝置/模擬器直接執行adb shell命令生成使用者或系統偽隨機事件流來進行測試的。
而MonkeyRunner則執行在PC上,需要通過伺服器/客戶端的的模式向裝置或者模擬器上的android應用傳送指令來執行測試。它支援自己編寫外掛,控制事件,隨時截圖,簡而言之,任何你在模擬器/裝置中能幹的事情,MonkeyRunner都能幹,而且還可以記錄和回放。
1 > MonkeyRunner 特徵
1)MonkeyRunner工具在工作站上通過API定義的特定命令和事件控制裝置或模擬器(可控)
2)精確控制事件之間的事件
3)可以進行:點觸屏、拖拽、長按、鍵盤事件
4)可以智慧截圖對比和判斷
5)回溯出詳細具體的BUG路徑
2 > MonkeyRunner 優缺點
1) 能完全模擬人工所有操作
2) 有詳細的API文件參考
3) 可以寫出智慧影象對比指令碼
4) 支援 java 和 Python 兩種語言指令碼
5) 指令碼移植性差
3 > MonkeyRunner測試型別
1)多裝置控制
MonkeyRunnerAPI可以跨多個裝置或模擬器實施測試套件。您可以在同一時間接上所有的裝置或一次啟動全部模擬器(或統統一起),依據程式依次連線到每一個,然後執行一個或多個測試。您也可以用程式啟動一個配置好的模擬器,執行一個或多個測試,然後關閉模擬器。
2)功能測試
MonkeyRunner可以為一個應用自動貫徹一次功能測試。您提供按鍵或觸控事件的輸入數值,然後觀察輸出結果的截圖。
3)迴歸測試
MonkeyRunner可以執行某個應用,並將其結果截圖與既定已知正確的結果截圖相比較,以此測試應用的穩定性。
4)可擴充套件的自動化
由於MonkeyRunner是一個API工具包,您可以基於Python模組和程式開發一整套系統,以此來控制Android裝置。除了使用MonkeyRunner API之外,您還可以使用標準的Python os和subprocess模組來呼叫Android Debug Bridge這樣的Android工具。
4 > MonkeyRunner 工具
MonkeyRunner API 主要包括三個模組
1)MonkeyRunner:
此類提供連線真機和模擬器方法waitForConnection(float timeout,stringdeviceid),還提供了建立使用者介面顯示資訊的alert()方法。
2)MonkeyDevice
代表一個裝置或模擬器。此類提供了安裝和解除安裝程式包、開啟Activity、傳送按鍵和點選事件、執行測試包等方法
拖拉控制元件drag(tuple start,tuple end,floatduration,integer steps) //duration手勢持續時間
按鍵press(string keycode,dictionary type) //keycode:KEYCODE_HOME,.. type:DOWN ,UP,DOWN_AND_UP...
安裝應用 installPackage(pc端存放apk路徑)
啟動應用starActivity(package+'/'+activity)//一個引數
點選touch(integer x,integer y, integer type)//type:DOWN,UP,DOWN_AND_UP...
輸入type(string message)
截圖takeSnapshot()
3)MonkeyImage
這個類提供了捕捉螢幕的方法。
在測試過程中用來儲存測試截圖,將點陣圖儲存為各種格式,並可以比較兩個MonkeyImage物件,將image儲存到檔案等。
影象對比sameAs(MonkeyImage other,float percent)//對比的相似度,結果boolean型別
影象儲存writetoFile(string path,string format)
5 > MonkeyRunner 環境搭建
6 > MonkeyRunner 執行
執行有兩種方式
① 在CMD命令視窗直接執行monkeyrunner
② 使用Python編寫測試程式碼檔案,在CMD中執行monkeyrunner xxx.py執行
不論使用哪種方式,您都需要呼叫SDK目錄的tools子目錄下的monkeyrunner命令。
1)模擬器啟動
在執行monkeyrunner之前必須先執行相應的模擬器或連線真機,否則monkeyrunner無法連線到裝置
執行模擬器有兩種方法:1、通過eclipse中執行模擬器 2、在CMD中通過命令呼叫模擬器
這裡介紹通過命令,在CMD中執行模擬器的方法
emulator -avd AVD_test
上面命令中 AVD_test 是指模擬器的名稱。
2)互動對話環境
cmd 執行 monkeyrunner 互動命令“monkeyrunner” 或:
monkeyrunner -plugin
3)cmd 終端匯入monkeyrunner所要使用的模組
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage
然後便可以開始利用monkeyrunner進行測試了。
3) 模擬器連線
device=MonkeyRunner.waitForConnection(6,’emulator-5554′)
引數1:超時時間,單位秒,浮點數,預設是無限期地等待。 引數2:指定的裝置名稱device_id,預設為當前裝置(手機優先,其次為模擬器)
4) app 安裝
模擬器啟動成功後,安裝apk
device.installPackage('F:\\QQyinle_439.apk')
其中,引數為apk的相對路徑。成功返回true,且模擬器的IDLE介面可看到安裝apk 圖示
5)app 啟動
如何獲取一個app的package名和activity?device.startActivity(component="package名/.activity")
使用
或
#apk路徑中一定不能有空格
aapt dump badging F:\QQyinle_439.apk
所以:aapt dump badging F:\QQyinle_439.apk > F:\log.txt
命令執行後,模擬器上的app被啟動。啟動成功後,便可以向模擬器傳送如按鍵、滾動、截圖、儲存等操作了device.startActivity(component=" com.tencent.qqmusic/.activity.AppStarterActivity ")
6)
問題:CMD執行提示monkeyrunner不是內部或外部命令,也不是可執行的程式或批處理檔案。
解決:電腦環境變數未配置,將monkeyrunner所在目錄配在環境變數裡。
變數名:Path
變數值:D:\android\android-sdk-windows\tools;D:\android\android-sdk-windows\platform-tools
7 > 樣例(Monkeyrunner執行python指令碼)
test.py
#-*-UTF-8-*-
#如果匯入的模組起了別名,後面就必須使用別名
from com.android.monkeyrunner import MonkeyRunner as mr
from com.android.monkeyrunner import MonkeyDevice as md
from com.android.monkeyrunner import MonkeyImage as mi
#連線裝置或虛擬器。
#引數1,超時時間,單位秒,預設無限期等待;引數2,裝置名稱,預設當前裝置
device=mr.waitForConnection(2,'192.168.56.101:5555')
#向裝置或模擬器安裝apk,以下兩種方式都是對的
device.installPackage('D:\\baiduliulanqi_186.apk')
#device.installPackage('D:/baiduliulanqi_186.apk')
#啟動APP
device.startActivity('cmp=com.baidu.browser.apps/com.baidu.browser.framework.BdBrowserActivity')
mr.sleep(3)
#點選搜尋框 #指定位置傳送觸控事件
device.touch(100,100,'DOWN_AND_UP')
mr.sleep(1)
#輸入查詢詞
device.type('test')
mr.sleep(1)
#點選回車鍵 #傳送指定型別鍵碼的事件
device.press('KEYCODE_ENTER','DOWN_AND_UP')
mr.sleep(2)
#截圖
result=device.takeSnapshot()
#儲存到檔案
result.writeToFile('./test.png','png')
#清除搜尋框
device.touch(100,100,'DOWN_AND_UP')
mr.sleep(1)
device.press('KEYCODE_DEL','DOWN_AND_UP')
mr.sleep(2)
#字串傳送到鍵盤
#device.type('字串')
device.type('Findyou')
#喚醒裝置螢幕
#鎖屏後,螢幕關閉,可以用下命令喚醒
device.wake()
#重起手機
device.reboot()
#模擬滑動
#device.drag(X,Y,D,S)
#X 開始座標
#Y 結束座標
#D 拖動持續時間(以秒為單位),預設1.0秒
#S 插值點時要採取的步驟。預設值是10
device.drag((100,1053),(520,1053),0.1,10)
執行測試指令碼test.py:monkeyrunner test.py monkeyrunner 錄製和回放 錄製:monkey_recorder.py
from com.android.monkeyrunner import MonkeyRunner as mr
from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder
device=mr.waitForConnection()
recorder.start(device)
在 cmd 命令列執行 monkeyrunner monkey_record.py,會彈出一個MonkeyRecord視窗介面該視窗的功能:
A. 可以自動顯示手機當前的介面
B. 自動重新整理手機的最新狀態
C. 點選手機介面即可對手機進行操作,同時會反應到真機,而且會在右側插入操作指令碼
D.
wait: 用來插入下一次操作的時間間隔,點選後即可設定時間,單位是秒
Press a Button:用來確定需要點選的按鈕,包括menu、home、search,以及對按鈕的press、down、up屬性Type Something:用來輸入內容到輸入框
Fling:用來進行拖動操作,可以向上、下、左、右,以及操作的範圍
Export Actions:用來匯出指令碼,不需要字尾名,也可以新增字尾名.mr
Refresh Display:用來重新整理手機介面,估計只有在斷開手機後,重新連線時才會用到
用錄製函式匯出操作的指令碼,通過monkey_playback.py函式回放之前的操作
回放:monkey_playback.py,
import sys
from com.android.monkeyrunner import MonkeyRunner as mr
CMD_MAP = {
'TOUCH':lambda dev,arg:dev.touch(**arg),
'DRAG': lambda dev,arg:dev.drag(**arg),
'TYPE': lambda dev,arg:dev.type(**arg),
'PRESS': lambda dev,arg:dev.press(**arg),
'WAIT': lambda dev,arg:mr.sleep(**arg)
}
def process_file(f,device):
for line in f:
(cmd,rest)=line.split('|')
try:
rest = eval(rest)
except:
print 'unable to parse options'
continue
if cmd not in CMD_MAP:
print 'unknown command: ' + cmd
continue
CMD_MAP[cmd](device, rest)
def main():
file = sys.argv[1]
f = open(file,'r')
device = mr.waitForConnection()
process_file(f,device)
f.close()
if __name__ = '__main__'
main()
8 > 其他
#解除安裝裝置或模擬器中的APK ,引數為APK包名
device.removePackage('cn.richinfo.thinkdrive')
print ('Uninstall Success!')
#傳送指定型別指定鍵碼的事件
#device.press(引數1:鍵碼,引數2:觸控事件型別)
#引數1:見android.view.KeyEvent
#引數2,如有TouchPressType()返回的型別-觸控事件型別,有三種。
#1、DOWN 傳送一個DOWN事件。指定DOWN事件型別傳送到裝置,對應的按一個鍵或觸控式螢幕幕上。
#2、UP 傳送一個UP事件。指定UP事件型別傳送到裝置,對應釋放一個鍵或從螢幕上擡起。
#3、DOWN_AND_UP 傳送一個DOWN事件,然後一個UP事件。對應於輸入鍵或點選螢幕。
以上三種事件做為press()引數或touch()引數
KeyCode:
#按下HOME鍵
device.press('KEYCODE_HOME',MonkeyDevice.DOWN_AND_UP)
#按下BACK鍵
device.press('KEYCODE_BACK',MonkeyDevice.DOWN_AND_UP)
#按下下導航鍵
device.press('KEYCODE_DPAD_DOWN',MonkeyDevice.DOWN_AND_UP)
#按下上導航鍵
device.press('KEYCODE_DPAD_UP',MonkeyDevice.DOWN_AND_UP)
#按下OK鍵
device.press('KEYCODE_DPAD_CENTER',MonkeyDevice.DOWN_AND_UP)
home鍵 KEYCODE_HOME
back鍵 KEYCODE_BACK
send鍵 KEYCODE_CALL
end鍵 KEYCODE_ENDCALL
上導航鍵 KEYCODE_DPAD_UP
下導航鍵 KEYCODE_DPAD_DOWN
左導航 KEYCODE_DPAD_LEFT
右導航鍵 KEYCODE_DPAD_RIGHT
ok鍵 KEYCODE_DPAD_CENTER
上音量鍵 KEYCODE_VOLUME_UP
下音量鍵 KEYCODE_VOLUME_DOWN
power鍵 KEYCODE_POWER
camera鍵 KEYCODE_CAMERA
menu鍵 KEYCODE_MENU
3、Robotium測試
Robotium 是一款常用的免費的 Android 自動化測試工具軟體,適用於為不同的安卓版本和子版本黑盒測試自動化。Robotium 測試是用java寫的。提供了模擬各種手勢操作(點選、長按、滑動等)、查詢和斷言機制的API,能夠對各種控制元件進行操作。Robotium 對 Activity,Dialog,Toast,Menu 都是支援的。軟體開發人員經常把它描述為Android Selenium。事實上,Robotium是一個單元測試庫。
為了自動化測試需要修改程式原始碼。該工具也不適合與系統軟體的互動,它不能鎖定和解鎖智慧手機或平板電腦。Robotium 也沒有錄製回放功能,也不提供截圖。
詳情請參考:
4、Ronaorex測試
Ranrex 是一款不僅可以支援最新Android版本,也支援從Android2.2開始的早期版本和分支版本。
Ranorex的優勢是它有詳細的截圖報告。它能通過Wifi連線智慧手機和平板電腦。 一個自動化測試工程師通過這個Android工具可以不用XML資料格式來詳細編寫資料驅動的測試。Ranorex工作室使自動化測試工程師只要點選滑鼠就可容易地建立測試。它允許詳細宣告額外的程式模組,來用於在後期開發週期中測試更復雜的場景。
它是一個商業的移動應用工具,其許可價格為1990歐元。不過Ranorex搜尋功能相當慢;它需要30秒來完成這樣的操作。我們必須為Ranorex配備apk檔案裝置,否則無法通過這個工具實現自動化測試,因為它只能在APK檔案裝置上工作。
5、Appium測試
這是一個可以為iOS和Android做自動化測試的框架。它是一個開源工具。它支援從2.3及以後的安卓版本。Appium利用WebDriver介面執行測試。它支援多種程式語言,如java,C #,Ruby和其他在WebDriver庫中的語言。
它可以控制移動裝置上的Safari和Chrome。這樣測試移動網站可使用Appium和這些瀏覽器。 但一些自動化測試工程師抱怨說,它沒有詳細的報告。其弱點還有減少了在移動裝置上XPath支援。
6、UI Automator 測試
這款工具是谷歌釋出的。它支援從4.1開始的安卓版本。UI Automator能夠與各種Android軟體產品互動,包括系統中的應用。這使UI Automator可以鎖定和解鎖智慧手機或平板電腦。
通過這個工具建立的指令碼可以在許多不同的安卓平臺上執行。它可以重現複雜的使用者操作動作。 UI Automator也可以利用一個裝置的外部按鍵,如回放鍵、音量調節鍵、開關鍵來控制。 它可以整合測試框架TestNG。在這種情況下,UI Automator可以生成豐富和詳細的報告,類似於Ranorex生成報告。另外,這個工具搜尋功能非常快。
軟體測試專家發現UI Automator是一款適用於許多Android平臺的移動應用測試。它是一款最適合安卓應用測試的工具之一,因為它是由谷歌專門為這個作業系統釋出的。
通常約有80%的新軟體bug能在所有支援的平臺上重現。因此,一個可執行在廣泛使用的平臺上的移動測試工具是可以發現高達80%的缺陷。其餘20%將會在其他平臺上被發現。這意味著,在大多數情況下,在更少的測試平臺上完整地做測試比在眾多平臺上匆忙測試更好。
uiautomator :一個測試的Java庫,包含了建立UI測試的各種API和執行自動化測試的引擎
參考:
7、TestBird 測試
TestBird自動迴歸測試平臺為手遊/APP開發者提供APP自動化迴歸測試,簡單點選自動生成圖片用例;多臺手機同時執行用例迴歸;基線對比,找出問題;調整基線,維護測試用例;一鍵生成報告,全面提升測試效率和質量。
TestBird最初是從手遊測試開始起步,在手遊圈積累起很高的知名度,目前也在逐步向APP測試領域進軍,同時TestBird也加入了智慧硬體的測試領域。基於全球首創的物件識別技術,TestBird可以深入到移動App&遊戲內部所有功能的深度解析能力。TestBird建立了雲手機、雲測試和雲分析三大測試平臺,通過自助App功能測試、遠端真機除錯、真機相容性測試、真人體驗測試、 真人壓力測試和崩潰分析等,為移動應用提供從研發到上線再到運營的一站式質量管理服務。