Categories
程式開發

獨家解讀三層架構下的優酷視頻搜索測試體系


一、簡介

優酷搜索承擔著內容分發場排頭兵的重任,海量的視頻內容都要依賴搜索觸達和呈現給用戶。同時,優酷搜索的使用範圍正在擴大,已經開始為阿里文娛全系產品提供搜索服務和能力。

面對如此復雜且對穩定性、精準性要求極高的系統,質量保障工作顯得尤為重要。本文將為大家介紹視頻搜索的質量體係是如何構建和發揮作用的。

二、業務特點

  1. 視頻搜索架構特點

    • 支持複雜多樣的上層業務場景,業務邏輯複雜;
    • 從搜索開始到結果返回的整個業務鏈路長,涉及的模塊及外部依賴多;
    • 算法依賴數據,底層數據變更會引起上層算法結果變化。
  2. 測試難點

    • 業務鏈路長且複雜,用例覆蓋率等難以進行有效度量;
    • 離線和實時數據變更如何影響業務,數據質量的監控如何和業務緊密結合?
    • 算法模塊存在復雜性及不可解釋性,算法效果難以進行有效評估;
    • 海量數據中單個badcase無法說明問題,如何有效發掘共性的badcase?
  3. 質量保障方案

獨家解讀三層架構下的優酷視頻搜索測試體系 1

三、工程質量

1.回歸

回歸測試主要是上線發布前的測試,目的在於提前發現bug,保證發布質量。目前各模塊的回歸測試均已作為研發流程的一環,交由研發自行進行冒煙,不管是否走提測流程,均能在一定程度上把控業務質量。

我們根據鏈路的分層,針對各層模塊進行了各模塊自身的功能回歸建設。各模塊測試用例的自動化回歸依託於冒煙平台,其可實現任意環境的快速回歸,目前已積累回歸用例5000+,定時線上巡檢,分鐘級發現問題。

2.監控

1)功能監控

仍然是根據鏈路的模塊劃分,進行分層監控。監控仍依託於冒煙平台,並存儲各模塊日常冒煙監控數據以及真實bug數據。目前通過巡檢已累計發現線上bug 50+,具體冒煙監控數據大盤如下圖所示。

獨家解讀三層架構下的優酷視頻搜索測試體系 2

2)效果監控

線上效果監控的目的在於快速發現線上效果問題,保證線上質量。此外通過固化每次效果監控數據,監控線上效果問題的長期變化趨勢,以輔助研發進行算法迭代優化,最大化利用人工評測數據。目前,已形成生成監控集合->定時監控->發現問題->解決問題閉環的處理機制。

獨家解讀三層架構下的優酷視頻搜索測試體系 3

四、算法質量

1.數據

1)離線

借助集團已有平台的監控能力,定制業務細則。監控流程分為如下階段:存在原始表、創建對應表的分區及監控規則、訂閱分區規則,原始表週期任務執行結束自動觸發dqc上對應表的對應分區的規則,如果異常會根據訂閱內容報警。

step1:確定監控哪些表。

比如我們監控A表,該節點監控規則一旦失敗,是否中斷後續的生產流程?如果需要中止,那stepn 配置強規則即可。此時要保證監控規則是業務合理的,當然一旦中止,我們要承受住多方的考驗,節點多次失敗賬號健康分會受影響,任務的執行也會受影響。如果不需要中止,那麼有兩種方案,一是創建影子表,監控影子表(浪費一個存儲周期的空間);二是所有規則置為弱規則(短信告警無法判斷報警的嚴重程度)。

在實踐中,對於重要的寬表數據,我們採用了監控影子表方案,次重要的表採用了對原始表全部配置弱規則的方案。

step2:在監控平台創建分區,用來指定是要監控哪天的數據。

step3:配置規則。

規則可分為通用規則和特性規則。數據量重要度屬於P0級,採用數據量絕對值>閾值;同時採用了7天趨勢絕對值變動在預警值在10%,20%(不同業務閾值根據業務需要設定)。表數據量突增和突降在優酷場都不合理,所以採用了7天平均值波動+絕對值模式。通用規則是各字段通用的規則,基本包含是否非空,是否為0等等,體現在數據監控上面就是非空的數據量|數據佔比變化趨勢是否符合預期,值域非0的數據量|數據佔比變化趨勢是否符合預期。特性規則需要視業務特性而定,採取單字段max、min、均值、總量,組合特徵數量、變化率、空置率等個性化定制規則。

step4:訂閱,支持短信、釘釘機器人、郵件等。

2)實時

把握整個實時流式計算的業務系統有幾個關鍵點:流式計算、數據服務、全鏈路、數據業務(包括索引和摘要)。結合質量保障體系的線上、線下全鏈路閉環的理論體系去設計我們的整體質量保障方案,如下圖所示:

獨家解讀三層架構下的優酷視頻搜索測試體系 4

2.算法

1)特徵算子組件單測

UDF在算法數據特徵計算過程中是特別普遍的開發組件單元,實時和離線都有自己的UDF定義。 UDF也支持多種語言,其本質上是一個函數,以不同的工程資源形式附加到各個平台的項目中使用,UDF的測試就可以簡化成函數測試,歸結為輸入輸出的類函數單測的模式。我們復用統一框架的執行能力設計UDF單測模式如下:

獨家解讀三層架構下的優酷視頻搜索測試體系 5

