monkey真是个好东西,强烈推荐

目录

    • Monkey简介
    • 测试原理
    • 命令
      • 常用命令
    • 测试结果分析

事情的起因是一个不怎么维护的APP从小米市场下架了,原因是APP存在几个崩溃问题,对方把测试结果报告、录屏信息发了过来。我们看了一下,发现是一个很老的版本,至于为什么没有把新版更新上去就不得而知了…公司管理上比较混乱,职责划分也不清,哎…

按照录屏上的操作去最新版上实验了一把,发现没有这些问题。为了安全起见,决定还是也用 monkey 跑一把,然后发现这东西真是个宝藏,做 APP 测试的同学一定要用起来呀。

环境安装与配置就不讲了,一搜就有,我用的是Android Studio 4.1。

Monkey简介

Monkey 是 SDK 中附带的一个工具,是一款自动化测试工具,该工具主要用于进行压力测试,一般安装在 C:\Users\Yourname\AppData\Local\Android\sdk\platform-tools。Monkey需要通过adb (Android Debug Bridge) 来运行,Monkey 测试所有的事件都是随机产生的,通过向系统发送伪随机的用户事件流,来对设备上的程序进行测试,检测程序的稳定性。虽然输入的事件是随机产生的,但是可以指定输入事件类型(触摸事件、滑动事件、轨迹球事件、导航事件、主要导航事件、系统按键事件、activity之间的切换、任意事件)的百分比,让其控制在我们需要的范围内,后面会讲到如何设置比例。

ADB的全称为 AndroidDebug Bridge,就是起到调试桥的作用,ADB 是Android SDK 里的一个工具,用这个工具可以直接操作管理android模拟器或者真实的android设备。

测试原理

adb shell monkey的运行机制:实际上是执行手机中/system/bin/monkey这个脚本。Monkey注入系统事件是通过 framework 层的 hidenApi (如:activemanager,inputmanager,windowmanager) 获取系统服务。Monkey事件根据类型比例生成事件队列,循环查找事件。

触摸事件(inputmanager):包括屏幕以及物理键的触摸,滑动,点击事件
Activity事件(activemanager):是指我们调用Android系统组件的事件
Window事件(windowmanager):是指操作Window的事件,例如转屏

命令

monkey命令分为4大类:

  • 常用选项:-v
  • 事件选项:触屏、滑动等事件
  • 约束选项:-p
  • 调试选项:忽略崩溃、忽略超时等

常用命令

  • 查看当前连接设备

    adb devices
    
  • 查看包名list

    adb shell pm list packages
    
  • 执行测试

    adb shell monkey –p yourPackage -s 80 –-throttle 100 –-pct-touch 30 –-pct-	motion 20 --pct-nav 10 --pct-majornav 10 --pct-syskeys 5 --pct-appswitch 10 –v 	–v -v 1000 >c:\result.txt
    

    详解
    -p:指定测试的包,如不指定,则对系统中所有package有效。一个-p 对应一个有效package, 如:-p com.xxx -p com.yyy。
    -s 80:seed值,指定产生随机事件种子值为80,相同的种子值产生相同的事件序列
    –-throttle 100:指定两次操作间的间隔时间100ms,如不指定系统会在上一个事件结束后立马发下一个指令。
    –pct-touch 30:指定触摸事件的百分比为30%,事件有如下这些:

    • –pct-touch: 触摸事件百分比
    • –pct-motion :滑动事件百分比
    • –pct-pinchzoom:绽放事件百分比
    • –pct-trackball :轨迹球事件百分比
    • –pct-nav :导航事件 up/down/left/right,指点击方向输入设备的上、下、左、右按键的操作,现在手机上很少有上、下、左、右按键,这种事件一般用得比较少
    • –pct-majornav :主要导航事件,这些按键通常会导致UI界面中的动作,如键盘的中间键、回退按键、菜单按键
    • –pct-syskeys :系统按键事件,点击系统保留使用的按键——Home键、返回键、音量调节键等
    • –pct-appswitch :activity之间的切换,Activity启动事件百分比,最大限度上覆盖被测包中全部Activity的一种方法
    • –pct-flip:键盘翻转事件百分比
    • –pct-rotation:模拟 Android 手机的横屏、竖屏切换(屏幕旋转事件是一个隐藏事件,在Android官方文档中并没有记录这个事件)
    • –pct-anyevent :(任意事件)

