優酷質量保障系列(一)——服務端穩定性保障實踐

文娛妹導讀:質量保障貫穿所有研發流程,測試做爲質量的構建者和守護者,須要保障的不只僅是提測後的功能質量,而是整個研發過程的質量和效率。分享優酷經過質量保障建設提高研發效率和質量的實踐過程。
本系列文章將陸續發佈,感興趣的朋友持續關注!_

服務端質量保障作什麼?

回答這個問題以前,先要看看影響服務端質量的因素有哪些?從當前服務端研發流程來看一個需求上線的所有階段以及每一個階段的主要活動:
image
能夠看到質量相關的活動貫穿所有研發流程,測試做爲質量的構建者和守護者,須要保障的不只僅是提測後的功能質量,而是整個研發過程的質量和效率。程序員

定義每一個階段影響質量的主要因素:安全

•    需求確認:需求的有效性以及業務價值
•    方案審計:方案的合理性以及變動致使的質量風險
•    代碼開發:代碼邏輯和編碼規範
•    線下驗證:迴歸測試的效率和質量;新功能測試的效率和質量
•    安全生產:留觀流量的有效性;質量驗證的充分性
•    線上發佈:線上穩定性保障機制和異常檢查能力

結合優酷業務特性和研發現狀,肯定測試當前須要重點關注的保障內容:app

•    代碼開發:經過創建靜掃、單元測試,實現開發提交代碼後的持續驗證
•    線下驗證:保障提測代碼質量、線下驗收質量;
•    安全生產:保障安全生產驗證有效性
•    線上發佈:保障線上服務穩定性

總結成一句話:服務端質量保障體系就是要構建貼合業務特性的自動化測試保障能力,並融入研發流程關鍵質量階段(測試准入冒煙測試提測迴歸測試安全生產驗證線上發佈),保障應用變動可持續集成、可持續部署、可持續發佈。框架

如何構建質量保障體系?

推流程

保障能力只有嵌入到研發流程,才能真正的發揮做用,爲此,經過自定義應用發佈流程和組件,構建了優酷線下部署、線上發佈的流程,藉助發佈流程的統一升級,實現保障體系升級:
image
准入測試性能

•    保障內容:驗收單元測試結果、靜態代碼掃描結果,保障進入測試階段的代碼基本質量;避免無效部署(代碼調試、開發自測)觸發測試任務執行
•    準出條件:靜掃無Block問題;單元測試經過

冒煙測試單元測試

•    保障內容:構建自動化測試實驗室,驗收應用基本功能,阻斷低級問題流入提測階段以及集成測試階段,保障後續測試活動的質量和效率
•    準出條件:冒煙測試完成;完成失敗用例分析;

提交測試測試

•    保障內容:經過自定義「提測」組件打通發佈平臺和優酷研發效能平臺,開發在發佈流程中一鍵提測,自動收集提測相關信息並生成提測單,保障提測信息有效性,阻斷低質量提測流入測試環節
•    準出條件:冒煙測試結果知足業務提測基線;提測單包含代碼變動、功能說明、影響接口等測試信息;

集成測試優化

•    保障內容:構建貼合業務特性的迴歸測試任務,對變動進行全量回歸測試,保障變動代碼不影響原有功能
•    準出條件:迴歸測試完成;完成失敗用例分析;沒有影響線上發佈的問題

安全生產驗證編碼

•    保障內容:對接安全生產驗證組件,爲應用發佈提供安全生產環境的驗證能力,保障安全生產留觀期間內的流量有效性、質量穩定性。
•    準出條件:安全生產驗證完成;完成失敗驗證點分析;沒有影響線上發佈的問題

灰度驗證spa

•    保障內容:在微灰環境創建壓測分組,經過引流的方式對壓測分組機器自動壓測,並和歷史壓測基線作對比,提供性能評估能力,保障變動代碼的性能穩定性
•    準出條件:對比性能基線,壓測評估結果經過

線上部署

•    保障內容:經過構建線上巡檢任務,定時巡檢核心接口的核心場景,及時發現由於配置變動、代碼變動、依賴變動致使的線上問題
•    準出條件:無

建能力、搭平臺

統一應用發佈流程後,如何快速協助業務構建流程中須要的各類保障能力,也是質量保障體系必須解決的問題。在「不重複造輪子」的原則下,經過整合阿里在服務端測試領域的能力和服務,造成了一套能適合優酷業務特性的質量保障能力,並經過平臺化向各個業務提供接口,協助業務團隊快速構建質量保障體系的能力。
image
研發流程

經過自定義發佈流程組件,打通發佈流程和優酷效能平臺,實如今發佈流程上一鍵提測,主要爲提供提測承載頁、提測代碼變動分析、提測卡口功能。

基礎能力
基於JVM-Sandbox提供的能力、平臺實現了採集模塊自動部署、模塊狀態自動維護、請求採集自動調控、加強類自動解析,支持應用一鍵接入保障體系所須要的基礎能力:

•    全環境數據採集能力(請求入參和返回結果、應用內部方法鏈路)
•    全環境、全接口協議、多方式請求回放能力(實時回放、mock回放、泛化回放)
•    線下環境Mock能力(模擬返回結果、模擬異常、模擬超時)

