前言

这两周用python自己折腾了一个安卓性能测试工具,当然,整套工具的功能还不够完善,但是,测试几个指标基本上是没什么问题的。本着结果驱动的原则,先用这套工具来试试我们的宇宙级炒股APP**微证券**(下称宇宙APP)的性能。

工具概览

工具的开发流程在这里:《AndroidTestTool开发笔记》

工具由两部分组成,一是客户端,二是web端,具体怎么划分的?其实我就是看心情。工具大概长这样

工具的作用

工具大概监控这么几个指标,内存、cpu、wlan流量,以及封装了Monkey做满负载执行。

多次测试正常使用的指标

一次测试—模拟正常手工操作

首先模拟正常的操作监控内存、cpu和wlan流量(全程使用wifi,所以这个指标代表流量的消耗),测试时间5分钟左右(使用秒表记录,时间可能会有略微的偏差)。

第一次内存监控数据:

第一次cpu监控数据:

第一次流量监控:

第一次测试的总结

第一次测试我模拟了正常用户的使用,查看咨询内容、查看个股详情,查看排行榜数据、查看投资学院、修改了头像昵称等操作。

第一次测试暴露了以下问题:

  1. 内存存在抖动现象
  2. cpu走势不稳定

当然一次测试肯定是不够的,上述两个问题的出现很可能是由于其他因素导致的,比如第一次使用APP,会导致加载大量的数据,导致CPU使用量巨大,内存不稳定等问题,而且第一次使用需要加载大量的数据,流量也会慢慢的往上走,带着这些问题,继续进行第二次测试。

二次测试—模拟手工测试

二次测试如同第一次测试一样手工执行,获取的指标如下:

第二次内存监控数据

第二次cpu监控数据

第二次流量监控数据

第二次测试结果的总结

从第二次测试结果来看,与第一次的结果并没有很大的出入,内存轻微抖动依然存在,CPU时高时低的情况也没有消除,流量数据也是老样子,不过综合第一第二次来分析,APP的流量消耗其实并不大,流量攀升都在APP打开的初始阶段,也就是在刷财讯数据的时候,都是加载新的资源,其他时候流量的消耗都是缓慢上升。属于可接受范围。

那么问题来了,是因为APP内部的代码有问题,进行了过多的数据处理、图形的绘制,导致走势图抖动,还是正常处理数据的走势图就是这样呢?为了确认这个问题,我找了其他同类的APP进行竞品测试。

竞品测试

竞品我选择了腾讯的自选股,作为互联网龙头企业的产品比较有标杆作用,来看看自选股的表现怎么样。

同样的时间,同样的我在操作,我们来看自选股的几个指标的表现。

自选股内存监控数据

自选股cpu监控数据

自选股流量监控数据

综合自选股测试结果的总结

从自选股的三个指标来看,内存的轻微抖动属于正常现象,只要不超过最大值引发OOM,也不是全程频繁的抖动,我们都可以认为是合理的。CPU的上下波动属于正常现象,行情方面涉及到大量的数据处理,CPU标高,离开行情页面,CPU走低,这种波动也属于正常现象。从趋势图我们可以看出,自选股的内存抖动情况比我们的宇宙APP更加频繁,cpu的浮动相对较少,二者都可以理解为正常的范畴。

从流量上看,自选股显然要比我们的宇宙APP少很多,但是由于APP安全处理等原因,导致没办法抓通讯数据进行分析,只能从表现层来分析数据,自选股的行情数据是通过手工刷新来更新数据的,而我们的宇宙APP是自动刷新的,也就是说在测试的5分钟内,自选股的行情只有我手工触发刷新时才会产生流量,而我们的宇宙APP属于5分钟内无时无刻都在刷新数据,因此产生的流量较高,当然影响流量的因素还有很多,由于种种原因没办法做很深入的分析,只能做一个粗浅的判断。

结果

有图有真相,有数据有真相,从这三个指标来看,我们的宇宙APP离行业的标杆产品还有一些距离,但是这个距离并不大。

当然。APP的好坏不仅仅是这三个指标衡量的,还有功能,用户体验,流畅度等等许多因素影响,本文仅列出这三个指标是因为我的测试工具目前只能测试这三个指标。

现在,来一组满负载(使用Monkey执行)的指标图:

内存信息:

cpu信息:

流量信息:

由于我对Monkey命令没有做优化处理,因此单一的结果并不具有参考性(很明显,上面测试最后转到了一个死胡同里一直跑,数据全部都是平缓的走)。这里只是为了说明,我们宇宙APP的性能还可以,Monkey并没有跑挂,啊哈哈哈哈!

其他指标

除了我自己工具的几个指标以外,还有一些其他指标,比如gfxinfo、GPU过度绘制等,我也做了一下简单的测试。

gfxinfo

这个指标其实就是FPS,打过游戏的对这个名词应该都不陌生,在APP中就表示动态绘制某个页面的时间,官方的说法是大于16MS就会产生卡顿的感觉。这个指标主要是用来衡量一些动态场景的流畅度,在炒股APP里面,一个股票列表的滑动,另一个是自选个股左右滑动的切换。

gfxinfo有三个参考的指标。Draw、Process和Execute。

Draw表示显示列表的时间开销,记录了所有view对象的绘制时间,这个指标高,要么就是view太多,要么就是执行效率太低。

Process表示显示列表中绘制指令的时间,这个指标过高就表示View的数量过多。

Execute表示一副图像由合成器合成的时间,这个指标过高就表示合成的效率低下。

针对这个指标,我们的宇宙APP基本上是惨不忍睹。请看图:

在绿色横线以上都是不合格的。所以在使用的时候快速切换个股,可以很直观的感觉非常非常的卡。图中Process的指标突破天际了,所以可以初步断定View的数量过多

对比对比其他的我们看看结果。

看了这么些APP的表现。。。只能说券商系的APP在这点上是一脉相承的烂到渣,而互联网公司的产品用户体验就会好上很多。

GPU过度绘制

GPU过度绘制指的是在屏幕一个像素上绘制多次(超过一次),比如一个TextView后有背景,那么显示文本的像素至少绘了两次,一次是背景,一次是文本。GPU过度绘制或多或少对性能有些影响。

参考指标:

蓝色 1x过度绘制

绿色 2x过度绘制

淡红色 3x过度绘制

红色 超过4x过度绘制

怎么理解这个指标呢,打开GPU显示,如果是红色一片,就表示绘制过度,如果是蓝色绿色,就表示整个UI的体系设计的还是很好的。

我们来看看宇宙APP的表现。

可以看出,淡红色一整片附带了一些深红色,也就是说过度绘制是比较严重的。

上图是微信的表现,可以说是非常棒的,可以说,几乎看不到红色。当然,不同类型的产品可比性是比较低的。就像上文中我们说CPU上下跳动很大的情况一样,同类产品的比较才能看出问题。我找了自选股和同花顺的图来对比。

自选股:

同花顺:

可以看出,自选股和同花顺都是非常重度的进行了绘制,也从侧面反映了一个问题,行情页面的展示UI是比较复杂的,难免涉及到重复绘制的问题,而IM类的软件结构相对简单,因此重度绘制不明显。

不过话又说回来,这种绘制消耗最大的是CPU。而现在安卓手机的配置高的吓人,CPU没有个4核都不好意思拿出来卖,更何况旗舰级都已经到八核十六核了,再多绘几层用户也不会有感觉。

但是高CPU会大大增加电量的消耗,为什么玩游戏耗电特别快,就是因为游戏动画需要吃非常高的CPU,手机发热,耗电加快,因此这个指标虽然不影响用户体验,但是在不影响功能的情况下,进行优化,也是对APP一个很大的提升。

结语

文章列的一些指标都是无需root无需代码,从一些侧面就能够发现的性能问题,还有很多指标,比如uss需要root,数据处理和IO等指标更是需要从代码入手去埋点检查,衡量一个APP的好坏也不仅仅是看这些指标,还有很多其他因素,So,学习之路还很长。

