自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

閑魚(yú)如何保障交易鏈路質(zhì)量

新聞
對(duì)于每一個(gè)大型應(yīng)用程序來(lái)說(shuō),接口數(shù)量會(huì)不斷增加,代碼變更頻率越來(lái)越大、系統(tǒng)不定期重構(gòu),這個(gè)接口的質(zhì)量怎么來(lái)保障?傳統(tǒng)編寫(xiě)腳本來(lái)進(jìn)行的方式,投入的人力、時(shí)間成本過(guò)大,在實(shí)際的測(cè)試過(guò)程中我們探索了一些接口測(cè)試的新想法。

背景

閑魚(yú)作為一款垂直交易社區(qū)APP,擁有復(fù)雜多樣的業(yè)務(wù)場(chǎng)景:涉及c2c、回收寄賣(mài)、租房租賃、見(jiàn)面交易、驗(yàn)貨擔(dān)保等,復(fù)雜多變的交易模式。比如驗(yàn)貨流程:
涉及39個(gè)狀態(tài)機(jī)節(jié)點(diǎn)
橫跨10+應(yīng)用系統(tǒng)
涉及6個(gè)業(yè)務(wù)部門(mén)的合作
涉及接口幾十個(gè)
需要保證每個(gè)接口、每個(gè)場(chǎng)景切實(shí)可行,稍微有一點(diǎn)點(diǎn)問(wèn)題,就會(huì)涉及到人民幣的味道,實(shí)際工作中,我們遇到各種各樣的問(wèn)題,比較棘手的問(wèn)題如下:

問(wèn)題

業(yè)務(wù)先贏的快速迭代模式下,全靠人工主力進(jìn)行測(cè)試驗(yàn)證,測(cè)完新功能,還得回歸老功能,一個(gè)小需求也須要好幾個(gè)人日,版本PTM也要回歸好幾遍,ROI并不樂(lè)觀,以下2個(gè)問(wèn)題比較突出:

交易業(yè)務(wù)強(qiáng)依賴中臺(tái),溝通成本高,跨團(tuán)隊(duì)協(xié)作難,迭代效率低,測(cè)試環(huán)境下如何自洽?
復(fù)雜多樣交易模式下,如何支撐需求穩(wěn)步迭代上線以及日?;貧w驗(yàn)證?

測(cè)試策略-自動(dòng)化

閑魚(yú)質(zhì)量基建正在快馬加鞭進(jìn)行中,針對(duì)閑魚(yú)多樣的交易模式,全靠人力是不可行的,累不說(shuō),改動(dòng)、風(fēng)險(xiǎn)漏評(píng)估也時(shí)有發(fā)生。對(duì)此,我們根據(jù)接口->鏈路的策略,探索對(duì)比了幾個(gè)不同的方案,在保證每個(gè)接口OK的基礎(chǔ)上,保障全鏈路。

接口層

對(duì)于每一個(gè)大型應(yīng)用程序來(lái)說(shuō),接口數(shù)量會(huì)不斷增加,代碼變更頻率越來(lái)越大、系統(tǒng)不定期重構(gòu),這個(gè)接口的質(zhì)量怎么來(lái)保障?傳統(tǒng)編寫(xiě)腳本來(lái)進(jìn)行的方式,投入的人力、時(shí)間成本過(guò)大,在實(shí)際的測(cè)試過(guò)程中我們探索了一些接口測(cè)試的新想法。目前業(yè)界公認(rèn)的有效方式是基于引流回放的自動(dòng)化測(cè)試,實(shí)現(xiàn)方案業(yè)內(nèi)眾說(shuō)紛紜各有其詞,但萬(wàn)變不離其中,引用下面這段總結(jié),簡(jiǎn)單明了

一種是黑盒測(cè)試思路,它在線上接口請(qǐng)求時(shí)采集線上流量(主要是請(qǐng)求參數(shù)和結(jié)果),然后使用和線上環(huán)境相同的環(huán)境(數(shù)據(jù)庫(kù)共用等)下用采集到的流量重新觸發(fā)請(qǐng)求,然后斷言被請(qǐng)求的返回值是不是和錄制時(shí)的一致。這種方法比較適合對(duì)Get類(lèi)型的接口進(jìn)行測(cè)試,而對(duì)于寫(xiě)操作的請(qǐng)求容易造成數(shù)據(jù)污染,再加上所采集流量的數(shù)據(jù)狀態(tài)(數(shù)據(jù)時(shí)效性)、環(huán)境依賴性(各種中間件、接口內(nèi)部請(qǐng)求的RPC調(diào)用)等因素,所以這種測(cè)試方式具有一些局限性,不能滿足實(shí)際測(cè)試場(chǎng)景中復(fù)雜的需求。

另一種思路相對(duì)白盒,主要是通過(guò)智能化的Mock手段,流量采集時(shí)采集代碼運(yùn)行過(guò)程中所依賴的外部中間件或者RPC調(diào)用的返回結(jié)果,當(dāng)流量回放時(shí),能夠Mock本機(jī)程序?qū)ν獾囊蕾囍杏锌赡墚a(chǎn)生變化的內(nèi)容,使測(cè)試更關(guān)注本地接口的代碼邏輯。

