• monkey测试原理:
  • Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。也叫做“猴子测试”,是指没有测试经验的人甚至对计算机根本不了解的人(就像猴子一样)不需要知道程序的任何用户交互方面的知识,如果给他一个程序,他就会针对他看到的界面进行操作,其操作是无目的的、乱点乱按的。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。
  • monkey特点:
  • 不可能使用monkey来指定做一样测试,重复做很多次。因为monkey产生的是伪随机的事件流。但是我们可以通过添加命令选项将操作限制在一定的范围内。
  • 测试需要的环境:
  • 1.先下载jdk   2.再下载sdk
  • 打开手机的调试
  • 测试流程:
  • 进入到SDK的platform-tools文件目录下执行adb命令。
  • 打开终端:输入 adb devices。

  • 因为需要对自己的测试包进行指定的测试,所以需要知道包名(可以和开发要一下),也可以通过命令:adb shell pm list获得你的测试包的包名,输入 adb shell pm list packages -3 查看手机上所有的第三方安装包,尽量让测试机少安装第三方软件,这样可以尽快的找到想要的安装包名称;
  • monkey的使用,是以命令的方式让真机或模拟器工作,熟悉他的命令
  • options的类型及其使用:下面将Monkey的Options操作分为四类:常规类,事件类,约束类和调试类。
常规类命令 使用 详解
-h adb shell monkey -h 显示monkey参数帮助信息
-v adb shell monkey -v -v -v<event-count> 打印出日志信息,每个-v将增加反馈信息的级别,-v越多日志信息越详细:0级,除启动提示、测试完成和最终结果提供较少信息。1级,提供较详细调试信息,比如逐个发送到Activity的事件。2级,提供更详细安装信息,如测试中被选中或未被选中的Activity
事件类命令 使用 详解
-f adb shell monkey -f<测试脚本名><event-count> 表示要使用Monkey运行指定的脚本
-s adb shell monkey -s<seed><event-count> 指定随机数生成器seed值,如果用相同的seed值再次运行moneky,将重复执行刚才的随机操作
--throttle adb shell monkey --throttle<时间间隔> 表示每执行一个指令间隔的时间,单位ms,注意是-“--”开头
--pct-touch adb shell monkey --pct-touch<percent> 表示触摸事件百分比
--pct-motion adb shell monkey --pct-motion<percent> 表示动作事件百分比
--pct-trackball adb shell monkey --pct-trackball<percent> 表示轨迹球事件百分比
--pct-nav adb shell monkey --pct-nav<percent> 表示基本导航事件百分比
--pct-majornav adb shell monkey --pct-majornav<percent> 表示主要导航事件百分比
--pct-syskeys adb shell monkey --pct-syskeys<percent> 表示系统按键事件百分比
--pct-appswitch adb shell monkey --pct-appswitch<percent> 表示应用启动事件百分比
约束类命令 使用 详解
-p adb shell monkey -p<一个或者多个包名><event-count> 指定测试一个或者多个包
-c adb shell monkey -c<一个或者多个类别><event-count> 指定测试一个或者多个类别(即<main-category>参数)
调试类命令 使用 详解
--dbg-no-events adb shell monkey --dbg-no-events<event-count> 监视应用程序所调用的包之间的转换
--hprof adb shell monkey --hprof <event-count> 在事件序列前后立即生成profiling report,在data/misc中生成5MB大小左右的文件
--ignore-crashes adb shell monkey --ignore-crashes<event-count> 设置后,当应用程序崩溃或者发生异常的时候,Monkey将继续运行直到计数完成,而不会停止运行
--ignore-timeouts adb shell monkey --ignore-timeouts<event-count> 设置后,当应用程序发生任何超时错误(比如ANR),Monkey将继续运行直到计数完成,而不会停止运行
--ignore-security-exceptions adb shell monkey --ignore-security-exceptions<event-count> 设置后,当应用程序发生任何相关权限错误的时候,Monkey将继续运行直到计数完成,而不会停止运行
--monitor-native-crashes adb shell monkey--monitor-native-crashes<event-count> 设置后,monkey会监视并报告Android系统的native code的崩溃事件
  • Moneky脚本的编写
