monkey随机测试都会了,就是一条命令,好处是简单粗略的判断一下app的稳定性。如果能通过脚本完成有序用户操作流,那就离实际情况更近了一步。下面跟我一起来学习吧。
一、先学习一下monkey执行脚本的命令 -f 脚本。
命令:adb
脚本可以为任何类型,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
adb
二、脚本用到的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