偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

訂單流量錄制與回放探索實(shí)踐

開(kāi)發(fā) 前端
得物版本的流量錄制回放平臺(tái)pandora在官方開(kāi)源版本上進(jìn)行了很大的拓展,支持了很多官方版本不支持的子調(diào)用和入口調(diào)用。此外,平臺(tái)還對(duì)得物的中間件進(jìn)行了諸多適配工作,避免了大量的回放失敗噪音。

1、背景介紹

1.1 得物pandora介紹

什么是流量錄制回放?流量錄制回放是應(yīng)用端通過(guò)掛載注入錄制器探針自動(dòng)注冊(cè)到服務(wù)端形成錄制流量回流,將所有外部調(diào)用依賴的響應(yīng)內(nèi)容(如數(shù)據(jù)庫(kù)、分布式緩存、外部服務(wù)響應(yīng)等)進(jìn)行完整記錄。由平臺(tái)向回放器分發(fā)流量回放指令。其核心價(jià)值是通過(guò)直接錄制生產(chǎn)的真實(shí)數(shù)據(jù),將生產(chǎn)真實(shí)數(shù)據(jù)轉(zhuǎn)化成可復(fù)用、可執(zhí)行的流量,快速地在測(cè)試環(huán)境中進(jìn)行回放比對(duì)接口返回值和中間鏈路的驗(yàn)證。

得物版本的流量錄制回放平臺(tái)pandora在官方開(kāi)源版本上進(jìn)行了很大的拓展,支持了很多官方版本不支持的子調(diào)用和入口調(diào)用。此外,平臺(tái)還對(duì)得物的中間件進(jìn)行了諸多適配工作,避免了大量的回放失敗噪音。

圖片

1.2 市場(chǎng)工具對(duì)比

目前市場(chǎng)上已知的流量錄制回放平臺(tái)大部分都是在Jvm-Sandbox-Repeater基礎(chǔ)上進(jìn)行二次開(kāi)發(fā)和改造,并且多數(shù)都是只支持Java語(yǔ)言。核心原理也都是通過(guò)錄制線上真實(shí)流量然后在測(cè)試環(huán)境進(jìn)行回放,驗(yàn)證代碼邏輯正確性。

2、實(shí)踐落地

2.1 協(xié)作模式

在具體的實(shí)施層面,目前采用的是業(yè)務(wù)測(cè)試,平臺(tái)研發(fā),業(yè)務(wù)研發(fā)三方協(xié)同的模式。任務(wù)分拆如下圖所示。

圖片

得物流量回放實(shí)施模式

2.2 階段應(yīng)用

流量回放在各階段的理想實(shí)施應(yīng)用:

  • 提測(cè)階段卡點(diǎn):聚焦核心場(chǎng)景,低成本驗(yàn)證每次提測(cè)對(duì)于核心場(chǎng)景的影響;
  • 測(cè)試回歸階段卡點(diǎn):全量場(chǎng)景,重點(diǎn)追求覆蓋場(chǎng)景全面性,驗(yàn)證新功能對(duì)歷史功能的影響;
  • 預(yù)發(fā)環(huán)境回歸:目前預(yù)發(fā)跟生產(chǎn)同庫(kù),未來(lái)會(huì)推動(dòng)落地基于預(yù)發(fā)&生產(chǎn)環(huán)境的流量回放,盡可能拉近錄制時(shí)環(huán)境和回放時(shí)環(huán)境的仿真差異,從而降低回放階段的噪音影響;

在得物的整體QA體系中,流量回放短期聚焦在回歸兜底保障上。

圖片

得物迭代&項(xiàng)目時(shí)間軸

2.3 實(shí)踐落地

流量回放的開(kāi)展自發(fā)起后,在本域由探索嘗試階段逐漸過(guò)渡到應(yīng)用場(chǎng)景拓展階段。

訂單流量回放模式

在經(jīng)過(guò)一段時(shí)間的探索,摸索出了一套適用于本域迭代的模式。

圖片

