Monkey指定页面压测及日志分析

发布于:2022-12-08 ⋅ 阅读:(1198) ⋅ 点赞:(0)

原文: 

安卓应用测试&Monkey&MonkeyScript&MonkeyRunner&pyhton性能工具脚本_傲娇的喵酱的博客-CSDN博客

指定页面进行monkey 测试_testlyIII的博客-CSDN博客_monkey指定页面测试

 【转】指定页面进行Monkey测试 - 爱码网

目录

 一、 指定页面进行压测

二、monkey bugreport 测试报告分析

2.1 Android adb bugreport工具分析和使用

2.2  battery-historian解析数据

2.3 使用jar包解析数据


一、 指定页面进行压测

前言:

目前大部分的Monkey测试的方式大都无法对独立的模块进行稳定性测试,而每个业务线的入口在测试阶段很难通过原生的Monkey测试(随机性较强)来发现自己模块内crash的问题,针对这个问题,这个工具设计开发的初衷就是为了能够缩小测试范围,在测试阶段指定业务模块内发现和暴露更多的稳定性相关的问题。

解决问题:

当App业务变多的时候之后我们需要对App内的业务模块进行针对性稳定性测试。由于原生的Monkey随机性较强,很难 对指定的Activity进行针对性的monkey测试,Demons的出现就为了解决了这个问题。

原理:

原理其实就是有一个后台任务可用定时巡检PC上所连的每个设备当前运行在哪个页面,如果发现设备已经crash或者当前页面不在我们指定的白名单页面,那么该程序会自动处理当前进程的数据并初始化回到主入口。

工具特点:

  • 只要手机连上就可以进行监听,无设备数量限制。
  • 可以在每次越界之后随机分配回到一个主入口 进行初始化。
  • 工具与Monkey执行模块是分离的,这样可以防止相互影响。

jar包git下载地址:

GitHub - 18713341733/MonkeyJava

 里面就一个配置文件config.xml 和jar包。

使用方式:

1、将工具下载下来放到本地目录下
2、配置工作目录config.xml文件

第一步,获取app的package,并填写配置文件xml

第二步,获app程序的入口activity,并填写配置文件xml

①:adb shell dumpsys window windows | findstr "mCurrent"

②:adb shell dumpsys activity | findstr "mFocusedActivity"

第三步,获取并输入activity白名单:

①.也可以使用adb logcat -v time -s ActivityManager,点击app功能跳转想要测试的页面,cmd页面就可以刷新获取到跳转页面的activity,然后把activity输入到白名单内

【注:当白名单内的activity的数量大于1的时候,每个activity后面都需要添加英文逗号 “,” ,最后一个不需要添加,否则多个白名单的activity的value就会链接在一起,导致程序检测到与当前页的activity不一致,就一直返回到主页面activity上,影响测试】

需要对指定模块设置白名单,在设置白名单前需要知道当前功能页面的Activity。

在win系统中:

adb shell dumpsys activity | findstr "mFocusedActivity"

注意:在win才有findstr这个命令,mac的命令是grep

验证主入口是否有跳转权限

adb shell am start -n 包名/Activity名

主入口如果配的有问题会出现以下错误,原因是Activity 没有调用权限

  根据以上名称查看当前功能的Activity,将该页面配置至白名单,如下图所示。

3、monkey执行

将单个或多个设备连接电脑

  打开cmd命令窗口,进入当前jar包所在目录,执行

java -jar monkeyTest.jar

等待初始化完成

  再启一个cmd命令窗口,执行monkey命令即可。

缺陷:

每个页面都会有个activity,而且,会出现多个页面共有同一个activity的现象,这样的话,就有个缺陷,如果有个A页面下的B页面,他们的共用同一个activity,我只是想在A页面跑monkey,B页面不跑monkey,这个需求是无法通过这个方法达到的,所以,A、B页面都会测试到,原因就是,他这个是针对activity的测试,只要是白名单里的activity,都是可以测试到的,除非A页面、B页面不共用一个activity。这个技术只是比基本的monkey更细化一点,还无法真正达到指定A页面moneky测试

二、monkey bugreport 测试报告分析

当我们使用monkey命令执行时:

adb shell monkey -p com.xxx.Test --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000>/Users/zhaohui/Desktop/monkeylog.txt

会在Desktop/生成一个monkeylog.txt文档,这个文档就是monkey记录的日志,包括monkey执行的步骤,app的日志等。

我们在执行monkey后,其实会生成2个日志文件,一个是monkey记录的,一个是adb bugreport记录的。

在我们电脑终端,执行命令。

adb bugreport > bugreport.txt

就可以在当前位置生成一个bugreport.txt文件。

2.1 Android adb bugreport工具分析和使用

Android adb bugreport工具分析和使用 - Android移动开发技术文章_手机开发 - 红黑联盟

Android系统想要成为一个功能完备,生态繁荣的操作系统,那就必须提供完整的应用开发环境。而在应用开发中,app程序的调试分析是日常生产中进程会进行的工作。Android为了方便开发人员分析整个系统平台和某个app在运行一段时间之内的所有信息,专门开发了bugreport工具。这个工具使用起来十分简单,只要在终端执行(linux或者win):

1.Android系统版本>=8.0,直接使用指令adb bugreport,例如:

adb bugreport > bugreport.txt
或者:
adb bugreport > C:\Users\ymlu\Desktop\bugreport.txt

2.针对Android系统版本<8.0,终端切至路径C:\Users\ymlu\Desktop\adt-bundle-windows-x86_64-20140702\adt-bundle-windows-x86_64-20140702\sdk\platform-tools下面,运行adb.exe;然后运行adb bugreport即可

即可生成bugreport文件。

bugreport文件有的时候异常庞大,能够达到15M+,如果我们用文本工具打开一个几十m的txt文件,是一件很痛苦的事情。

实践中发现bugreport只能导出近2小时的日志,所以需要在monkey测试中设置定时任务来定时导出bugreport日志,以便全面分析被测APP在monkey压测过程中出现的问题。

因此google针对android 5.0(api 21)以上的系统开发了一个叫做battery historian的分析工具,这个工具就是用来解析这个txt文本文件,然后使用web图形的形式展现出来,这样出来的效果更加人性化,更加可读。

2.2  battery-historian解析数据

从bugreport导出手机数据,通过battery-historian解析原始数据进行多维度分析功耗异常

 下载地址:GitHub - google/battery-historian: Battery Historian is a tool to analyze battery consumers using Android "bugreport" files.

 具体使用方式,百度一下吧。

2.3 使用jar包解析数据

我们通过jar包,也是解析的adb bugreport 产生的数据。

jar包地址:

GitHub - 18713341733/bugreport

命令:

adb bugreport > bugreport.txt

在当前目录生成了一个压缩文件bugreport.zip

解压bugreport.zip。解压之后,有一个文件名称带有日期的txt文件。

类似于bugreport-TAS-AN00-HUAWEITAS-AN00-2022-08-19-11-24-15.txt

我们使用jar包,就是具体解析的这个文件。

将这个文件重命名为 bugreport.txt,然后将jar包与txt文件放在同一目录下,执行

java -jar chkbugreport.jar bugreport.txt

即可在当前目录生成报告。

 打开index.html,就是报告

本文含有隐藏内容,请 开通VIP 后查看

微信公众号

今日签到

点亮在社区的每一天
去签到