淘姐妹

淘姐妹

androidmonkey随机操作

手机 0

淘宝搜:【天降红包222】领超级红包,京东搜:【天降红包222】
淘宝互助,淘宝双11微信互助群关注公众号 【淘姐妹】


  • 前言
  • 一、为什么Monkey测试
  • 二、什么是Monkey测试
  • 三、如何做monkey测试

Monkey 测试是通过向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对应用程序客户端的稳定性测试; 通俗来说,Monkey 测试即“猴子测试”,是指像猴子一样,不知道程序的任何用户交互方面的知识,就对界面进行无目的、乱点乱按的操作; Monkey 测试是一种为了测试软件的稳定性、健壮性的快速有效的方法; Monkey 程序是 Android 系统自带的,由 Java 语言写成,在 Android 文件系统中的存放路径是: /system/framework/monkey.jar; Monkey 程序需要通过 adb 来运行。

1、用户量比较大 2、用户的时间比较长

压力测试、稳定性测试 压力测试:在一定时间内进行大量操作 稳定性测试:趋势

进行monkey测试的阶段 功能基本稳定,项目验收前

操作:随机的,针对整机,模拟人操作(调节亮度、声音、去截屏设置)、伪随机(有逻辑)

monkey位置:系统中文件夹,/system/bin/monkey

monkey优点: 1)一条语句就是一个自动化脚本 2)有log输出 3)速度可控 4)长时间测试稳定(adb稳定) 缺点 1)无法回溯路径 2)log信息量巨大,难以排查bug

1、基本环境准备 1)电脑设置 jdk、sdk准备好 环境变量 ja【【微信】】压缩,解压缩即可使用 adb version

2)手机端 打开开发者模式->USB调试

3)手机(模拟器)连接adb成功 adb连接成功 adb devices

2、执行monkey测试 整机测试,200是count(必填)

1)连接模拟器

2)查看是否成功

3)执行monkey测试 查看monkey相关参数

具体例子

1、针对整机进行200次事件操作

如何看包名? -s 系统 -3 客户

点击哪个就显示哪个包名(有时app卡死,不建议用) adb shell am monitor

2、对指定应用进行200次的事件操作

3、忽略参数 [Cignore-crashes] [Cignore-timeouts] 如果使用该参数,则执行中发生了崩溃或者anr的问题,会结束app,重新启动执行操作,继续之前的事件数,而且会在日志中记录该问题。 [Cignore-security-exceptions] 安全证书

4、序列 [-s SEED]序列值、种子值 如果两次monkey命令执行一样的seed值,那么表示操作的流程是一样的,但是操作的界面或者对象是否一样就不能保证 [-v [-v] …] 日志的级别程度 -v -v -v 最详细的日志体现

5、延迟时间(两个操作的间隔时间,模拟人操作要有停顿) [Cthrottle MILLISEC] 延迟时间,单位:毫秒 450 工作中的事件数 35万次 +延迟时间,8-10小时

例子: adb shell monkey + 行为参数 + “>” + {日志保存路径}

结果分析 1、//monkey finished表示测试成功,其他情况都是失败,需要提交bug 1)crash崩溃 logcat 2)anr 无响应 adb shell /data/anr/traces.txt 3)monkey测试没有完成,异常中断 4)关机 5)重启reboot

2、结果查看 1)进行mokey测试,可以看到进行事件的百分比(这个需要开发文档查看)比如:tag、touch…

bug提交:专项测试 标题:[monkey][CRASH/anr/重启/关机]app在执行mongkey测试是发生问题 步骤 1、准备 2、命令 3、查看结果 预期结果 执行monkey无异常 实际结果 日志信息[来源于logcat] fatal、exception、reboot、oom、anr 03-02 21:54:39.508 I/art ( 5815): Wrote stack traces to ‘/data/anr/traces.txt’

发现anr,需要把数据pull到本地,然后再给开发定位



闀胯櫣鐢佃adb绮剧畝鏁欑▼


原创博客不易,如若转载请注明来源。 如有错误及问题,欢迎评论指出。一起学习

  • adb教程(非常详细)
    • 简介
    • 安装
      • Windows
      • Ubuntu
      • Mac
    • 连接设备
      • 真机
      • 模拟器
    • 使用详解
      • adb相关
        • 开启/停止 `adb 服务`
        • 给`指定设备`发送命令
      • 设备相关
        • 查询
          • 查看cpu信息
        • 操作
      • 文件相关
      • 常用命令
        • 开启/停止 `adb 服务`
        • 给`指定设备`发送命令
        • `安装/卸载` apk
        • 导入/导出 `文件`
        • `截屏/录像`
        • `Activity`管理命令(Acti【【微信】】)
        • `Package`管理命令(PackageManager)
        • 获取`设备属性`
        • 查看`内存`信息
        • `dumpsys` 获取系统数据
        • 查看手机系统`进程`
        • `输入法`相关
        • 使用 logcat 抓 `log` 信息
        • `电量管理`相关命令
        • 使用 adb 命令进入 `recovery` 模式
        • 启动、跳过 Google `开机向导`
        • 查看CPU信息
        • 按下指定按键
        • 输入文本
  • 参考文档
    • ADB 你想找的命令都在这里
    • adb 常用命令

