这是《落叶》文集里第 178 片落叶,希望你能喜欢,不为别的,只为这份坚持。
【背景】
有同学提问:请问用什么工具可以测试 android 的APP 登录功能(等类似功能)的响应时间 ?
自己目前调研有:1.模拟器 2相机,根据帧来分割计算响应时间 3.appium 自动测试工具 ,编写脚本来监控返回时间 4. 安卓自带 SDK 中的adb shell screenrecord 请问 。
自己的思考点,响应时间包括从界面发起请求到服务器完全返回内容的时间,主要是想做一下APP性能方面的测试。
【你问】
APP 页面的响应时间怎么测更准确?
【我答】
首先,这位同学对于页面响应时间的理解没错,从用户角度来说,APP 的性能,即请求的响应时间包括:
用户界面发送请求的时间 + 网络传输时间 + 服务端处理时间 (包括数据层的处理时间)+ 网络传输时间 + 用户端展示返回结果的时间,如下图:
从概念上来说:响应时间,就是指应用系统从发出请求开始到客户端接收到所有数据所消耗的时间。该定义强调的是所有数据都已经被呈现在客户端所花费的时间。
我们再来看看这位同学思考的几种手段:
1、模拟器;
2、相机,根据帧来分割计算响应时间;
3、appium 自动测试工具 ,编写脚本来监控返回时间;
4、安卓自带 SDK 中的 adb shell screenrecord;
这几种手段其实都是想通过 APP 页面的实际交互来计算这个页面的响应时间。先不说这几种测试方法的准确性如何,就说用几种方法如果发现某个页面的响应时间过长,那如何定位是哪个环节的处理性能比较差而导致的呢?
从上图我们不难看出,网络传输时间我们可以忽略,无论是 Android 还是 iOS,在对返回结果的展示速度上影响也很小,所以,APP 页面响应时间的核心时间段是服务端的处理时间(业务层+数据层),也就是服务端接口的响应时间,这才是我们对 APP 页面的响应时间,也就是 APP 的性能测试重点。
常用的服务端接口性能测试工具:LoadRunner(企业级,收费的)和 JMeter(开源的,免费的)。
我们在工作中用的主要是 LoadRunner,主要是用来测主要接口的压力测试,通过不同的虚拟用户数,来找寻服务端的性能瓶颈。同时,针对不同的场景,对一些接口做大用户的并发测试,比如,在很短的时间内,同时有多少用户登录等等。
LoadRunner 的性能测试结果报告里有一项专门统计分析接口响应时间的,如下图:
Transaction Summary 图:
1、第一行数据是统计场景运行时所有事务通过、失败和停止的数量;
2、表格里:具体每个事务的详细信息;
(1) Transaction Name,事务名
(2) Minimum,事务运行的最短时间
(3) Average,事务运行的平均时间
(4) Maximum,事务运行的最长时间
(5) Std.Deviation,标准方差。从数学角度来看,方差值越大,说明这组数据波动性越强,参考性越弱,反之参考性越强;
(6) 90 Percent,Controller 在运行场景时,并不会显示这个值,因为它是对整个一系列数据统计的结果。表示一个事务在执行过程中90%所花费的时间,例如:一个事务执行了100次,对这100次事务响应时间进行升序排序,第90%即第90次事务运行时间;
(7) Pass,通过的事务个数;
(8) Fail,失败的事务个数;
(9) Stop,停止的事务个数;
《测试路上你问我答》里的 Q&A 36,如果是你要的,甚好!如果不是,你问,我答!
作者简介:14 年测试 + 11 年项目管理 + 11 年团队管理 = 一个测试老兵