Part1、嘗試接入

團(tuán)隊(duì)開(kāi)始開(kāi)展流量回放的專項(xiàng)之后,通過(guò)調(diào)研,選取了40%的服務(wù)優(yōu)先接入。

1. 階段目標(biāo)

  • 完成30%P0應(yīng)用top10 接口100%場(chǎng)景覆蓋,形成迭代落地質(zhì)量卡點(diǎn),完成適用性和提效分析;
  •  增加訂單域流量回放人員投入,落地質(zhì)量卡點(diǎn),覆蓋5%回歸場(chǎng)景;

2. 實(shí)施方案

  • 調(diào)研應(yīng)用的特性,嘗試接入流量錄制回放;
  • 梳理服務(wù)的P0接口及用例,配置對(duì)應(yīng)的接口及用例標(biāo)簽;
  • 用例自動(dòng)沉淀到用例集后,在回歸階段嘗試進(jìn)行流量回放。

3. 收益成果

  • 完成30%應(yīng)用形成落地質(zhì)量卡點(diǎn),落地15%用例回歸場(chǎng)景,驗(yàn)證方案可行性和易用性,摸索研發(fā)測(cè)試協(xié)同機(jī)制。

Part2、探索升級(jí)

上一階段花費(fèi)大量的時(shí)間梳理接口配置標(biāo)簽,用例沉淀速度緩慢,并且收益與投入不成正比,因此調(diào)整了策略,應(yīng)用智能化分析進(jìn)行提效,快速沉淀用例,擴(kuò)大用例量及覆蓋的接口量。45%業(yè)務(wù)應(yīng)用接入并均實(shí)現(xiàn)強(qiáng)卡點(diǎn)落地,配合平臺(tái)側(cè)優(yōu)化,解決大部分組件適配和使用問(wèn)題,迭代應(yīng)用流程以及應(yīng)用指標(biāo)分析機(jī)制基本跑順。

1. 階段目標(biāo)

  • 應(yīng)用:接入的應(yīng)用交由對(duì)應(yīng)的服務(wù)負(fù)責(zé)人,負(fù)責(zé)對(duì)應(yīng)服務(wù)的接口維護(hù)運(yùn)營(yíng)及沉淀、排錯(cuò)分析;
  • 用例:嘗試探索新的用例沉淀方式,進(jìn)一步擴(kuò)大用例量,增加覆蓋的接口量;
  • 排錯(cuò):根據(jù)服務(wù)的用例量以及接入的時(shí)間,提升測(cè)試排錯(cuò)能力,階段2結(jié)束測(cè)開(kāi)排錯(cuò)達(dá)到五五開(kāi);

2.收益成果

  • 從開(kāi)始試點(diǎn)到應(yīng)用卡點(diǎn),沉淀的用例量也在應(yīng)用熱點(diǎn)流量方案之后開(kāi)始了升級(jí)之路。接入的應(yīng)用數(shù)也超過(guò)原定目標(biāo)達(dá)到50%且均實(shí)現(xiàn)強(qiáng)卡點(diǎn)落地。
  • 應(yīng)用智能化分析策略提效效果明顯,沉淀的用例數(shù)成指數(shù)型增長(zhǎng),接入應(yīng)用的P0接口覆蓋率達(dá)到100%。
  • 測(cè)試排錯(cuò)能力提升,每迭代流量回放發(fā)現(xiàn)的bug數(shù)也在增加,新方案的可實(shí)施性和可推廣性基本符合預(yù)期。

Part3、專項(xiàng)提速

在沉淀的用例case大量的增加、用例沉淀速度提效明顯的前提下,流量回放在迭代的應(yīng)用中發(fā)現(xiàn)更多的缺陷,規(guī)劃擴(kuò)大接入的應(yīng)用以及覆蓋的接口范圍。

