欢迎大家来到IT世界,在知识的湖畔探索吧!
monkey 是什么
monkey 是一款通过命令行来对我们APP进行测试的工具,可以运行在模拟器里或真机上。它向系统发送伪随机的用户事件流,实现对正应用程序进行压力测试。
伪随机是个什么?是因为该随机事件可进行复现(定位可能出现的问题)。我们每次执行一组随机事件,系统都会给一个随机的ID,称之为seed。若我们想将该组随机事件再次执行一遍,则使用-s+seed+count即可。
那么monkey的使用场景是哪些呢?
monkey 测试是 Android 平台自动化测试的一种手段,通过 monkey 程序模拟用户触摸屏幕、滑动 Trackball、按键等操作来对设备上的程序进行压力测试,检测程序多久会发生异常。(当然也可以做自动化测试)开发人员结合 monkey 打印的日志 和系统打印的日志,修改测试中出现的问题 。
那什么时候进行压力测试呢?等产品稳定,没有太多的bug 的时候,一般会用 monkey 去测试待测应用的稳定性,健壮性(是否会发生闪退,崩溃,无响应)和整机测试
1、确保电脑已安装adb直接下载adb 安装包,把相关文件放到 c:/windows/system32 目录和 c:/windows/system 目录下,完成安装
2、jdk环境已配好(没配好自己配吧,自己配不好请移驾https://www.baidu.com/s?ie=utf-8&wd=jdk%E7%8E%AF%E5%A2%83%E6%90%AD%E9%85%8D)
为什么要配置jdk
1) Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar;
2) Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/system/bin/monkey;这样就可以通过在CMD窗口中执行:adb shell monkey {+命令参数}来进行Monkey测试了。
3、(安装模拟器/真机)手机已经打开开发者模式以及USB调试状态
4、 把手机锁屏设置为从不
重要的命令参数都有什么
1)参数: -p
参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。指定包之后,monkey将只允许系统启动指定的APP。如果不指定包,monkey将允许系统启动设备中的所有APP。
指定一个包:
adb shell monkey -p com.kaiyuan.developmentbusiness 100
说明:com.kaiyuan.developmentbusiness 为包名,100是事件计数(即让monkey程序模拟 100 次随机用户事件)。
指定多个包:
adb shell monkey -p com.qywlandroid –p com.kaiyuan.developmentbusiness 100
不指定包:
adb shell monkey 100
说明:monkey 随机启动APP并发送100个随机事件。
2) 参数: -v 日志详细程度
用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下表所示:
日志级别 Level0
adb shellmonkey -p com.kaiyuan.developmentbusiness –v 100
说明缺省值,仅提供启动提示,测试完成和最终结果等少量信息
日志级别 Level 1
adb shellmonkey -p com.kaiyuan.developmentbusiness –v -v 100 说明提供较为详细的日志,包括每个发送到Activity的事件信息
日志级别 Level 2
adb shellmonkey -p com.kaiyuan.developmentbusiness –v -v –v 100 说明最详细的日志,包括了测试中选中/未选中的Activity信息
3)参数:-s
用于指定伪随机数生成器的 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值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的;
4) 参数:–throttle <毫秒>
用于指定用户操作(即事件)间的时延,单位是毫秒;
adb shell monkey -p com.qywlandroid –throttle 3000 100
5) 参数: –ignore-crashes
用于指定当应用程序崩溃时(Force& Close错误),monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。
adb shellmonkey -p com.qywlandroid –ignore-crashes 1000
测试过程中即使Weather程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止;
adb shellmonkey -p com.qywlandroid 1000
测试过程中,如果Weather程序崩溃,Monkey将会停止运行。
我这里用的pycharmIDE,写完之后直接建个 .bat放里面就好了,比如
请看我的目录
里面的bugreport_book文件是最后生成的,他从哪里来的呢?
这个时候就该讲一哈我们伟大的插件ChkBugReportChkBugRepor t是一个开源工具,它可以把你得到的bugreprot.t解析成适合阅读的 html 文件。导出的html文件包含了根据 bugreport.txt 数据得出的图表和分析结论。
1、如果这个线程死锁,在报告的Errors将会出现。
2、***.logs 这部分是对system、main和kernel日志的分析,在这里你可以看到每个进程内存使用图、那个程序产生的log最多、Activity的启动耗时、数据库操作耗时统计、对象被锁定- – 时间、AIDL调用时间、Activity和Service的生命周期及其在内存中使用频率等等
3、Processes 操作app过程中产生的系统事件日志、内存使用信息等等
4、Battery statistics 电池使用统计
5、CPU Frequency statistics CPU频率统计
6、Raw data 一些原始数据
https://github.com/Chan-pipi/Chan-pipi
首先添加.config文件,添加内容为
然后创建runmonkey.py文件,主要函数为
1. 引用.config,不然你写它干啥用
不支持该协议取消重新上传
2. 安装安装包
3.执行monkey命令
4. 创建bugreport.txt报告,并生成html文件
5. 完成
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/48336.html