優酷播放測試體系構建及平臺化整合方案
摘要:爲了實現播放各 topic 以及播放基礎質量測試能力的全面拉通,以統一的方式支持播放業務測試用例的快速開發,最終實現統一地平臺化收口,我們首先對各 topic 的通用測試場景、測試方案、個性化能力、通用工具集進行全面梳理,對相關 API 進行分層抽取,將新內核測試框架劃分爲 4 大模塊:api、core、toolkit、testcase,整體結構設計如下所示:。播放測試平臺爲播放業務提供一站式標準化測試能力,包括用例管理、測試計劃、功能測試、冒煙播測、外網撥測、大劇保障、多端賦能等能力,支持用例的可視化開發,支持用例完整生命週期的實時監控,並提供詳細和專業的結果分析和測試報告,通過播放測試平臺實現了本地測試、冒煙播測、外網撥測用例的打通,用例流轉示意如下:。
一、背景
從去年開始,爲了提升播放業務的測試效率、完備性和有效性,優酷技術質量團隊對播放測試方案進行了一系列的優化改造,自研出一套白盒自動化測試框架,並在此基礎上構建出基於實驗室環境的播測驗證體系和基於外網環境的動態撥測體系,在測試提效方面已初見成效,但新的挑戰也隨之出現,具體爲:
- 隨着播放測試能力的持續沉澱,各業務已形成了一套行之有效的 topic 維度的測試方案,播放測試能力急需流程化;
- 除移動端外,播放在多端場景下的測試覆蓋度較低,播放測試能力急需多端化;
- 測試過程對於合作方不夠透明,各方對測試標準和測試卡口理解存在不一致的問題,播放測試能力急需透明化。
綜上,針對流程化、多端化和透明化三大訴求,優酷播放測試提效進入了大一統階段,包括三個統一:大一統的內核自動化測試框架、大一統的內核自動化測試服務和大一統的平臺體系。
二、大一統之內核自動化測試框架
要實現大一統的播放自動化測試體系,首先要實現統一的自動化測試框架,主要面臨以下幾個問題:
- 如何快速高效的支持各 topic 自動化 case 開發和執行;
- 如何將內核自動化測試能力賦能到多端多場景(直播、ott、iku);
- 如何使內核自動化框架具備更好的擴展性,以支持流程化和平臺化。
爲了實現播放各 topic 以及播放基礎質量測試能力的全面拉通,以統一的方式支持播放業務測試用例的快速開發,最終實現統一地平臺化收口,我們首先對各 topic 的通用測試場景、測試方案、個性化能力、通用工具集進行全面梳理,對相關 API 進行分層抽取,將新內核測試框架劃分爲 4 大模塊:api、core、toolkit、testcase,整體結構設計如下所示:
共性 & 個性化測試方案
智能檔的測試方法不再贅述,下面主要介紹一下 PCDN 以及卡頓 topic 的基礎測試方法:
-
PCDN topic
PCDN 核心目標是縮減成本,減少 CDN 的流量峯值,在保證分片下載功能正確的前提上,PCDN 重點關注覆蓋率、分享率、浪費率、重複率等指標,因此測試需要重點關注 PCDN 在各種網絡環境和用戶播放行爲下核心指標的正確性和合理性,PCDN 核心測試數據可以結合 VPM 埋點以及 PCDN 接口數據獲取。
-
卡頓 topic
卡頓 topic 的主要關注點是各項卡頓優化的策略是否生效以及對播放體驗的影響,如智能調度、慢切邏輯、網絡探測等,卡頓核心測試數據可以通過 VPM 埋點、策略執行 log 以及 ODPS 歷史埋點獲取,除此之外,卡頓 topic 需要針對不同的網絡場景和不同的用戶播放行爲進行組合驗證。
-
API 抽取 & 工具集構建
我們將網絡控制、數據收集、數據分析、case 校驗作爲核心,抽象出三大核心模塊(case_checker、log_processor、network_controller),將模擬用戶行爲、hook VPM 埋點的 AFrame 客戶端加入到工具集中,同樣還將 PCDN 接口數據獲取、ODPS 查詢、熱劇查詢、OSS 上傳等方法加入其中。
三、大一統之播放測試服務
爲了讓播放器自動化測試服務更好的賦能給 ott、iku、直播等多端多場景業務,也爲了更好的支持流程化和平臺化測試,我們把本地的內核自動化測試框架演變爲平臺服務(PKAT),並和播測 & 撥測體系結合起來,形成了一套完備的內核自動化測試新框架,並作爲一套服務添加到播放測試平臺鏈路中。
整體鏈路包含以下四個部分:
一是播放測試調度服務:包含二方平臺打通、設備管理、任務分發、結果管理等;
二是部署在外部網絡的 AFrameServer:數據“中轉站”,監聽各類連接請求並建立通道;
三是與任務調度平臺聯動的 CaseClient:用例執行入口;
四是內核自動化測試服務:提供播放內核以及多端場景的驗證服務。
整體的技術細節如下圖所示:
四、大一統之平臺收口
優酷技術質量團隊始終關注測試基本盤的有效性和完備性,在持續深化核心 topic 線下測試評估能力、守住質量基本盤的同時,形成了涵蓋線下測試、冒煙播測、外網撥測的三級漏斗用例模型,測試同學爲此持續提供邏輯自洽、基於用戶和業務的思考過程,並且最終將三級漏斗用例模型間的聯動通過平臺化能力表達出來。
播放測試平臺爲播放業務提供一站式標準化測試能力,包括用例管理、測試計劃、功能測試、冒煙播測、外網撥測、大劇保障、多端賦能等能力,支持用例的可視化開發,支持用例完整生命週期的實時監控,並提供詳細和專業的結果分析和測試報告,通過播放測試平臺實現了本地測試、冒煙播測、外網撥測用例的打通,用例流轉示意如下:
系統設計
播放測試平臺採用分層設計結構,以增強平臺的水平擴展能力,基礎服務層由設備資源管理、用例管理、用例模板管理、測試計劃管理、運行管理、報告管理等模塊組成:
- 設備資源管理:同步實驗室以及外網測試設備資源信息,用例執行時指定相應測試設備;
- 用例管理:提供用例信息的維護及權限管理,除傳統的代碼開發模式外,支持可視化的組件開發模式;
- 用例模板管理:爲每個 topic 通過用例模板,進一步減少用例開發的工作量;
- 測試計劃管理:測試計劃類似於測試套件,包含多個測試用例,測試計劃有效覆蓋各類測試場景;
- 運行管理:當某個測試用例在某臺測試設備上執行時,平臺均會創建唯一的運行實例,通過運行實例可以監控相應用例運行的整個生命週期;
- 報告管理:提供用例運行的詳細信息,包括運行過程數據以及執行結果分析。
執行流程
- 用戶可以在用例管理模塊直接執行用例,執行用例後首先會調用 AFrameService,AFrameService 負責與任務調度平臺通信,併發送用例執行信息,任務調度平臺接受後轉發至 AFrameServer,最後由 AFrameServer 驅動執行測試用例;
- AFrameServer 會將用例的實時執行狀態迴流至報告管理模塊,用例執行結束後會把詳細的執行結果迴流至報告管理模塊;
- 用戶可以在用例管理模塊創建測試計劃,在測試計劃管理模塊執行測試計劃,執行流程與在用例管理模塊直接執行相同;
- 報告管理模塊支持查詢測試用例的運行過程數據以及測試結果分析。
五、總結 & 展望
優酷播放測試平臺實現了標準化的播放測試流程,有效降低了業務測試用例的開發複雜度,提高了用例的開發效率,規範了用例的管理和執行過程,實現了測試用例在不同環節的合理性流轉,以及用例執行生命週期的實時監控和執行結果的可視化、透明化。
後續我們將在基於播放體驗的策略質量洞察分析、動態的校驗能力、智能化的用例推薦、用例膨脹等方面繼續努力。
作者介紹:
曇鸞,阿里文娛測試開發專家,庭嫿,阿里文娛測試開發工程師。