ADB(Android Debug Bridge) 是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试应用,并提供对 Unix shell(可用来在模拟器或连接的设备上运行各种命令)的访问。该工具作为一个客户端-服务器程序。

  • 客户端,该组件发送命令。客户端在开发计算机上运行。您可以通过发出 adb 命令从命令行终端调用客户端。
  • 后台程序,该组件在设备上运行命令。后台程序在每个模拟器或设备实例上作为后台进程运行。
  • 服务器,该组件管理客户端和后台程序之间的通信。服务器在开发计算机上作为后台进程运行。

adb 工具路径

连接模拟器 ADB与本地 TCP 端口 5037 绑定,并侦听从 adb 客户端发送的命令―所有 adb 客户端均使用端口 5037 与 adb 服务器通信。然后,服务器设置与所有运行的Android模拟器/Android 设备连接。

  • 下载
    • 官网 经常被墙
    • 只下载我们需要的工具
    • 个人保存Android-sdk、adb tool
  • 配置 目录的环境变量。
  • apt安装

  • 查看接入ubuntu的设备

  • 创建文件,写入【【微信】】设备的VID

  • 创建权限文件:touch /etc/udev/rules.d/70-【【微信】】.rules

  • 重启usb服务

  • 重启adb服务

  • 查看adb设备

  1. brew直接安装
  1. 安装安卓sdk后配置环境变量
  • 数据线连接

    • 手机打开USB调试连接电脑
  • wifi连接

    • 连接到同一wifi环境

    • 先插线连接成功

    • 切换为tcpip模式,端口为5555,可修改

    • 拔线

    • 查看手机ip

    • 使用命令连接

连接不同虚拟机的虚拟端口

  • 示例
  • 查看运行中模拟器端口号
  • 使用【【微信】】查看模拟器进程PID
  • 使用netstat查看端口号占用
  • 官方提供的默认端口号 | 模拟器 | PORT | | ------------------ | ----- | | 夜神模拟器 | 62001 | | 逍遥安卓模拟器 | 21503 | | BlueStacks(蓝叠) | 5555 | | 雷电安卓模拟器 | 5555 | | 天天安卓模拟器 | 5037 | | 网页MuMu | 7555 | | 安卓模拟器大师 | 54001 | | Genymotion | 5555 |

开启/停止

  • 开启服务

  • 停止服务

给发送命令

当电脑连接多个设备时,发出 adb 命令,必须指定一个设备

查询

查看cpu信息

可能看到以下的cpu版本:

  • arm32位
    • ARMv7
    • ARMv7s
  • arm64位
    • AArch64
    • ARMv8
    • ARMv9
  • x86
    • Intel
    • AMD

操作

  • 参考文档

    • ADB 你想找的命令都在这里
    • adb 常用命令
    • MAC系统下ADB入门与简单使用

开启/停止

  • 开启服务

  • 停止服务

给发送命令

当电脑连接多个设备时,发出 adb 命令,必须指定一个设备

apk

  • 安装apk

  • 卸载apk

导入/导出

  • 导出手机文件

  • 导入文件到手机

  • 截屏

  • 录像

    Control + C 停止屏幕录制,否则,到三分钟或 设置的时间限制时,录制将自动停止。

    但是有以下几个弊端:

    1. 最长只能录制3分钟
    2. 录制的视频没有声音
    • screenrecord 部分参数

      选项说明
      Csize width x height设置分辨率 eg:1280x720
      Cbit-rate rate视频比特率,默认值为 4Mbps,可以设6Mbps,这样质量更好 eg:
      Ctime-limit time设置最大录制时长(以秒为单位)。默认值和最大值均为 180(3 分钟)。

管理命令(Acti【【微信】】)

  • 启动程序

  • 启动 Activity

  • 启动 【【微信】】

  • 发送广播

  • 强行停止应用

管理命令(PackageManager)

  • 启动apk

  • 强制退出apk

  • 卸载 apk

  • 查看手机中所有 apk 包名

  • 查看已知权限组

  • 查看手机 Feature 支持

  • 根据包名,查看apk安装路径

  • 清除 app 数据

  • 多用户相关

    • 查看支持最多用户数

    • 查询系统所有用户

    • 创建新用户

    • 移除指定id用户

获取

使用命令 +下面的属性,即可获取相应的属性

属性名含义
ro.build.【【微信】】.sdkSDK 版本
ro.build.【【微信】】.releaseAndroid 系统版本
ro.【【微信】】.model型号
ro.【【微信】】.brand品牌
ro.【【微信】】.name设备名