1. 階段目標(biāo)

  • 應(yīng)用接入:新增40%應(yīng)用接入,接入應(yīng)用占比合計(jì)90%;
  • 排錯(cuò):提升測(cè)試的排錯(cuò)能力,新版本排錯(cuò)由平臺(tái)研發(fā)轉(zhuǎn)交業(yè)務(wù)研發(fā),測(cè)試開(kāi)發(fā)排錯(cuò)占比五五開(kāi);
  • 用例量:加速沉淀用例量,擴(kuò)大覆蓋的范圍,至少65%的應(yīng)用完成全量用例沉淀;
  • 卡點(diǎn):接入應(yīng)用達(dá)到100%卡點(diǎn),提升排錯(cuò)速度,部分應(yīng)用由生產(chǎn)卡點(diǎn)轉(zhuǎn)為預(yù)發(fā)卡點(diǎn);
  • 全域接入應(yīng)用接口維度覆蓋率98%以上,接口配置完善度98%以上,全量用例路徑覆蓋率60%以上。

2. 收益成果

隨著應(yīng)用的接入,沉淀的用例量也在擴(kuò)大,發(fā)現(xiàn)的問(wèn)題數(shù)也在增多。同時(shí)也增加覆蓋率的指標(biāo)來(lái)衡量流量回放用例覆蓋的代碼占總代碼行的比值。隨著對(duì)覆蓋率的關(guān)注,平臺(tái)采樣策略也進(jìn)行了一個(gè)調(diào)整,刪除所有歷史沉淀用例,僅沉淀新策略實(shí)施之后錄制的流量。

  • 流量回放接入90%應(yīng)用,擴(kuò)大應(yīng)用接入和case沉淀,超預(yù)期達(dá)成目標(biāo),沉淀應(yīng)用Case量是原計(jì)劃的3倍,此階段累計(jì)發(fā)現(xiàn)缺陷數(shù)占全域流量回放發(fā)現(xiàn)的bug數(shù)的45%,充分驗(yàn)證了落地策略的有效性;
  • 從階段3本域發(fā)現(xiàn)的缺陷統(tǒng)計(jì)來(lái)看,其中回歸類BUG占比38%,發(fā)現(xiàn)線上自有/隱藏問(wèn)題占比8%,迭代過(guò)程中代碼問(wèn)題(日志報(bào)錯(cuò))和代碼規(guī)范類問(wèn)題占比46%,性能問(wèn)題占比8%;
  • 接口配置完善度100%;接口維度覆蓋率96.49%;全量用例路徑覆蓋率79.32%,全量代碼覆蓋率平均39.8%;

3、總結(jié)分析

3.1 問(wèn)題歸類分析

3.1.1 累計(jì)發(fā)現(xiàn)的缺陷分類:

圖片

3.1.2 累計(jì)發(fā)現(xiàn)的缺陷來(lái)源分類:

圖片

3.1.3 典型案例:

  • 回放時(shí)系統(tǒng)異常,排查之后定位為NPE類問(wèn)題,如:

圖片

圖片

  • response返回的業(yè)務(wù)字段diff對(duì)比不一致,如:

圖片

