马春宇
(未来电视有限公司,天津 300300)
机顶盒端APP 当前支持的功能很多,其中广告功能是可以为公司业务发展带来收益的。针对广告主对于广告功能的需求可以划分如下:
(1)广告按终端形态展示可以分为:视频类贴片广告(开屏、前贴、中插、后贴)、图片类广告(暂停、推荐位、背景图、时钟、角标)。
(2)广告按投放策略可以分为:按投放时间、按流量、按版本号、按渠道、按设备号、按厂商品牌、按地域、按IP、按内容(一级栏目、二级栏目、一级频道、二级频道、节目集、节目、一级分类、二级分类、轮播频道)、时长、时段、应用、渠道定向设置。
针对以上的广告形态及投放策略,广告日志上报核对也是测试工作的重点。广告功能虽然多,但其产品形态是固定的,测试方法是固定的,基于人力成本和产品固定形态,开启了机顶盒端APP 广告功能自动化测试。
广告自动化测试分两部分:一是终端ad 接口上报正确性自动化校验,关注日志上报正确性,为最终日志统计服务;二是终端广告呈现与report 日志自动化核对,关注终端广告展示数量、内容的正确性,为最终日志统计服务。该自动化测试框架如图1所示:
图1 终端广告自动化测试流程
广告功能自动化测试针对大屏端的功能实现是依托于appium框架实现的。Appium 是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用。Appium 使用WebDriver 的jsonwire 协议,来驱动Apple 系统的UIAutomation 库、Android系统的UIAutomator 框架。Appium 也集成了Selendroid,来支持老android 版本。项目中实际测试的机顶盒大屏端终端设备是Android 系统下的,appium 框架可以应用到实际的项目场景中,实现大屏端推荐位遍历。
在实际的脚本开发中,我们使用python 作为开发语言,主要是看中了python 语言的易学、易读和可维护性。下面按“图1:终端广告自动化测试流程”,分三个方面对广告自动化测试实现进行介绍。
(1)广告系统自动化创建广告
场景:广告测试用例数量多,人工测试出现时间成本和测试质量缺陷。
方案:广告投放用例已经根据广告需求人工生成,将该用例按照预定格式生成广告用例读入文件,调取读文件方法,在web端自动填写相应表字段,在页面生成相应的广告投放,并将广告投放相关信息回写到原文件。
在实际项目中,我们经常会进行终端APK 的主版本和分支版本测试。广告系统中已经创建的广告投放是可以从主板本复用到各分支版本中的(如修改广告投放适用的终端MAC 地址)。上述自动化生成的广告投放,可以按需求进行相关字段自动化编辑,从而实现广告投放复用到其他终端设备上的场景需求。
(2)广告终端展示自动化
场景:广告终端展示受限于终端投放策略,人工遍历所有广告用例从而发现终端展示问题费时费力,存在缺陷。项目测试过程中,我们发现终端广告常会出现无法播放的问题,而有时无法定位到终端故障产生的规律,故障产生存在随机性,测试人员有时很难复现问题。
方案:机顶盒端是否展示广告,取决于接口调用是否正常、网络环境是否正常,其中接口调用是核心。我们将机顶盒大屏端APP 上每一个区块上的推荐位应该播放的广告内容及播放次数在广告系统配置完毕,形成播放预期结果,将预期结果与实际广告日志上报的report 接口数量进行自动化比对,可以实现终端广告漏播的自动化测试。流程图如下:
(3)广告日志上报自动化
场景:广告日志上报的准确性会影响最终各广告主的广告统计结果,日志信息是否存在漏报、错报是我们关心的核心问题。广告主在我司投放某种形态的广告,最为关心的就是广告曝光量,如果出现广告曝光量与实际统计结果不一致,直接影响广告合同的执行,会对广告业务带来无法弥补的损失。
方案:广告日志上报统计时会根据report 接口解密后的数据进行统计,而report 接口的拼接是根据广告ad 接口进行的。广告ad 接口日志上报数量、日志上报顺序以及接口参数的正确性是我们实现广告日志自动化测试的核心。
针对广告日志漏报问题,我们需要核对ad 接口上报的实际数量与预期数量是否一致;需要核对ad 接口上报的顺序与预期日志顺序是否一致;需要核对每一条ad 接口参数值与预期结果参数值是否一致。
广告自动化应用于现有项目后,广告测试仅需1人2小时便可完成接口自动化测试和广告日志上报自动化测试,大大节约了测试人力成本。
人工测试难免出现漏测用例的情况,通过自动化测试,广告系统测试用例可以百分之百完成,测试结果准确度达到95%(终端广告展示因网络因素导致播放不出的问题未在自动化中实现)。