查看信息

获取系统数据

  • 获取当前运行的

  • 获取apk版本号、权限等信息的方法

查看手机系统

  • 使用 命令查看系统进程

  • 使用 命令查看系统进程

  • 结合 命令过滤多余的信息

相关

  • 获取已安装所有输入法

  • 获取当前设备输入法

  • 设置输入法

使用 logcat 抓 信息

  • 使用 logcat 抓取 log 信息

  • 使用 -s 过滤log标签

  • 使用 -c 清除缓存log

相关命令

  • 模拟拔下设备电源

  • 低电量条件下的行为

  • 恢复电源修改

使用 adb 命令进入 模式

进入Recovery 模式可以使用组合键,也可以使用adb 命令 adb 命令进入recovery 模式如下

启动、跳过 Google

  • 跳过

  • 启动

查看CPU信息

可能看到以下的cpu版本:

  • arm32位
    • ARMv7
    • ARMv7s
  • arm64位
    • AArch64
    • ARMv8
    • ARMv9
  • x86
    • Intel
    • AMD

按下指定按键

  • 电话键
NAMEINFOCODE
KEYCODE_CALL拨号键5
【【微信】】挂机键6
KEYCODE_HOME按键Home3
KEYCODE_MENU菜单键82
KEYCODE_BACK返回键4
【【微信】】CH搜索键84
KEYCODE_CAMERA拍照键27
KEYCODE_FOCUS拍照对焦键80
【【微信】】ER电源键26
KEYCODE_NOTIFICATION通知键83
KEYCODE_MUTE话筒静音键91
KEYCODE_【【微信】】扬声器静音键164
KEYCODE_【【微信】】音量增加键24
【【微信】】音量减小键25
  • 控制键
NAMEINFOCODE
KEYCODE_ENTER回车键66
KEYCODE_ESCAPEESC键111
KEYCODE_DPAD_CENTER导航键 确定键23
KEYCODE_DPAD_UP导航键 向上19
KEYCODE_DPAD_DOWN导航键 向下20
KEYCODE_DPAD_LEFT导航键 向左21
KEYCODE_DPAD_RIGHT导航键 向右22
KEYCODE_MO【【微信】】光标移动到开始键122
KEYCODE_MOVE_END光标移动到末尾键123
KEYCODE_PAGE_UP向上翻页键92
KEYCODE_PAGE_DOWN向下翻页键93
KEYCODE_DEL退格键67
【【微信】】WARD_DEL删除键112
KEYCODE_INSERT插入键124
KEYCODE_TABTab键61
KEYCODE_NUM_LOCK小键盘锁143
KEYCODE_CAPS_LOCK大写锁定键115
【【微信】】EAKBreak/Pause键121
【【微信】】OLL_LOCK滚动锁定键116
KEYCODE_ZOOM_IN放大键168
KEYCODE_ZOOM_OUT缩小键169
  • 组合键
NAMEINFOCODE
KEYCODE_ALT_LEFTAlt+Left
KEYCODE_ALT_RIGHTAlt+Right
【【微信】】L_LEFTControl+Left
【【微信】】L_RIGHTControl+Right
KEYCODE_SHIFT_LEFTShift+Left
KEYCODE_SHIFT_RIGHTShift+Right
  • 基本
NAMEINFOCODE
KEYCODE_0按键’0’7
KEYCODE_1按键’1’8
KEYCODE_2按键’2’9
KEYCODE_3按键’3’10
KEYCODE_4按键’4’11
KEYCODE_5按键’5’12
KEYCODE_6按键’6’13
KEYCODE_7按键’7’14
KEYCODE_8按键’8’15
KEYCODE_9按键’9’16
KEYCODE_A按键’A’29
KEYCODE_B按键’B’30
KEYCODE_C按键’C’31
KEYCODE_D按键’D’32
KEYCODE_E按键’E’33
KEYCODE_F按键’F’34
KEYCODE_G按键’G’35
KEYCODE_H按键’H’36
KEYCODE_I按键’I’37
KEYCODE_J按键’J’38
KEYCODE_K按键’K’39
KEYCODE_L按键’L’40
KEYCODE_M按键’M’41
KEYCODE_N按键’N’42
KEYCODE_O按键’O’43
KEYCODE_P按键’P’44
KEYCODE_Q按键’Q’45
【【微信】】按键’R’46
KEYCODE_S按键’S’47
KEYCODE_T按键’T’48
KEYCODE_U按键’U’49
KEYCODE_V按键’V’50
【【微信】】按键’W’<

关于本站

Copyright © 2023 欢迎来到我的小站 备案号:隋唐演义 | 名诗名词 |小学生100分 | 粤ICP备2020117555号 | 京公网安备44011302002786

联系我们

合作或咨询可通过如下方式:

QQ:

邮箱:

关注我们

淘姐妹