1 背景與挑戰(zhàn)
1.1 數(shù)據(jù)平臺業(yè)務(wù)背景
數(shù)據(jù)平臺利用大數(shù)據(jù)智能分析、數(shù)據(jù)可視化等技術(shù),對公司內(nèi)外部經(jīng)過采集、建設(shè)、管理、分析的多源異構(gòu)數(shù)據(jù)進(jìn)行呈現(xiàn)和應(yīng)用,實(shí)現(xiàn)了數(shù)據(jù)共享、日常報(bào)表自動生成、快速和智能分析,深度挖掘數(shù)據(jù)價(jià)值,滿足企業(yè)各級部門之間的數(shù)據(jù)分析應(yīng)用需求。因而也具有數(shù)據(jù)量大,場景多,數(shù)據(jù)準(zhǔn)確性要求高,查詢性能要有保障等特點(diǎn)。
1.2 傳統(tǒng)測試方法
基于數(shù)據(jù)平臺的特點(diǎn),使得我們在線下進(jìn)行數(shù)據(jù)測試或者回歸測試時(shí)成本比較高,難度也比較大。所以我們希望能有一種有效的手段來降低測試的成本和門檻,實(shí)現(xiàn)測試的標(biāo)準(zhǔn)化。一直以來我們都是通過編寫自動化測試來實(shí)現(xiàn)的。但是傳統(tǒng)的自動化測試其實(shí)是有很多弊端的,比如成本高,覆蓋場景有限,標(biāo)準(zhǔn)化難度高等。
1.3 傳統(tǒng)自動化的弊端
1.3.1 成本高:
人工編寫、維護(hù)自動化用例成本高
較低的測開比無法跟上迭代的速度
1.3.2 覆蓋場景有限:
線下構(gòu)造測試場景難度大
場景覆蓋度有限
1.3.3 標(biāo)準(zhǔn)化難度高:
強(qiáng)依賴 QA 個(gè)人經(jīng)驗(yàn)和能力
開發(fā)獨(dú)立排查自動化問題難度高,推動開發(fā)自測效果差
因此我們希望利用線上的流量來搭建一個(gè)流量回放的平臺,與自動化測試結(jié)合,來實(shí)現(xiàn)一個(gè)符合數(shù)據(jù)平臺特點(diǎn)的自動化測試體系。
2 流量回放平臺介紹
流量回放的實(shí)現(xiàn)原理即是使用線上入口錄制用戶操作的真實(shí)流量,到預(yù)發(fā)環(huán)境進(jìn)行回放,對比生產(chǎn)和預(yù)發(fā)環(huán)境錄入接口的子調(diào)用、響應(yīng)差異去定位代碼問題,接入對象范圍是只讀、讀寫、只寫接口,優(yōu)點(diǎn)是業(yè)務(wù)代碼零侵入,自動流量 diff,真實(shí)鏈路調(diào)用,數(shù)據(jù)可查,問題定位精準(zhǔn),發(fā)現(xiàn)問題的可能性提高,缺點(diǎn)是面向范圍有一定局限性,操作不慎可能導(dǎo)致回放的接口中存在寫操作的子調(diào)用產(chǎn)生臟數(shù)據(jù),影響業(yè)務(wù)。
2.1 流量回放平臺調(diào)研
確定之后我們便立刻展開了調(diào)研,研究對比了公司的流量回放平臺,阿里的 Doom 以及 Twitty 的 Diffy,差異如下圖。
2.2 數(shù)據(jù)平臺業(yè)務(wù)特點(diǎn)
因?yàn)閿?shù)平報(bào)表的查詢特點(diǎn), 導(dǎo)致代碼中對外查詢鏈路少,對內(nèi)的維度條件業(yè)務(wù)組合多,基于這樣的特點(diǎn)導(dǎo)致在使用 Pandora 平臺錄制線上流量時(shí),流量錄制不全,大多數(shù)場景無法完全覆蓋。
復(fù)雜的數(shù)據(jù)平臺一般都依賴大量屬性配置管理、定時(shí)同步任務(wù)等,因此預(yù)發(fā)環(huán)境和生產(chǎn)環(huán)境配置庫需要隔離,保護(hù)數(shù)據(jù)不被污染。而流量回放又依賴配置庫和數(shù)據(jù)庫相同,使用場景高度依賴配置數(shù)據(jù), 導(dǎo)致回放落地難度大。
數(shù)據(jù)平臺的流量回放,驗(yàn)證結(jié)果時(shí)往往需要對數(shù)據(jù)進(jìn)行校驗(yàn), 請求會對生產(chǎn)數(shù)據(jù)庫造成一定查詢壓力,可能會影響生產(chǎn)環(huán)境穩(wěn)定性。需要控制好回放速度和控制、監(jiān)控和降級保護(hù)。
部分?jǐn)?shù)據(jù)是實(shí)時(shí)的,回放結(jié)果需要計(jì)算波動率。
基于以上特點(diǎn)導(dǎo)致數(shù)據(jù)平臺無法接入公司的 Pandora 平臺,我們也在第一時(shí)間聯(lián)系公司平臺負(fù)責(zé)人進(jìn)行溝通和提出改進(jìn)需求方案。 但問題的迫切使得我們決定先小成本的進(jìn)行一些工作,一方面盡快緩解我們的痛點(diǎn),一方面也要方便后期接入公司平臺,減少資源浪費(fèi)。以此為目的,我們在一期使用腳本采集流量, 并借助開源工具 Diffy 快速實(shí)驗(yàn)了一套簡易的流量回放系統(tǒng)。同時(shí)給平臺提出適應(yīng)性接入需求。在二期時(shí),將腳本采集的流量上傳至平臺,接入平臺進(jìn)行流量回放。 這樣的好處是:
流量自主可控,可根據(jù)需要定點(diǎn)擴(kuò)充流量,無需擔(dān)心流量稀疏、錄制對線上環(huán)境的影響、接口覆蓋不全等問題。
使用日志或埋點(diǎn)的方式采集流量,為流量采集提供了一種流量采集的新思路
開源工具只有部署和熟悉的資源投入,后期接入平臺后可回收資源,沒有浪費(fèi)資源重復(fù)造輪子
基于以上背景,進(jìn)行了數(shù)據(jù)平臺的流量回放實(shí)現(xiàn)方案。
2.3 核心原理
整體思路依然是沿著線上獲取流量,分別在不同代碼環(huán)境進(jìn)行回放,最后對接口返回結(jié)果進(jìn)行比對,以達(dá)到檢測被測代碼準(zhǔn)確性的目的。這里我們將生產(chǎn)的流量根據(jù)時(shí)間、接口白名單和操作人等字段進(jìn)行過濾,并按照窗口進(jìn)行流量的去重和篩選,最后沉淀為一個(gè)穩(wěn)定的流量池。任務(wù)觸發(fā)后會并發(fā)的按照指定速率向預(yù)發(fā)和生產(chǎn)雙發(fā)回放,獲取接口的返回結(jié)果,經(jīng)過一系列降噪操作后,根據(jù)字段對比結(jié)果統(tǒng)計(jì)出整體的成功率,并產(chǎn)出報(bào)告。下面我會從流量采集、環(huán)境策略、執(zhí)行調(diào)度、比對結(jié)果四個(gè)方面來介紹整個(gè)方案。 ~ 流量回放交互構(gòu)架圖~
2.3.1 流量采集
通過公司的流量錄制方式, 接口覆蓋提升難度較大, 不太適合數(shù)平對外鏈路少,條件組合多的特點(diǎn),因此我們想通過埋點(diǎn)篩選的方式進(jìn)行流量采集。這樣的好處是完美避免了流量錄制過程中流量分布不均,降低對線上服務(wù)的性能影響,同時(shí)接口的覆蓋又非常的完整。實(shí)現(xiàn)了自主可控,定點(diǎn)獲取流量。 在流量采集中,我們會分批次的去生產(chǎn)系統(tǒng)上根據(jù)配置的日期和數(shù)量不斷地?fù)迫×髁?,對每一個(gè)批次流量根據(jù)入?yún)⒑驼埱舐窂竭M(jìn)行接口去重,并根據(jù)梳理好的接口白名單、流量操作人、接口關(guān)鍵字、請求類型等來過濾數(shù)據(jù),然后需要對流量中的臟數(shù)據(jù)進(jìn)行篩選、對參數(shù)中的特殊字符和多余字段進(jìn)行修正。最后將清洗好的干凈數(shù)據(jù)保存到本地流量池中,等待任務(wù)使用。 在后期,處理后的流量會通過接口上傳至流量回放回放 Pandora 平臺,通過我司的平臺化工具更便捷高效的管理流量和執(zhí)行。 上傳后即可在流量回放平臺查看流量,這里也可以通過 excel 的方式手動上傳,但是每批次流量數(shù)量受限。
2.3.2 環(huán)境策略
環(huán)境采用了預(yù)發(fā)和生產(chǎn)兩套環(huán)境對比。通過配置將預(yù)發(fā)環(huán)境的數(shù)據(jù)來源指向了生產(chǎn)服務(wù)。并且定時(shí)同步生產(chǎn)的配置庫到預(yù)發(fā)環(huán)境,來解決數(shù)據(jù)和配置的 Gap。
2.3.3 執(zhí)行調(diào)度
調(diào)度有兩種方式, 一種是配置定時(shí)觸發(fā),一種是手動調(diào)用接口觸發(fā)。任務(wù)觸發(fā)后,會獲取流量池中的流量,并對流量的關(guān)鍵字和執(zhí)行數(shù)據(jù)量級再次判斷是否可執(zhí)行。確認(rèn)執(zhí)行后,將流量放入線程池中開始回放。這里采用了定長線程池和速率控制器來實(shí)現(xiàn)高并發(fā)和靈活的請求速率配置。 在任務(wù)執(zhí)行后,也可以根據(jù)實(shí)際執(zhí)行情況隨時(shí)修改配置來停止任務(wù)或者調(diào)整任務(wù)的發(fā)送速率,控制對線上環(huán)境的影響。
2.3.4 比對結(jié)果
拿到生產(chǎn)和預(yù)發(fā)的返回結(jié)果之后就是對比兩端結(jié)果,發(fā)現(xiàn)不一致的字段和返回,介于數(shù)平的特點(diǎn),噪音點(diǎn)會非常的多,因此引入了 AAdiff 的方式,來達(dá)到自動降噪的功能。如何降噪: a. AAdiff :在對比之前, 連續(xù)調(diào)用兩次生產(chǎn)環(huán)境,獲取結(jié)果后對比, 將不一致的字段剔除。即可去除不穩(wěn)定或者有波動的字段 b. 指定字段忽略:跟對一些配置字段或者無意義字段進(jìn)行手動配置忽略,降低噪點(diǎn)。 結(jié)果差異對比匯總后, 會根據(jù)字段進(jìn)行分組匯總,對與 AAdiff 不通過的字段會直接置灰。點(diǎn)擊字段即可在右側(cè)查看字段下差異的數(shù)據(jù)。 通過點(diǎn)擊差異詳情,可進(jìn)一步看到請求的 path、請求體、生產(chǎn)和預(yù)發(fā)的返回值等信息,幫助排查定位問題。 同時(shí)在結(jié)果報(bào)表中可以觀測到流量數(shù)、回放成功率等信息。
3 業(yè)務(wù)實(shí)踐
這里以智能運(yùn)營系統(tǒng)為例,對比流量回放接入前后的效能成本差異。 通過流量回放的方式,不僅快速提升了自動化的接口覆蓋,降低了迭代人力投入,更是增強(qiáng)了回歸的可靠性。這一點(diǎn)通過迭代質(zhì)量變化趨勢也能很好的反應(yīng)。 平臺數(shù)據(jù): 流量回放工具在 513 迭代初步使用, 但覆蓋率和穩(wěn)定性較差, 514 迭代完善,正式投入使用。 在 514 迭代工具正式投入使用后,發(fā)現(xiàn)遺漏 bug 比例達(dá) 25%,515 迭代質(zhì)量有明顯提升, 連續(xù)兩個(gè)迭代線上無缺陷逃逸發(fā)生。平臺質(zhì)量和穩(wěn)定性明顯提升。 目前智能運(yùn)營流量回放投入使用至今,已持續(xù)支持多個(gè)迭代的日常回歸測試以及日常壓測工作,讀接口覆蓋率達(dá) 86%,回放通過率穩(wěn)定在 98%,發(fā)現(xiàn)回歸漏測比率達(dá) 25%,大大提高了系統(tǒng)的穩(wěn)定性和線上質(zhì)量。
4 規(guī)劃與展望
智能運(yùn)營系統(tǒng)流量回放已進(jìn)入維護(hù)階段,在日常迭代中幫助測試實(shí)現(xiàn)冒煙、回歸、壓測、緩存驗(yàn)證等多種任務(wù)。后續(xù)將通過精準(zhǔn)接口流量獲取的方式,將少部分稀疏接口納入覆蓋。并將流量上傳至流量回放平臺。借助流量回放平臺的能力,更加穩(wěn)定、方便的執(zhí)行計(jì)劃和排查問題。 基于數(shù)據(jù)平臺各系統(tǒng)以讀接口為主的特點(diǎn),非常適合流量回放的回歸形式,后續(xù)會將各個(gè)系統(tǒng)按優(yōu)先級陸續(xù)接入我司流量回放平臺,并通過流量埋點(diǎn)的方式快速提升接口覆蓋。
-
接口
+關(guān)注
關(guān)注
33文章
8575瀏覽量
151015 -
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7002瀏覽量
88941 -
自動化
+關(guān)注
關(guān)注
29文章
5562瀏覽量
79239
原文標(biāo)題:數(shù)據(jù)平臺流量回放最佳實(shí)踐
文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論