简述:
Monkey起源:
Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar。Monkey配套执行shell脚本存放路径是:/system/bin/monkey。
Monkey作用:
Monkey用于进行压力测试(软件稳定性测试,向系统发送伪随机用户事件流实现压力测试。解放双手,告别点点点。)。 开发人员结合monkey 打印的日志和系统打印的日志,修改测试中出现的异常问题。
Monke优缺点:
优点:提升应用稳定性,能测出一些不可知的情况还有手动点点点无法测出的问题。
缺点:一般用来测试UI问题,局限性很明显。
一、Android之monkey
操作步骤:
1、安装adb(monkey测试使用的是adb命令,因此只需要配置即可);
2、安装JDK;
3、adb安装及环境配置(adb命令工具为使用方便这里默认选择放在c盘):
使用adb命令前提:安卓手机必须设置为开发者USB调试模式。
我的电脑->属性->环境变量->path->编辑->新建 填入adb路径(C:\Users\haoku\platform-adb-tools)->保存
4、检测是否有monkey环境:
a、进入设备
adb shell
b、进入指定目录:
cd:/system/framework/
c、查看monkey.jar:
ls
d、查看monkey执行之shell脚本(Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/system/bin/monkey 这样就可以通过在shell窗口中执行:adb shell monkey {+命令参数}来进行Monkey测试了。)
cd:/system/bin/
ls
5、测试安装包
a、获取安卓包名:
首先手机端运行待测项目,然后终端命令:
adb logcat >C:\Users\haoku\Desktop\testOne.txt
再“Displayed”关键字搜索testOne.txt即可找到包名
b、手机设置
为保证monkey测试正常进行,需设置屏幕休眠时间间隔越长越好(可调永不休眠最佳,没有此项的应选最大时间值)。
c、运行monkey
C:\Users\haoku>adb shell monkey -p com.xxxxx.xxxxxx -v 3000 >C:\Users\haoku\Desktop\test.txt
d、测试停止后,查看导出的monkey日志,发现问题。
在log(test.txt)的最开始都会显示Monkey执行的seed值、执行次数和测试的包名。
首先查看log日志,搜索“ANR ”看是否出现了ANR(异常或无响应问题),
然后在日志中搜索“Exception”崩溃异常,快速定位到关键事件信息,
最后查看Monkey里面出错前的一些事件动作,并手动执行该动作,找出重现步骤,给开发。
6、monkey语法
monkey -p com.xxxxx.xxxxxx -s 23 --throttle2000 --ignore-crashes --ignore-timeouts -v -v -v 100000>C:\Users\haoku\Desktop\test.txt 2>&1 &
详解:
a、 -p后面接着的对应的包名,如果是整机测试,就不需要 -p package_name
b、 -s后面是对应的种子数,好像就是操作步骤,根据她们测试的经验,一般种子数在23,同步她们测试的结果,一般种子的个数固定为23,和她们选择的操作步骤就是同步的。
c、 --throttle <毫秒> 指定用户操作(即事件)间的时延,单位是毫秒;如果不指定这个参数,monkey会尽可能快的生成和发送消息。
d、 --ignore-crashes --ignore-timeouts
这里是在monkey测试的过程中遇到carash或者timeout的情况时忽略掉,一般不设置时,出现carash或者timeout时,Monkey测试会终止。这里是防止Monkey测试终止。
e、 -v 指的是Monkey测试时打印log级别。
-v:最简单(默认),除了启动、测试完成和最终结果外只提供较少的信息
-v -v :提供了较为详细的测试信息,如逐个发送到Activity的事件信息
-v -v -v :提供了更多的设置信息,如测试中选中或未选中的Activity信息
常用:-v -v -v,一般会保存到指定文件中供开发人员查找bug原因时使用
f、 100000 这里是指点击的次数,根据她们测试的经验,对于单个应用程序这个次数设置在100000次就可以了;如果是整机,一般设置在500000次。
g、 2>&1 固定的写法,这个也很重要,代表的意思是中间忽略的东东的日志一并输入到指定的文件中。
h、 最后单独的一个"&" 是一旦Monkey测试开始了,之后可以拔掉数据线,不会影响Monkey测试。
l、 测试所有模块 monkey -s 23 --ignore-crashes --ignore-timeouts -v-v -v 100000> C:\Users\haoku\Desktop\test.txt 2>&1 &
另附:
--ignore-security-exception 作用:通常,当程序发生许可错误(例如启动一些需要许可的Activity)导致的异常时,Monkey将停止运行。设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
--pct -touch 作用:调整触摸事件的百分比.(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作)比如一个应用80%的操作都是触摸,那就可以将此参数的百分比设置成相应较高的百分比。如触摸返回、触摸签到等
--pct -motion 作用:调整motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成)也就是直线滑动事件如从左到有滑动解锁
--pct -trackball 作用:调整滚动球事件百分比。(滚动球事件由一个或多个随机的移动事件组成,有时会伴随着点击事件)如不规则滑动解锁
--pct-nav 作用:导航,现在手机基本没有导航了
--pct-syskeys 作用:按键消息比例,主页、后退、音量增减
--pct-anyevent 作用:其他不常用的按键比例的设置,不常用
--hprof 作用:monkey测试完成后生成内存快照,data/misc路径下生成,不常用,比较占空间
--ignore-security-exceptions 作用:忽略权限问题的
--kill-process-after-error 作用:当错误发生时杀进程
--monitor-native-crashes 作用:监视崩溃时的本地代码
adb shell kill [刚才查到的进程号] 作用:杀死monkey进程
二、iOS之Fastmonkey
简述:
Fastmonkey起源:
基于 appium 或 macaca 的开源Monkey测试工具在使用过程中出现诸多问题,比如:配置过于复制,上手慢,执行速度达不到测试要求、有的还需要进行App源码插庄,直到Faskmonkey的出现,它集众家之长,已经基本满足iOS压力测试。
Fastmonkey优点:
无需插桩、高效率、每秒4-5个action、轻量极简。
1、Fastmonkey配置
a、Fastmonkey 下载:
b、brew 安装 Carthage,用于iOS下载工程所依赖第三方库:
brew install carthage
c、Fastmonkey之Xcode(XCTestWD)工程配置过程
首先下载工程依赖包:
carthage update
然后如下配置:
配置值删除:
证书配置:
代码配置:
2、Fastmonkey执行
首先选择:XCTestWDUITests -> 真机,然后:command +“u”,Fastmonkey测试开始。
另附:其他异常处理结果
小白一只,不足之处欢迎指正!期待Monkey爱好者一起学习进步~