几款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(默認),除了啟動、測試完成和最終結果外只提供較少的信息。
adb shell monkey -p com.shjt.map -v 100
Level1,提供了較為詳細的測試信息,如逐個發送到 Activity 的事件信息。
adb shell monkey -p com.shjt.map -v -v 100
Level2,提供了更多的設置信息,如測試中選中或未選中的 Activity 信息。
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:
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
有bug時,會出現error:
** 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工具在工作站上通過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 環境搭建
Monkeyrunner的環境搭建,需要安裝以下工具:jdk、android sdk、python編譯器。
MonkeyRunner 環境搭建Eclipse中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 -plugin3)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 啟動
device.startActivity(component="package名/.activity")
如何獲取一個app的package名和activity?
使用
#apk路徑中一定不能有空格 aapt dump badging F:\QQyinle_439.apk
或
aapt dump badging F:\QQyinle_439.apk > F:\log.txt
所以:
device.startActivity(component=" com.tencent.qqmusic/.activity.AppStarterActivity ")
命令執行后,模擬器上的app被啟動。啟動成功后,便可以向模擬器發送如按鍵、滾動、截圖、存儲等操作了
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!')
#按下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)
KeyCode: 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 也沒有錄制回放功能,也不提供截圖。
詳情請參考:
Robotium自動化測試框架使用教程
4、Ronaorex測試
Ranrex 是一款不僅可以支持最新Android版本,也支持從Android2.2開始的早期版本和分支版本。
Ranorex的優勢是它有詳細的截屏報告。它能通過Wifi連接智能手機和平板電腦。?
一個自動化測試工程師通過這個Android工具可以不用XML數據格式來詳細編寫數據驅動的測試。Ranorex工作室使自動化測試工程師只要點擊鼠標就可容易地創建測試。它允許詳細聲明額外的程序模塊,來用于在后期開發周期中測試更復雜的場景。?
5、Appium測試
這是一個可以為iOS和Android做自動化測試的框架。它是一個開源工具。它支持從2.3及以后的安卓版本。Appium利用WebDriver接口運行測試。它支持多種編程語言,如java,C #,Ruby和其他在WebDriver庫中的語言。
它可以控制移動設備上的Safari和Chrome。這樣測試移動網站可使用Appium和這些瀏覽器。?
但一些自動化測試工程師抱怨說,它沒有詳細的報告。其弱點還有減少了在移動設備上XPath支持。?
Appium環境搭建(Windows版)
6、UI Automator?測試
這款工具是谷歌發布的。它支持從4.1開始的安卓版本。UI Automator能夠與各種Android軟件產品交互,包括系統中的應用。這使UI Automator可以鎖定和解鎖智能手機或平板電腦。
通過這個工具創建的腳本可以在許多不同的安卓平臺上執行。它可以重現復雜的用戶操作動作。?
UI Automator也可以利用一個設備的外部按鍵,如回放鍵、音量調節鍵、開關鍵來控制。?
它可以集成測試框架TestNG。在這種情況下,UI Automator可以生成豐富和詳細的報告,類似于Ranorex生成報告。另外,這個工具搜索功能非常快。?
軟件測試專家發現UI Automator是一款適用于許多Android平臺的移動應用測試。它是一款最適合安卓應用測試的工具之一,因為它是由谷歌專門為這個操作系統發布的。?
通常約有80%的新軟件bug能在所有支持的平臺上重現。因此,一個可執行在廣泛使用的平臺上的移動測試工具是可以發現高達80%的缺陷。其余20%將會在其他平臺上被發現。這意味著,在大多數情況下,在更少的測試平臺上完整地做測試比在眾多平臺上匆忙測試更好。?
uiautomatorviewer :一個圖形界面工具來掃描和分析應用的UI控件。
uiautomator :一個測試的Java庫,包含了創建UI測試的各種API和執行自動化測試的引擎
參考:
http://blog.csdn.net/u010961631/article/details/9616581
https://www.jianshu.com/p/c900efe8c982
https://segmentfault.com/a/1190000004619487
7、TestBird 測試
TestBird自動回歸測試平臺為手游/APP開發者提供APP自動化回歸測試,簡單點擊自動生成圖片用例;多臺手機同時執行用例回歸;基線對比,找出問題;調整基線,維護測試用例;一鍵生成報告,全面提升測試效率和質量。
TestBird最初是從手游測試開始起步,在手游圈積累起很高的知名度,目前也在逐步向APP測試領域進軍,同時TestBird也加入了智能硬件的測試領域。基于全球首創的對象識別技術,TestBird可以深入到移動App&游戲內部所有功能的深度解析能力。TestBird建立了云手機、云測試和云分析三大測試平臺,通過自助App功能測試、遠程真機調試、真機兼容性測試、真人體驗測試、 真人壓力測試和崩潰分析等,為移動應用提供從研發到上線再到運營的一站式質量管理服務。
總結
以上是生活随笔為你收集整理的几款Android 应用自动化测试工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt程序窗口关闭不退出而最小化到托盘的方
- 下一篇: centos7 安装cacti