什么是Monkeytest?

monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕、滑动Trackball、按键灯操作来对设备上的程序进行压力测试,检测程序发生异常的时间。

monkeytesting,也有人叫做搞怪测试,就是用一些稀奇古怪的操作方式去测试被测试系统,以测试系统的稳定性。用毫无规律的指令或操作使用被测系统,观察系统的稳定性和容错性。

Monkey程序介绍

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

2. Monkey.jar程序是由一个名为“monkey”的shell脚本来启动执行。shell脚本在Android文件系统中的存放路径是:/system/bin/monkey

这样就可以在CMD窗口中执行:adb shell monkey{+命令参数}来进行monkey测试了。

Monkey命令的简单帮助

获取Monkey命令自带的简单帮助,在CMD中执行命令:adb shell monkey -help

Monkey命令参数介绍

查看终端设备中所有的包,在CMD窗口中执行以下命令:

adb shell

cd data/data (这里路径可能根据不同厂商手机,App放置的位置不一样)

ls

1. 参数:-p

参数-p用于约束限制。用此参数指定一个或多个包(package,即App)。

指定包之后,Monkey将只允许系统启动指定的App。如果不指定包,Monkey将允许系统启动设备中的所有App。

指定一个包:adb shell monkey -p com.eavoo.qws 100  【说明:com.eavoo.qws为包名;100是事件计数(即让monkey程序模拟100次随机用户事件】

指定多个包:adb shell monkey -p com.eavoo.qws -p com.eavoo.ble 100

不指定包:adb shell monkey 100  【Monkey随机启动App并发送100个随机事件】

2. 参数:-v

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

日志级别:Level0  【说明:缺省值,仅提供启动提示、测试完成、测试结果等少量信息】

  示例:adb shell monkey -p com.eavoo.qws -v 100)

日志级别:Level1  【说明:提供较为详细的日志,包括每个发送到activity的事件信息】

   示例:adb shell monkey -p com.eavoo.qws -v -v 100

日志级别:Level2   【说明:最详细的日志,包括了测试中选中或未选中的activity信息】

  示例:adb shell monkey -p com.eavoo.qws -v -v -v 100

3. 参数:-s

参数-s用于指定伪随机数生成器的seed值,如果seed相同,则两次monkey测试所产生的时间序列也是相同的。

  示例:

monkey测试1:adb shell monkey -p com.eavoo.qws -s 10 100

monkey测试2:adb shell monkey -p com.eavoo.qws -s 10 100

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

4. 参数:--throttle<毫秒>

用于指定用户操作(即事件)间的延时,单位是毫秒。

  示例:adb shell monkey -p com.eavoo.qws --throttle 3000 100

5. 参数:--ignore-crashes

用于指定当应用程序奔溃时(force&close错误),monkey是否停止运行。

如果使用此参数,即使应用程序奔溃,monkey依然会发送事件,指导事件计数完成。
     示例1:adb shell monkey -p com.eavoo.qws -ingnore-crashes 100

  测试过程中,即使qws程序奔溃,monkey依然会继续发送事件指导事件计数达到100为止。

  示例2:adb shell monkey -p com.eavoo.qws 100

  测试过程中,如果qws程序奔溃,monkey将会停止运行。

6. 参数:--ignore-timeouts

用于指定当应用程序发生ANR(application no responding)错误时,monkey是否停止运行。

如果使用此参数,即使应用程序发生ANR错误,monkey依然会发送事件,直到事件计数完成。

7. 参数:--ingore-security-exceptions

用于指定当应用程序发生许可错误时(如证书许可,网络许可等),monkey是否停止运行。

如果使用此参数,即使应用程序发生许可错误,monkey依然会发送事件,直到事件计数完成。

8. 参数:--kill-process-after-error

用于指定当应用程序发生错误时,是否停止其运行。

如果指定此参数,当应用程序发生错误时,应用程序停止运行并保持在当前状态。(注意:应用程序仅是静止在发生错误时的状态,系统并不会结束该应用程序的进程)

9. 参数:--monitor-native-crashes

用于指定是否监视并报告应用程序发生奔溃的本地代码。

10. 参数:--pct- {+事件类别} {+事件类别百分比}

用于指定每种类别事件的数目百分比(在monkey事件序列中,该类事件数目占总事件数目的百分比)。

其他待添加……

*** 关于什么是shell *** 这里有篇简单易懂的文章,来看看:http://blog.csdn.net/xiebaochun/article/details/29558417

转载于:https://www.cnblogs.com/xuxiaolu/p/4716850.html

