一、Monkey脚本编写

1.Monkey脚本格式
  • 脚本优势:

简单快捷,不需要接触任何工具,只需要一个记事本文件

  • 脚本缺点:

实现坐标、按键等基本操作的相应步骤,顺序脚本无逻辑性


  • 脚本源码:
    \development\cmds\monkey\src\com\android\commands\monkey\MonkeySourceScrip.java
#头文件、控制monkey发送消息的参数type=raw eventscount=10speed=1.0#以下为monkey命令start data >>DispatchPress (KEYCODE_HOME)DispatchPress (KEYCODE_MENU)
2.Monkey脚本API

1)常用API

API

说明

LaunchActivity(Pkg_name,cl_name) 启动应用的Activity
Tap(x,y,tapDuration) 模拟一次手指单击事件
DispatchPress(KeyCodeName) 按键

RotateScreen(ratationDegree,peresist)
旋转屏幕
ratationDegree:四个参数0123分别代表0,90,180,270
peresist:两个参数^0,0旋转后固定和旋转后不固定
DispatchFlip(true/false) 打开或关闭软键盘
LongPress() 长按两秒
PressAndHold(x,t,pressDuration) 模拟长按事件
DispatchString(input) 输入字符串
Drag(sStart,yStart,xEnd,yEnd.stepCount) 用于模拟一个拖拽操作
PinchZoom(pt1xStart,pt1yStart,pt1xEnd,pt1yEnd,pt2xStart,pt2yStart,pt2xEnd,pt2yEnd,stepCount) 模拟缩放手势
UserWait(sleepTime) 让脚本中断一段时间
DeviceWakeUp() 唤醒屏幕

2)其他API

API

说明

PowerLog(power_log_type,test_case_status) 模拟电池电量信息
WriteLog() 将电池信息写入SD卡
RunCmd() 运行shell命令
DispatchPointer(downtime,eventTime,action,x,yxpressure,size,metastate,xPrecision,yPrecision,device,edgeFilags) 向指定位置发送单个手势
action:0是按下,1是弹起
DispatchKey(downTime,eventTime,action,code,repeat,metaStatue,device,scancode) 发送按键消息
LaunchInstrumentation(test_name,runner_name) 运行一个instrumentation测试用例
DispatchTrackball 模拟发送轨迹球事件
ProfileWait 等待5秒
StartCaptureFramerate() 获取帧率
EndCaptureAppFramerate(input) 结束获取帧率
startCaptureAppFramerate(app) 获取指定应用帧率
EndCaptureAppFramerate(app,input) 结束获取帧率

3.Monkey脚本实例
  • 打开浏览器,输入www.baidu.com,测试10次
#头文件、控制monkey发送消息的参数type=raw eventscount=10speed=1.0#一下为脚本正文start data >>#1.打开浏览器LaunchActivity(com.android.browser,com.android.browser.BrowserActivity)ProfileWait()#2.清空网址Tap(223,146)ProfileWait()DispatchPress(112)ProfileWait()#3.输入网址DispatchString(www.baidu.com)ProfileWait()#4.确认,载入网址DispatchPress(KEYCODE_ENTER)ProfileWait()#5.完成退出浏览器DispatchPress(KEYCODE_HOME)ProfileWait()#6.脚本完成后将.txt文件push到手机中,然后使用命令"adb shell monkey -f path/name.txt --throttle 500 -v -v 1"命令调试运行,其中path指的是文件存放路径,name指的文件名

二、Monkey服务器

1)使用命令”adb shell monkey –port 1080”打开手机端口
2)使用命令”adb forward tcp:1080 tcp:1080”把PC和手机端口进行连接诶
3)使用命令”telnet localhost 1080” 创建通讯

  • #注意事项:
adb shell monkey --port 1080 adb forward tcp:1080 tcp:1080 //需要重新打开一个cmd窗口 telnet localhost 1080 //windows默认没有打开telnet,控制面板--程序和功能--打开或关闭windows功能--telnet相关的都勾选好然后重启电脑
1.monkey服务器命令
  • 命令源码:


\development\cmds\monkey\src\com\android\commands\monkey\MonkeySourceNetwork.java


1)常用API

命令

命令格式

说明

