Monkey指令碼API簡介
Monkey指令碼API簡介
API:全稱Application Programming Interface,即應用程式程式設計介面.
API是一些預先定義函式,目的是用來提供應用程式與開發人員基於某軟體或者某硬體得以訪問一組例程的能力,並且無需訪問原始碼或無需理解內部工作機制細節。
API就是作業系統給應用程式的呼叫介面,應用程式通過呼叫作業系統的 API而使作業系統去執行應用程式的命令(動作)。在 Windows 中,系統API是以函式呼叫的方式提供的。
SDA和API
可以認為API是包含在SDK中的:SDK是一系列檔案的組合,包括lib、dll、.h、文件、示例等;API是對程式而言的,提供使用者程式設計時的介面,即一系列模組化的類和函式。
API與GUI
兩者都屬於直接使用者介面,不同的是API介面屬於一種作業系統或程式介面,但是GUI介面屬於一種圖形作業系統。
API分類
1.Windows API:Windows application programming interface(WIndows應用程式介面)
Windows安裝完,系統就有了一套簡單的SDK,包含了一套完整的基礎Windows API, 如果安裝VC或下載新的SDK後,就可以使用更加豐富的Windows API了。
凡是在 Windows工作環境底下執行的應用程式,都可以呼叫Windows API。
2.linux API:linux application programming interface(linux應用程式介面)。在linux中,使用者程式設計介面API遵循了UNIX中最流行的應用程式設計介面標準——POSIX標準。
Monkey指令碼API常見命令
LaunchActivity(pkg_name,cl_name) 啟動應用的Activity。引數:包名和啟動的Activity
Tap(x,y,tapDuration) 模擬一次手指單擊事件
引數:x,y為控制元件座標,tapDuration為點選的持續時間(可省略)。
UserWait(sleepTime) 休眠一段時間
RotateScreen(rotationDegree,persist) 旋轉螢幕
引數:rotationDegree為旋轉角度。
1代表90度
persist表示旋轉之後是否固定
0表示旋轉後恢復,非0則表示固定不變
DispatchString(input)輸入字串
DispatchFlip(true/false) 開啟或者關閉軟鍵盤
PressAndHold(x,pressDuration) 模擬長按事件
Drag(xStart,yStart,xEnd,yEnd,stepCount) 用於模擬一個拖拽操作
PinchZoom(x1Start,y1Start,x1End,y1End,x2Start,y2Start,x2End,y2End,stepCount) 模擬縮放手勢
LongPress() 長按2秒
DeviceWakeUp() 喚醒螢幕
PowerLog(power_log_type,test_case_status) 模擬電池電量資訊
WriteLog() 將電池資訊寫入SD卡
RunCmd(cmd) 執行shell命令
DispatchPointer(downtime,eventTime,action,x,pressure,size,metastate,xPrecision,yPrecision,device,edgeFlags) 向指定位置,傳送單個手勢
ProfileWait() 等待5秒
StartCaptureFramerate() 獲取幀率
EndCaptureFramerate(input)結束獲取幀率
Monkey指令碼格式
Monkey指令碼主要包含兩部分,一部分是標頭檔案資訊,一部分是具體的monkey命令。
type = raw events
count = 1
speed = 1.0
//下面為monkey命令
start data >>
具體的monkey指令碼內容
注意:標頭檔案程式碼書寫注意“=”兩邊預留空格,否則會出現如下報錯。
java.lang.NumberFormatException: Invalid int: ""
編寫指令碼(綜合例項)
執行指令碼
指令碼編寫完成後,傳到手機裝置上,然後執行。
adb push C:\Users\Administrator\Desktop\gallery3.txt data/local/tmp
adb shell
monkey -f data/local/tmp/gallery3.txt -v 1
執行結果
日誌管理
Monkey日誌管理是Monkey測試中非常重要的一個環節,通過日誌管理分析,可以獲取當前測試物件在測試過程中是否會發生異常,以及發生的概率,同時還可以獲取對應的錯誤資訊,幫助開發定位和解決問題。
monkey日誌儲存方法
1、儲存在PC中
>adb shell monkey [option] <count> >d:\monkey.txt
eg:C:\Users\Administrator>adbshellmonkey -v -v 100 >d:\monkeylog.txt
2、儲存在手機上
>adb shell
>monkey -v 100 >data/local/tmp/monkeylog.txt
例:將日誌匯出並儲存到D盤根目錄
C:\Users\Administrator>adb pull /data/local/tmp/monkeylog.txt D:\
3、標準流和錯誤流分開儲存
Monkey [option] <count> 1>/sdcard/monkey.txt 2>/sdcard/error.txt
例子:C:\Users\Administrator>adb shell monkey -v 100 1>d:\monkey.log 2>d:\error.log
執行以上命令,Monkey的執行日誌和異常日誌將被分開儲存。Monkey的執行日誌將被儲存在monkey.txt檔案中,而異常日誌將被儲存在D盤下的error.txt中。
4、常用三種monkey日誌儲存寫法
1、monkey -s 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --throttle 500 -v -v -v 99999999 > data/local/tmp/monkeylog.txt 2>data/local/tmp/monkeylog_error.txt (這裡將日誌儲存在手機/data/local/tmp路徑裡,標準輸出(正常)日誌檔名稱為monkeylog.txt,錯誤輸出(有問題的情況,包括crash和ANR資訊等)日誌檔名稱為:monkey_error.txt)
2、monkey -s 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --throttle 500 -v -v -v 99999999 > data/local/tmp/monkeylog.txt 2>&1 (這裡將標準跟錯誤日誌都儲存在一個檔案monkeylog.txt裡,日誌裡搜尋關鍵詞crash跟anr即可找到對應錯誤點)
3、monkey -s 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --throttle 500 -v -v -v 99999999 &> data/local/tmp/monkeylog.txt(同方法2)
5人點贊 軟體測試之路