所有事件的百分比加起来不能超过100。
-v -v -v 1000:日志级别为2,产生1000个事件。

命令说明
-v日志级别 0,缺省值,仅提供启动提示、测试完成和最终结果等少量信息
-v -v日志级别1,提供较为详细的日志,包括每个发送到Activity的事件信息
-v -v -v日志级别2,最详细的日志,包括了测试中选中/未选中的Activity信息

>c:\result.txt:保存测试过程中的日志(以便结果分析)

  • 调试
optiondescription
–dbg-no-events初始化启动的activity,但是不产生任何事件
–hprof在事件序列发送前后会立即生成分析报告 —— 一般建议指定该项
–ignore-crashes忽略崩溃
–ignore-timeouts忽略超时
-ignore-security-exceptions忽略安全异常
–kill-process-after-error发生错误后直接杀掉进程
–monitor-native-crashes跟踪本地方法的崩溃问题
–wait-dbg连接上调试器后才执行 monkey 测试

测试结果分析

通过日志来分析测试结果。

日志开头
显示本次测试seed值,执行次数,测试包:
在这里插入图片描述
日志结尾

结尾会打印出当前执行事件的次数和所花费的时间;Monkey finished代表执行完成。
在这里插入图片描述日志分析
通过搜索关键字进行日志分析(否则查得眼疼):

  1. ANR:Application Not Response,程序无响应

  2. error

  3. GC:内存泄露

  4. crash:程序崩溃
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/64a55972909548a8b4549466853e7f6d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5oeS5oeS55qE5bCP6I-c6bif,size_20,color_FFFFFF,t_70,g_se,x_16

  5. exception:异常

详细分析
查找 log 中的 switch(或sending或sleeping,sleeping每出现一次,就代表一个事件),主要查看 Monkey 执行的是哪个Activity,两个 swtich 之间如果出现了崩溃或其他异常,可以在该 Activity 中查找问题的所在。
在这里插入图片描述

重现问题
出现问题后一般的查错步骤如下:

  1. 通过查找日志中的关键字找到是哪个地方出错
  2. 查出出错前后进行的动作,然后手动执行这些操作
  3. 如果通过1、2步不能找出,则在将Monkdy命令执行一遍,注意 seed 值保持一致。另外可以肉眼观看屏幕上的操作或录屏下来。

一般 无 ANR 且 无 CRASH是测试标准。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/70672.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

7-9 猴子吃桃

猴子第一天摘下若干个桃子,当即吃了2/3,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉2/3,又多吃了一个。以后每天早上都吃了前一天剩下的2/3再多一个。到第n天早上想再吃时,发现只剩下k个桃子了。求…

红心猕猴桃文案:水果红心猕猴桃文案大全,水果红心猕猴桃文案短句

精选专业水果文案,持续更新整理,朋友圈发圈营销必备文案,让写文案不再费力。文案圈子已积累更新6000多条,汇总编辑300多类的水果,非常全面实用。 1、朋友圈文案哪里能看到 需要文案的话,可以在朋友圈下搜一…

Android支付宝接入及使用

