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