一款app对于用户来说,最直接的就是打开app的流畅程度,如果速度太慢了,用户肯定会体验不好,验证的可能会导致用户直接卸载app,这显然会带来巨大的经济损失,因此对于一款app来说,启动时间测试是测试很关键的一个环节,同时如何获取准确的用户体验的启动时间是一项重要工作,也是启动时间优化结果的重要衡量标准。

目前,获取app启动时间一般有三种方法:使用adb命令计算,手工录屏和代码打点等。简单介绍下这三种方法:

一、adb命令计算

通过adb命令可以直接获取进程创建和一系列activity的启动耗时,这种方法比较简单,可以直接获取app的启动时间,但是对于用户来说这个时间不包括用户点击app的时间,因此并不是用户的直接体验时间,但是这个时间还是很有意义的,对于开发来说,这种方法简单快捷,如有优化项能直接看到优化效果,可以作为日常调试用。

二、手工录屏方法

使用特定的工具录制启动的全过程,然后将视频一帧帧的播放,选定开始帧和结束帧,通过相机上右上角的时间戳来计算开始和结束的差值作为启动时间。这种方法过于复杂,虽然可以获取用户的实际体验时间,但是操作成本很高。

而现实生产环境往往运用的就是这种方法,一般来说就是下载个软件,例如时间相机,逐个录制视频,逐帧开始计算,从用户点击开始,到打开app看到某个特定的标志未知,手工记录之间的差值来获得启动时间,这种方法虽然很繁琐,但也是最接近用户体验的一种测试

三、代码打点

主要是在代码中埋下时间戳,通过计算结束时间和开始时间的差值来作为启动时间,缺点与使用adb方法类似,执行到结束的activity,但是view并不一定可见,也就是说该方法仍然无法获取用户的实际体验时间。

为了获得用户真实体验的启动时间,日常的测试中我们使用手工录屏分帧的方式来计算,这种方法虽然可以获得真是的启动时间,但是缺点也和明显,需要手动录屏、人工计算,操作起来费时费力费心,尤其是在实际操作中,往往需要多次测试取平均值,这种方式不仅效率低,而且很打击测试人员的工作积极性。

 

四、自动化

既然手动录制视频这么麻烦,那么有没有什么更好的办法来帮助我们呢?

首先的话我们就想到了能不能用机器代替我们手工的录制操作了,因此我们可以使用自动化方式来替代手工录屏和手工计算,将测试人员从手工测试中解放出来。

博主在网上偶然间看到stagesepx,仔细看了下感觉收益良多,我想说的是:虽然我们不会创造工具,但我们要学会使用工具~

下面楼主贴出stagesepx地址:https://github.com/williamfzc/stagesepx

目前楼主也在尝试这个项目中,欢迎大家也动手起来一起尝试解决启动时间测试的痛点