在了解日志之前,先将还有之前还有遗漏的进行补充
补充遗漏
反编译包名
可以不用打开apk就可以获取app的包名,更方便的获取信息
举例:
#windows
aapt dumpsys badging 包名
# mac
aapt dump badging 包名
- 示例代码
D:\PythonAppnium\apk>aapt dumpsys badging google.apk
覆盖应用安装
将原本已近存在apk重新覆盖安装,不需要重新卸载再安装,对app进行测试的时候需要进行覆盖安装测试,查看数据是否有丢失,缓存是否丢失.
举例:
adb install -r 应用程序.apk
- 示例代码
D:\PythonAppnium\apk>adb install -r google.apk
查看app包详细信息
有时候我们使用查找包信息的命令,获取到的不是apk真实的包名,这个时候我们将获取到的主包名拿到,去查看apk包的详细信息
adb shell dumpsys window | findstr mCurrentFocus
举例:
adb shell dumpsys package 主包名
- 示例代码
D:\PythonAppnium\apk>adb shell dumpsys package com.android.chrome
日志模块
日志是我们日常开发或者测试常用到的东西,主要是能够帮助我们快速定位到问题的所在,也能直观的看到报错信息,接下来就详细的说一下关于adb这块如何设置日志
过滤选项
-s 选项:过滤日志标签 ==指定查看某个标签的日志
-c 选项:清除日志缓存
-v 选项:自定义日志格式-vraw-vlong
-f 选项:设置日志输出路径
-g 选项: 查看日志缓冲区信息;
-b 选项 : 加载一个日志缓冲区, 默认是 main, 下面详解;
-B 选项 : 以二进制形式输出日志;
操作日志
将日志输入到指定文件,并记录到log文件
举例:
adb logcat -v long -f 日志输出路径
- 示例代码
adb logcat -v long -f /data/media/0/Download/0120.log
- 将文件导出到本地查看,可以将日志文件发送给开发让其进行排查
C:\Users\admin>adb pull /data/media/0/Download/0120.log Downloads/
Monkey
Monkey概念:Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。该工具用于进行压力测试。然后开发人员结合monkey打印的日志和系统打印的日志,分析测试中的问题
Monkey测试的特点:
Monkey测试,所有的事件都是随机产生的,不带任何人的主观性。
1、测试的对象仅为应用程序包,有一定的局限性。
2、Monky测试使用的事件数据流是随机的,不能进行自定义。
3、可对MonkeyTest的对象,事件数量,类型,频率等进行设置。
- Monkey大致操作流程:
通过名为“monkey”的Shell脚本去启动Monkey.jar程序(shell脚本在Android文件系统中的存放路径是:/system/bin/monkey),在你指定的APP应用上模拟用户点击,滑动,输入等操作以极快的速度来对设备程序进行压力测试,检测程序是否会发生异常,然后通过日志进行排错。
- Monkey测试目的:
测试app是否会Crash(崩溃)
- Monkey操作命令格式:
adb shell monkey{+命令参数}
参数讲解
-p
作用:-p
为约束命令,作用是约束只对某个应用进行测试,your.package.name是你要进行测试的应用包名,如果要对多个应用进行测试可以使用多个
-p 指定包之后,Monkey将只允许系统启动指定的APP。
如果不指定包,Monkey将允许系统启动设备中的所有APP。
指定一个包:
adb shell monkey -p com.android.calculator2 100
说明:com.htc.Weather为包名,100是事件计数(即让Monkey程序模拟100次随机用户事件)。
指定多个包:
adb shell monkey -p com.android.calculator2 –p com.android.calculator2 -p com.android.calculator2 100
不指定包:
adb shell monkey 100
说明:Monkey随机启动APP并发送100个随机事件。
示例代码:
- 运行计算器app100次
adb shell monkey -p com.android.calculator2 100
- 不指定包名运行100次
adb shell monkey 100
- 多个包一起运行 100次 打开设置跟计算器
C:\Users\admin>adb shell monkey -p com.android.calculator2 -p com.android.settings 100
内存不足,或者手机太卡就会出现无响应
可以看到在这儿有两个包名
-v
作用:
用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别
Level 0 (默认)提供了很少的信息除了启动通知,测试完成,和最终结果。-v Level 1
提供了更详细的测试运行,如个别事件被发送到您的Activity。 -v -v Level 2
提供了更详细的设置等信息如Activity选中或未选中的测试信息。 -v -v -v Level 3
- 打印基本日志 Level 0
C:\Users\admin>adb shell monkey -p com.android.calculator2 -v 300
- 打印Level L1级日志
C:\Users\admin>adb shell monkey -p com.android.calculator2 -v -v 300
- 打印Level L3日志
C:\Users\admin>adb shell monkey -p com.android.calculator2 -v -v -v 300
–throttle
作用:
在事件之间插入特定的延时时间(单位毫秒),这样做可以延缓monkey执行事件的速度,默认没有延时,monkey会以最快速度将指定的事件个数执行完。
注:建议使用该参数,建议设置为300,这是模拟人为操作的速度
- 示例
C:\Users\admin>adb shell monkey -p com.android.calculator2 --throttle 300 -v 100
-s
作用:
伪随机数生成器的种子值,如果用相同的种子值再次运行monkey,将生成相同的事件序列。(该种子值对于Bug复现至关重要)
注:如果不指定种子值,系统会随机生成一个种子值,在出现Bug时该种子值会和Bug信息一起被输出,这也是为了便于复现该Bug
- 示例
# 第一次
C:\Users\admin>adb shell monkey -p com.android.calculator2 -s 10 100
# 第二次
C:\Users\admin>adb shell monkey -p com.android.calculator2 -s 10 100
两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的。
–ignore-crashes
作用:
忽略crashes,测试过程中发生crashes继续进行测试【直到执行完指定的事件数】,如果不忽略则遇到crashes,monkey测试则会立即停止
- 示例
C:\Users\admin>adb shell monkey -p com.android.calculator2 --ignore-crashes 1000
–ignore-timeouts
作用:
用于指定当应用程序发生ANR(ApplicationNoResponding)错误时,Monkey是否停止运行。如果使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成。
- 示例
C:\Users\admin>adb shell monkey -p com.android.calculator2 --ignore-timeouts -v 1000
–ignore-security-exceptions
作用:
用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。如果使用此参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成。
- 示例
C:\Users\admin>adb shell monkey -p com.android.calculator2 --ignore-security-exceptions -v 1000
–pct-touch
作用:
触摸,触摸事件泛指发生在某一位置的一个down-up事件,点击
- 语法
adb shell monkey --pct-touch 百分比 -v -v 500
- 示例
- 针对计算器进行占比百分之五十的点击触碰操作
C:\Users\admin>adb shell monkey -p com.android.calculator2 --pct-touch 50 -v 100
–pct-motion
作用:
动作,动作事件泛指从某一位置接下(即down事件)后经过一系列伪随机事件后弹出(即up事件)
- 示例
C:\Users\admin>adb shell monkey -p com.android.calculator2 --pct-touch 50 --pct-motion 40 -v 100
–pct-pinchzoom
作用:
二指缩放,智能机上的放大缩小手势操作事件
- 示例
C:\Users\admin>adb shell monkey -p com.android.calculator2 --pct-pinchzoom 50 -v 100
–pct-trackball
作用:
轨迹,轨迹事件包括一系列的随机移动,以及偶尔跟随在移动后面的点击事件
- 示例
C:\Users\admin>adb shell monkey -p com.android.calculator2 --pct-pinchzoom 50 --pct-trackball 30 -v 500
–pct-nav
作用:
基本导航,基本导航事件主要来自方向输入设备的上、下、左、右事件
adb shell monkey -p com.android.calculator2 --pct-nav 50 -v 500
–pct-majornav
作用:
主要导航,主要导航事件通常指引发图形界面的一些动作,如键盘中间按键、返回按键、菜单按键等
adb shell monkey -p com.android.calculator2 --pct-majornav 50 -v 500
–pct-syskeys
作用:
系统按键,系统按键事件通常指仅供系统使用的保留按键,如HOME键、BACK键、拨号键、挂断键、音量键等
adb shell monkey -p com.android.calculator2 --pct-syskeys 50 -v 500
–pct-appswitch
作用:
应用启动,应用启动事件(activitylaunches)即打开应用,通过调用start Activity()方法最大限度地开启该package下的所有应用
- 示例
adb shell monkey --pct-appswitch 50 -v 500
–pct-flip
作用:
翻转,键盘轻弹百分比,如点击输入框,键盘弹起,点击输入框以外区域,键盘收回
adb shell monkey --pct-flip 50 -v 500
常用Money命令合集
adb shell monkey -v -v -v -s 6666 --throttle 300 --pct-touch 30 -p com.android.calculator2 10000 > D:\monkey.txt
这是一个比较完整的monkey测试命令,3个-v显示最详细的测试信息,指定种子值为666,指定触摸事件占30%,只针对测试包名为com.android.calculator2的应用,指定事件数为10000次,输出的测试信息保存到D盘的monkey.txt文件中。
当然你可以根据你自己的需要添加不同的命令,达到不同的测试效果。
总结
-
本章总结
本章主要是将之前有遗漏的方法进行补充,并讲述了如何打印adb的日志,并输入到本地文件,重要的是monkey命令的讲解,大家可以自己尝试进行monkey的测试
代码地址
https://gitee.com/todayisgoodday/PythonAppnium
博客园地址
https://www.cnblogs.com/yushengaqingzhijiao/category/2024559.html
文章评论