目录:导读

  • 一、Monkey简介
  • 二、Monkey测试基本操作
  • 三、Monkey测试日志分析

一、Monkey简介

Monkey概念:
Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法

该工具用于进行压力测试。然后开发人员结合monkey 打印的日志和系统打印的日志,分析测试中的问题

Monkey测试特点:
Monkey 测试,所有的事件都是随机产生的,不带任何人的主观性
1.测试的对象仅为应用程序包,有一定的局限性
2.Monky测试使用的事件数据流是随机的,不能进行自定义
3.可对MonkeyTest的对象,事件数量,类型,频率等进行设置

Monkey存放路径:
Monkey程序是Android系统自带的,由Java语言写成,在Android文件系统中的存放路径是: /system/framework/monkey.jar

Monkey大致操作流程:
通过名为“monkey”的Shell脚本去启动Monkey.jar程序(shell脚本在Android文件系统中 的存放路径是:/system/bin/monkey),在你指定的APP应用上模拟用户点击,滑动,输入等操作以极快的速度来对设备程序进行压力测试,检测程序是否会发生异常,然后通过日志进行排错

Monkey测试目:
测试app 是否会是否会Crash(崩溃)

Monkey操作命令格式:
adb shell monkey {+命令参数}

二、Monkey测试基本操作

Monkey命令参数:

1.参数: -p
参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。指定包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP

* 指定一个包:

 adb shell monkey -p com.htc.Weather 100

说明:com.htc.Weather为包名,100是事件计数(即让Monkey程序模拟100次随机用户事件)
* 指定多个包:

adb shell monkey -p com.htc.Weather –p com.htc.pdfreader -p com.htc.photo.widgets 100

* 不指定包:

adb shell monkey 100

说明:Monkey随机启动APP并发送100个随机事件

2.参数: -v
用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下表所示:

日志级别 Level 0
例如:

adb shell monkey -p com.htc.Weather –v 100

说明:缺省值,仅提供启动提示、测试完成和最终结果等少量信息

日志级别 Level 1
例如:

adb shell monkey -p com.htc.Weather –v -v 100

说明:提供较为详细的日志,包括每个发送到Activity的事件信息

日志级别 Level 2
例如 :

adb shell monkey -p com.htc.Weather –v -v –v 100

说明:最详细的日志,包括了测试中选中/未选中的Activity信息

3.参数: –throttle <毫秒>
用于指定用户操作(即事件)间的时延,单位是毫秒
例如 :

adb shell monkey -p com.htc.Weather --throttle 3000 100

4.参数: -s
用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的
示例:
Monkey测试1:

adb shell monkey -p com.htc.Weather –s 10 100

Monkey测试2:

adb shell monkey -p com.htc.Weather –s 10 100

两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽 然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的

5.参数: –ignore-crashes
用于指定当应用程序崩溃时(Force & Close错误),Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成
例如:

adb shell monkey -p com.htc.Weather --ignore-crashes 1000

测试过程中即使Weather程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止

6.参数: –ignore-timeouts
用于指定当应用程序发生ANR(Application No Responding)错误时,Monkey是否停止运行。如果使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成

7.参数: –ignore-security-exceptions
用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。如果使用此参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成

8.–pct-事件类别
11个事件百分比控制(有的是9种事件,没有–pct-pinchzoom,–pct-rotation事件)由安卓SDK决定

–pct-touch {+百分比} 0:
触摸,触摸事件泛指发生在某一位置的一个down-up事件,点击

–pct-motion {+百分比}1:
动作,动作事件泛指从某一位置接下(即down事件)后经过一系列伪随机事件后弹出(即up事件)

–pct-pinchzoom {+百分比}2:
二指缩放,智能机上的放大缩小手势操作事件

–pct-trackball {+百分比}3:
轨迹,轨迹事件包括一系列的随机移动,以及偶尔跟随在移动后面的点击事件

–pct-rotation {+百分比}4:
屏幕旋转,横屏竖屏事件

–pct-nav {+百分比}5:
基本导航,基本导航事件主要来自方向输入设备的上、下、左、右事件

–pct-majornav {+百分比}6:
主要导航,主要导航事件通常指引发图形界面的一些动作,如键盘中间按键、返回按键、菜单按键等

–pct-syskeys {+百分比}7:
系统按键,系统按键事件通常指仅供系统使用的保留按键,如HOME键、BACK键、拨号键、挂断键、音量键等

–pct-appswitch {+百分比}8:
应用启动,应用启动事件(activity launches)即打开应用,通过调用startActivity()方法最大限度地开启该package下的所有应用

–pct-flip {+百分比}9:
翻转,键盘轻弹百分比,如点击输入框,键盘弹起,点击输入框以外区域,键盘收回

–pct-anyevent {+百分比}10:
其他类型,其他类型事件指上文中未涉及的所有其他事件,如keypress、不常用的button等

Monkey命令实战

adb shell monkey -p com.htc.Weather -s 3 --throttle 1000 --pct-anyevent 50 --pct-syskeys 50 --ignore-crashes --ignore-timeouts --ignore-security-exceptions1000

备注:–pct指定的事件加起来不能超过100%

Monkey测试中,终止运行的方式:
方式一:
1.新打开一个dos命令窗口
2.执行: adb shell
3. 执行:ps | grep monkey
4.返回来的第一个数字,即是monkey的进程号然后:kill pid 进程号

方式二:
重启手机

三、Monkey测试日志分析

用Monkey做测试,为了方便分析问题,需要把monkey运行过程中产生的日志结果进行分析,查找bug

结果保存在电脑上

adb shell monkey -p 包名 -v 1000 > 路径/monkey.txt

结果保存在手机上
前提条件:手机要root或把结果文件放在有权限存取的路径
1.运行adb shell
2.monkey -p 包名 -v 1000 1>手机路径/info.txt 2>手机路径/error.txt

备注:
1.结果中可以通过 |logcat -v time 添加时间
如下:

monkey -p 包名 -v 1000 |logcat -v time 1>手机路径/info.txt 2>手机路径/error.txt

2.如手机提示read-only file system
mount当前挂载情况

mount -o remount -o rw /system重新挂载需要修改权限的目录

如果测试monkey碰到crash或者anr(程序强制性退出或不响应)现象时,在抓取log的同时需要提供traces.txt
步骤如下:
1.测试版本需要具备root权限
2.进入data/anr目录下面
3.将traces.txt文件拷贝到TF卡中,然后拷贝出来发给软件分析即可
4.adb pull /data/anr/traces.txt c:\ 复制文件到电脑

备注:
1.保留在手机中的测试日志(info.txt、error.txt)也可以通过上述第4步骤保存到电脑
2.adb shell cat /data/anr/traces.txt> d:\traces.txt 复制文件到电脑


