移动app的性能压测如何做?

移动设备app的性能乍一看好像只是跟设备有关,感觉多花点银子,配置一个8G内存,256G存储的手机性能肯定不错。那一个app应用的性能真的只跟设备相关吗?

在测试一个对象时,首先应该了解他的整体架构,这样才能指定出合适的测试方案。那么,一款手机app的整体架构是怎样的呢?目前市面上90%以上的应用都是需要联网的,比如:京东,12306后端都有强大的服务器集群进行支持。所以,像这样的app的整体架构就由两部分组成:客服端+服务端。因此,一款app的性能也由客户端性能和服务端性能组成。即使有一个配置非常高的手机,服务端的性能很差,这个app的体验也会很差的。

首先看服务端的性能,现在大部分的服务都是网站+app的运营方式,服务器集群都是一份,业务数据也都是一份,只是客户不同而已:一个浏览器,一个移动app。所以,他们之间的通讯协议一般都采用http,这样服务端就不用根据不同的客户端而进行适配。既然采用http协议,服务端的性能就可以采用jmeter进行压测(具体压测方法不在这详细讨论)

那客户端的性能应该关注那些方面?对于和服务器交互的点,比如,用户登录。它的性能点主要在于服务器的接口返回时间。而客户端性能主要应该关注一些强渲染或者CPU,GPU高消耗的页面,比如:高清电影的播放是否卡顿,以及一些高渲染的页面打开时间。那这些页面加载页面的性能该如何测试呢?主要有两种方案:

  1. 在关键高渲染页面启动函数和加载完成函数加入时间戳,通过查看日志来计算页面的加载时间。这样的方式比较简单,但是也可能存在误差,比如加载完成函数调用完成后,时间渲染页面并没有现实完成,所以此方法挑选加载完成函数是个技术活。

  2. 使用一个高速录像机对屏幕进行录像,然后将录制后的图像解压缩,挑选启动时的帧和加载完成的帧,再计算这两帧之间一共有多少帧,最后除以帧率就可以得出加载时间。但是这种方式最困难的就是挑选起始帧和结束帧,摄像机在高速录屏时会有大量连续的影像。为了解决这个问题,一般会在被测对象每一帧上打上特定水印页码,最后通过识别页面来计算加载时间。这种方式一般在视频播放上使用的比较多。这样的测试数据是最直观和最接近用户感官的,但是测试难度也是最大的,测试过程中干扰因数会很多,比如光线,以及高效的自动识别水印技术。

  3. 有人说monkey,其实monkey测试更多的应该属于fuzzing随机测试,只是这种测试执行的时间久一点,应该说压力比较合适。主要用于在功能测试中发现一些没有覆盖的点,以及长时间使用APP是否会导致crash,而无法精细的测试到具体功能的性能

你可能感兴趣的:(移动app的性能压测如何做?)