视频类性能测试需求分析及测试方案设计
本文主要讲解和剖析视频播放首帧响应时间测试方案以及实现原理,它不是其讲解框架的直接应用,而是自动化测试的工具改造及应用的代表案例。
阅读需要一定的编程基础,主要包括Android SDK和NDK基础编程、OPENCV图形识别和相似度对比技术、FFMPEG视频解码技术以及Java和Javascript之间通信的相关知识。
随着移动终端的快速发展,通过手机观看视频已经成为大众所喜爱的一种休闲方式。当前市场上视频播放器App品种众多(包括优酷、乐视、搜索、爱奇艺客户端、MX Player、暴风影音以及各种浏览器等),功能越来越丰富,界面也越来越人性化。
但我们依然无法回避手机本身硬件和软件存在差异的客观现实,这就造成了不同的手机在运行视频播放器程序时有快有慢。在实际播放器项目测试中梳理,影响视频播放体验的因素最终通过以下几个性能指标来体现
对于上图中所示各项,分析如下:
首帧响应时间:即用户首次加载视频,获取首个完整关键帧所需的时长,通俗的理解就是从用户点击播放按钮到出现第一帧视频画面所需要的时间。
拖动响应时间:即用户拖动进度条到指定位置后,出现指定位置的第一帧视频所需要的时间。例如当前播放器在1分30秒,拖动进度条到10分钟位置后到出现第10分钟的视频首帧画面所需要的时间就是Seek到10分钟位置的响应时间。
播放流畅度:即视频播放过程1秒钟时间里显示的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次。帧率越大,画面越流畅;帧率越小,画面越有跳动感。现在市场主流的视频帧率是15帧/秒,超清和蓝光视频是25帧/秒。
播放成功率:即成功播放视频数占总共播放视频总数的比例。这个指标在网络视频播放器衡量中(包括点播和直播)尤其重要,也是衡量播放器好坏的一个非常重要的指标。考虑到测试的片源数量有限,为了更加准确地反映这个指标的有效性,所以通过后台上报来统计播放成功率。例如播放失败片源数为1万,总播放片源数为100万,那么播放成功率即为(100-1)/100×100%=99%。
续航能力:即在手机满电的情况下,持续播放视频待机时长。待机时间越长越好。
CPU指标:即视频播放器在启动和播放视频过程中,CPU所占用的情况。如果CPU占用过高,就会出现手机发烫、续航能力降低的现象。
内存指标:即视频播放器在启动和播放视频过程中,内存所占用的情况。一般内存占用越低越好。
播放稳定性:视频在播放过程中,不会因为播放时间长而导致视频播放质量的下降,主要包括音视频同步、画面的质量、流畅度、响应时间等指标。
上述指标,旨在通过对不同的手机终端进行性能上的考察,增加性能区分维度,为视频播放器测试提供技术保障,从而满足用户的需求。从这些指标上看,视频首帧响应时间尤其重要。因为对于用户来说,播放视频最先体验到的性能指标就是视频播放的首帧响应时间,它的快慢直接关系到用户对于产品的第一印象。
首先一起了解一下用户浏览器播放视频的基本流程。
(3)下载到一定大小的视频源后,播放器解码器进行解码,再通过手机屏幕显示出首帧画面。
在上述浏览器视频播放基本流程中,从点击播放按钮到出现视频的首帧画面所需要的时间就是前面所说的性能指标的首帧响应时间。
前面通过播放流程的方式介绍了视频首帧响应时间的概念,那么是如何计算响应时间的呢?从播放流程可以清楚地知道:只要确定开始时间(也就是点击播放按钮的时间)和结束时间(也就是出现视频首帧的时间)就可以计算出视频的首帧响应时间。
如何确定开始时间和结束时间就是本设计的关键,下面简单介绍一下确定的方法。
(1)开始时间:相对而言比较简单,只要记录视频点击播放按钮的系统时间就可以确定。
(2)结束时间:通过截屏记录点击播放按钮到出现视频首帧之间手机整个屏幕画面,然后从记录屏幕画面中找出首次出现视频首帧的图片。由于不同的视频首帧画面是不同的,所以在设计中,需要从播放视频源中提取原始的视频首帧图片作为基准图片,再通过基准图片和截屏图片做比较,找出首帧图片,再把截取到首帧图片的系统时间作为结束时间。基于上述方案介绍,视频首帧设计流程图如图:
根据上述流程图,详细介绍一下整个设计实现的基本思路:
播放视频:测试工具通过浏览器打开被测试视频页面,截取当前的手机屏幕作为图片文件保存到SD存储卡中,再通过相关技术查找图片文件上视频播放的位置,然后模拟一个点击播放按钮事件,同时记录当前时间作为点击播放按钮的时间。
快速截屏:点击播放按钮同时启动快速截取屏幕,每隔60ms秒截取一次屏幕。截取一定张数图片并按照当前截取的系统时间作为文件名一次性写入SD存储卡(例如:截取总张数为120张,因为每张间隔是60ms,这120张图片代表着12s内当前手机屏幕的变化情况)。
获取基准图片:为了从这120张图片中找出首帧图片,需要下载当前视频源,再利用相关技术从下载视频源中提取视频的原始首帧图片作为基准图片。
获取首帧图片:把截屏图片按照文件名按从小到大的顺序排列,再把基准图片和它们逐一比较,找到第一个相似度大于90%的截屏图片即为测试要找的首帧图片。
计算响应时间:因为截屏的图片文件名是以截屏的当前系统时间保存的,所以找到的首帧图片文件名和点击播放按钮时间差就是测试的首帧响应时间。
大家都知道,实际测试中视频首帧响应可能会受到外界不同因素的干扰(如网络、视频服务器等)和手机本身性能的影响。为了消除外界因素的影响,在测试中,需要对多个片源进行测试,然后把它们的平均时间作为响应时间,从而保证测试数据的真实有效性。
公司官网:www.litboy.net
于老师简介:www.litboy.cn
最新课程体系更新:www.litboy.org
尚脑教育:功德办学 良心施教