事件 使用 详解
点击事件 DispatchPointer ( downTime , eventTime , action , x , y , pressure , size , metaState , xPrecision , yPrecision , device , edgeFlags) 其实这么多参数,只需要关注action 、 x 、y 三个参数即可。action :事件是按下还是抬起,0 表示按下,1 表示抬起。x、y:表示当前事件触发的X轴和Y轴的坐标
输入字符串事件 DispatchString(String text) 输入一个不加引号的字符串
启动应用 LaunchActivity ( pkg_name , act_name ) 用于打开任意应用的一个页面,但是前提条件是打开的Activity 需要属性 android:exported 被设定为true,才可以通过 LaunchActivity 打开
等待事件 UserWait(long sleeptime) 操作需要等待的事件,单位为毫秒
按下键值 DispatchPress(int keycode) 用于模拟敲击键盘的事件
长按键值 LongPress(int keycode) 用于模拟敲击键盘的事件
  • 日志生成两种形式及错误分析
  • 1、动态形式直接在控制台观看,
  • 2、另一种是在固定txt文件中生成日志进行查询分析,第二种比较方便参考语句:adb shell monkey -p com.tent -v  2000 > ~/Desktop/sdk/monkey_info.txt
  • 错误分析:查找关键字进行具体分析
  • (1)、ANR问题(程序无响应):在日志中搜索“ANR"(application no response)

    (2)、闪退问题:在日志中搜索"crash"

    (3)、异常:搜索"exception"

    (4)、强制退出:搜索"force closed"

  • 准确地获取控件坐标

方法一:
     因为Monkey是基于坐标来操作控件的,所以必须准确地获取控件坐标才能进行正确测试。这里就需要getevent。在命令行上输       入adb shell getevent后,然后点击手机界面,会获得所点击的位置的十六进制坐标。

比如上图,我点击点一个文本框后输入的一系列数据(看起来好乱和复杂),每一行的三个数据分别代表type,code,                   value(具体的含义自己百度一下,这里就不多解释),然后其实我们只需要关注的是code为0035和0036这两行的数据,分别         代表触屏时的绝对坐标X和Y,然后将它们转为十进制的坐标就可以了,就这样我们得到了控件的x和y坐标。

方法二:我推荐另外一种更简单的方式,来获取当前你看见的,在待测试设备上的控件的坐标点的定位方式。那就是利用                Android 设备的开发者选项。设置 → 开发者选项 → 指针位置 ,将这个属性开启之后,当手指在屏幕上滑动的时候,就可以在        顶部看到当前触摸点的 X、Y 轴的坐标,这就是我们需要的。

  • 编写monkey脚本模式
  • 首先:要在真机或模拟器上——开发者选项——打开指针位置(原因是monkey是通过找到坐标来模拟点击,所以每次进行点击前要先找到控件坐标)
  • monkeyscript是monkey的脚本语言,能够被monkey识别的命令集合,可以实现一些固定的重复性动作。Monkey可以通过命令加载脚本来进行测试,简单方便。Monkey脚本如何编写,官网并没有介绍,我们只能通过Moneky源码去学习如何编写脚本,可参考Monkey-Github的MonkeySourceScript.java类

    脚本格式如下:
    type= raw events
    count= 1
    speed= 1.0   
    start data >>   
     
    LaunchActivity(pkg_name, cl_name)  
    第一句到第三局就使用默认值,不需要改,其实这里设置是无效的,最终会采用命令行里的值;
    start data >> 表示开始执行下面所有的命令行
    LaunchActivity就是一个启动应用的命令
    脚本命令
    LaunchActivity(pkg_name, cl_name): 启动应用,第一个参数是包名,第二个是启动的activity名
    DispatchPointer(downtime,eventTime,action,x,y,xpressure,size,metastate,xPrecision,yPrecision,device,edgeFlags) :向指定位置发送单个手势,相当于我们把手指按在某个点上;这个方法参数有12个,但是我们主要关注owntime,eventTime,action,x,y这么几个参数,x,y表示按下的坐标,可以通过上一篇文章UI Automator获取,这在你想测试点击某个具体view是很有用的
    DispatchPress(keycode): 向系统发送一个固定的按键事件;例如home键,back键;参数是按键值 ,按键值可查看keycode
    UserWait:让脚本的执行暂停一段时间,做一个等待操作
    RotateScreen(rotationDegree, persist): 翻转屏幕,第一个参数是旋转角度,第二个是旋转后是否停在当前位置
    Tap(x, y) :单击事件,点击屏幕,参数是点击坐标
    Drag(xStart, yStart, xEnd, yEnd) :在屏幕上滑动,坐标是从哪一点滑到哪一点
    LongPress(): 长按2s
    ProfileWait(): 等待5s
    PressAndHold(x, y, pressDuration) :模拟长按 
    PinchZoom(x1Start, y1Start, x1End, y1End, x2Start, y2Start, x2End, y2End, stepCount): 模拟缩放
    DispatchString(input): 输入字符串
    RunCmd(cmd) :执行shell命令,比如截图 screencap -p /data/local/tmp/tmp.png
    DispatchFlip(true/false) :打开或者关闭软键盘
    UserWait(sleepTime) :睡眠指定时间
    DeviceWakeUp() :唤醒屏幕

  • 参考链接:https://blog.csdn.net/qq_30993595/article/details/80748559

