Android压力测试——Monkey测试
学Monkey测试的本质就是学习monkey命令。
一。 定义
压力测试、稳定测试
压力测试:在一定时间内进行大量操作。
稳定性测试:趋势
二:开展的时机: 功能基本稳定,项目验收前
三、 什么是monkey测试
1. Monkey测试是随机的,它是Android自动化测试的一利手段。
2. 针对整体的APP,不针对某个模块
3. monkey过程中发现的crash、ANR(app not response APP无响应)在上线前必须要解决。
4. monkey谷歌官方的是针对Android, 但IOS爱好者也有了MOnkey版,但这个需要开发者支持,需要IOS开发者打包时把monkey打包进去才能做Monkey测试。
5 。模拟人的操作(调节亮度、调节声音、去截屏,设置)。整体APP验证
6. 伪随机,(本质中有逻辑)
四。 如何做monkey测试
1. 环境的准备
1.1 电脑端的设置
环境变量的设置
SDK压缩,解压缩即可使用。
1) JDK -----JAVA 2)SDK----adb命令里面的环境变量配
配置成功的验证:java -version adb version
1.2 手机端
打开开发者模式--打开usb调试
cmd _____ adb devices显示当前连接的设备
1.3 手机连接adb
2. 执行monkey测试
adb shell monkey
adb shell monkey 200
五、如何安装模拟器,如何在模拟器上安装apk
打开F:\Android\Android Studio\bin下的stuido64.exe
Tools---AVD Manage----创建模拟器
使用adb install 时 提示error: more than one device and emulator
解决办法 :(指定连接某一个设备或者模拟器)
1、获取模拟器/设备列表
|
adb devices |
2、指定device来执行adb shell
adb -s devicename shell |
例如:
adb -s emulator-5554 shell |
在多device的时候,执行adb命令一般都需要用参数-s指定device。例如卸载emulator-5554上的包com.soft.camera adb -s emulator-5554 uninstall com.soft.camera
解决办法:
一般办法:在命令窗口输入 adb start-server 重新启动adb.exe服务
如果上述方法不可以,终极方法:打开任务栏,选择“进程”选项卡,找到adb.exe进程,结束之,重新启动就完事OK啦(或者在命令窗口输入命令 adb kill-server )
在模拟器中安装apk报错:Failure [INSTALL_FAILED_NO_MATCHING_ABIS]
因为在android studio的模拟器是在x86的处理器上运行,而手机一般都是RAM架构的
在android studio 无法运行RAM架构的android app
模拟器是X86,32位操作系统,而打好的包是64位操作系统上打的。所以不行,
解决办法:用夜神模拟器,若是出现了布局混乱,则切换模拟器配置为手机(默认是平板)
尝试过用腾讯手游助手,结果不理想,报错无法运行
常常是在安装并启动了Android模拟器(如genymotion、夜神)或者连接工具客户端(去airdroid)的时候,
使用adb devices命令查看连接的设备,会出现如下报错:
List of devices attached
adb server version (36) doesn't match this client (40); killing...
could not read ok from ADB Server
* failed to start daemon
error: cannot connect to daemon
这是因为模拟器或者连接工具里用到了adb.exe,与本地adk下的adb.exe版本不匹配
解决方法:
把adk-platform-tools下的adb.exe复制到模拟器或者连接工具安装目录下,替换其本身的adb.exe,
如夜神的adb.exe在bin目录下
重启模拟器,再次执行adb devices 就可以获取其设备信息啦
参考解决方案:
装好夜神模拟器后: adb devices
adb版本冲突:一个是36,一个是39
查看adb version版本 =======39
打开夜神模拟器所在目录:F:\Program Files (x86)\Nox\bin
在文件路径框中输入cmd,此时打开命令窗口,且当前目录在F:\Program Files (x86)\Nox\bin下,查看adb版本:nox_adb
D:\soft\nox\Nox\bin>nox_adb
Android Debug Bridge version 1.0.36
Revision 0e9850346394-android
用39替换36版本即可。
替换adb版本
1.找到版本号不一样原因了,接下来把android-sdk里面的adb.exe版本复制出来,然后改个名称叫nox_adb.exe,替换nox安装的路径:\Nox\bin下的nox_adb.exe文件就行了
2.接下来关掉夜神模拟器,重启模拟器,在cmd输入adb devices就可以了
这样还是不行,每次启动都提示客户与服务端版本不一致。一个41,一个39
List of devices attached adb server version (41) doesn't match this client (39); killing...
解决参考: https://www.jianshu.com/p/a7801f32854e
最后是cmd中查看adb的版本及安装路:
去这个路径考了三个文件复制到客户端夜游神的目录下,没有改名为nox_adb.exe
右击夜游神快捷方式,查找其安装路径:
将这个三个文件复制到上图这个路径中就可以了。
接下来,获取app包名:
- adb shell pm list package
获取第三方包名:
- adb shell pm list package -3
获取包名和activity
- adb logcat | findstr START
输入该命令,点击要启动的app,即可获取到包名和activity
由此可得我的应用app的包名为:com.yxy91.creativecat.beta
得到包名后,输入一些Monkey命令,就可以开始测试。
- adb shell monkey -help
- adb shell monkey -p com.yxy91.creativecat.beta 100
说明:参数-p用于约束限制,用此参数指定一个或多个包(即App)。指定包之后,Monkey将只允许系统启动指定的APP;如果不指定包,Monkey将允许系统启动设备中的所有APP,com.sf.DarkCalculator为包名,100是事件计数。
C:\Users\a>adb shell monkey
usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...] /指定包名
[--ignore-crashes] //忽略闪退
[--ignore-native-crashes]
[--ignore-timeouts] //忽略超时ANR
//如果使用以上三个参数,则执行哪生了奔溃或者ANR的问题,会结束app,重新启动执行操作,继续之前的事件数,直到事件数结束,而且会在日志中记录该问题。
[--ignore-security-exceptions] //忽略安全证书
[-s SEED] //序列值,种子值 ,如果两次monkey命令执行一样的seed值,那么表示操作的流程是一样的。但是操作的界面或者对象是否一样,就不能保证了。除非你初始的界面是一样的,
[-v [-v] ...] //日志的级别程序,最大值:-v -v -v 以最详细的日志体现出来。一个-v ,测试结果只有pass(finished)或failed这两个关键字, 两个-v,除了结果成功或失败外,还要记录,启动哪些包名,启动哪些服务,启动哪些执行。
三个-v, 操作的界面,坐标位置等都记录下来。
[--pct-touch PERCENT] [--pct-motion PERCENT]
[--pct-trackball PERCENT] [--pct-syskeys PERCENT]
[--pct-nav PERCENT] [--pct-majornav PERCENT]
[--pct-appswitch PERCENT] [--pct-flip PERCENT]
[--pct-anyevent PERCENT] [--pct-pinchzoom PERCENT]
[--pct-permission PERCENT]
//以上是设置它的操作百分比,涉及到点击,滑动屏幕、双击、提高亮度、截屏、提高音量、APP切换操作,放大缩小等。
[-pct触摸百分比][-pct运动百分比]
[-pct轨迹球百分比][-pct系统键百分比]
[-百分比导航][-百分比主要导航]
[-pct appswitch百分比][-pct flip百分比]
[-pct任意事件百分比][-pct缩放百分比]
[--pct权限百分比]
[--throttle MILLISEC] //延迟时间 单位:豪秒 450ms=0.45S
工作中的事件数: 35万次,延迟时间有设置,更好地贴近人的操作。 事件数+延迟时间,整个时间8-10个小时。
下班的时候执行命令,第二天上班的时候查看结果。
[-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]
[--monitor-native-crashes]
[--kill-process-after-error] [--hprof]
[--pkg-blacklist-file PACKAGE_BLACKLIST_FILE]
[--pkg-whitelist-file PACKAGE_WHITELIST_FILE]
[--wait-dbg] [--dbg-no-events]
[--setup scriptfile] [-f scriptfile [-f scriptfile] ...]
[--port port]
[--randomize-throttle]
[--profile-wait MILLISEC]
[--device-sleep-time MILLISEC]
[--randomize-script]
[--script-log]
[--bugreport]
[--periodic-bugreport]
[--permission-target-system]
COUNT //事件数
结果分析:
1. //Monkey finished表示monkey测试成功,
2. 其他均为失败。需要提交bug.
1) crash 奔溃 logcat日志
2) ANR 无响应 adb shell /data/anr/traces.txt
3) Monkey测试没有完成。异常中断。
4) 关机:电量和温度的影响
5) 重启
bug提交:
标题:
复现步骤:
1。准备:数据准备、环境准备
2. 命驻
3. 查看结果
------开发是不会去看,不会按照步骤去复现,对后来人验证或者自己往后跟踪都是有好处的。
预期结果:
执行monkey无异常。
实际结果:
执行monkey发生crash
日志信息:来源于logcat比较好
日志关键字:
fatal / execption /reboot / OOM /ANR
monkey命令学习:https://blog.csdn.net/duzilonglove/article/details/108552236
C:\Users\duzil>adb shell monkey
usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]
[-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]
[--ignore-crashes] [--ignore-timeouts]
[--ignore-security-exceptions]
[--monitor-native-crashes] [--ignore-native-crashes]
[--kill-process-after-error] [--hprof]
[--pct-touch PERCENT] [--pct-motion PERCENT]
[--pct-trackball PERCENT] [--pct-syskeys PERCENT]
[--pct-nav PERCENT] [--pct-majornav PERCENT]
[--pct-appswitch PERCENT] [--pct-flip PERCENT]
[--pct-anyevent PERCENT] [--pct-pinchzoom PERCENT]
[--pct-permission PERCENT]
[--pkg-blacklist-file PACKAGE_BLACKLIST_FILE]
[--pkg-whitelist-file PACKAGE_WHITELIST_FILE]
[--wait-dbg] [--dbg-no-events]
[--setup scriptfile] [-f scriptfile [-f scriptfile] ...]
[--port port]
[-s SEED] [-v [-v] ...]
[--throttle MILLISEC] [--randomize-throttle]
[--profile-wait MILLISEC]
[--device-sleep-time MILLISEC]
[--randomize-script]
[--script-log]
[--bugreport]
[--periodic-bugreport]
[--permission-target-system]
COUNT
2、adb shell monkey 组织形式
一般adb shell monkey命令后面跟几部分内容:
-v :日志
-s : 操作流程一致
-throttle
(1)基本参数说明
(2)事件参数说明
(3)调试参数
monkey测试工作流程,如何查看日志及定位,以及提交BUG,见下面链接。
https://blog.csdn.net/weixin_46509892/article/details/128367514