阿里集團(tuán)內(nèi)部,基于流量回放的思想,主要實(shí)現(xiàn)了2種不同的流量錄制回放方案,一種是基于doom的天啟/暴雪,一種是基于JVM-Sandbox的鳳凰,兩種實(shí)現(xiàn)都借力于JVM AOP。

天啟/暴雪

天啟/暴雪,其底層采用的是doom進(jìn)行流量錄制,其原理如下

doom原理圖

主要流程是:
通過(guò)Java agent掛在JVM中的client以ASM的AOP方式采集主調(diào)用(采集或回放時(shí)的入口方法)的入?yún)?、返回值、子調(diào)用(應(yīng)用執(zhí)行過(guò)程中的一次方法調(diào)用,采集機(jī)器會(huì)采集該方法的入?yún)⒑头祷刂涤糜诨胤艜r(shí)執(zhí)行到該方法進(jìn)行mock)的入?yún)⒑头祷刂?,然后將采集到的?shù)據(jù)上傳至server (離線模式);
回放時(shí),client收到接口回放請(qǐng)求后,會(huì)執(zhí)行該接口的本地邏輯,對(duì)于子調(diào)用則用采集的入?yún)⒑徒Y(jié)果進(jìn)行mock;
將采集的流量和回放的結(jié)果數(shù)據(jù)進(jìn)行對(duì)比。
doom方式,業(yè)務(wù)應(yīng)用系統(tǒng)需要引入Jar包,修改啟動(dòng)類(lèi),修改JVM掛載agent,有部分的業(yè)務(wù)侵入性。

- 鳳凰 鳳凰,也是采用JVM AOP實(shí)現(xiàn)的流量錄制方案,理念和doom差不多,鳳凰整體架構(gòu)底層基于JVM-Sandbox(阿里開(kāi)源的一款 JVM 平臺(tái)非侵入式運(yùn)行期 AOP 解決方案,通過(guò)字節(jié)碼增強(qiáng)實(shí)現(xiàn)方法級(jí)別的AOP功能)輸出模塊原子能力。錄制時(shí),記錄了發(fā)生調(diào)用的方法,入?yún)?、返回值和調(diào)用發(fā)生的順序,以鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)存儲(chǔ),回放時(shí)進(jìn)行接口邏輯執(zhí)行和子調(diào)用mock。<br />![鳳凰錄制回放.png](https://gw.alicdn.com/imgextra/i2/O1CN01m49rqS1rsh7EMIakW_!!6000000005687-2-tps-442-331.png)<br />鳳凰錄制回放<br />鳳凰無(wú)需代碼侵入修改,不需要修改應(yīng)用啟動(dòng)參數(shù),相對(duì)來(lái)說(shuō),對(duì)業(yè)務(wù)代碼影響小,但是有應(yīng)用結(jié)構(gòu)要求。考慮成本和風(fēng)險(xiǎn),以及我們的應(yīng)用結(jié)構(gòu),閑魚(yú)采用基于Sandbox的鳳凰流量錄制回放進(jìn)行保障,變更上線流程卡點(diǎn)。<br />研發(fā)過(guò)程中,也會(huì)遇到各種各樣的流量回放問(wèn)題,比如用例過(guò)期,需要人工清楚重新錄制。我們現(xiàn)在是采用定時(shí)任務(wù)自動(dòng)清除重新錄制的方式解決。<br />下面是我們的一個(gè)場(chǎng)景例子:<br />![image.png](https://gw.alicdn.com/imgextra/i3/O1CN01bR7Yqe1qfaA29uZCx_!!6000000005523-2-tps-1318-418.png)<br /><br />

鏈路層

在基于流量錄制、回放比對(duì)的接口測(cè)試過(guò)程中,我們發(fā)現(xiàn)這種機(jī)制對(duì)于單應(yīng)用的質(zhì)量保障比較實(shí)用,但是對(duì)于跨應(yīng)用的鏈路驗(yàn)證、核心寫(xiě)操作、外調(diào)用,以及系統(tǒng)重構(gòu)類(lèi)、方案改造等大需求就有些不足,鏈路級(jí)的解決解決方案接踵而至。

Thub + 微服務(wù)

測(cè)試環(huán)境下,對(duì)于全鏈路上下游的強(qiáng)依賴,措施之一是開(kāi)發(fā)測(cè)試服務(wù)化能力,建立自洽能力,測(cè)試環(huán)境下解藕對(duì)于外界諸如交易中臺(tái)、菜鳥(niǎo)裹裹的依賴,測(cè)試環(huán)境能進(jìn)行全鏈路閉環(huán)。
落地首要任務(wù)是梳理業(yè)務(wù)全鏈路節(jié)點(diǎn):

- 主干鏈路上的每一個(gè)MTOP接口,以及接口的上下游依賴 - 內(nèi)部應(yīng)用、中臺(tái)應(yīng)用、外部商家的依賴 - 數(shù)據(jù)流以及TDDL梳理

業(yè)務(wù)梳理完整,進(jìn)行測(cè)試服務(wù)化接口開(kāi)發(fā)。下面是我們截取的一部分鏈路case:

同時(shí),諸如測(cè)試環(huán)境由于依賴方測(cè)試環(huán)境不穩(wěn)定block測(cè)試的情況,我們提供測(cè)試服務(wù)化接口進(jìn)行封裝,暴露成下單、驗(yàn)貨等服務(wù)化能力內(nèi)置于閑魚(yú)質(zhì)量平臺(tái),用于開(kāi)發(fā)、測(cè)試在研發(fā)過(guò)程中使用。

天算平臺(tái)

天算平臺(tái),利用影子庫(kù),全鏈路壓測(cè)的模式,線上業(yè)務(wù)數(shù)據(jù)和測(cè)試數(shù)據(jù)隔離,測(cè)試庫(kù)copy線上庫(kù)一部分?jǐn)?shù)據(jù)。主要實(shí)現(xiàn)的方式是將線上的場(chǎng)景進(jìn)行固化仿真,全鏈路執(zhí)行,并且在執(zhí)行的過(guò)程中進(jìn)行所有數(shù)據(jù)變更的比對(duì),用戶可以選擇任何代碼版本的基線和變更版本進(jìn)行對(duì)比。大致流程