monkey Android稳定性测试相关推荐

  1. android驱动测试,Android: 通过 cucumber 驱动 monkey 做稳定性测试

    主要内容 稳定性测试是什么 Monkey 介绍 自动化 Monkey 稳定性测试是什么 通过随机点击屏幕一段时间,看看 app 会不会奔溃,能不能维持正常运行. Monkey 介绍 Monkey 是一 ...

  2. Android稳定性测试工具Monkey的使用

    综述 Monkey是一个命令行工具,它可以运行在我们的模拟器或者设备当中.它可以发送一些伪随机(pseudo-random)的用户事件流,例如点击,触摸,手势等.我们能够使用Monkey工具来对我们所 ...

  3. android 稳定性测试工具,APP 稳定性测试工具-Fastbot_Android详解

    基于monkey的二次开发,约束monkey的行为,比monkey更智能. 写在开始 monkey测试的随机性概率过大,导致其效率并不能达到预期.有时可能遍历了很久,依旧与最有可能发生问题的部分擦肩而 ...

  4. 1.Android稳定性测试

    工具 adb monkey 测试前提 1)PC端已安装adb环境及做好配置 注:需要安装JDK.Android SDK并分别进行环境变量配置(此不为本次重点,不提供安装细则,可以参考本文档底部提供的参 ...

  5. 基于Monkey的稳定性测试

    1.背景&简介 1.1 什么是Monkey? Monkey是Android中的一个命令行工具,可以运行在模拟器或实际设备中,它向系统发送随机的用户事件流(按键输入,触摸屏输入,手势输入等),实 ...

  6. android稳定性测试

    1.monkey介绍 说到稳定性测试我们就不得不说monkey,monkey就是猴子,所谓的稳定性测试,就像一只猴子,在设备上进行随机点击触摸等事件操作以此来发现软件的异常,它的主要目的就是为了测试a ...

  7. APP使用monkey进行稳定性测试过程

    APP使用monkey进行稳定性测试记录 Monkey测试是Android自动化测试的一种手段,Monkey测试本身非常简单,就是模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常. ...

  8. python:app稳定性测试工具

    工作中因要测试app的稳定性,市场上多用于monkey进行稳定测试,而字节跳动开源了一个基于monkey的稳定性测试工具Fastbot,使用了一阶段,超级棒. 因为每次都要去输入一堆命令,故写了一个第 ...

  9. monkey测试_爱码小士丨 APP稳定性测试(附视频详解)

    在实际的测试过程中,主要是对系统的功能来进行测试,用于校验功能的正确性 还需要考虑到系统在未修改的状态下,是否能够稳定运行,即崩溃.闪退.重启.系统异常等等等地情况 在APP中,稳定性测试一般是交由M ...

最新文章

  1. 在Linux上部署aspnet mvc3
  2. C++ STL Pair
  3. C++ Primer 5th笔记(chap 10)泛型算法 :算法形参
  4. 哈理工计算机分数线2020,2021哈尔滨理工大学研究生分数线一览表(含2019-2020历年复试)...
  5. [笑]每个人都有脑袋脱线的时候……
  6. 全球最大的披萨公司,在中国干不过必胜客?
  7. Server Tomcat v6.0 Server at localhost was unable to start within 45 seconds. If the server requires
  8. JSK-382 元音字母复制【入门】
  9. 【python】抖音无水印视频下载
  10. QQ第三方网站授权登陆深入分析及cookie的高级运用
  11. 口红会染唇是什么意思_最强科普!口红、唇膏、唇釉、染唇液究竟区别在哪?...
  12. android -chrome 调试
  13. 祝所有的考生考试顺利!!!
  14. GOCAD如何导出voxet
  15. 解析解、闭合解和数值解
  16. linux删除账号及主目录及邮箱,Linux 用户管理
  17. C语言——初识C语言(define定义常量和宏,指针,结构体)
  18. 到底什么是类脑计算?
  19. 品优购商城——列表页
  20. 你还在问我Bean的生命周期?带你看看一个Spring Bean从诞生到逝去的九次人生转折!

热门文章

  1. 快速登录github
  2. 第四天 IPTABLES功能深入
  3. C语言小数点后六位怎么舍成四位,【JavaScript】小数点精度问题,小数点后两位toFixed(),把四舍六入五凑偶,修改成四舍五入...
  4. 用Python写《我的世界》(MC)
  5. 公司如何利用互联网渠道 加强企业的品牌宣传 产品推广
  6. 网络攻防新手入门之绕过前端限制
  7. Nginx监控模块vts
  8. 力特ZE398C驱动光盘-USB转RS232-支持Windows 10/Mac
  9. 软件的生命周期及其模型
  10. 从QQ被公司禁用说起