通過(guò)對(duì)缺陷以及缺陷來(lái)源的歸類不難看出:

  • 流量回放發(fā)現(xiàn)攔截的問(wèn)題近一半都是會(huì)引起生產(chǎn)業(yè)務(wù)報(bào)錯(cuò)的,其中包括像金額不對(duì)涉及資損的問(wèn)題以及字段傳值不對(duì)、枚舉類型取錯(cuò)等缺陷;作為生產(chǎn)發(fā)布前的最后階段的防線之一,充分展現(xiàn)了流量錄制回放作為對(duì)測(cè)試回歸的兜底能力的補(bǔ)充手段的重要性。
  • 45%左右的問(wèn)題是手工測(cè)試過(guò)程中難以發(fā)現(xiàn)隱藏比較深的代碼層面問(wèn)題,例如NPE報(bào)錯(cuò)、入?yún)⒊鰠⒆侄挝葱蛄谢龋@些問(wèn)題如果僅僅通過(guò)前端測(cè)試或接口測(cè)試不看日志不一一對(duì)比所有字段勢(shì)必會(huì)將問(wèn)題帶到生產(chǎn)環(huán)境,最終影響生產(chǎn)環(huán)境的穩(wěn)定性。
  • 6%左右的性能問(wèn)題,例如存在重復(fù)子調(diào)用,影響接口RT,如果不在生產(chǎn)發(fā)布前發(fā)現(xiàn)解決,勢(shì)必給用戶體驗(yàn)帶來(lái)一定的挑戰(zhàn)。
  • 從缺陷的來(lái)源上看,發(fā)現(xiàn)的缺陷來(lái)源還是集中在項(xiàng)目迭代需求和技術(shù)優(yōu)化上,充分驗(yàn)證了流量回放整體提速后的有效性以及對(duì)測(cè)試覆蓋兜底能力的補(bǔ)充。
  • 通過(guò)對(duì)失敗用例的排錯(cuò)分析經(jīng)驗(yàn)的累積和分享培訓(xùn),參與專項(xiàng)的測(cè)試團(tuán)隊(duì)的整體技術(shù)水平通過(guò)流量回放專項(xiàng)提速在技術(shù)氛圍上有明顯提升,培養(yǎng)了多位同學(xué)對(duì)自身負(fù)責(zé)模塊的實(shí)現(xiàn)的代碼走讀能力,以及深挖缺陷的code diff能力。

3.2 適用性分析

  • 適用場(chǎng)景

適用于返回?cái)?shù)據(jù)量大、業(yè)務(wù)流量也很大,以及讀取業(yè)務(wù)占比大的場(chǎng)景,如ToC產(chǎn)品。

  • 不適用場(chǎng)景
  • 掛載沙箱后開(kāi)啟錄制會(huì)導(dǎo)致RT瞬間飆高,影響生產(chǎn)服務(wù)的穩(wěn)定性。
  • 異步場(chǎng)景目前流量回放平臺(tái)不支持。
  • 需要驗(yàn)證數(shù)據(jù)庫(kù)的落地,節(jié)點(diǎn)的流轉(zhuǎn)的鏈路測(cè)試,需要自動(dòng)化。

先投入能迅速形成能卡點(diǎn)有收益的應(yīng)用(迭代代碼變更相對(duì)少,分層結(jié)構(gòu)比較好,異步少,寫操作少),把看得到的使用效果做出來(lái)。

流量回放能否完全替代手工回歸以及自動(dòng)化?

目前來(lái)看,答案是否定的。首先,從沙箱掛載到接口配置再到流量錄制這一套流程下來(lái),也需要較長(zhǎng)的時(shí)間才能達(dá)到較高的用例覆蓋,對(duì)于一些邊界極端場(chǎng)景還是需要手工設(shè)計(jì);其次,流量錄制回放是后置的回歸兜底,更側(cè)重于對(duì)歷史邏輯的回歸驗(yàn)證。

1、接口覆蓋不全。迭代需求新接口,未配置關(guān)聯(lián)錄制,不在流量回放的錄制范圍。

2、全量代碼覆蓋率不高。接口已經(jīng)配置覆蓋了,但是由于采樣比例小場(chǎng)景極端等原因,接口的分支場(chǎng)景并沒(méi)有錄制到未被覆蓋。

3、排錯(cuò)能力的高低影響。接口覆蓋了,排錯(cuò)的時(shí)候由于新加了子調(diào)用,導(dǎo)致失敗的用例在排錯(cuò)的時(shí)候容易被簡(jiǎn)單定義為代碼變更。

4、平臺(tái)問(wèn)題。diff比對(duì)異常,顯示回放成功,異步線程的回放是一個(gè)待攻克的難點(diǎn)。

3.3 面臨的挑戰(zhàn)

3.3.1 排錯(cuò)的效率