手机APP测试(四)相关推荐

  1. 手机APP测试中iOS和Android有何区别?

    目录 前言 一.常识性区别 二.导航方式 三.单条item的操作 四.关于排版 五.实体键 六.动效 前言 今天给大家浅浅的分享一下手机APP测试中iOS和Android有何区别? 一.常识性区别 二 ...

  2. 如何保证APP兼容性覆盖测试和手机APP测试如何进行兼容性测试?(学习笔记)

    1.背景 众所周知,APP兼容性覆盖测试一直以来被认为是一个高成本.耗时低效.耗人力的测试工作,且兼容性测试是一项必须要进行的测试项目,因为有不同的机型.系统平台.分辨率.网络.厂商.数据兼容以及不同 ...

  3. 浅谈手机APP测试(流程)

    小编热衷于收集整理资源,记录踩坑到爬坑的过程.希望能把自己所学,实际工作中使用的技术.学习方法.心得及踩过的一些坑,记录下来.也希望想做软件测试的你一样,通过我的分享可以少走一些弯路,可以形成一套自己 ...

  4. 手机app测试要点(复制文)

    一.简介 移动应用App已经渗透到每个人的生活.娱乐.学习.工作当中,令人激动.兴奋且具有创造性的各种App犹如雨后春笋般交付到用户手中.各类智能终端也在快速发布,而开发者对于全球移动设备的质量和性能 ...

  5. 手机APP测试(一)

    目录:导读 一.手机测试分类 二.常用操作系统 三.业务功能测试 四.安装/卸载测试 五.UI测试 六.交叉事件测试 七.用户体验测试 八.兼容性与渠道包测试 九.云测平台App测试 一.手机测试分类 ...

  6. 手机APP测试几个要点

    移动互联网App测试点包括: 1.安全测试 1)软件权限 -扣费风险:包括发送短信.拨打电话.连接网络等 -隐私泄露风险:包括访问[url=]手机[/url]信息.访问联系人信息等 -新增风险项 2) ...

  7. 手机APP测试都要注意哪些问题?

    APP测试是一个广泛的概念,根据每个APP的应用场景不一样,测试的方向也略微的不同,在测试过程中需要灵活应用自身所知的测试手段. 安装测试 软件在不同操作系统(Android系统和IOS系统)上是否正 ...

  8. 手机APP测试流程规范模板

    一.流程图 二.测试周期 9.25-10.5 1.测试资源 测试任务开始前,检查各项测试资源. 1.1.产品功能需求文档 1)产品原型图 2)产品效果图 3)行为统计分析定义文档 4)测试设备(And ...

  9. 手机软件服务器维护,手机APP测试都测试哪些方面

    小白经常会问如何测试手机APP,下面整理一下APP的测试内容.功能测试.手机应用功能测试是测试移动应用功能(如用户交互)和用户可能进行的交易的过程.移动应用功能测试的主要目的是确保质量.满足预期.降低 ...

最新文章

  1. 皮一皮:钢铁直女?鉴定了,钢的不能再钢!
  2. Memcpy, blockcopy的进一步理解
  3. CSS3中的群组选择器,后代选择器[空格]子元素选择器 >相邻兄弟选择器+兄弟选择器~
  4. HarmonyOS之后台代理定时提醒的功能使用
  5. Codeforces Codeforces Round #319 (Div. 2) A. Multiplication Table 水题
  6. 关于mpvue音乐小程序github仓库设置私有的声明
  7. getElementById()方法取值
  8. Linux 字符设备驱动开发基础(四)—— ioctl() 函数解析
  9. 2.2基本算法之递归和自调用函数_一文学会递归解题
  10. 汇编代码调用main和分配内存
  11. 虎扑入股“造物”App关联公司 后者为模玩、手办平台
  12. final关键字详解
  13. puppet连载15:搭建zabbix服务端、客户端
  14. 如何实现高性能的在线 PDF 预览
  15. python提取pdf表格数据 无边框_Python使用Tabula提取PDF表格数据
  16. 新版谷歌浏览器80.0永久开启Flash
  17. 计算机技术在生物学中的应用题库,2018年第二军医大学基础医学部816计算机在生物医学中的应用之生物化学考研基础五套测试题...
  18. 2019icpc徐州站 H题 Yuuki and a problem(树套树(树状数组套主席树))
  19. 能测试快充真假的软件,苹果iOS 12可自行测试真假快充:山寨充电器无处遁形
  20. java getday_javascript中Date对象的getDay方法使用指南

热门文章

  1. AI绘画进军三次元,有人用它打造赛博女友?(diffusion)
  2. 雕爷:我眼中的O2O成长路径
  3. Dreamweaver网页设计与制作100例——HTML5期末考核大作业——票务网站整套网页
  4. 关于在linux上面配置ADSL拨号代理的注意事项
  5. http://36kr.com/p/5064568.html?ktm_source=feed
  6. Threejs专用天空盒素材,五种天空盒素材免费下载
  7. 10. 建立信息系(IS)选修了1号课程的学生的视图(包括学号、姓名、成绩)
  8. 【计算机毕业设计】27.仓库管理系统源码
  9. 《精彩绝伦的CSS》——选择器(一)简写属性值
  10. ②mysql数据库(增删改查)