4.2. Money
介绍
顾名思义,
Monkey
就是猴子,
Monkey
测试,就像一只猴子, 在电脑面前,乱敲键盘在测试。 猴子什么
都不懂, 只知道乱敲
通过
Monkey
程序模拟用户触摸屏幕、滑动
Trackball
、 按键等操作来对设备上的程序进行压力测试,检测程
序多久的时间会发生异常
4.3. Monkey
用来做什么
Monkey
主要用于
Android
的稳定性测试,自动的一个压力测试小工具, 主要目的就是为了测试
app
是否会
Crash
(崩溃)
.
4.4. Monkey
程序介绍
(
1
)
Monkey
程序由
Android
系统自带,使用
Java
语言写成,在
Android
文件系统中的存放路径是:
/system/framework/monkey.jar
;
(
2
)
Monkey.jar
程序是由一个名为
“monkey”
的
Shell
脚本来启动执行,
shell
脚本在
Android
文件系统
中 的存放路径是:
/system/bin/monkey
;
(
3
)
Monkey
命令启动方式:
a
)可以通过
PC
机
CMD
窗口中执行
: adb shell monkey
{
+
命令参数}来进行
Monkey
测试
b
)在
PC
上
adb shell
进入
Android
系统,通过执行
monkey {+
命令参数
}
来进行
Monkey
测试
c )
在
Android
机或者模拟器上直接执行
monkey
命令,可以在
Android
机上安装
Android
终端模拟器
4.5
:
Monkey
命令 基本参数介绍
4.5.1
:使用
monkey
测试手机所有程序
adb shell monkey 100
执行
monkey
测试
100
次 针对
rom
测试或者
![](https://i-blog.csdnimg.cn/blog_migrate/3b52a0ad13a219e0d93349da88e7c7fe.png)
4.5.2:-p <允许的包名列表>
adb shell monkey -p 包名 100
4.5.3:显示日志详细程度
用亍指定反馈信息级别(信息级别就是日志的详细程度),总共分
3
个级别,分别对应的参数如下 表所示:
Level 0
:
adb shell monkey -p
包名
-v 30 //
缺省值,仅提供启动提示、测试完成和最终结果等
少量信息
![](https://i-blog.csdnimg.cn/blog_migrate/5ca406f5bb8709bab5097360effa612f.png)
Level 1
:
adb shell monkey -p
包名
-v -v 30 //
提供较为详细的日志,包括每个发
送到
Activity
的事件信息
![](https://i-blog.csdnimg.cn/blog_migrate/7dbda1616a8b4f8b4aafb7205d410a9d.png)
Level 2
:
adb shell monkey -p
包名
-v -v -v 30 //
最详细的日志,包括了测试中选中
/
未选中的
Activity
信息
![](https://i-blog.csdnimg.cn/blog_migrate/b305601c6bb5632aff4f2eae7e1a03c3.png)
4.5.4
:将
log
信息写到本地
adb shell monkey 100 >
路径
![](https://i-blog.csdnimg.cn/blog_migrate/bbee226583e56c990090dab6754e4a03.png)
-s 随机数种子
用亍指定伪随机数生成器的 seed 值,如果 seed 相同,则两次 Monkey 测试所产生的事件序列也相同的。 示
例:
monkey 测试 1 : adb shell monkey –s 10 100
monkey 测试 2 : adb shell monkey –s 10 100
4.5.6: --throttle <毫秒>
4.5.7
:
--pct-touch
触摸事件
--pct-motion
调整触摸事件的百分比。(触摸事件是指在屏幕中的一个
down-up
事件,即在屏幕某处按下并抬起的操作)
–pct-touch
:触摸事件。即在某一位置的
Down-Up
(手指的放下和抬起)事件。
Down
(
ACTION_DOWN
)和
Up
(
ACTION_UP
)的坐标临近,但并非相同。
如:
adb shell monkey --pct-touch 67 -v 10
表示执行
10
个伪随机用户事件流,并调整其中触摸事件的百分比为
67%
。
注:此参数设置要适应当前被测应用程序的操作,比如一个应用
80%
的操作都是触摸,那就可以将此参数的百
分比设置成相应较高的百分比。
![](https://i-blog.csdnimg.cn/blog_migrate/5591d998a670d56130ce0a77c86a3812.png)
--pct-motion
调整手势事件
motion
事件百分比。(
motion
事件是由屏幕上某处一个
down
事件、一系列伪随机的移动事件和
一个
up
事件组成)
–pct-motion
:动作事件。以
Down
(
ACTION_DOWN
)开始,
Up
(
ACTION_UP
)结尾,中间至少有一次
Move
(
ACTION_MOVE
)。
如:
adb shell monkey --pct-motion 67 -v 10
表示执行
10
个伪随机用户事件流,并调整其中动作事件的百分比为
67%
。
注:这里的移动是直线滑动
![](https://i-blog.csdnimg.cn/blog_migrate/7cfd01790cd8dc5feb52e3dd4ccba22b.png)
4.5.8: --ignore-crashes
作用:通常,应用发生崩溃或异常时
Monkey
会停止运行。如果设置此项,
Monkey
将继续发送事件给系统,直
到事件计数完成。
正常操作,不忽略异常
![](https://i-blog.csdnimg.cn/blog_migrate/b034c0675a546c5a92224a17d7ca4c3d.png)
4.5.9:--ignore-timeouts(ANR)
作用:通常,应用程序发生任何超时错误(如
“Application Not responding”
对话框)
Monkey
将停止运
行,设置此项,
Monkey
将继续发送事件给系统,直到事件计数完成。
adb shell monkey --ignore-timeouts –v 10
同上
4.5.6
:
Monkey
实例
用
monkey
命令 对登录
apk
进行 性能测试
![](https://i-blog.csdnimg.cn/blog_migrate/651d0d4d1148e83ce29c3eb436d798d4.png)
补充:--pct-touch 50:指定具体的某个事务的占比
adb shell monkey -p com.example.login --ignore-crashes --ignore-timeouts --
throttle 100 --pct-touch 50 --pct-motion 50 -v -v 1000 >c:\log
4.5.7
:
Monkey
异常分析
般我们可以一次发送
5
万次随机事件的请求,每个请求之间的间隔为
150
毫秒,测试大约会进行
40min
,完成以
后就可以查看日志。
日志中可能的错误:
1.
程序奔溃,
crash
(
ctrl+f
搜索)
2.
程序无响应,
ApplicationNo Response
(
ctrl+f
搜索
‘ANR ’
,加空格是为了屏蔽掉一些无效信息
)
3.
其他问题
:
在日志中搜索
”Exception”
。
Monkey
执行中断, 在
log
最后也能看到当前执行次数
五:手机兼容性测试
Android App
兼容性测试,是一个比较重要的
App
评价内容,
说到测试阶段,兼容性测试主要是对
App
在各类机型上的兼容、适配等情况进行测试。搞清楚这一阶段的测试
重点后,因此,
Android App
在进行兼容性测试前,一定要做好其前序测试内容,否则兼容性测试效果将会较
差。
5.1.
机型配置问题
Android
兼容测试一定要做到宽范围覆盖,如果做不到这个,那么就违背了兼容性测试的目标
——
测试
App
在各
类机型、系统上的运行是否兼容、适配。
因此,兼容性测试必须要在各个机型、系统上对
App
进行运行、测试,查看相关
UI
是否适配、功能是否正常。
所以,必须要为兼容性测试配备尽可能多的机型。这是不是意味着,你的公司要去购置各类机型设备?当然不
是。对于一般的公司或者开发者,这将会是一大笔开销,为了节约资金而造成进行覆盖率较低的话,则失去了
兼容性测试的意义。另外,这也是没必要的,因为往往你就一个或两三个
App
,为了这少量
App
测试,而去购置
如此大量的设备,无疑是一种资源浪费。除此,还有一个原因,将在兼容性测试如何展开里去说。除此,机型
量的多少也是一个权衡的过程,目前,通用的兼容性测试一般覆盖
Top100-300
的机型,对于实在是小量机型
或者老旧机型,用户量非常小,在一定程度上,是否需要覆盖则需要权衡,总的来说,
Top
排名的手机基本足
够。
5.2.
兼容性如何展开?
这是一个经验性的过程,可以去借鉴大型互联网公司的成熟
App
的测试方法。目前,无论是国际知名
App
,还是
国内知名
App
,谷歌、
Facebook
,
BAT
等,他们都有大量的
App
对外推出,对于
App
兼容性要求非常高,因
此,他们的做法是非常值得借鉴的。这些公司的兼容性测试,都有一个相同的解决方案,那就是自动化测试框
架与平台的实现。通过浏览上述公司在各种大会公布的内容,或者通过论坛知识分享,都能看到,他们不仅有
自己的测试实验室,拥有大量的手机,除此,还有一整套的自动化测试平台,来完成兼容性测试。
5.3.
有哪些好用的
App
云测试平台?
目前对移动
App
的测试主要指的是下面几部分:
兼容性测试
——App
对不同手机、操作系统版本的兼容性测试,包括安装、启动、卸载等。
功能测试
——
遍历应用的每一个角落,查看应用的功能、逻辑是否正常,完整。
性能测试
——
应用的性能怎样,如启动时间、反应时间、
CPU
占用率,内存占用率等。
稳定性测试
——
在一定时间内对
App
进行持续地测试,测试
App
运行的稳定性。
网络场景测试
——
测试不同网络环境中
App
的运行状况,如
2G&3G
,弱网络等
以下是国内几家主要的云测试平台:
Testin
:
Testin
云测
|
全球领先的
App
及手游测试平台
Testin
是国内较早涉足云测试领域的公司之一。
Testin
在云端部署了
300
多款
1000
多部测试终端,终端种类
及数量都比较全面。支持
Android
与
iOS
系统。但目前仅少部分服务为免费,绝大多数服务为收费项目,故而
使用成本较高,具体收费情况请查看官网的介绍。
腾讯优测:优测网
-
让测试更简单
腾讯优测是腾讯旗下的云测试服务平台,拥有超过
1000
款测试终端,机型数量庞大。但仅支持
Android
,暂不
支持
iOS
系统。提供兼容性测试服务,不提供性能测试、功能测试及稳定性测试服务。另外,腾讯优测还提供
“
云手机
”
服务,开发者可以远程控制测试终端,实时查看
App
安装、运行效果。优测目前的功能为收费(新注
册的用户可获得官方赠送的礼包),每天限制提交
2
次测试。
移动测试学习端口:
https://wetest.qq.com/guide/learn-source
贯众云测试:贯众云测试
贯众云测试是中国移动旗下的云测试服务平台,目前拥有超过
100
款市面主流终端,支持
Android
及
iOS
系
统。提供兼容性测试、功能测试、性能测试,稳定性测试(
12
小时)及网络场景测试服务(
2G&3G&4G
)。支
持
Appium
脚本。缺点是终端数量较少,优点是功能较为全面,且基本功能都是免费,使用成本还是蛮低的。
百度
MTC
:百度移动云测试中心
百度
MTC
是百度开放平台旗下的移动云测试中心。提供超过
500
款热门机型,目前只支持
Android
系统,暂不
支持
iOS
系统。提供的测试服务种类有兼容性测试、性能测试、功能测试。并且提供了脚本录制工具,类似
Testin
。但脚本录制工具更新速度较慢。百度
MTC
的服务目前为收费服务,具体收费情况请查看官网的介绍。
阿里
MQC
:
MQC
阿里移动质量中心
阿里
MQC
是阿里巴巴旗下的移动测试平台。提供上百款测试终端,支持
Android
及
iOS
系统。提供兼容性测
试、功能测试、性能测试以及稳定性测试(
1
小时)。测试脚本需使用
Robotium
或
Appium
测试框架编写,难
度较高。
MQC
也提供了远程的真机调试,功能和腾讯优测类似,看来腾讯和阿里还真是一对儿冤家啊。
![](https://i-blog.csdnimg.cn/blog_migrate/ee84431daabb552912019369c6dcc3fe.png)
六:真机测试