flip flip open、filp closed 打开或关闭键盘
touch touch [down|up|move] [x] [y] 模拟手指按下边界的操作
trackball trackball [dx] [dy] 发送一个轨迹球操作事件
key Key [down|up] [keycode] 发送一个按键事件
sleep sleep [暂停时间] 服务器暂停一点时间
type type [String] 向当前应用发送一个字符串
wake wake 唤醒设备
tap tap [x] [y] 发送一个单击坐标的命令
press press [keycode] 发送一个按键
deferreturn deferrenturn [event] [timepue] [command] 执行一个命令在指定延时之内等待一个event事件

2)查询API

命令

命令格式

说明

listvar listvar 列出可查看的系统变量
getvar getvar [variable name] 获取一个系统变量的值
listviews listviews 列出待测应用里的所有视图的ID
getrootview getrootview 获取待测试应用的最上层控件的ID
getviewswithtext getviewswithtext [text] 返回所有包含指定文本的控件ID
queryview queryview viewed [id] [command]
queryview accessibilityids [id1] [id2] [command]
根据指定ID来查询控件

2.monkey服务器实例
//点击坐标500,500tap 500 500                            //按菜单键 press KEYCODE_MENU        //在输入框输入10086 type 10086                              //列出可查看的系统变量listvar                                     //获取build.product的值getvar build.product

三、Monkey检查内存泄漏

1.分析内存泄漏工具与命令

1)HPROF文件:HPROF可以监控CPU使用率,堆分配统计
2)MAT工具:下载地址(http:www.eclipse.org/mat/)
3)生成HPROF文件命令:”adb shell am dumpheap <进程名> <保存路径>”
4)查看应用内存命令:”adb shell dumpsys meminfo <进程名>”
5)转换为MAT可读文件指令:”hprof-conv <原HPROF文件路径> <转换后的HPROF文件路径>”

2.基本操作步骤

1)运行Monkey或者固定自动化用例
2)监控内存值,如果出现过大等递增异常则保存HPROF文件
3)对保存的HPROF文件进行转化为MAT可读文件
4)使用MAT打开文件,对多个文件进行对比分析

3.实例
  • Android旋转屏幕产生内存泄漏

1)输入网址”http:www.eclipse.org/mat/”在页面的links下面点击download,然后在新页面中选择适合自己的系统进行下载,下载好后解压即可
2)准备一个.bat后缀名的脚本,用来实时查看内存,脚本代码如下:

set process=com.android.browser             #需要测试的进程名@adb shell dumpsys meminfo %process% | findstr "Pss"        :m@adb shell dumpsys meminfo %process% | findstr "TOTAL"  @ping -n 5 127.1>nul@goto m

3)在cmd窗口中使用monkey命令”adb shell monkey -p com.android.browser –pct-rotation 100 –throttle 2000 -v 20 ”
4)打开前面准备的.bat文件监控应用内存情况
5)monkey跑完后使用命令”adb shell am dumpheap com.android.browser /data/local/tmp/test.hprof”将结果保存
6)将保存好的.hprof文件pull到本地PC上”adb pull /data/local/tmp/test.hprof F:\test”
7)在F:\test路径下shift+鼠标右键打开cmd窗口输入命令”hprof-conv test.hprof test1.hprof”
8)使用下载好的mat.exe打开转换后的test1.hprof文件进行查看分析(数据库中使用命令”Select * from instanceof android.app.Activity来查看对象,对象越多内存泄漏越严重)

更多相关文章

  1. adnroid 学习笔记(一)
  2. 永久破解Tattoo root权限
  3. android sdk 让SDK Manager来自动安装上面下载的文件
  4. Android(安卓)极光推送
  5. eclipse 开发 jni
  6. Project has no default.properties file! Edit the project pro
  7. Android(安卓)Studio升级提示 Connection failed. Please check
  8. Android(安卓)sdcard 操作
  9. Activity与Service是否处于同一进程? Service 的两大功能是什么?

随机推荐

  1. Android adb不是内部或外部命令
  2. android从raw里面读取txt文件
  3. android直接找一个文件,部分编译等实用
  4. 详解Android中Intent对象与Intent Filter
  5. 通过浏览器直接打开Android应用程序
  6. android颜色设置
  7. Android辅助功能服务AccessibilityServic
  8. Android中Activity切换时共享视图元素的
  9. Android ALSA音频系统架构分析(1)----从Loo
  10. android 虚拟sd卡