作者:timothyzhao

到周末了,有空啦,很多同学就会拿起手机,打开 QQ 浏览器,点开热门视频,弄几个视频来犒劳犒劳自己,放松一下,搜索个片子,打开,额,播放不了:

再试试看,中国好声音,神马??版权已到期:

再搜索看看,中国好声音打开后发现这只是个片段,只播放 1 分多钟,这不是坑人呢吗:

好容易找到个大片《变形金刚 3》,刚看两分钟发现这是收费视频,汗!!!!!!

当然,上面只是举了一些特例,但作为一个测试人员,解决不可播视频是职责所在,因为这会影响用户使用,影响产品声誉,下面就来琢磨琢磨怎么解决这个问题,提升产品体验。

一、背景

视频能不能播放是影响用户留存的核心因素之一,经常收到了用户的反馈说视频播放不了、播放片子的不是正片、播放内容有要收费,看几分钟就看不了,针对这些问题,本来是想通过真机来测试,因为真机测试是最能从用户的角度反映出问题的,但考虑到一是已经有同事在做这块了,二是库里面上百万视频,真机测试的成本相对比较大一些,故只能另寻它路。

从浏览器发起请求入手,当打开一个视频的 url,分析下所有请求,可以看看能播放的视频和不能播放的视频有没有什么区别呢,经过分析,发现确实有区别,能播放的视频和不能播放的视频在 html 源文件里和很多 XHR 的请求数据里有不一样的地方,既然是这样,那我们就可以通过这个方法来进行测试了。

二、数据选取

找到了测试方法并验证可行之后,接下来就是进行测试了,而选取什么数据进行测试呢,这是一个问题,因为我们要把好钢用在刀刃上,解决最紧急最重要的问题,对于后台热门视频专区来说,视频聚合了二十几个站点的数据,其中最大的就是 3 家:腾讯、搜狐、爱奇艺,占所有视频比重的 50% 以上,还有用户访问最多的页面,其实就是首页的内容,所以第一个小白鼠就是腾讯视频的数据质量了,拿腾讯视频开刀。

1. 分析网页

打开 chrome 浏览器,按下 F12 键,刷新测试网页,在 network 项,会看到很多请求,过滤到图片的请求,因为一般接口数据肯定不会是一个图片:

这一块的分析是比较痛苦的,除了不需要分析图片,其他的请求你都需要分析一遍,重点看一些 XHR 的请求和 Scripts 的请求,一般情况下你会在里面发现干货,找到就可以偷着乐了,腾讯视频目前找到的接口是(如果有腾讯视频的同仁,请别禁用接口啊,这里只是测试而已):

上面是完整的接口,经过清洗测试后访问如下链接就可以了:
http://sns.video.qq.com/tvideo/fcgi-bin/video?otype=json&callback=jQuery191022279346804134548_1404615403445&vid= e0015w6djh7

重点看上面有一个 vid,也就是说不同的视频,唯一的标示就是 vid(这里需要根据不同的测试站点去寻找),这个 vid 在当前播放 url 的源文件就能找到(有的 url 里面就直接带 vid)。
抓到的数据如下:

这里面有很多信息,对可播放性测试来说,最重要的是播放时长 duration(当有多个时长时,需要把时长加起来得到一个总时长)

2. 测试流程如下

总结出一个完整的测试流程其实要花费很长时间,就像做了一个数据模型,需要不停的使用数据去鞭策、锤炼模型,这里也是一样,不断的用数据去证明,流程模型是没有问题的。

2.1 测试方法:

(1).先用已知的 badcase(badcase 是指那些播放不了 url、收费的 url)去试探模型能否判断正确;

(2).小批量数据验证完毕,看看从总结出来的流程去判断有没有误判,若有误判需要调整测试方法,尽量避免误判;

(3).从用户反馈中以及历史数据中找尽可能多的 badcase 去验证流程判断的正确性;

(4).不断循环校验整个过程,直到能够判断出几乎 100% 不可播放视频为止;

从中也分析出不同种类的播放成功失败原因,对不同的失败原因进行标示,方便后面数据处理和统计:

0.时长正常 1.播放状态正常 2.收费视频 3.播放状态不正常 4.时长有误 5.时长为空 6.站点来源错误 7.返回码错误 8.页面跳转失败 9.页面跳转 10.时长为 0 播放正常 11.抓数据接口出现问题 12.时长小于平均时长的百分比

2.2 流程图如下:

3. 编写脚本

编写脚本的语言这里选择 Python 来编写,一是因为 python 简洁明了、学习成本低、实现算法快;二是因为上一个项目也积累了不少基础; 所以妥妥的走起。
通过前面对测试流程的梳理,找到了区别正常视频和非正常视频的方法后,就开始编码了。

3.1 脚本流程图如下:

3.2 代码处理片段:

(1)读取文件:

(2)检查网页是否跳转,如果跳转,用 python 模拟网页的 js 跳转:

(3)获取 vid:

(4)通过 vid 从接口请求数据并分析数据(如果有多个 vid 则每个 vid 都要请求一次,因为腾讯视频有的剧集会由多个 vid 拼接起来):

(5)判断视频的正确性:

(6)获得剧集名称并判断名称的正确性(获得剧集名称后需要清洗下名称)

三、脚本上线

脚本验证完毕后,就可以交给开发同学准备线上运行了,7*24 小时实时监控,发现异常 url 后及时下线,不要让用户看到不可播放的视频,需要注意以下事项:

四、测试结果

通过分析网页的请求来判断视频的可播放性效率高,速度也比较快,下面通过上述描述的测试方法已经取得的成果,附上测试报告一份。

目前已覆盖 直播、首页热门视频、爱奇艺站点视频、搜狐站点视频和腾讯站点视频,测试稳定,测试结果已接入开发同学的视频屏蔽库,为屏蔽不可播放视频提供数据依据。       

【测试方法】 

【测试结论】

【详细结果】

备注:不可播放视频:视频页面跳转失败、链接失效,版权到期,视频已下线,时长不正确(电影花絮,电视剧花絮,综艺片段)等;

收费视频:需要注册,有会员资格才能观看的视频;

本章完~

原文连接:http://tmq.qq.com/2016/07/play_test/


TMQ(腾讯移动品质中心)是腾讯最早专注在移动 APP 测试的团队
我们专注于移动测试技术精华,饱含腾讯多款亿级 APP 的品质秘密,文章皆独家原创,我们不谈虚的,只谈干货!

扫码关注我们

扫一扫 关注 TMQ
精彩分享不断


↙↙↙阅读原文可查看相关链接,并与作者交流