最近重新拾起了客户端性能测试,准备将之前调研但是没有继续深入或者没有落地的项目完整的实施一遍。
目前公司在客户端性能测试这块基本没有投入,主要原因还是每日的pv/uv, 高峰期的数据访问不是很大,对线上服务器的性能造成不了大的冲击。领导和公司更关注的还是降本增效,测试质量等看得见摸得着的东西。但是不能说客户端性能测试就不重要,只是对比于自动化、测试平台、数据治理、环境治理等项目,优先级不高。
如果想深度了解客户端性能测试,没有客户端开发的参与基本是不可能的。但是客户端性能测试不是客户端开发的主okr, 只能测试来尝试发现并解决问题。解决问题暂且不提,先看看怎么才能发现客户端的性能问题。
在之前的公司使用过腾讯GT来测试app的性能,一般的性能参数有: FPS、上下行网络、carsh、ANR、电量、冷热启动时间等。使用这个软件测试后,可以得到一定时间参数对应的数据。我们可以求平均值,然后每个版本迭代来比较;或者和开发确认好阈值,当某个数据超过对应的阈值,就通知开发来处理。
除了使用开源工具来测试客户端性能,我们还可以使用monkey来测试。针对于我司现有的情况,分析如下:
1.该客户端性能测试框架可以支持安卓和ios两个系统
2.可以深度遍历app内部功能
3.可以指定app页面进行压力测试
针对于第3点,要跟大家说下为什么会有这个需求。原因就是我司测试部门是分散在各个业务部中的,在测试app压力测试时,只希望来测试我自己模块。网上搜了下,发现 CSDN中有一篇文章符合第3点要求,而且是开源的
https://miaojiang.blog.csdn.net/article/details/127021161?spm=1001.2014.3001.5502
具体的操作步骤可以参考上面的文章
我在使用中也遇到一些问题,有幸联系上了作者喵酱,解决了一些问题。下面就说下这个开源工具的使用:
adb 命令:
1.要测试的包名
com.xxx.xxx
2.清除当前cmd窗口中的内容
cls
3.获取当前的activity
adb shell "dumpsys window | grep mCurrentFocus"
4.需要测试的activity
5.app的主activity
将对应文件解压在同一个文件夹下,并运行命令:
java -jar monkeyTest.jar
可以使用该 jar包对指定的页面进行 monkey压力测试
同时说下我在使用过程中发现的优点和缺点:
优点:
1.可以针对指定的页面进行Monkey压力测试,精确测试范围,得到的日志不会包含太多其他模块的Crash和ANR
2.app的UI自动化是每个版本跑一次,频率低,起兜底作用。对app的压力测试可以在每个版本上运行,提前发现问题.
3.如本次需求在某个页面有更改,可以在这个页面中跑Monkey, 设定不同的比例来模拟用户使用并发现问题
4.Monkey脚本中各种动作所占的百分比可以随时调整,可根据研发提供的测试范围有针对性的进行测试。
缺点:
1.需要安卓客户端开发修改代码,修改 config.xml , 可能需要修改 manifest.xml文件
2.将指定的Actiovity加入到白名单,30秒轮巡查验app当前页面对应的Activity是否在白名单中。在30秒内app可能会运行其他Activity中。可以缩短轮巡时间,可能会引发不可预见问题(?)
3.不同的页面有可能Activity名称是一样的,Activity没有唯一性
4.压力测试发现的问题,偶现较多,可能无法确定问题发生的路径,即无法复现
5.偶现的Crash和ANR, 研发不太好处理
好的,今天先到这里,看看大家有没有合适的客户端性能测试方案
本文暂时没有评论,来添加一个吧(●'◡'●)