MonkeyTest简单实用介绍相关推荐

  1. php社区twig,twig模板简单实用介绍

    twig 是php模板引擎 twig帮助文档: https://www.kancloud.cn/yunye/twig-cn/159684 相比之下,Twig拥有非常简洁的语法,它使得模版更具可读性: ...

  2. 虹科分享 | 简单实用的CANopen介绍,看完你就明白了(2)——CANopen框架与七种服务类型

    目前,CANopen通讯协议已经在工业领域得到了广泛的使用,由于其面向对象的设计思路,CANopen协议已成为欧洲等国家的自动化公司标配的通讯接口之一.在本系列文章中,我们将介绍CANopen协议的基 ...

  3. 一个简单实用的,基于EF的三层架构

    到底什么样的框架才是好框架呢?或许不同人有不同的看法.我个人觉一个好的框架,最重要的要是简单实用,能快速适开发,可维护性高(不会出现复制黏贴的代码),并能快速响应各种业务场景的变化的框架,同时性能不会 ...

  4. 分享几个用 Python 给图片添加水印的方法,简单实用

    作者 |俊欣 来源 |关于数据分析与可视化 今天来分享几种可以给图片添加水印的方法,都是十分的简单实用,大家在看了之后也可以私底下去自己试试,有些方法需要的代码量就比较少,有些方法需要的代码量就稍微多 ...

  5. 曲线聚类_机器学习入门必读:6种简单实用算法及学习曲线、思维导图

    来源:大数据DT 本文约3500字,建议阅读7分钟 本文为你介绍掌握机器领域知识的学习曲线.技术栈以及常用框架. [ 导读 ] 大部分的机器学习算法主要用来解决两类问题--分类问题和回归问题.在本文当 ...

  6. 机器学习入门必读:6种简单实用算法及学习曲线、思维导图

    来源:大数据DT 本文约3500字,建议阅读7分钟 本文为你介绍掌握机器领域知识的学习曲线.技术栈以及常用框架. [ 导读 ] 大部分的机器学习算法主要用来解决两类问题--分类问题和回归问题.在本文当 ...

  7. python读取excel表格-python读写Excel表格的实例代码(简单实用)

    安装两个库:pip install xlrd.pip install xlwt 1.python读excel--xlrd 2.python写excel--xlwt 1.读excel数据,包括日期等数据 ...

  8. php注入类,简单实用的PHP防注入类实例

    这篇文章主要介绍了简单实用的PHP防注入类实例,以两个简单的防注入类为例介绍了PHP防注入的原理与技巧,对网站安全建设来说非常具有实用价值,需要的朋友可以参考下 本文实例讲述了简单实用的PHP防注入类 ...

  9. ajax 示例代码,Ajax的简单实用实例代码

    我将实现一个简单的Ajax页面无刷新进行用户验证案例: 效果如下图: 实现主要过程: 在UsersAction类中的checkUser方法中接收并验证前台的表单数据,针对不同情况,返回一个状态码cod ...

最新文章

  1. 代码片段管理工具_VS代码片段:提高编码效率的最强大工具
  2. mysql server远程连接_MySql server:开放mysql远程连接
  3. python手动绘图_建筑师为什么要会python编程?
  4. SAP FICO与金蝶财务软件的区别
  5. java curl json_POST请求发送json数据java HttpUrlConnection
  6. [Python图像处理] 十三.基于灰度三维图的图像顶帽运算和黑帽运算
  7. python 温度 符号_Python通过小实例入门学习---1.0(温度转换)
  8. scala中命名参数函数_Scala中带有命名参数的函数
  9. Anaconda是什么?Anconda下载安装教程 - Python零基础入门教程
  10. nginx 反向代理时丢失端口的解决方案(转)
  11. 190525每日一句
  12. 诗和远方其实并不遥远
  13. c语言——输出字母c
  14. 不可不知的安卓屏幕知识
  15. linux g 使用教程,linux下的gedit命令使用方法与技巧
  16. Java虚拟机学习资料整理
  17. 【Python】PermissionError: [Errno 13] Permission denied: ‘xxx.xlsx‘问题解决
  18. soul之websocket数据同步
  19. 富文本编辑器 图片base64 图片替换
  20. 百度/谷歌/搜狗/360搜索/新网站提交与收录入口

热门文章

  1. 微信小程序wechat的分享功能
  2. 中考英语考前速记68条语法要点
  3. 2020上半年总结及感悟
  4. 斯帕克斯(Sparks)发布全新的电动皮带轮免费3D CAD模型在线目录
  5. c++持续集成工具Jenkins
  6. Rafy 领域实体框架演示(2) - 新功能展示
  7. Python3.6.1安装opencc
  8. LCD-FSMC原理简介
  9. 什么是混淆矩阵精度、召回率、准确性、F1 分数、FPR、FNR、TPR、TNR?
  10. Vue 组件间通信有哪几种方式?