知乎搜尋評測實踐
前言
效果評測一直是軟體測試中令人頭疼的部分,因為很多情況下效果的好壞是一個偏主觀的東西,如何經過抽樣、對比、打分、使用者資料等客觀的方式來評價一款產品的好壞,是我們測試工程師值得思考的問題。
隨著知乎 DAU 的持續增長,知乎搜尋也成了一個重要的流量分發的入口。知乎搜尋對質量的要求也越來越高,於是效果評測勢在必行。
本文主要介紹了目前業界通用的評測方法和流程;在知乎搜尋評測中使用的方法、工具;遇到的問題及評測平臺的建設。希望對評測入門,尤其是做搜尋評測的同學有一定的指導意義。
評測基本流程
評測的基本流程主要分為評測方法、評測抽樣、評測抓取、人工標註與質檢、統計分析與報告和短板 review,在下文會一一介紹。

評測方法
Ppage(per-page)
常用於相對正式的綜合競品評測,按頁面整體評測,主旨在評測一個頁面整體的好壞。可以分為整體感官打分、相關性打分、排序打分、頁面質量打分等。
PI(per-item)
有列表返回,需要逐條進行打分的評測,常用於搜尋評測,知乎搜尋評測用到的就是這個方法,可以用到DCG 評分將不同條目賦予不同的權值,得出綜合分數,以達到綜合評測的效果。
SBS(side by side)
顧名思義,使用對比的方式進行評測,分為與競品對比,版本間對比等。制定指標,利用打分、對比等形式,評價出 2 個版本的好壞。
宮格評測
適用於可人工判斷與實際程式效果的對比,多用於專項評測,對系統中某一功能進行效果評測。參考:混淆矩陣。

評測抽樣
隨機抽樣
- 優點:能完全反應使用者需求的真實分佈(如時間、地域等)
- 缺點:有些長尾和區域性問題無法較好的暴露
分層抽樣
根據查詢量,分為熱門、中段、長尾,並按照比例分別進行抽樣
- 優點:能夠對各個分段進行有針對性的分析
- 缺點:對使用者需求比例無法完全真實還原
去重抽樣
將使用者查詢進行去重,再進行抽樣,能夠更好的覆蓋長尾查詢,但與使用者需求比例相差較大
垂直抽樣
針對一些特性(如類別、成分、長度、DIFF )等進行區域性抽樣,能更好的覆蓋和發現區域性型別的問題,但無法從整體上說明問題
評測抓取
python 指令碼抓取
在日常評測中主要使用 python 指令碼驅動抓取知乎與競品的引擎的搜尋的結果,分別做對比。均用對應的 API 進行抓取。
召回每日自動化評測結果
主要策略,將每日所有長尾搜尋 query 進行隨機抽樣 1000 個,分別請求知乎、競品 1、競品 2 三家搜尋引擎,記錄競品前 10 條相同返回結果,如果有 3 條以上返回結果在知乎前 20 條返回結果中未出現,該 query 記為 badcase。
具體一次評測結果如下:
Badcase
上文中問題 query 數的詳細資訊

人工標註與質檢
搜尋評測我們目前採用 PI 和 SBS 的方法評測,抓取結果後人工逐條進行對比打分,綜合每條結果進行 query 的 DCG 打分,最後生成測試報告。
評測平臺相關:

統計分析與報告
短板 review
- 對比與競品的優缺點
- 問題歸類
- 需求生成
- 短板 review,形成排期
- 優化後,badcase 迴歸驗證
例:
需求生成:

badcase 迴歸驗證:

總結&展望
總體來說,評測適合那些返回結果不確定、偏效果類的測試。尤其是在搜尋中,我們如何能量化的判斷搜尋的質量是值得思考的問題。
知乎的搜尋評測總的來說屬於剛起步階段,目前保持一個季度 2 次的頻率,還在摸索優化打分的策略。已經有了自己的評測平臺,可以穩定提供評測結果,badcase 以及優化建議。
後續期望可以通過反覆的實踐不斷優化評測的方向及方法,打分的合理性;平臺方面希望可以接入更多的評測需求,擴大平臺的覆蓋面,不侷限於搜尋。
One more thing:
國際慣例,歡迎有志於質量保障工作的知友們加入知乎 QA 團隊,與知乎一起發現更大的世界,詳細職位可以參見這裡,期待知友們的加入 ~