錄制流量后對(duì)流量進(jìn)行回放,發(fā)現(xiàn)回放結(jié)果比對(duì)失敗的很多。經(jīng)過(guò)對(duì)失敗原因的排查與分析,有些是代碼bug導(dǎo)致的失敗,但更多的失敗不一定是代碼bug,常見(jiàn)噪音主要包含:

  • 代碼修改,新增或刪除了子調(diào)用,導(dǎo)致mock失敗
  • 平臺(tái)不支持的子調(diào)用,導(dǎo)致失敗
  • 時(shí)間戳相關(guān)的子調(diào)用,diff不一致
  • 子調(diào)用中使用隨機(jī)參數(shù)相關(guān),導(dǎo)致mock匹配不上
  • repeater代碼自身缺陷
  • 業(yè)務(wù)自增數(shù)據(jù)差異
  • 配置中心數(shù)據(jù)不一致
  • 返回?zé)o序元素集合,造成結(jié)果對(duì)比誤差

失敗原因很多,真正有效的失敗數(shù)很少。如此一來(lái),每次回放失敗的排查成本就非常高。給業(yè)務(wù)的推進(jìn)造成了巨大的阻礙。

原版repeater上報(bào)的信息不夠豐富,很多情況需要看日志才能排查。目前也沒(méi)有公開(kāi)成熟的參考的方案。平臺(tái)也進(jìn)行了一些初步的探索,對(duì)回放失敗的場(chǎng)景自動(dòng)進(jìn)行歸類,上報(bào)更豐富的數(shù)據(jù)信息提供排查指引,幫助排查人員聚焦定位問(wèn)題。同時(shí)平臺(tái)也針對(duì)一些噪音進(jìn)行自動(dòng)識(shí)別并在回放時(shí)自動(dòng)過(guò)濾降噪。

回放失敗分類

界面提示

界面展示信息

子調(diào)用多調(diào)用

錯(cuò)誤

得物鏈路traceId, 多調(diào)用的參數(shù),調(diào)用堆棧,是否參數(shù)不匹配,是否完全多出來(lái)一次調(diào)用,等等

子調(diào)用少調(diào)用+回放時(shí)捕獲到異常

錯(cuò)誤

得物鏈路traceId, 回放軌跡,異常堆棧,參數(shù)

子調(diào)用少調(diào)用

錯(cuò)誤

得物鏈路traceId, 回放軌跡

入口返回diff有差異

錯(cuò)誤

得物鏈路traceId, 返回?cái)?shù)據(jù)的diff比對(duì)

僅回放時(shí)捕獲到異常

告警

得物鏈路traceId, 異常堆棧,參數(shù)

3.3.2 異步線程錄制回放問(wèn)題

入口主線程不等子線程執(zhí)行完就返回的異步場(chǎng)景,當(dāng)前的策略是用戶可配置對(duì)異步子線程的多調(diào)用忽略,只關(guān)注主線程的執(zhí)行情況。這一方式雖然可以提升這種異步線程場(chǎng)景的回放成功率,但是損失了異步子線程業(yè)務(wù)邏輯的回歸能力。

圖片

上面的案例就是由于應(yīng)用開(kāi)啟了排查提效優(yōu)先的開(kāi)關(guān),忽略了異步子線程的調(diào)用,導(dǎo)致diff比對(duì)異常,顯示回放成功。該接口在生產(chǎn)發(fā)布時(shí)報(bào)了異常,String類型長(zhǎng)度超長(zhǎng)被try catch,埋點(diǎn)丟失。

4、展望&未來(lái)規(guī)劃

流量錄制回放作為測(cè)試領(lǐng)域的一個(gè)新興事物,在誕生初期就吸引了廣大測(cè)試同仁的關(guān)注,市場(chǎng)上也有些公司也對(duì)此進(jìn)行了一些實(shí)踐。我們對(duì)流量錄制回放的實(shí)踐還處于起步的階段,一些問(wèn)題的解法也在探索中 。

預(yù)發(fā)只讀接口非mock回放

