商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处
原文链接:http://wetest.qq.com/lab/view/392.html
WeTest导语
启动耗时自动化方案在关键帧识别时,常规的图像对比准确率很低。本文详细介绍了采用scikit-learn图片分类算法在启动耗时应用下的模型调优过程。在之后的续篇中将采用TensorFlow CNN、迁移学习等算法,给出对比识别效果。
1、常规思路与困境
App启动、关键页面加载耗时是一个常规的性能指标,也是竞品对比的关键性指标。在耗时测试中,如何自动化识别关键图片至为关键。由于视频App启动过程广告、首页运营内容是分分钟变化的。在识别关键图片时,传统的基于灰度直方图+阈值的自动化对比方法行不通。
![ff3bbbf9ac38ebd6cc86a2e90ef145ad.png](https://img-blog.csdnimg.cn/img_convert/ff3bbbf9ac38ebd6cc86a2e90ef145ad.png)
关键点:如何识别关键帧的自动化
Ø人工识别:耗时,费人力
Aphone610版本 3家竞品、14个场景,每个场景10次,2分钟1次 ,约14h ==2人天
Ø图像对比:灰度直方图+阈值(不可行)
1)整图对比:视频启动过程中的广告、首页海报是变化的
2)部分对比:app完整启动后第一屏不完全展示的地方,每次不一定在同一处
Ø埋点上报:结果准确性一直被质疑(不可行)
1)adb shell am start -W [packageName]/[packageName.MainActivity]获取
2)app埋点上报:代码里加埋点,首页加载完成后数据上报
2、为什么机器学习
启动速度关键帧图片识别,其实就是机器学习中常见的图片分类问题。当前图片分类算法和开源的代码库非常成熟,应用也屡见不鲜。之前在网上有浏览到一篇文章提到用机器学习实现耗时自动化的关键帧识别,眼前一亮,在此给出实现和调优过程。
3、实施方案
- 整体思路
如下图所示,采用录屏软件+自动化脚本,完成启动过程录屏之后将视频拆成一系列图片帧。通过训练好的机器学习模型,识别出每一张图片所对应的启动过程,计算启动第一张图片到启动稳定后的总帧数,即可得出最终的启动时间。
![19dc4915ae6f8c31b549230eb338af0c.png](https://img-blog.csdnimg.cn/img_convert/19dc4915ae6f8c31b549230eb338af0c.png)