1.Android稳定性测试
工具
adb monkey
测试前提
1)PC端已安装adb环境及做好配置
注:需要安装JDK、Android SDK并分别进行环境变量配置(此不为本次重点,不提供安装细则,可以参考本文档底部提供的参阅文件)
2)对adb命令和monkey有一定的了解
3)手机端已安装对应测试app,本文将以ownbank为例
4)测试前需要将android机(测试手机)的顶部状态栏进行屏蔽——目前通过开发隐藏或adb命令隐藏的还是可以同过下拉显示出来
当下前端开发未能实现客户端顶部状态栏永久隐藏。
具体操作
1.将 Android 设备和 adb
主机(PC)连接到同一个 WiFi 网络
是否设置代理为可选操作,当前设置代理是为了方便抓包查看接口的请求情况)。
2.Android 设备需要把开发者工具-允许调试功能打开
3.使用USB数据线连接Android 设备和 adb
主机(PC)
建议使用USB,稳定性测试掉电速度很快、方便充电,同时方便不通过其他配置打开Android Studio就可以捕获日志。如果只是短时间操作,均可以选择远程连接设备。
4.打开cmd窗口或PowerShell命令窗口并确认调试包
当前使用PowerShell:
|
5.monkey命令执行
|
当前操作说明:
指令 |
说明 |
---|---|
-p com.xxx.dev |
对包名为com.finance.ownbank.dev的app应用进行测试,如需要指定多个包,使用命令: adb shell monkey -p com.finance.ownbank.dev -p 其他包名 |
-v -v -v |
指定日志的级别(即日志详细程度) |
--throttle 3 |
延时3毫秒,单位是毫秒 |
-s 1000 |
随机数种子,用于指定伪随机数生成的seed值,如果seed值相同则两次monkey测试所生成的时间序列也相同,建议使用,方便复现和回归测试 |
--ignore-crashes |
忽略闪退或崩溃,继续发送执行事件、直到事件数执行完成 |
--ignore-timeouts |
忽略超时导致的异常(如ANR),继续发送执行事件、直到事件数执行完成 |
--ignore-native-crashes |
忽略native-code引起的崩溃,继续发送执行事件、直到事件数执行完成 |
10000000 |
执行10000000次事件 |
1>C:\Users\panpj\2023022021_info.txt |
把level 1的日志保存到C:\Users\panpj\2023022021_info.txt |
2>C:\Users\panpj\2023022021_info.txt |
把level 2的日志保存到C:\Users\panpj\2023022021_info.txt |
monkey参数说明:
—— | 参数 | 说明 |
---|---|---|
基本参数 | -p <allowed-package-name> | 指定一个或多个包 |
-s <seed> | 指定一个随机数生成器的seed值 | |
--throttle <milliseconds> | 指定事件之间的固定延迟(ms) | |
-v |
指定反馈信息级别(信息级别就是日志的详细程度),最多3个级别: -v //缺省值,仅提供启动提示、测试完成和最终结果等的少量信息 -v -v //较为详细的日志,包含每个Activity的事件信息 -v -v -v //最详细的日志 |
|
-c <main-category> | 指定一个或多个类别名 | |
-f <scriptfile> | 运行指定的monkey脚本 | |
事件参数 | --pct-touch <percent> | 指定触摸事件百分比 |
--pct-motion <percent> | 指定动作事件百分比 | |
--pct-trackball <percent> | 指定轨迹事件百分比 | |
--pct-syskeys <percent> | 指定系统按键事件百分比 | |
--pct-nav <percent> | 指定基本导航事件百分比 | |
--pct-majornav <percent> | 指定主要导航事件百分比 | |
--pct-appswitch <percent> | 指定应用启动事件百分比 | |
--pct-flip <percent> | 指定flip(弹)事件的百分比 | |
--pct-anyevent <percent> | 指定其他类型事件百分比 | |
--pct-pinchzoom <percent> | 指定缩放(捏)事件百分比 | |
--pct-permission <percent> | 指定permission事件百分比,默认是0 | |
调试参数 | --ignore-crashes | 忽略因崩溃或异常引起的停止运行 |
--ignore-timeouts | 忽略应用发生超时错误(ANR) | |
--ignore-security-exceptions | 忽略应用发生任何权限错误 | |
--monitor-native-crashes | 监视并报告monkey运行时native code的崩溃事件 | |
--ignore-native-crashes | 忽略因native code的崩溃事件 | |
--kill-process-after-error | 在应用出错后通知系统杀死发生错误的进程 | |
--hprof | 在事件序列前后立即生成profilfing报告 | |
--dbg-no-events | 监视应用程序所调用的包之间的转换 | |
--wait-dbg | 暂停执行中的monkey,直到有调试器与它连接 |
日志分析
1.日志开头
解析命令信息,包括被执行的测试包、指令操作次数及其他参数信息等。
2.日志结尾
指令操作次数、耗时,命令操作结束标识语“Monkey finished”。
3.日志内容分析
事件 |
关键字 |
备注 |
---|---|---|
程序无响应 | ANR | Application Not Responding |
程序崩溃 | CRASH |
一般日志体现为“Exception”或“Error”,常见: 1)NullPointerException:空指针异常 |
其他问题 |
Exception meninfo |
同上可能导致崩溃的Exception,可以通过“Exception”关键字进行搜索, meninfo关注是否存在OOM |
Monkey执行的Activity | Switch | 一般通过Switch确认异常所在的Activity位置 |
可以通过关键字对采集的日志进行搜索、通过PowerShell或cmd命令窗口或android studio的日志输出进行确认,可以结合抓包工具、kibana等日志进一步确认业务请求的情况。
注:Android Studio切换日志等级后,日志就会被清空,建议慎用该功能。
4.问题重现
1)通过日志确认出错前的事件操作、手动执行复现;
2)按照原来的操作场景重新执行对应含seed值的命令进行复现。
monkey复现之seed值
使用-s参数来指定命令执行的seed值
Monkey会根据seed值来生成对应事件流,同一个seed生成的事件流是完全相同的。这里指定了seed值,是为了测试发现问题时,便于进行问题复现。
用于指定伪随机数生成器的 seed 值,如果 seed 相同,则两次 monkey 测试所产生的事件序列也相同的。
monkey 测试1:adb shell monkey -p com.kaiyuan.developmentbusiness –s 10 100
monkey 测试2:adb shell monkey -p com.kaiyuan.developmentbusiness –s 10 100
两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的;
测试准出
稳定性测试过程中APP端没有出现ANR、Crash和任意Exception及OOM等情况(含日志),以及不存在业务请求的异常、客户端操作的异常等。
执行命令参考
测试人员可以结合以上指令根据需要进行测试:
|
已知问题参考
firebase监控到的异常:----这个平台监控的数据不够精准,有发现顶部统计数据不对齐的情况以及客户端获取到崩溃但是这里没有捕获到的情况
拓展
1.adb命令--远程连接设备
|
2.adb命令--隐藏状态栏相关
|
3.Android studio的性能分析面板
APP性能测试时可以结合该监控进行相关指标确认,有兴趣可以拓展学习下Android studio相关功能。
可参阅文档:
1、adb基本介绍:Android 调试桥 (adb)
2、adb环境安装:adb环境配置详细
3、monkey的基本介绍和用法:UI/Application Exerciser Monkey
1.Android稳定性测试相关推荐
- android 稳定性测试工具,APP 稳定性测试工具-Fastbot_Android详解
基于monkey的二次开发,约束monkey的行为,比monkey更智能. 写在开始 monkey测试的随机性概率过大,导致其效率并不能达到预期.有时可能遍历了很久,依旧与最有可能发生问题的部分擦肩而 ...
- android稳定性测试
1.monkey介绍 说到稳定性测试我们就不得不说monkey,monkey就是猴子,所谓的稳定性测试,就像一只猴子,在设备上进行随机点击触摸等事件操作以此来发现软件的异常,它的主要目的就是为了测试a ...
- Android稳定性测试工具Monkey的使用
综述 Monkey是一个命令行工具,它可以运行在我们的模拟器或者设备当中.它可以发送一些伪随机(pseudo-random)的用户事件流,例如点击,触摸,手势等.我们能够使用Monkey工具来对我们所 ...
- monkey Android稳定性测试
monkey测试原理: Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进 ...
- python:app稳定性测试工具
工作中因要测试app的稳定性,市场上多用于monkey进行稳定测试,而字节跳动开源了一个基于monkey的稳定性测试工具Fastbot,使用了一阶段,超级棒. 因为每次都要去输入一堆命令,故写了一个第 ...
- android驱动测试,Android: 通过 cucumber 驱动 monkey 做稳定性测试
主要内容 稳定性测试是什么 Monkey 介绍 自动化 Monkey 稳定性测试是什么 通过随机点击屏幕一段时间,看看 app 会不会奔溃,能不能维持正常运行. Monkey 介绍 Monkey 是一 ...
- python实现android应用稳定性测试
一.作用 长时间操作app是否会出现崩溃和anr现象,发现人无法感知的crash 二.实现原理 使用python模拟终端输入monkey命令,同时抓取ERROR级别及以上的logcat日志,最后通过数 ...
- android系统稳定性测试,Android的稳定性
概述 Android的稳定性包含以下几个方面: 1.ANR 2.Crash 3.Tombstone 4.Freeze 5.黑屏 6.冻屏 #稳定性问题分析以及需要的相关log /data/anr/tr ...
- [原创]Android Monkey测试工具使用介绍
[原创]Android Monkey测试工具使用介绍 1 Android Monkey介绍 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件 ...
最新文章
- linux 安装mysql
- 质量意味着在没有人看的时候把它做对
- javascript里你绝对用的上的字符分割函数--原创
- 用C#写的一个注册表操作类
- 计算机c盘用户,windows 7 c盘的用户文件夹users如何转移
- Oracle典型应用场景--数据迁移到本地测试
- javaee字符缓冲输出流
- 金牛判势 精品起涨预警 主升浪起爆点指标 通达信绝对精准买点指标选股公式
- 远程控制teamviewer|远程桌面teamviewer|远程桌面连接软件teamviewer|teamviewer无人值守
- python中计算ln和lg的方法
- 万能的5款工具推进活动策划方案
- 各种滤镜算法C语言,Photoshop入门学习之PS 滤镜算法原理——染色玻璃
- iHRM 人力资源管理系统_第7章 POI报表的入门
- 2022年Spark基础学习笔记
- 反转链表详细讲解(就地逆置法)
- win 10使用模拟器蓝屏解决方案
- 神经网络 深度神经网络,深度神经网络训练
- Some MATLAB tips (二)
- 还在说软件测试没有中年危机?9年测试工程师惨遭淘汰
- mysql 数据表中文转拼音 sql中文转拼音 SQL中文转拼音首字母大写
热门文章
- 哈佛结构和冯·诺依曼结构的区别
- 若依RuoYi-Vue前后端项目启动流程
- 【比特熊故事汇】X Microsoft Build 2022——微软专家+MVP,技术亮点全解析
- 找工作就上智联,效果真快,然而让我去的公司都是泡我呢
- MA8601 无需更改电路直接pin√pin替代FE8.1s方案
- 种植的黄瓜,为什么会出现早衰?如何防治和补救?
- 【Win10 UWP】微信SDK基本使用方法和基本原理
- STM32CubeMX安装问题【尤其是Java环境没安装好的情况】
- c语言程序设计五子棋棋盘怎么画,五子棋的棋盘画不出来,求助!!
- 139邮箱无法验证服务器,139邮箱无法登陆原因,怎么登录自己的139邮箱