在得物預(yù)發(fā)環(huán)境是聯(lián)通生產(chǎn)環(huán)境的數(shù)據(jù)庫(kù)和下游應(yīng)用,因此對(duì)于預(yù)發(fā)進(jìn)行不mock的回放,特別是對(duì)只讀接口進(jìn)行不mock的回放能夠在上線前的最后階段進(jìn)行一次兜底的回歸校驗(yàn)。最難解決的問(wèn)題是,當(dāng)前是只讀的接口難以保證后續(xù)的變更不會(huì)引入寫操作。在當(dāng)前階段開(kāi)放這一功能會(huì)引入額外的資損類風(fēng)險(xiǎn)敞口。

對(duì)此問(wèn)題,每次回放前都進(jìn)行人工校驗(yàn)可能可以解決,但是又引入了極大的效率問(wèn)題。如何高效地保證在預(yù)發(fā)/灰度環(huán)境進(jìn)行不mock流量回放不會(huì)產(chǎn)生資損風(fēng)險(xiǎn),是一個(gè)值得探索的問(wèn)題,需要研發(fā)跟測(cè)試的共同努力。

方案1-單回放(準(zhǔn)實(shí)時(shí)回放)

圖片

方案1落地遇到的問(wèn)題:

1.配置中心的數(shù)據(jù)不一致,噪音比較大

2.時(shí)效問(wèn)題,有10S的時(shí)差,一些業(yè)務(wù)對(duì)時(shí)效要求比較高

方案2-雙回放(實(shí)時(shí)回放)

圖片

方案2不僅避免了上面方案1的問(wèn)題,另外后續(xù)規(guī)劃還可以根據(jù)覆蓋率沉淀有效用例集,手工添加異常用例。

通過(guò)一段時(shí)間的運(yùn)行,目前已經(jīng)看到了一些流量錄制回放在業(yè)務(wù)迭代中產(chǎn)生了價(jià)值,發(fā)現(xiàn)了一些隱藏bug。接入流量回放明顯的變化是能夠?qū)y(cè)試從繁重的回歸測(cè)試、用例梳理維護(hù)等重復(fù)性高的勞動(dòng)中解放出來(lái),將重心放在測(cè)試計(jì)劃的設(shè)定、思考測(cè)試策略以及自我提升的實(shí)踐上,比如做些輔助排錯(cuò)提效的coding能力提升和加強(qiáng)對(duì)業(yè)務(wù)的熟悉的寬度和深度上,從而最大程度的保障業(yè)務(wù)系統(tǒng)的質(zhì)量和穩(wěn)定性。

未來(lái)期望能在不斷的實(shí)踐中把得物的流量錄制回放體系建設(shè)得越來(lái)越完善,解放更多的生產(chǎn)力,產(chǎn)出更多的價(jià)值。

責(zé)任編輯:武曉燕 來(lái)源: 得物技術(shù)
相關(guān)推薦

2022-01-17 21:48:35

流量錄制設(shè)計(jì)點(diǎn)

2023-06-16 23:57:56

智能運(yùn)營(yíng)系統(tǒng)

2023-04-06 13:25:54

月光寶盒

2024-12-05 12:01:09

2024-04-26 09:38:36

2017-05-18 11:43:41

Android模塊化軟件

2024-09-10 08:42:37

2024-01-02 07:44:27

廣告召回算法多路召回

2022-08-21 21:28:32

數(shù)據(jù)庫(kù)實(shí)踐

2023-02-08 18:33:49

SRE探索業(yè)務(wù)

2024-12-16 00:54:05

2022-05-16 14:12:43

微服務(wù)流量軟件

2014-05-12 10:57:41

TermRecord終端會(huì)話

2023-10-31 12:50:35

智能優(yōu)化探索

2021-12-08 10:35:04

開(kāi)源監(jiān)控Zabbix

2024-10-15 08:14:51

2023-10-27 12:16:23

游戲發(fā)行平臺(tái)SOP

2023-07-03 07:42:42

2023-06-30 13:10:54

數(shù)據(jù)聚合網(wǎng)關(guān)

2024-05-07 07:03:29

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)