天算能力基本能滿足閑魚(yú)的交易鏈路,閑魚(yú)建立了主鏈路相關(guān)影子庫(kù),影子鏈路正在調(diào)試中,用于交易服務(wù)端的全鏈路巡檢。 同時(shí),影子鏈路有諸如業(yè)務(wù)變更導(dǎo)致影子數(shù)據(jù)過(guò)期的問(wèn)題,這個(gè)方案則主要是用于業(yè)務(wù)比較穩(wěn)定的業(yè)務(wù),新業(yè)務(wù)或者不斷迭代更新的業(yè)務(wù)并未all in這個(gè)方案。

總結(jié)

綜上,目前閑魚(yú)交易,接口層用基于jvm-sandbox的流量錄制方案, 日常巡檢利用影子鏈路,研發(fā)過(guò)程自測(cè)、鏈路自動(dòng)化用業(yè)務(wù)編排服務(wù)化能力。

展望

在基建完善的基礎(chǔ)上,我們將繼續(xù)探索flutter以及服務(wù)端的全端智能化方向的測(cè)試解決方案,希望讓更多技術(shù)小二從重復(fù)勞動(dòng)中釋放出來(lái),從治、防、控,三層質(zhì)量網(wǎng),保障閑魚(yú)交易,讓用戶在閑魚(yú)放心的賣(mài)賣(mài)賣(mài)、買(mǎi)買(mǎi)買(mǎi)。期待和大家一起交流業(yè)內(nèi)的不同測(cè)試方案!同時(shí)感謝doom、sandbox、鳳凰、天啟、暴雪、全鏈路壓測(cè)、Thub等團(tuán)隊(duì)提供的能力支持!

原文鏈接:http://click.aliyun.com/m/1000282373/

 

責(zé)任編輯:梁菲 來(lái)源: 阿里云云棲號(hào)
相關(guān)推薦

2011-09-25 19:28:04

梭子魚(yú)梭子魚(yú)負(fù)載均衡機(jī)

2024-06-21 08:02:22

2022-12-30 18:31:40

履約商家商品

2018-08-25 14:07:24

數(shù)據(jù)聚合閑魚(yú)前端

2023-04-18 17:24:08

光纖網(wǎng)絡(luò)

2018-03-15 11:06:51

區(qū)塊鏈鉆石加密

2022-04-01 14:14:07

區(qū)塊鏈技術(shù)金融

2011-05-05 15:07:30

2021-01-05 10:32:12

系統(tǒng)代碼測(cè)試

2019-10-24 08:39:47

Python閑魚(yú)數(shù)據(jù)

2022-02-03 23:58:13

區(qū)塊鏈物聯(lián)網(wǎng)技術(shù)

2023-09-14 10:04:31

vivo數(shù)據(jù)中心網(wǎng)絡(luò)

2021-04-27 08:35:20

TRON區(qū)塊鏈

2015-04-27 09:41:35

前端質(zhì)量質(zhì)量保障

2021-01-22 15:18:12

消息延遲閑魚(yú)長(zhǎng)連接

2023-03-08 07:54:26

無(wú)核顯單通道CPU

2022-05-23 08:23:24

鏈路追蹤SleuthSpring

2022-04-01 15:59:05

區(qū)塊鏈安全數(shù)據(jù)結(jié)構(gòu)本

2023-08-24 22:13:31

2023-11-14 09:04:15

用戶節(jié)點(diǎn)不可用
點(diǎn)贊
收藏

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