自動化測試任務
不一樣業務須要的保障能力可能來自集團不一樣平臺,業務的接入和分析成本比較高,爲此,自動化測試頁面提供了各類任務的接入配置、調度執行、結果回收、失敗分析功能,實現了任務調度、分析處理的閉環能力,目前支持的任務類型和配置以下:

•    支持任務類型:自動化實驗室、智能回放、安全生產驗證、單機性能評估
•    支持任務配置:持續集成配置、結果通知配置

自動化測試框架
優酷自研接口測試框架,經過提供遠程接口調用、Wrapper斷言、自定義測試報告、中間件跨環境訪問、Pandora類隔離機制等能力,業務團隊能夠低成本完成測試腳本開發,有效支撐優酷所有業務場景的冒煙測試、迴歸測試、線上巡檢腳本開發和維護,框架主要模塊以下:

•    遠程接口調用模塊:提供集團經常使用協議接口的跨環境調用能力
•    斷言模塊:無需編寫任何斷言方法,提供所見即所得的斷言機制
•    報告模塊:自動記錄測試腳本中的接口調用、斷言等信息,生成完整的測試報告
•    類隔離模塊:實現經過容器運行測試腳本,解決測試工程的包衝突問題

智能回放
阿里已有的回放測試平臺都是基於線下mock回放的子調用對比測試,但優酷的業務形態決定了服務端讀接口偏多,更適合作實時回放,既能夠規避配置變動致使的返回結果不一致,又下降了業務接入和使用成本。

爲此,基於JVM-Sandbox提供的鏈路採集能力和回放能力,優酷實現了基於線上熱度鏈路推薦的實時回放能力,相比集團已有回放平臺,具有如下特性:
•    更有效的請求推薦能力:經過聚合線上採集的應用內部方法鏈路,有效識別出線上熱度鏈路,基於熱度鏈路推薦回放請求,相比基於子調用鏈路推薦請求,能更有效的覆蓋應用內部代碼鏈路和真實業務場景
•    更穩定的對比回放測試(只適用讀接口的回放):採起實時非Mock回放,同時請求目標環境和回放環境,對比接口返回結果,有效規避了因爲子調用變動和配置數據變動致使的對比失敗
•    更低的接入和使用成本:基於JVM-Sandbox實現應用無侵入部署;對只讀接口,不須要配置子調用對比邏輯,指定接口後就能夠開始回放,即配即用

安全生產
優酷構建了針對安全生產環境的驗證機制和能力,能有效保障安全生產留觀期間的流量有效性和質量穩定性,目前主要提供的驗證能力以下:

•    業務質量規則驗證:經過配置接口返回結果的質量規則,全量驗證安全生產留觀期間內接口的返回結果,保障接口返回結果的業務質量
•    智策告警:監控和分析安全生產留觀期間內產生的業務告警,保障常規業務指標監控、中間件監控提早在安全生產階段發現
•    接口RT對比:對比留觀時間段內,核心接口在安全生產的平均RT和線上的平均RT,提早發現接口性能相關的問題
•    接口自動化驗證:經過自動化腳本驗證安全生產環境接口質量,及時發現接口調用失敗、無數據返回等重大接口問題
•    智能回放:經過智能回放,對比安全生產和線上的接口返回結果,保障讀接口功能穩定性
•    業務場景覆蓋率:經過創建核心接口的業務場景規則,保障留觀期間內的流量能覆蓋到核心業務場景

如何度量保障體系質量?

構建服務端保障體系主要是爲了提高服務端發佈質量和研發效率,優酷將下降服務端故障數和提高變動發佈效率定義爲主要須要解決的問題。基於這2個問題,對目標的定義以下:
業務質量

•    發佈致使的故障數:應用發佈致使的線上問題數。評估攔截髮布致使故障的價值
•    線上突發故障數:線上突發故障數。用來評估線上服務穩定性

研發效率

•    變動無人值守率:評估持續集成體系對提高迴歸測試效率的價值
•    變動驗證停留時長:評估持續集成體系對提高變動發佈效率的價值

肯定保障體系各項指標後,就要經過收集須要的基礎數據,按照不一樣維度聚合,造成準確可靠的度量指標。能讓業務團隊、專項負責人、測試負責人經過指標數據發現問題,爲後續優化提供方向,這個就是保障體系的度量能力。
優酷服務端保障平臺經過和各個外部系統打通,並提供了通用失敗分析能力,造成了數據收集、失敗分析、聚合指標的度量閉環。
image
通過過去半年的能力建設和持續推動,已經有幾百個應用接入服務端測試平臺,其中核心場景應用接入率 100%,用戶活躍度高,保障效果明顯,能有效發現質量問題,而且實際攔截了若干次會引起回滾甚至是線上故障的問題,極大的提升了服務端上線質量和研發效率。

本系列文章將陸續進行發佈,感興趣的朋友必定要關注!


阿里文娛技術開通視頻號了,將經過多種形式來分享咱們的技術經驗和技術人平常
但願能在視頻號「娛樂圈程序員」裏和你一塊兒看點有趣的!
image

相關文章
相關標籤/搜索