测试——Monkey测试的介绍及使用
Monkey的簡單介紹:
?
Monkey的簡單使用:?
搭建環境:
Android SDK環境:下載Android SDK,下載完成后,添加路徑到Path。(步驟簡單不會的自行百度)
下面是Android SDK下載地址:Android SDK下載地址。
?
Python環境:下載Python下載完成后一路next安裝上就行了。
下面是Python下載地址:Python下載地址
配置好環境之后連接手機或者模擬器(注意要在連接電腦之前把usb調試打開),然后在cmd命令行輸入adb? devices會出現一行手機唯一標志名。代表手機和電腦已經建立了軟連接。
安裝一個被測軟件:
(命令行輸入)adb install? App文件名.apk卸載一個軟件:
(命令行輸入)adb.uninstall 包名? ??
發送各種測試指令:?
輸出的東西是:包名/Activity名。
?
? ? ? ?然后我們看一下打印出來的結果。
首先我們能看到日志文件確實存在了。然后我們打開看一下。
這上邊的提示是:
測試的seed值(因為是隨機事件100次,所以seed值是隨機的),這個seed值就是說如果我們此次測試出現問題下次用這個seed值就能復現。
count:測試各種事件總共的次數。
Include Category:測試包含的類別。
這個就是說測試了100次,sending rotation degree 未發現錯誤,下邊的那些也是一樣。
順便說一下他主要測試的一些點。
我們知道seed是測試編號,下邊的0-11就是這次測試都進行了什么事件。做了多少(按百分比)。
?
其他一些參數的使用:
?
?
?如果想要約束兩個或者三個事件一起執行的百分比,寫法如下:
adb shell monkey -v -p 包名 --pct-touch 50?--pct-motion 50 100(意思就是點擊事件和動作事件的百分比各占50%)?
軌跡球事件:
adb shell monkey -v -p 包名 --pct-trackball 80 100 軌跡球事件占總事件的80%,總共執行100次?
?
?
?
?
?
?
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
CRASH結果的析取:
實現步驟:安裝一個能引發CRASH 的 App →執行壓力測試命令(觸發CRASH)→提取CRASH的Exception信息。
adb shell monkey -v -p 包名 --ignore-crashes 10000 //出現Crash后繼續執行ANR結果的析取:
實現步驟:安裝一個能引發ANR的 App →執行壓力測試命令(觸發ANR)→提取ANR的Exception信息。
?
?
手動測試的時候出現ANR怎么獲取Log信息:
adb shell cd data/anr //到anr目錄下 ls //查看一下文件 more (tracts)文件名 //查看文件內容執行Monkey腳本功能:
在測試過程中如果不使用腳本功能可能執行的事件是隨機的。所以想要執行相同功能就要用到
Monkey Script:它的使用就先要把腳本傳輸到手機上
adb push d:\monkey.txt sdcard/monkey.txt 將文件發送到手機 格式:adb push 電腦路徑文件 手機路徑文件。?然后通過指令執行:
adb shell monkey -f <scriptfile> <event-count>Monkey Script 的一些命令:
1 Dispatch Trackball 命令
軌跡球事件: Dispatch Trackball(longdowntime,long eventide,int action,float x ,float y ,....) action 0 代表按下 , 1 代表彈起 ,x,y代表坐標點。2 Dispatch Pointer 命令
點擊事件: Dispatch Pointer(longdowntime,long eventide,int action,float x ,float y ,....) action 0 代表按下 , 1 代表彈起 ,x,y代表坐標點。3 Dispatch String命令
輸入字符串事件 Dispatch String (String text)4 Launch Activity 命令
啟動應用 Launch Activity(package,Activity)(包名,活動頁面名)?5 UserWait命令
等待事件 UserWait(1000)6 Dispatch Press
按下鍵值 Dispatch Press (int keycode) #keycode 66 回車鍵 ,不同的keycode 代表不同的鍵值其他一些命令:
RotateScreen(rotationDegree, persist): 翻轉屏幕,第一個參數是旋轉角度,第二個是旋轉后是否停在當前位置Tap(x, y) :單擊事件,點擊屏幕,參數是點擊坐標Drag(xStart, yStart, xEnd, yEnd) :在屏幕上滑動,坐標是從哪一點滑到哪一點LongPress(): 長按2sProfileWait():?等待5sPressAndHold(x, y, pressDuration) :模擬長按?PinchZoom(x1Start, y1Start, x1End, y1End, x2Start, y2Start, x2End, y2End, stepCount): 模擬縮放RunCmd(cmd) :執行shell命令,比如截圖?screencap -p /data/local/tmp/tmp.pngDispatchFlip(true/false) :打開或者關閉軟鍵盤UserWait(sleepTime) :睡眠指定時間DeviceWakeUp() :喚醒屏幕?
編寫一個簡單的瀏覽器搜索腳本:
編寫步驟: 1 啟動App 2 點擊輸入框 3 輸入查詢詞 4 點擊鍵盤回車鍵 5 點擊搜索按鈕 6 等待結果出現 7 點擊清除按鈕typ = user count = 10 speed = 1.0 start data >>LaunchActivity(com.android.browser,com.android.browser.BrowserActivity) //設置開啟那個軟件,哪個界面 UserWait(2000) //等待兩秒 DispatchPointer(10,10,0,400,400,1,1,-1,1,1,0,0) //設置按下輸入框點擊焦點 DispatchPointer(10,10,1,400,400,1,1,-1,1,1,0,0) //設置抬起輸入框點擊焦點 DispatchString(test) //設置要搜索的文字 UserWait(1000) //等待一秒 DispatchPress(66) //點擊回車鍵 UserWait(1000) //等待一秒 DispatchPointer(10,10,0,400,900,1,1,-1,1,1,0,0) //設置按下搜索的點擊焦點 DispatchPointer(10,10,1,400,900,1,1,-1,1,1,0,0) //設置抬起搜索的點擊焦點 UserWait(6000) //等待6秒 DispatchPointer(10,10,0,756,281,1,1,-1,1,1,0,0) //設置按下輸入框點擊焦點 DispatchPointer(10,10,1,756,281,1,1,-1,1,1,0,0) //設置抬起輸入框點擊焦點 UserWait(3000) //等待三秒腳本編寫完成以后想要運行這個腳本就要把此腳本放到手機中。那編寫的腳本文件在電腦中怎么放到手機中呢?用如下命令
腳本名monkey.script 位置:D盤根目錄下 想要放到手機中的位置: data/local/tmp 目錄下命令行執行:adb push D:/monkey.script /data/local/tmp/可以看到如下執行結果,代表文件已經成功導入到手機中。
?導入成功后就要切換到手機目錄下,用手機里的monkey去執行我們的monkey.script.腳本了操作步驟如下:
命令行輸入: adb shell //切換到手機目錄下 cd /data/local/tmp //進入到我們存放腳本的目錄 ls //查看目錄下是否有我們已經導入的腳本,確認存在 monkey -f monkey.script 2 //執行monkey.script腳本執行兩次這里要注意,要確定app工程中設置了能被外部調起 android:exported = "true"。
?
MonkeyRunner
在運行monkeyrunner的時候可能會有踩到一些坑,我把坑總結了一下,如有monkeyrunner? ?無法啟動的問題,腳本執行命令問題請查看——————MonkeyRunner無法正常運行
為了要滿足更多的模擬操作我們就要用到monkeyRunner中的一些API
1、MonkeyRunner API - alert
警示框 代碼段 void alert (string message ,stringtitle,string okTitle) //正文內容,警告框的title ,按鈕上的文字我們在編譯器中編寫如下代碼#!/usr/bin/python#-*- UTF-8 -*-from com.android.monkeyrunner import MonkeyRunner MonkeyRunner.alert('hello mook frends','this is title','OK')執行結果:
?
2、MonkeyRunner API -waitForConnection
等待設備連接,有多個device id,需要指明具體哪個設備。waitForConnection(float timeout,string deviceid)3、MonkeyDevice API -drag
拖動:drag(tuple start,tuple end,float duration,integer steps) (拖動起始點位置,拖動結束點位置,手勢持續時間,插值點的步數,默認10)4、MonkeyDevice API -press
按鍵 press(string keycode,dictionary type)(keycode(回車鍵66),動作類型Down、UP、DOWN_AND_UP(彈起,按下))5、MonkeyDevice API - startActivity
啟動應用startActivity(package+'/'+activity)6、MonkeyDevice API -touch
touch(integer x,integer y,integer type)(x坐標值,y坐標值,type= DOWN,UP,DOWN_AND_UP)7、MonkeyDevice API -type
輸入 type(string message) 文本信息8、MonkeyDevice API -takeSnapshot
截屏 MonkeyImage takeSnapshot()9、Monkey Image API - sameAs
圖像對比boolean sameAs (MonkeyImage other,float percent) (文件名稱,相似度百分比)10、MonkeyImage API -writetoFile
保存圖像文件void writeTOFile(string path,string format) (保存文件的路徑,保存文件的格式(JPG、PNG...))綜合:在輸入框輸入文字,并截圖。
#!/usr/bin/python#-*- UTF-8 -*-#把要用到的模塊導入到工程中 from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice,MonkeyImage#連接手機(延遲多少秒,手機的devices號) device = MonkeyRunner.waitForConnection(5,"emulator-5556")#要運行軟件的包名和Activity名 device.startActivity("com.android.browser/com.android.browser.BrowserActivity") #延遲兩秒 MonkeyRunner.sleep(2)#按下輸入文本框操作 device.touch(400,400,'DOWN_AND_UP') #延遲一秒 MonkeyRunner.sleep(1)#輸入文本 device.type('test') #延遲一秒 MonkeyRunner.sleep(1)#按下回車鍵 device.press('66','DOWN_AND_UP') #延遲一秒 MonkeyRunner.sleep(1)#點擊搜索按鈕 device.touch(400,900,'DOWN_AND_UP') #延遲六秒 MonkeyRunner.sleep(6)#將執行后的界面截圖,并保存到D盤下 result = device.takeSnapshot() result.writeToFile('D:\TEST.png','png')腳本文件如上,編寫的時候不要添加中文。否則會出現編碼錯誤的問題。
編好后,執行結果如下:
查看一下D盤下的文件:
到此為止,monkey的簡單使用就介紹完了。
總結
以上是生活随笔為你收集整理的测试——Monkey测试的介绍及使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Eventide发布SplitEQ,工作
- 下一篇: centos8安装NVIDIA显卡驱动,