monkey隨機測試都會了,就是一條命令,好處是簡單粗略的判斷一下app的穩定性。如果能通過腳本完成有序用戶操作流,那就離實際情況更近了一步。下面跟我一起來學習吧。
一、先學習一下monkey執行腳本的命令 -f 腳本。
命令:adb shell monkey -p 包名 -v -f /sdcard/monkey.script times >d:/ monkey.txt
腳本可以爲任何類型,txt,script等都可以
先運行一下,找找感覺。
如從網上找到一段腳本:
//header
type= raw events
count= 10
speed= 1.0
//line at the end of the header means that below it is the context of script
start data >>
DispatchPointer(5109520,5109520,0,230.75429,458.1814,0.20784314,
0.06666667,0,0.0,0.0,65539,0)
DispatchKey(5113146,5113146,0,20,0,0,0,0)
DispatchFlip(true)
type指明類型
count說明執行次數,但是這裏改成任何值都執行一次,monkey命令可以指定執行次數,這裏也就無所謂了
speed命令執行速率。改動無影響,可以通過monkey命令行指定。
以上三個參數改動都沒什麼影響,一般不做改動。
start data >>相當於一個入口,說明腳本從下面開始執行
把這段腳本存在c盤的根目錄下,取名monkey.script,把這個腳本發送到手機的sd卡中
看看是否發送成功,ls後看到有mokey.script就證明成功
在app上運行腳本
adb shell monkey -p 包名 -v -f /sdcard/monkey.script times 可以看到真機的app已經按照腳本在跑了,並且在命令行顯示腳本事件。
adb shell monkey -p 包名 -v -f /sdcard/monkey.script times >d:/ monkey.txt,到處到電腦,進行查看
二、腳本用到的API
在MonkeySourceScript.java中規定了如下api可以供用戶使用
privatestaticfinalString EVENT_KEYWORD_POINTER ="DispatchPointer";
DispatchPointer(long downTime, long eventTime, int action,
float x, float y, float pressure, float size, int metaState,
float xPrecision, float yPrecision, int device, int edgeFlags)
privatestaticfinalString EVENT_KEYWORD_TRACKBALL ="DispatchTrackball";
DispatchTrackball(long downTime, long eventTime, int action,
float x, float y, float pressure, float size, int metaState,
float xPrecision, float yPrecision, int device, int edgeFlags)
privatestaticfinalString EVENT_KEYWORD_KEY ="DispatchKey";
DispatchKey(long downTime, long eventTime, int action, int code,
int repeat, int metaState, int device, int scancode)
privatestaticfinalString EVENT_KEYWORD_FLIP ="DispatchFlip";
DispatchFlip(boolean keyboardOpen)
privatestaticfinalString EVENT_KEYWORD_KEYPRESS ="DispatchPress";
DispatchPress(int keyCode)
privatestaticfinalString EVENT_KEYWORD_ACTIVITY ="LaunchActivity";
LaunchActivity(String pkg_name, String cl_name)
privatestaticfinalString EVENT_KEYWORD_INSTRUMENTATION ="LaunchInstrumentation";
LaunchInstrumentation(String test_name, String runner_name)
privatestaticfinalString EVENT_KEYWORD_WAIT ="UserWait";
UserWait(long sleeptime)
privatestaticfinalString EVENT_KEYWORD_LONGPRESS ="LongPress";
LongPress(int keyCode)
privatestaticfinalString EVENT_KEYWORD_POWERLOG ="PowerLog";
PowerLog(String power_log_type)
PowerLog(String power_log_type, String test_case_status)
privatestaticfinalString EVENT_KEYWORD_WRITEPOWERLOG ="WriteLog";
WriteLog: write power log to sdcard
privatestaticfinalString EVENT_KEYWORD_RUNCMD ="RunCmd";
RunCmd(String cmd):執行cmd命令
private
ps:退出shell exit