芒果TV自动化测试实战01020403目录全屏加速度自动化测试方法互联网电视应用自动化测试难点3截止到2016年6月全屏加速度PC端、移动端(iPhone、iPad、Android)、OTT端(Android、Linux)、M站(手机、平板)4000万3.01亿1.45亿2953万芒果TV全平台日均活跃用户数芒果TV手机APP安装激活量芒果TVOTT终端激活用户数PC端视频播放月覆盖人数1.6亿芒果TV日均VV4自动化测试目标测试时间减少:90%人力成本减少:90%单次全功能测试比率:100%测试覆盖率:98%现状目标项目单次测试时间:2天测试人员加班、加班、加班不能保证单次项目全功能测试无异常测试环境,测试覆盖率低5如何覆盖如此多的终端设备?如何模拟不同端的不同行为?如何获取各个业务的反馈数据并分析?如何实现业务功能的全面覆盖?如何搭建复杂异常的测试环境?如何确保整体结果是ok的?如何在公司内进行推广?自动化测试难点???6PC端:浏览器:IE、Chrome、Firefox等APP端:设备机型:Android、iPhone、iPad、AndroidPad等OTT端:设备机型:海美迪、三星等M站:设备机型:手机、平板等自动化测试终端设备7自动化测试框架PC端:www.mgtv.comAPP端、M站SeleniumAppium跨平台分布式WebDriverAPI自动化测试框架:MonkeyRunner:API工具包、脚本可读性差、回放率差iTestin:录制生硬、脚本难以复用Selenium:简单、方便、兼容Appium:跨平台、多语言8自动化测试之广告业务一个简单的广告点击链接功能?点击请求上报返回触发广告播放点击页面链接,广告数据上报广告播放过程,点击页面链接进入下支广告或视频9自动化测试之广告业务一个简单的广告点击链接功能的验证?点击请求上报返回页面元素验证广告播放后台验证广告请求与播放上报直接抓包验证后台日志分析页面元素验证广告点击后台验证广告点击上报页面元素验证播放后台验证数据上报10评判规则:正常情景与异常情景线上漏测率一个简单的广告点击链接功能的异常情景?--广告请求异常情景--广告点击链接异常情景-广告链接地址异常(404、500、timeout等)-广告数据上报异常(404、500、timeout等)-广告数据第三方监测异常(404、500、timeout等)--其它异常情景自动化测试覆盖率50%70%80%11自动化测试环境视频下载限速播放卡顿timeout数据异常素材格式错误自动出错乱码等待网络状态不佳抓包修正频繁变动直播全网搜索12自动化测试环境两种不同的环境搭建方法方法一:搭建服务方法二:nginx文件配置13自动化测试环境Test2ServersRequestServersTest1Serversscene3scene2scene1APIRequestAPIResponseAPIRequest…………直播测试环境14如何确保整体结果是ok的?自动化测试流程TestServersResultReportsAPIAPPOTT…GITLABJENKINS15自动化测试推广态度、态度、态度时间、时间、时间正确率、覆盖率、漏测率“海底捞”的服务王婆卖瓜、卖瓜、卖瓜口口相传、口口相传、口口相传积累、积累、积累“王婆卖瓜”的推广16PCOTTAPPWeb自动化测试工具:SeleniumWeb自动化测试难点:PC-FlashOTT端自动化测试框架:?自动化测试语言:Python移动端自动化测试框架:Appium操作系统:IOS、Android自动化测试方法17PC端架构Flash播放器怎么实现自动化测试?ControlledWebAppWithFlashMovie18SeleniumServer浏览器:ChromeFirefoxSafari语言:pythonPC-Flash架构PC端架构ProxyWebAppWithFlashMovieExternalInterfaceJSSeleniumRCClientFlashSeleniumExternalWebServerLocalSeleniumRCServer19PC端架构Flashselenium,提供普遍的方法供外部调用Flash专门的功能,增加代码,提供接口供外部调用右图为Flash插件中增加点击静音、跳过广告、点击广告功能代码PC-Flash播放器代码20PC端架构下图为Selenium框架下,PC-Flash测试代码,静音功能、取消静音功能、跳过广告功能PC-Flash测试代码21APP/OTT端架构移动端自动化测试框架==》Appium电视端自动化测试框架==》?22Tcpdump测试框架:Appium客户端:IOSAndroidOTT语言:pythonAPP/OTT架构APP/OTT端架构AppiumTcpClientAPhoneIphoneOTTUiAutomatorTcpServerCommandLog23LogServers测试框架:Appium客户端:IOSAndroidOTT语言:pythonAPP/OTT架构APP/OTT端架构AppiumTcpClientAPhoneIphoneOTTEnvironmentServersUiAutomatorTestServersTcpServerCommandScriptLog24互联网电视应用Uiautomator无法识别电视盒子页面?25Appium如何模拟电视盒子的行为?互联网电视应用26互联网电视应用Appium键盘处理回车键KEYCODE_ENTER66确定键KEYCODE_DPAD_CENTER23向上KEYCODE_DPAD_UP19向下KEYCODE_DPAD_DOWN20向左KEYCODE_DPAD_LEFT21向右KEYCODE_DPAD_RIGHT22向上翻页KEYCODE_PAGE_UP92向下翻页KEYCODE_PAGE_DOWN9327互联网电视应用OTT端测试步骤:电视盒子root或设置DNS测试场景设置与环境服务化Appium键盘模拟手动操作获取日志分析数据上报HOW?百度WHY?HOW?搭建服务WHY?异常场景可控如何快进?就这样结束?28互联网电视应用打开芒果TV点击用户登录用户输入用户名和密码,转入登录成功页返回,进入首页的搜索搜索“妈妈是超人”播放广告点击广告页面上“会员免广告”进入会员购买页面购买失败,退出会员搜索广告支付自动化测试业务:购买会员支付功能自动化测试模拟流程:29互联网电视应用