IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 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是测试标准。

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-03-16 22:52:05  更:2022-03-16 22:52:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 0:23:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码