App稳定性测试
稳定性测试就是指软件长时间的持续运行,系统版本是否稳定,是否能否持续的为用户提供服务。
指标:
异常的次数
异常的频率
App的稳定性测试如何实施?
首选Monkey
Monkey是向系统发送随机的用户事件流(如按键输入、触摸屏输入和手势输入等),实现对正在开发的应用程序进行稳定性测试。可以更好的模拟用户操作,确保App的稳定性。
Monkey运行原因
1、Monkey 程序是由 Android 系统自带,使用 Java 语言写成,其本身是安卓系统下的一个monkey.jar文件。在Android文件系统中的存放路径是: /system/framework/monkey.jar;
2、Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中 的存放路径是:/system/bin/monkey;
3、Monkey 启动方式:在 cmd 命令提示符里面输入命令行来启动 monkey 测试。
4、命令行:adb shell monkey——monkey.shell——monkey.jar——安卓进程——设备上执行测试
Monkey原理图:

Monkey原理图:
thon3.7Pycharm社区版
SDK 下载网址:http://www.androiddevtools.cn/
雷神模拟器
58同城apk
二、SDK环境搭建
1、下载 android-sdk,这个是做 android 测试和开发的必备环境
2、解压后,里面有个 SDK manager.exe 双击打开
3.勾选你要现在的 API 版本和对应的 android 版本,后面模拟器会用到,然后坐等下载
在系统变量新建:ANDROID_HOME,对应变量值:
E:\android-sdk-windows(sdk 安装路径)
2.path 添加两个变量,将以下箭头所指的两个文件路径添加到 path 里
path下添加如下两个路径:
E:\android-sdk-windows\tools 和 E:\android-sdk-windows\platform-tools
adb环境
1.因为 adb 是在 D:\androidsdk\android-sdk-windows\platform-tools
这个目录下的,所以上面添加了环境变量后,可以直接在 cmd 里面运行了。
2.在 cmd 输入 adb 可以查看对应版本号
三、连接雷神模拟器—adb connect 127.0.0.1:5555
首先要打开USB调式选项(默认是没有开启调式模式的)
开启调式模式操作步骤:依次打开设置–关于-连击5次版本号,再返到我设置主页就可以看到开发者选项
雷电模拟器:adb connect 127.0.0.1:5555
使用指令:adb devices
连接信息解释
手机设备:显示设备的序列号,即b2355f8a
模拟器:显示ip地址和端口,即127.0.0.1:62001
device:已识别的设备,连接成功
unauthorized:没有授权,需要手机上授权后才能连接
unkown:未识别的设备
offline:离线设备
主流安卓模拟器连接方式:
夜神模拟器:adb connect 127.0.0.1:62001
逍遥安卓模拟器:adb connect 127.0.0.1:21503
天天模拟器:adb connect 127.0.0.1:6555
海马玩模拟器:adb connect 127.0.0.1:53001
网易MUMU模拟器:adb connect 127.0.0.1:7555 MacOS:adb connect 127.0.0.1:5555
genymotion模拟器:adb connect 127.0.0.1:5555
谷歌原生模拟器:adb connect <设备的IP地址>:5555
Monkey
Monkey命令-事件数
Monkey支持的所有命令
adb shell monkey
必选的命令
COUNT:事件数
通过事件数量来测试稳定性
adb shell monkey 次数 即,adb shell monkey 50

注:可能小伙伴发现这速度也忒快了,我看都没看清,这人的速度也没这么快,不合理。哈,那接着,控制每一次操作的间隔时间
Monkey命令-事件间隔
–throttle 在事件之间插入固定延迟。通过这个选项可以控制Monkey发送事件的频率。时间单位是ms(毫秒)1000毫秒=1秒
例1:发送10个事件,持续执行时间1分钟
adb shell monkey --throttle 6000 10,即10个事件,做完一个事件就等待6秒后再执行
–randomize-throttle 用这个参数必须与–throttle 绑定使用。用于在事件之间插入随机延迟,随机延迟范围为0到throttle设置的时间,单位为毫秒;
例:adb shell monkey -p com.tencent.edu --throttle 500 --randomize-throttle 100
备注:扯了半天,小伙伴想知道我要去检测公司的app倒 底要怎么整
Monkey命令-指定包
p 此参数指定了一个包,Monkey将只允许系统启动这些包里的Activity
-p -p 如果用此参数指定了多个包,Monkey将只允许系统启动这些包里的Activity
例3:对58同城进行稳定性测试,执行100次事件
adb shell monkey -p com.wuba 100
获取包名
adb shell pm list packages

知识点:
有可伙伴可能会问,我压根不知道我学习的app的名包叫啥那怎么找呢?
aapt dump badging D:\test\xxx.apk(APK的全名),如手机淘宝.apk
在这里插入图片描述
Monkey命令-日志设置
-v Level 0 除启动提示、测试完成和最终结果之外,提供较少信息
-v-v Level 1 提供较为详细的测试信息,如逐个发送到Activity的事件
-v-v-v Level 2 提供更加详细的设置信息,如测试中被选中的或未被选中的Activity。
例4:对58同城进行稳定性测试,执行100次事件,分别查看不同日志级别记录的信息情况
adb shell monkey -p com.wuba -v 100
adb shell monkey -p com.wuba -v-v 100
adb shell monkey -p com.wuba -v -v -v 100
日志导出到本地
adb shell monkey -p com.wuba -v-v-v 100 >d:\wuba.txt

Monkey命令-seed值
在Monkey运行过程中,肯定会发现异常、奔溃、无响应等问题,对于此类问题如何进行复现呢?
-s 伪随机数生成器的seed值。如果用相同的seed值再次运行Monkey,它将生成相同的事件序列。
monkey日志分析详解
日志内容分析:
a. 程序无响应,ANR问题:在日志中搜索“ANR”
b. 崩溃问题:在日志中搜索“CRASH”
c. 其他问题:在日志中搜索”Exception”
日志内容解析
Monkey 在运行是输出的信息包含一般四类,分别是测试命令信息,事件流信息,异常信息, 执行结果信息:
测试命令信息 此类信息流主要包括在monkey启动后输出的当前执行各种参数信息,其中主要包括:种子值(seed),事件数量,运行的应用列表,各种事件的百分比等。这部分日志信息解析主要如下所示:
// 测试命令信息
// 随机种子值,执行事件数量
:Monkey: seed=1617866276701 count=100000
// 可运行的应用列表
:AllowPackage: com.car300.activity
//Category 包含LAUNCHER 和MONKEY
:IncludeCategory: android.intent.category.LAUNCHER
:IncludeCategory: android.intent.category.MONKEY
// 各事件的百分比
Event percentages:
// 触摸类事件占15%
0: 15.0% 事件0 :--pct-touch
// 手势类事件占10%
1: 10.0% 事件1 :--pct-motion
// 二指缩放类事件占2%
2: 2.0% 事件2 :--pct-pinchzoom
// 轨迹类事件占15%
3: