Mac走moneky
别人分享:
1. Monkey工具介绍:
- Monkey是Google提供的一个命令行工具,可运行在模拟器或实际设备中。可用于模拟用户的按键输入、触摸屏输入、手势输入等,以实现对应用程序的压力测试,看设备多久会出现异常,并观察系统的稳定性和容错性能。
2. Monkey测试环境准备:
- 安装JDK,并配置环境变量
- open -e .bash_profile
- 保存:export JAVA_HOME=/library/java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
- 安装Android SDK,并配置环境变量
- export PATH=${PATH}:/Users/yangdan/Documents/yangdan/android-sdk-macosx/platform-tools
- export PATH=${PATH}:/Users/yangdan/Documents/yangdan/android-sdk-macosx/tools
- 更新刚刚配置的环境变量:source .bash_profile
3. Monkey详细介绍
- Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路 径是:/system/framework/monkey.jar;
- Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/system/bin/monkey;
- Monkey 命令启动方式:
- 直接PC启动: adb shell monkey {+命令参数}来进行Monkey测试
- shell端启动:adb shell 进入Android系统,通过执行monkey{+命令参数}来进行Monkey测试
4. Monkey压力测试参数
- -V
用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下表所示:
Level 0: adb shell monkey -p com.yuantiku.tutor -v 100
Level 1: adb shell monkey -p com.yuantiku.tutor -v -v 100
Level 2: adb shell monkey -p com.yuantiku.tutor -v -v -v 100
- -S
用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。
示例:
monkey测试1:adb shell monkey -p com.taobao.com –s 10 100
monkey测试2:adb shell monkey -p com.aobao.com –s 10 100
- --throttle
用于指定用户操作(即事件)间的时延,单位是毫秒;如果不指定这个参数,monkey会尽可能快的生成和发送消息。
示例:adb shell monkey -p com.yuantiku.tutor --throttle 3000 100
停止monkey进程:
获取monkey进程:adb shell ps |grep monkey
杀死进程:adb shell kill id
- -P
用此参数指定一个或多个包。指定包之后,monkey将只允许系统启动指定的app。如果不指定包,monkey将允许系统启动设备中的所有app。
指定一个包:adb shell monkey -p com.yuanntiku.tutor 100
5. Monkey的压力测试
apk包名查看:
- 手机中安装apk包名查看器
- 源码下的AndroidManifest.xml文件查看
- aapt命令查看
- adb logcat抓取当前Android机运行的app的包名( I/ActivityManager(数字): Displayed 包名/类名: +ms )
6. Monkey的结果与日志分析
Monkey测试结果分析:
- 看Monkey的日志(注意第一个switch以及异常信息等
- 程序无响应的问题:在日志中搜索“ANR”
- 崩溃问题:在日志中搜索“Exception”或“CRASH”
- 查看Monkey里面出错前的一些事件动作,并手动执行该动作
- 若以上两个步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样
如果Monkey测试顺利执行完成,在log的最后,会打印出当前执行事件的次数和所花费的时间;// Monkey finished代表执行完成。
Monkey执行中断,在log的最后也能查看到当前已执行的次数。
7. Monkey script 的脚本制作
Monkey script是按照一定的语法规则编写有序的用户事件流并适用于monkey命令工具的脚本。
脚本制作完毕后放入手机的sdcard目录下
adb push monkey.script /sdcard/
运行命令 adb shell monkey –f/sdcard/”脚本”运行次数。
结合monkey的–v和--hprof参数,输出日志和性能报告。
例:
adb shell monkey --hprof -f/sdcard/monkey.script -v 1
8. monkey script的脚本命令
- start data>>
将控制monkey的一些参数设置和具体的monkey命令分隔开来
例如:
#控制monkey发送消息的一些参数
count=10
speed=1.0
start data>>
#monkey命令
- LaunchAcitivity(pkg_name, cl_name)
命令用于启动任意应用的一个活动(界面)
pkg_name, 要启动的应用包名
cl_name, 要打开的活动的类名
- Tap(x,y)
x: 横坐标
y:纵坐标
9. monkey script 的脚本制作模板
count = 1 //下面这个count选项,monkey并没有用到,可以忽略它
speed = 1.0 //speed 选项是用来调整两次按键的发送濒率的
start data >> // “start data >>”是有大小写敏感的,而且单词间的间隔只用有一个空格!
LaunchActivity(com.yuantiku.tutor,com.yuanfudao.tutor.activity.HomeActivity) //# Activity值可以通过aapt命令查看,
Tap(123,4343)
UserWait(5000) //停顿时间
DispatchPress (KEYCODE_BACK) //文字输入 monkey只识别英文和数字输入
10. monkey script的脚本取坐标点
- 取坐标点,选择手机中的开发人员选项,打开“显示指针位置”
- Monkeyrunner录取坐标
-
1. 安装卸载apk
① 安装apk:下载apk到电脑 ,adb install -r 拖动apk
adb install /Users/yangdan/Downloads/tutor-6.18.0.apk
②卸载apk:adb unstall 包名
adb uninstall com.yuantiku.tutor
2. 查看apk的包名:
adb shell pm list package -3
3. 知道手机中的包名,还想知道其他的信息,使用
adb shell dumpsys package com.yuantiku.tutor
4. 输出日志到电脑:
adb shell monkey -p com.yuantiku.tutor -v 100 >/Users/yangdan/Documents/yangdan/monkey.txt