07. APP的Monkey压力测试

一、基础知识

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

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

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

4. 我们用什么来操作monkey呢?
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,如果连接成功会显示手机的序列号,如下

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,我打开了魅族手机原带的计算器,如图,这样我们就知道了计算器的包名。

Paste_Image.png
step6:

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

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<seed> 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<percent>

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

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

** adb shell monkey --pct-motion<percent>**

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


Paste_Image.png

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

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

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

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

adb shell monkey --ignore-timeouts <event-count>

Paste_Image.png

四、CRASH结果取析:

  • step1:安装可以一起crash的app
  • step2:执行压力命令
  • step3:析取crash的Execption信息
Paste_Image.png

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

五、Monkey script:

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 移动APP测试讲义 本篇讲义主要阐述APP的手工测试要点,并概括介绍主流的APP测试框架。 1. APP测试的准备...
    厲铆兄阅读 9,720评论 6 109
  • 手动测试与自动化测试 为了说明这两个概念,举个例子:此时我们要进行一个修改昵称的操作,我们需要进行手动测试需走一遍...
    王凯岩_KY2阅读 500评论 0 0
  • Monkey是Android平台自动化测试的一种手段,可以在模拟器里或实际设备中运行,它向系统发送伪随机的用户事件...
    alston123阅读 5,931评论 1 5
  • Monkey概念介绍 Monkey是猴子的意思。Monkey测试,就像一只猴子,在电脑面前,乱敲键盘在测试。猴子什...
    正规程序员阅读 3,606评论 0 50
  • 这几天一直微信群一直被一件事情刷屏者,看后也是让人非常震惊!一个31岁的妈妈,在自己生日的前一周,带着一个两岁的男...
    有趣的谷粒阅读 267评论 0 1