Monkey腳本API簡(jiǎn)介
API:全稱Application Programming Interface章咧,即應(yīng)用程序編程接口.
API是一些預(yù)先定義函數(shù)浩蓉,目的是用來提供應(yīng)用程序與開發(fā)人員基于某軟件或者某硬件得以訪問一組例程的能力伏伯,并且無需訪問源碼或無需理解內(nèi)部工作機(jī)制細(xì)節(jié)氮块。
API就是操作系統(tǒng)給應(yīng)用程序的調(diào)用接口度气,應(yīng)用程序通過調(diào)用操作系統(tǒng)的 API而使操作系統(tǒng)去執(zhí)行應(yīng)用程序的命令(動(dòng)作)墨榄。在 Windows 中,系統(tǒng)API是以函數(shù)調(diào)用的方式提供的此蜈。
SDA和API
可以認(rèn)為API是包含在SDK中的:SDK是一系列文件的組合即横,包括lib、dll裆赵、.h东囚、文檔、示例等战授;API是對(duì)程序而言的页藻,提供用戶編程時(shí)的接口,即一系列模塊化的類和函數(shù)植兰。
API與GUI
兩者都屬于直接用戶接口份帐,不同的是API接口屬于一種操作系統(tǒng)或程序接口,但是GUI接口屬于一種圖形操作系統(tǒng)楣导。
API分類
1.Windows API:Windows application programming interface(WIndows應(yīng)用程序接口)
Windows安裝完废境,系統(tǒng)就有了一套簡(jiǎn)單的SDK,包含了一套完整的基礎(chǔ)Windows API筒繁, 如果安裝VC或下載新的SDK后噩凹,就可以使用更加豐富的Windows API了。
凡是在 Windows工作環(huán)境底下執(zhí)行的應(yīng)用程序毡咏,都可以調(diào)用Windows API驮宴。
2.linux API:linux application programming interface(linux應(yīng)用程序接口)。在linux中血当,用戶編程接口API遵循了UNIX中最流行的應(yīng)用編程界面標(biāo)準(zhǔn)——POSIX標(biāo)準(zhǔn)幻赚。
Monkey腳本API常見命令
LaunchActivity(pkg_name, cl_name)? ? 啟動(dòng)應(yīng)用的Activity禀忆。參數(shù):包名和啟動(dòng)的Activity
Tap(x, y, tapDuration)? ? 模擬一次手指單擊事件
參數(shù):x,y為控件坐標(biāo),tapDuration為點(diǎn)擊的持續(xù)時(shí)間(可省略)落恼。
UserWait(sleepTime)? ? 休眠一段時(shí)間
RotateScreen(rotationDegree, persist) ? ? 旋轉(zhuǎn)屏幕
參數(shù):rotationDegree為旋轉(zhuǎn)角度箩退。
? ? ? ? ? ? 1代表90度
? ? ? ? ? ? persist表示旋轉(zhuǎn)之后是否固定
? ? ? ? ? ? 0表示旋轉(zhuǎn)后恢復(fù),非0則表示固定不變
DispatchString(input)? 輸入字符串
DispatchFlip(true/false)? ? 打開或者關(guān)閉軟鍵盤
PressAndHold(x, y, pressDuration)? ? 模擬長(zhǎng)按事件
Drag(xStart, yStart, xEnd, yEnd, stepCount)? ? 用于模擬一個(gè)拖拽操作
PinchZoom(x1Start, y1Start, x1End, y1End, x2Start, y2Start, x2End, y2End, stepCount)? ? 模擬縮放手勢(shì)
LongPress()? ? 長(zhǎng)按2秒
DeviceWakeUp()? ? 喚醒屏幕
PowerLog(power_log_type, test_case_status)? ? 模擬電池電量信息
WriteLog() ? ? 將電池信息寫入SD卡
RunCmd(cmd) ? ? 運(yùn)行shell命令
DispatchPointer(downtime,eventTime,action,x,y,pressure,size,metastate,xPrecision,yPrecision,device,edgeFlags)? ? ? ? 向指定位置佳谦,發(fā)送單個(gè)手勢(shì)
ProfileWait()? ? ? 等待5秒
StartCaptureFramerate() ? ? 獲取幀率
EndCaptureFramerate(input)? 結(jié)束獲取幀率
Monkey腳本格式
Monkey腳本主要包含兩部分戴涝,一部分是頭文件信息,一部分是具體的monkey命令钻蔑。
type = raw events
count = 1
speed = 1.0?
//下面為monkey命令?
start data >>?
具體的monkey腳本內(nèi)容?
注意:頭文件代碼書寫注意“=”兩邊預(yù)留空格啥刻,否則會(huì)出現(xiàn)如下報(bào)錯(cuò)。
java.lang.NumberFormatException: Invalid int: ""
編寫腳本(綜合實(shí)例)
執(zhí)行腳本
腳本編寫完成后咪笑,傳到手機(jī)設(shè)備上可帽,然后執(zhí)行。
adb push C:\Users\Administrator\Desktop\gallery3.txt data/local/tmp
adb shell
monkey -f data/local/tmp/gallery3.txt -v 1
執(zhí)行結(jié)果
日志管理
Monkey日志管理是Monkey測(cè)試中非常重要的一個(gè)環(huán)節(jié)窗怒,通過日志管理分析映跟,可以獲取當(dāng)前測(cè)試對(duì)象在測(cè)試過程中是否會(huì)發(fā)生異常,以及發(fā)生的概率扬虚,同時(shí)還可以獲取對(duì)應(yīng)的錯(cuò)誤信息努隙,幫助開發(fā)定位和解決問題。
monkey日志保存方法
1辜昵、保存在PC中
>adb shell monkey [option] <count> >d:\monkey.txt
eg:C:\Users\Administrator>adb shell monkey -v -v 100 >d:\monkeylog.txt
2荸镊、保存在手機(jī)上
>adb shell
>monkey -v 100 >data/local/tmp/monkeylog.txt
例:將日志導(dǎo)出并保存到D盤根目錄
C:\Users\Administrator>adb pull /data/local/tmp/monkeylog.txt D:\
3、標(biāo)準(zhǔn)流和錯(cuò)誤流分開保存
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
執(zhí)行以上命令堪置,Monkey的運(yùn)行日志和異常日志將被分開保存躬存。Monkey的運(yùn)行日志將被保存在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 (這里將日志保存在手機(jī)/data/local/tmp路徑里雁竞,標(biāo)準(zhǔn)輸出(正常)日志文件名稱為monkeylog.txt,錯(cuò)誤輸出(有問題的情況拧额,包括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 (這里將標(biāo)準(zhǔn)跟錯(cuò)誤日志都保存在一個(gè)文件monkeylog.txt里,日志里搜索關(guān)鍵詞crash跟anr即可找到對(duì)應(yīng)錯(cuò)誤點(diǎn))
3侥锦、monkey -s 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --throttle 500 -v -v -v 99999999 &> data/local/tmp/monkeylog.txt(同方法2)