androidmonkey随机操作
淘宝搜:【天降红包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设备
- brew直接安装
- 安装安卓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 停止屏幕录制,否则,到三分钟或 设置的时间限制时,录制将自动停止。
但是有以下几个弊端:
- 最长只能录制3分钟
- 录制的视频没有声音
-
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.【【微信】】.sdk | SDK 版本 |
ro.build.【【微信】】.release | Android 系统版本 |
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
按下指定按键
- 电话键
NAME | INFO | CODE |
---|---|---|
KEYCODE_CALL | 拨号键 | 5 |
【【微信】】 | 挂机键 | 6 |
KEYCODE_HOME | 按键Home | 3 |
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 |
- 控制键
NAME | INFO | CODE |
---|---|---|
KEYCODE_ENTER | 回车键 | 66 |
KEYCODE_ESCAPE | ESC键 | 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_TAB | Tab键 | 61 |
KEYCODE_NUM_LOCK | 小键盘锁 | 143 |
KEYCODE_CAPS_LOCK | 大写锁定键 | 115 |
【【微信】】EAK | Break/Pause键 | 121 |
【【微信】】OLL_LOCK | 滚动锁定键 | 116 |
KEYCODE_ZOOM_IN | 放大键 | 168 |
KEYCODE_ZOOM_OUT | 缩小键 | 169 |
- 组合键
NAME | INFO | CODE |
---|---|---|
KEYCODE_ALT_LEFT | Alt+Left | |
KEYCODE_ALT_RIGHT | Alt+Right | |
【【微信】】L_LEFT | Control+Left | |
【【微信】】L_RIGHT | Control+Right | |
KEYCODE_SHIFT_LEFT | Shift+Left | |
KEYCODE_SHIFT_RIGHT | Shift+Right |
- 基本
NAME | INFO | CODE |
---|---|---|
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’< 版权声明:除非特别标注原创,其它均来自互联网,转载时请以链接形式注明文章出处。
|