UDF從功能輸出來說分為三類:

  • 第一類是有固定規則和處理邏輯的,可以通過輸入輸出來構建case,判斷時候則判斷固定的輸入是否等於輸出就行;
  • 第二類則是通用的規則類或者非固定業務含義輸出的,這一類我們則通過正則匹配或者通用規則來校驗結果;
  • 第三類則是算法模型類,通過構建算法的評測集合,去執行評測集,獲得recall&accuracy指標閾值來進行是否通過校驗UDF。

2)feature列級測試

列級特徵則是將整個列的計算邏輯以UDF算子為單元組件進行DAG邏輯編排,然後通過編譯生成圖化邏輯來流式構建特徵列。計算引擎原理如圖:

獨家解讀三層架構下的優酷視頻搜索測試體系 6

列級特徵本質上是一個圖化的UDF組合邏輯,可以看做是一個複雜圖化的計算函數,包含很多子UDF的圖化遍歷的邏輯。構建編譯器在列級圖化邏輯編排完成後,進行編譯會得到該列的DAG信息。這個DAG信息就會作為列級的圖化邏輯屬性。

當列級feature進行邏輯執行​​時,會解析該DAG信息進行圖的遍歷依次執行UDF算子。同理,在測試構建時,構造列級特徵檢測的case集合。特徵既有數據含義,同時也具備部分業務應用上的含義。

特徵檢測可以結合數據規則和業務含義內容,共同製定特徵檢測機制。通過構建特徵輸入集來進行圖化邏輯執行得到特徵值,通過特徵值的檢測、特徵分佈、特徵業務屬性檢測幾個維度去完成特徵檢測。這時我們會通過統一的trace策略機制去記錄每個UDF的調用執行情況,以供追查UDF執行錯誤和異常情況。

3)全圖化索引測試

前面UDF是算子組件維度的,而特徵feature是列維度的,索引全列則是以行為維度的,每行綜合多列。而全列索引特徵構建是綜合多列feature的圖化邏輯形成的一個pipline。 pipline以引擎索引分類為一個完整的Pipline,比如OCG就是一個全列的完整Pipline。所以Pipline級別的數據測試則是以行維度的數據。

3.效果

1)效果基線

對搜索整條鏈路以及鏈路上影響算法的重要模塊,例如意圖分析模塊,都建設了效果基線。

A、搜索鏈路效果基線建設

效果測試集必須是動態的,這裡採用case放在雲文件或者數據平台,當流量出現新詞的時候隨時添加。要作為效果基線,必須保證測試集對應的預期結果必須是準確的,這裡採用的機制是評測同學維護。 總體流程是評測同學在數據平台維護效果基線query、預期結果,代碼加載數據進行規則判斷,噪音消除,失敗報警。

  • 規則:檢測TOP n召回某種類型卡片,TOP n只能召回某些showids,聚合卡片中TOPN只能召回某些showids,n可配、showids可配、卡片類型可配等等;
  • 噪音消除:失敗重試、運營數據剔除、showid可能出現在多種卡片,每種都需要相應業務邏輯。

使用場景:

  • 搜索鏈路所有模塊發布卡口;
  • 被列為AB test期間關注的指標之一,指標一旦失敗,實驗回滾;
  • 大流量桶的日常監控,成功率要求100%,一旦失敗必須及時修正。

B、意圖模塊QP的效果基線建設

方案:方案主要涉及意圖類型、測試集構建、驗證規則。效果基線要check哪些意圖呢?主要從產品形態和算法使用情況來確定,每個意圖都涉及正樣本和負樣本;樣本數據取自線上已經識別出的意圖數據,然後人工審核後分別放在對應的正樣本和負樣本,負樣本還有一部分數據來自互斥意圖的正樣本數據。

規則:同一個意圖對於不同的算法使用意圖不同,比如人物,“郭德綱于謙”切詞後這個詞屬於人物,但是不應該出人物卡。

使用場景

  • 發布卡口;
  • 線上定時監控:對於意圖模塊數據回流、代碼發布都會影響效果,數據回流是自動觸發,數據是否正確未知,也就說明線上定時監控的必要性。

2)搜索效果影響面自動評估

  • 測試集構建:線上真實流量按照SQV進行分層、採樣(越偏頭部採樣密度越大),線上流量映射到測試集;
  • 評測規則:分析用戶使用搜索的習慣,對用戶經常點擊的位置分別進行比對,;
  • 影響面計算:異常請求的sqv總和/所有sqv總和;
  • 噪音消除:異常重試、去掉算法無關卡片,來保證影響面評測的準確度。

3)指標看板

將評測能力集成到監控中,分鐘級運行,產出效果指標大盤,及時發現算法問題並能指導算法優化。

獨家解讀三層架構下的優酷視頻搜索測試體系 7

五、用戶體驗

1. badcase分類和挖掘

分析線上流量,badcase挖掘主要集中在腰尾部高跳詞。除了流量分層還有一個重要的流量就是實效性極高的熱點。

1)高跳badcase挖掘:通過競品對比等手段檢測出多種類型的badcase,badcase會映射到具體原因上,直接進行專項優化,優化後的case會放入每次迭代,未優化的case以badcase形式存在badcase庫,後續效果迭代會運行這些數據,以檢測badcase的效果;

2)時效性分析:分析各大平台的熱點內容,與自身做對比,並加入了相關性過濾邏輯;

3)運行機制:一天兩次,研發會及時處理報警內容,同時會進行長期優化,現在badcase比例已明顯下降。

2.輿情處理閉環

依托優酷輿情發現和處理平台,聚合用戶觀點。針對搜不到、搜不好等問題,做專項優化,已解決5大類badcase。

獨家解讀三層架構下的優酷視頻搜索測試體系 8