在实际工作中,App的按键响应时间作为一项核心性能指标,在每个版本基本都会进行数据的收集。
纵向对比(与之前版本),目前主要依赖于开发埋点,横向对比(竞品间),需要人工拿高清摄像机录制采集,然后利用分帧工具进行分帧,根据帧数计算响应时间。如果这套流程可以自动化的话将会释放很多人力。
1、录屏
尽可能的能够录制高fps的视频,这样可以减少丢帧带来的数据误差。
第三方录屏工具:安卓录屏大师
调用系统接口: MediaProjection和MediaProjectionManager(Android 5.0以上系统支持)
Adb命令: adb shell screenrecord /sdcard/demo.mp4
2、分帧
接下来需要将录制的视频进行分帧,一般采用ffmpeg来进行分帧。
分帧命令:ffmpeg -i demo.mp4 -r 60 -t 100 %d.jpeg(-r 设置帧率)
3、图像处理
可以使用Python图像处理PIL的Image模块或者CV的cv2模块,需要基础的图像处理知识背景。
4、计算响应时间
通过识别起始帧和终止帧的位置,计算出响应时间。响应时间 = 总帧数 * 1/60
此外,最近看到几篇利用机器学习来计算响应时间,具体思路如下:录屏和分帧工具如上,只不过需要收集一些训练数据,通过对训练数据进行训练建立模型,其次启动应用,录制视频,对视频进行分帧,得到测试数据集,最后利用训练的模型对测试数据集进行预测分析,得到总帧数,计算出响应时间。思路很好,可以尝试将机器学习应用于软件测试领域,具体复杂度需要根据业务需要来评估。