登入支付宝开放平台,进入开发者中心控制台,选择网页&移动应用 AS快速集成支付 下载支付宝的Demo和SDK将SDK文件夹中的arr文件复制黏贴到工程目录的libs文件夹下在整个工程的build.gradle文件中添加如下代码 allprojects {repositories {// 添加下…

Android应用接入支付宝支付详细教程

第一步:访问支付宝开放平台,进入管理中心 支付宝开放平台 (alipay.com)https://open.alipay.com/ 第二步: 创建应用 客户端应用信息如何配置(Android端) - 支付宝文档中心 (alipay.com)https://opendocs.alipay.com/su…

手机APP使用支付宝支付(服务端)

最近本人刚做了手机APP支付宝支付功能,主要分为六步,在这里主要记录代码部分。 第一步:创建应用并获取APPID 要在您的应用中接入支付宝App支付能力,需要通过创建应用的方式接入蚂蚁相关接口并进行开发,基于对行业及业…

微信中使用支付宝进行支付

微信中使用支付宝不能直接使用,由于微信内置浏览器的原因,在微信中使用支付宝时无法跳转出去,支付宝官网给出了实例文档 支付宝官网地址 下载后 将其例子融入到vue中使用 步骤: 第一步:将ap.js放在vue项目中 第二步&a…

php 使用 yansongda/pay 进行微信,支付宝支付

最近项目使用yansongda/pay 进行微信与支付宝开发,整理一下自己开发中遇到的问题 yansongda/pay composer 扩展地址 https://packagist.org/packages/yansongda/pay // 使用composer update 更新下载yansongda包扩展 复制 文档中 支付宝支付,微信支…

pc接入支付宝支付功能

1. 后端调用支付宝api 2.前端拿到后端返回的url 3.前端在页面使用iframe嵌入请求支付宝 代码例: // 后端返回的链接, 放入iframe的src中。这里使用官方提供的链接 const alipayUrl "https://openapi.alipay.com/gateway.do?timestamp2013-01-01 08:08:0…

Android接入支付宝实现支付功能

Android接入支付宝实现支付功能 我本来是想直接讲Android支付这一块的,包括支付宝,微信,其他第三方整合支付等,但是微信开放平台他对我的账号做了限制,所有我今天就先把重心放在支付宝的支付上,也算是写得…

如何使用支付宝支付接口

支付宝支付 入门 """ 1)支付宝API:六大接口 https://docs.open.alipay.com/270/105900/2)支付宝工作流程(见下图): https://docs.open.alipay.com/270/105898/3)支付宝8次异步通知机制(支付宝对我们服…

Android应用接入支付宝实现支付功能

记得很早以前公司项目中添加过移动支付这一块, 包括微信,支付宝,银联等第三方的整合。 但是后来懒于总结就没留下什么, 最近公司项目打算添加,所以打算简单总结一下,记上一笔以备将来使用。 毕竟第三方的支…

支付宝支付接口的调用(支付宝支付的实现)

首先,下面是调用支付宝接口的官网: 支付宝开放平台https://open.alipay.com/platform/home.htmhttps://open.alipay.com/platform/home.htm我们这里只演示沙箱环境下的,正式环境需要审核什么的,正式环境与此配置类似,…

支付宝和微信的支付功能如何进行测试?

要分析测试点之前,我们先来梳理一下测试思维。总结来说,任何事物的测试思路都可以总结如下: 第一步:梳理产品的核心业务流程:明白这是个什么项目,实现了什么业务,以及是怎么实现的?…

Android App接入支付功能——支付宝支付

接入前准备 接入APP支付能力前,开发者需要完成以下前置步骤。 本文档展示了如何从零开始,使用支付宝开放平台服务端 SDK 快速接入App支付产品,完成与支付宝对接的部分。 接入准备——支付宝开发能力 一.下载官方sdk,将sdk放入…

推荐一个优秀人工智能(AI)学习网站:Quester AI

网站链接如下: QuesterAI 简要介绍: Quester AI全方位地整合AI学习资源,对每一个从业者,学习者开放,并且是免费开放。同时,Quester AI努力为AI领域学习者和爱好者大量提供持续的AI开源资源,给…

人工智能的数学方法

要成为一名出色的 AI 软件工程师,需要了解多少数学知识?🤔 在之前的一篇文章中,我写过学习任何主题或领域基础知识的重要性。我建议你先阅读它(如果你还没有),以便完全理解这篇文章。 如果您已经…

让人工智能解数学题,可能没你想象的那么简单

来源:微软研究院AI头条,授权CSDN发布。 欢迎人工智能领域技术投稿、约稿、给文章纠错,请发送邮件至heyccsdn.net 约1500年前的古代数学著作《孙子算经》中记载了一个有趣的问题:“今有雉兔同笼,上有三十五头&#xff0…

给自己的课程打个广告

给自己的一些付费课程打个广告吧,金额不高,但你们的支持可以让我在写作、分享时更有动力,在媳妇面前也更有地位哈哈,谢谢支持了!! 有问题欢迎留言或者加我微信: sxkejinet 面试经验分享OkHttp3 和 Retrofit…

大学生个人职业生涯规划书PPT

大学生如何职业生涯规划主要是指根据个人的兴趣、性格特点、内在潜能来确立个人的职业发展目标,并根据自身情况对未来职业生涯上的短期目标、中期目标和长期目标进行设定,根据设定的这些目标来规划不同阶段下需要完成自我提升的通道。简而言之就是自身通…

python职业规划书_大学生职业规划书

职业生涯规划(简称生涯规划),又叫职业生涯设计,是将个人与组织相结合,在对一个人职业生涯的主客观条件进行测定、分析、总结的基础上,对自己的兴趣、爱好、能力、特点进行综合分析与权衡,结合时…