宇宙APP简单的性能测试相关推荐

  1. pythonapp自动化_Android App持续集成性能测试:使用Python实现UI自动化

    本帖最后由 Android_Robot 于 2016-10-26 15:12 编辑 本篇内容主要为大家提供的是Android App持续集成性能测试:使用Python实现UI自动化.感兴趣的同学可以参 ...

  2. Jmeter简介以及简单模拟性能测试

    1.Jemter简介 1.我们为什么使用Jmeter 开源,免费,基于Java编写,可集成到其他系统可拓展各个功能插件 支持接口测试, 压力(负载和压力)测试等多种功能,支持录制回放, 入门简单相较于 ...

  3. python os.system(cls)没反应_这真的是全宇宙最简单的Python安装方式了

    大家安装Python一般都是怎么安装的呢?每次有同学来问老师Python的安装方法时,老师都会教大家如何到Python的官网下载最新的Python安装包.但近来也有同学在反应,由于Python的官网在 ...

  4. 宇宙最简单排序:桶排序

    目录 介绍: 我的程序: 介绍: c++的排序方法非常多,比如啥冒泡啊.选择啊.插入啊......,有时候编游戏也用到排序,但我是一个很勤(lan)快(duo)的人,想用冒泡什么的忒麻烦了,复杂度又高 ...

  5. Android adb模拟走步,某 APP 跑步模块性能测试

    背景 需要实现跑步性能测试,我们的实现流程是安卓开发单写了一个类似于小熊快跑的 app,这个 app 的唯一功能是解析 gps 文件,然后快速模拟定位,然后打开某 APP 跑步模块,就可以模拟跑步了, ...

  6. 某 APP 跑步模块性能测试

    背景 需要实现跑步性能测试,我们的实现流程是安卓开发单写了一个类似于小熊快跑的app,这个app的唯一功能是解析gps文件,然后快速模拟定位,然后打开某APP跑步模块,就可以模拟跑步了,由于在rele ...

  7. 巴比特 | 元宇宙每日必读:上线三天,用户量突破100万,茅台推出“元宇宙”APP“巽风”,其核心玩法是什么?...

    摘要:1月1日,茅台正式上线元宇宙平台APP"巽(xùn)风",开启了茅台元宇宙数字世界,据了解"巽风"上线仅三天,正式用户数量轻松突破100万.茅台元宇宙世界 ...

  8. JMeter基础之一个简单的性能测试

    我们了解了jmeter的一此主要元件,创建一个简单的测试计划来使用这些元件.该计划对应的测试需求: 1)测试目标网站是www.51cto.com 2)测试目的是该网站在负载达到20 QPS 时的响应时 ...

  9. 性能测试入门(二)转:JMeter基础之一 一个简单的性能测试

    转自:虫师博客 https://www.cnblogs.com/fnng/archive/2012/12/22/2829479.html 个人总结: 关键词:固定QPS限制,线程组设置 测试需求. 1 ...

  10. 基于阿里云物联网的APP简单开发

    目录 一. 产品和设备创建 二. 进入iot studio界面 三. 数据解析过程 四. 重回app开发界面 一. 产品和设备创建 1,登陆物联网平台 2,创建高级版的产品 在数据格式的选择有两种,我 ...

最新文章

  1. 三天打工生活终于结束了
  2. (三)数字判断大小语句
  3. java 自定义 转换器_Java笔记之SpringMVC(七):自定义String到Date的类型转换器
  4. java socket 二次发送_发过2次帖子,都没有了,再发。JAVA中SOCKET通信中的数据压缩问题...
  5. 安装sql server 2000
  6. js 防止重复提交方案
  7. 支付接口调用成功后如何让前端知道_开发口中的「接口」到底是什么
  8. web项目docker化的两种方法
  9. 机器人动力学与控制学习笔记(二)————机器人动力学建模
  10. 关于老黄的DW2XLS一些小bug
  11. 点餐小程序源代码|餐饮小程序源码PHP全开源开发
  12. 《A Neural Layered Model for Nested Named Entity Recognition》
  13. JAVAWEB-NOTE03
  14. 非洲Affrike单词
  15. 韩国本土IP原生IP站群天堂W奥丁游戏香港站群CN2路线大带宽
  16. IE下载文件时,中文文件名乱码问题
  17. ViewportWidth,Width,MeasuredWidth
  18. Linux: 关于 SIGCHLD 的更多细节
  19. 响应式黄色高端家居装修生活空间类网站pbootcms模板(PC+WAP)
  20. 基于SSM实现的健身房俱乐部管理系统-JAVA【数据库设计、论文、源码、开题报告】

热门文章

  1. excel条件格式标记一整行
  2. 《单片机原理及应用(魏洪磊)》第七章第9题
  3. 网络综合布线应用指南
  4. 动态规划-背包问题(易懂)
  5. 使用融资的心得和教训
  6. BGP线路是什么意思?BGP双线的优点是什么?
  7. learning_git_from_Liao
  8. php strict_types
  9. uint16 累加_在一个驱动程序中看到uint16,uint32,unit8,int8是什么意思?有何作用?...
  10. win10升级助手_win7怎么升级win10?腾讯电脑管家升级win10教程