07. APP的Monkey压力测试

一、基础知识

慕课网视频:http://www.imooc.com/learn/729

1. 为什么要开展压力测试?
  • 提高产品的稳定性
  • 提高产品的留存率
2. 什么时候开展压力测试?
  • 首轮功能测试通过后
  • 下班后的夜间进行
3. 什么是Monkey?Monkey在哪?

monkey是发送伪随机用户事件的工具,就在我们的手机系统里面,但是没有显示的icon。

4. 我们用什么来操作monkey呢?
07. APP的Monkey压力测试_第1张图片
Paste_Image.png
5. 什么是MonkeyScript?

MonkeyScript是一组可以被monkey识别的命令集合
MonkeyScript可以完成重复固定的操作

6. 什么是MonkeyRunner工具?

MonkeyRunner提供了一系列的API
MonkeyRunner可以完成模拟事件及截图操作

7. Monkey和MonkeyRunner的区别?

Monkey:在adb shell中,生成用户或是系统的伪随机事件
MonkeyRunner:通过api定义特定命令和事件控制设备

8. MonkeyRunner都包括哪些APIs呢?
  • MonkeyRunner:用来连接设备或模拟器
  • MonkeyDevice:提供安装卸载应用,发送模拟事件
  • MonkeyImage:完成图像保存,及对比操作
9. MonkeyRunner都能测试哪些类型?
  • 多设备控制
  • 功能测试
  • 回归测试
10. 压力测试的结果:

crash:崩溃
ANR:application not responding

二、手机压力测试步骤:

step1:

在手机开发者选项中,将usb调试选上。

step2:

确认手机和电脑已经成功连接
cmd中输入:adb devices,如果连接成功会显示手机的序列号,如下

07. APP的Monkey压力测试_第2张图片
Paste_Image.png

step3:

安装测试的app
adb install packagename.apk(注意:需要进入apk所在的目录执行命令)

step4:

发送压力指令
adb shell monkey 1000
这里的数字1000是指monkey随机发出的1000个指令

step5:

获取app的包名
adb logcat | grep START (注意:这样输入会说grep不是内部命令,看下面的解释)

grep 是linux下的命令,windows系统可以使用 findstr 替代 grep。或者执行adb shell进入到手机,在手机系统下,执行logcat | grep START。android系统是linux的,所以支持grep。

输入上面的命令后,如果你想知道哪个app的包名是什么,你就打开哪个app,我打开了魅族手机原带的计算器,如图,这样我们就知道了计算器的包名。

07. APP的Monkey压力测试_第3张图片
Paste_Image.png
step6:

给指定的包打压力
adb shell monkey -p package 1000
比如我用魅族手机原带的计算器测试,就输入:adb shell monkey -p com.meizu.flyme.calculator 1000,这样就对计算器进行了压力测试。下图为测试的结果,注意标红的部分,翻译过来就是注入了1000个事件,如果这样显示说明测试没用问题,如果那个数小于你原来输入的值,说明有问题。

07. APP的Monkey压力测试_第4张图片
Paste_Image.png

三、Monkey高级参数的应用

1.throttle参数:指定事件之间的间隔

adb shell monkey --throttle <延时时间>
比如:adb shell -p com.meizu.flyme.calculator --throttle 1000 100
这是给魅族自带的计算器执行100个事件,每1秒一次

2. seed参数:指定随机生成数的seed值

adb shell monkey -s event-count
比如:adb shell monkey -p com.meizu.flyme.calculator -s 100 50

为什么需要seed值,比如我们用monkey发现了异常,需要开发人员处理,这时我们需要复现异常。由于monkey的命令是随机的所以很难复现。seed值相当于一个标示,相同的seed值和相同的事件次数,monkey会执行相同的序列操作,就会复现问题。

3.触摸事件参数:设定触摸事件的百分比

adb shell monkey --pct-touch

解释:monkey是随机事件,现在我们只想让monkey来操作点击事件,其他的什么滑动事件都不处理,怎么办?这里就用我们的触摸事件参数。

Paste_Image.png
4.动作事件:设定动作事件的百分比

** adb shell monkey --pct-motion**

解释:比如我们只想测试三种事件,那么我们要让三种事件的百分比加起来为100,如果不等于100,比如等于80,那么剩余的20monkey还是随机测试。
下图就是touch事件50,motion事件30,这是占比,20%的时间是随机的。


Paste_Image.png

还有一些命令,在课程的4-5节,需要自己仔细看下。

5.崩溃事件:忽略崩溃和异常

正常情况下,如果monkey发现崩溃和异常,就会停止继续操作。为了能让monkey继续执行,我们就引入这个参数。
adb shell monkey --ignore-crashes

6.超时事件(ANR):忽略超时事件

adb shell monkey --ignore-timeouts

Paste_Image.png

四、CRASH结果取析:

  • step1:安装可以一起crash的app
  • step2:执行压力命令
  • step3:析取crash的Execption信息
07. APP的Monkey压力测试_第5张图片
Paste_Image.png

上图为ANR的异常信息,同样crash也会显示CRASH的一异常信息。

五、Monkey script:

执行monkey脚本的命令,可以执行我们想要的有序命令
adb shell monkey -f

monkey script有许多命令,这里不详细说了,可以看课程的4-9。

你可能感兴趣的:(07. APP的Monkey压力测试)