测试之monkey

简述:

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

测试之monkey_第1张图片
执行结果

d、查看monkey执行之shell脚本(Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/system/bin/monkey 这样就可以通过在shell窗口中执行:adb shell monkey {+命令参数}来进行Monkey测试了。)

cd:/system/bin/

ls

测试之monkey_第2张图片
执行结果

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 下载:

测试之monkey_第3张图片
xcode9.2版本

b、brew 安装 Carthage,用于iOS下载工程所依赖第三方库:

brew install  carthage

c、Fastmonkey之Xcode(XCTestWD)工程配置过程

首先下载工程依赖包:

carthage update

测试之monkey_第4张图片
更新工程依赖包

然后如下配置:

配置值删除:

测试之monkey_第5张图片
清空XCTestWD的Objective-C Bridging Header选项中的值

证书配置:

测试之monkey_第6张图片
格式:com.xxx.xxx
测试之monkey_第7张图片
appid与上图一致

代码配置:

测试之monkey_第8张图片
XCTextWDRunner配置
测试之monkey_第9张图片
XCTestWDMonkey配置
测试之monkey_第10张图片
Monkey配置

2、Fastmonkey执行

首先选择:XCTestWDUITests -> 真机,然后:command +“u”,Fastmonkey测试开始。

测试之monkey_第11张图片
操作示意

另附:其他异常处理结果


小白一只,不足之处欢迎指正!期待Monkey爱好者一起学习进步~

你可能感兴趣的:(测试之monkey)