场景模型驱动自动化测试在盒马的探索及实践
簡(jiǎn)介:?盒馬業(yè)務(wù)有如下幾個(gè)特點(diǎn):線上線下一體化、倉(cāng)儲(chǔ)配送一體化、超市餐飲一體化、經(jīng)營(yíng)作業(yè)一體化、多業(yè)態(tài)與平臺(tái)化。在以上的種種原因,生鮮及物流體驗(yàn)是盒馬的特點(diǎn),但倉(cāng)儲(chǔ)配送一體化作業(yè)中,如何能更高效的提升測(cè)試效率也是盒馬質(zhì)量團(tuán)隊(duì)的重點(diǎn)探索。
作者 | 欽偉
來源 | 阿里技術(shù)公眾號(hào)
一 引言
盒馬業(yè)務(wù)有如下幾個(gè)特點(diǎn):線上線下一體化、倉(cāng)儲(chǔ)配送一體化、超市餐飲一體化、經(jīng)營(yíng)作業(yè)一體化、多業(yè)態(tài)與平臺(tái)化。
在以上的種種原因,生鮮及物流體驗(yàn)是盒馬的特點(diǎn),但倉(cāng)儲(chǔ)配送一體化作業(yè)中,如何能更高效的提升測(cè)試效率也是盒馬質(zhì)量團(tuán)隊(duì)的重點(diǎn)探索。
二 背景及待解決問題介紹
1 盒馬自動(dòng)化體系發(fā)展新挑戰(zhàn)
在盒馬,前期業(yè)務(wù)在狂奔,自動(dòng)化基礎(chǔ)較薄弱,近三年來,經(jīng)過盒馬人的不斷突破,已經(jīng)具備了一定的自動(dòng)化體系,因?yàn)楹旭R業(yè)務(wù)的特點(diǎn),盒馬屬于麻雀雖小但五臟俱全,有獨(dú)立App,有自營(yíng)的物流體系,有自己的供應(yīng)鏈體系,因此在自動(dòng)化方面,我們從最基礎(chǔ)的單元測(cè)試、到接口測(cè)試、再到領(lǐng)域場(chǎng)景自動(dòng)化及跨領(lǐng)域的自動(dòng)化以及端的自動(dòng)化方面都有積累。即便如此,我們的代碼覆蓋率在超過50%之后很難有比較大的提升,另外,代碼的覆蓋并不能全部代表業(yè)務(wù)場(chǎng)景的覆蓋,一些線上漏測(cè)的問題仍然偶爾發(fā)生,因此,對(duì)于盒馬來說,基于較全場(chǎng)景的測(cè)試是必須。
在這種背景下,盒馬質(zhì)量團(tuán)隊(duì)進(jìn)行了較全場(chǎng)景驅(qū)動(dòng)自動(dòng)化測(cè)試的探索,利用線上數(shù)據(jù)建立測(cè)試場(chǎng)景模型。下面會(huì)更加詳細(xì)的進(jìn)行講述。
2 業(yè)務(wù)場(chǎng)景全覆蓋的挑戰(zhàn)
從業(yè)界來說,比較難的也同樣是如何用比較簡(jiǎn)單的手段做到業(yè)務(wù)的全場(chǎng)景覆蓋,對(duì)盒馬來說也同樣。
首先,盒馬的業(yè)務(wù)場(chǎng)景眾多,包括inbound與outbound全流程,端到端的全流程多業(yè)態(tài),含O2O模式、B2C模式、F2模式、Mini模式、Mall模式、X會(huì)員店模式、產(chǎn)地量販模式、盒馬鄰里模式等。這么多種業(yè)務(wù)場(chǎng)景很難一一枚舉。
其次,業(yè)務(wù)場(chǎng)景自動(dòng)化編寫效率也較低,在人工枚舉場(chǎng)景,腳本化實(shí)現(xiàn),這種效率比較低,場(chǎng)景難以枚舉全,容易遺漏。
業(yè)務(wù)場(chǎng)景的真實(shí)覆蓋率也難以度量,人工枚舉的業(yè)務(wù)場(chǎng)景極易有遺漏,線上已頻發(fā)漏測(cè)問題,無法覆蓋線上全量場(chǎng)景,同時(shí)測(cè)試的場(chǎng)景覆蓋率難以衡量,需要找到線上場(chǎng)景分母。
傳統(tǒng)自動(dòng)化來說,校驗(yàn)一般基于字段級(jí)別,容易遺漏。傳統(tǒng)校驗(yàn)方式根據(jù)預(yù)期逐個(gè)字段加斷點(diǎn)校驗(yàn),新增字段或缺失字段極容易造成遺漏。
因此,在這種多種挑戰(zhàn)下,我們嘗試了基于線上海量數(shù)據(jù)模型構(gòu)建全行經(jīng)模型,同時(shí)用場(chǎng)景驅(qū)動(dòng)自動(dòng)化執(zhí)行的方案。
3 場(chǎng)景模型驅(qū)動(dòng)自動(dòng)化的思考
回到本文初心,我們希望通過線上場(chǎng)景來驅(qū)動(dòng)自動(dòng)化測(cè)試的方式進(jìn)行測(cè)試場(chǎng)景的全量覆蓋。思路如下:
一、場(chǎng)景業(yè)務(wù)模型構(gòu)建:重點(diǎn)在于如何自動(dòng)化的構(gòu)建出場(chǎng)景化的模型數(shù)據(jù)。大致的思路為:1)線上執(zhí)行過后的訂單數(shù)據(jù)存在諸多特征;2)根據(jù)線上落盤數(shù)據(jù)進(jìn)行特征值分析;3)構(gòu)建數(shù)據(jù)特征集合與對(duì)應(yīng)的樣本數(shù)據(jù);
二、執(zhí)行鏈路構(gòu)建:重點(diǎn)在于如何自動(dòng)構(gòu)建出克執(zhí)行的系統(tǒng)調(diào)用鏈路。大致思路為:1)基于落盤數(shù)據(jù)獲取線上執(zhí)行全鏈路的所有鷹眼;2)根據(jù)鷹眼(trace)及系統(tǒng)調(diào)用關(guān)系構(gòu)建執(zhí)行鏈路;3)執(zhí)行鏈路編排構(gòu)建鏈路執(zhí)行能力;
三、執(zhí)行結(jié)果的校驗(yàn):重點(diǎn)在于如何自動(dòng)的進(jìn)行結(jié)果數(shù)據(jù)的一致性校驗(yàn)。大致思路為:1)所有的數(shù)據(jù)最終會(huì)持久化落盤;2)基于持久化數(shù)據(jù)進(jìn)行全字段對(duì)比;3)忽略規(guī)則配置;
三 解決思路
1 模型驅(qū)動(dòng)自動(dòng)化解決策略
結(jié)合上文的背景及思考,推演出本文的模型驅(qū)動(dòng)自動(dòng)化解決策略包含:特征提取、場(chǎng)景建模、鏈路執(zhí)行、結(jié)果驗(yàn)證、覆蓋率分析、缺陷定位及報(bào)告。
2 業(yè)務(wù)場(chǎng)景建模問題定義
針對(duì)業(yè)務(wù)場(chǎng)景模型,我們首先要思考我們面向的是什么系統(tǒng),系統(tǒng)的規(guī)律是什么,該系統(tǒng)的哪些數(shù)據(jù)可以被規(guī)則化出來的,如何規(guī)則出來,最終如何表達(dá),帶著這些問題我們一步步介紹我們的解決方案。
業(yè)務(wù)場(chǎng)景建模-特征提取方法
本節(jié)重點(diǎn)介紹特征提取的通常方法,當(dāng)前階段,我們是以數(shù)據(jù)庫(kù)的全量數(shù)據(jù)作為特征提取的來源,當(dāng)然不少團(tuán)隊(duì)也在嘗試使用接口調(diào)用過程中的全量入?yún)?shù)據(jù)。具體為:
1)DB全量數(shù)據(jù)查詢:通過odps查詢方式獲取全量多表關(guān)聯(lián)數(shù)據(jù),用以作為分析的數(shù)據(jù)源。
2)數(shù)據(jù)的聚合:對(duì)于查詢的數(shù)據(jù)進(jìn)行信息補(bǔ)齊后,字段打平,采用聚類的方式針對(duì)每一字段進(jìn)行聚合,以出現(xiàn)有限數(shù)量的字段作為特征字段進(jìn)行基線特征的沉淀,對(duì)于離散型的數(shù)據(jù)會(huì)選擇合適的區(qū)間進(jìn)行分段處理。
3)特征推薦:針對(duì)上述聚合的內(nèi)容進(jìn)行推薦,此部分會(huì)將潛在的特征字段全量進(jìn)行推薦。
4)特征基線沉淀:基于推薦的數(shù)據(jù),結(jié)合專家經(jīng)驗(yàn)進(jìn)行特征字段的選取,并進(jìn)行標(biāo)注選擇為基線特征。
接下來一一根據(jù)細(xì)化場(chǎng)景進(jìn)行介紹。
業(yè)務(wù)場(chǎng)景的建模-特征提取過程
如下圖所示,為數(shù)據(jù)表數(shù)據(jù)示例,從數(shù)據(jù)層面可以看出,有一部分字段是有意義的,如isParent是否主單,businessType業(yè)務(wù)類型,orderTerminal訂單終端類型等等,也有一部分字段是離散且無意義的,如orderId訂單ID,itemId商品id,GMTCreate創(chuàng)建時(shí)間等。特征提取的過程目標(biāo)就是自動(dòng)的提取出有意義的字段,忽略無意義的字段。
實(shí)際實(shí)踐過程中,我們通過不斷的迭代以提升特征的精準(zhǔn)度與全面度,具體的核心幾個(gè)提取過程為:
1、特征擴(kuò)充:元數(shù)據(jù)中的字段有可能為原始數(shù)據(jù),這部分需要關(guān)聯(lián)到具體數(shù)據(jù)表并找出有意義的字段。
2、特征分類:根據(jù)數(shù)據(jù)的聚合,對(duì)于有意義的離散類型數(shù)據(jù),比如訂單總價(jià),往往我們希望得到零價(jià)訂單,高值訂單及普通訂單三類,這三類是未自動(dòng)打標(biāo)的,需要我們聚合出范圍在特征提取過程中動(dòng)態(tài)識(shí)別并分類。
3、特征聚合:依賴于特征的規(guī)則,進(jìn)行所有字段的聚合,最終根據(jù)枚舉類型字段出現(xiàn)次數(shù)進(jìn)行有效判斷,目前我們?cè)O(shè)定的值為20,這個(gè)值可以動(dòng)態(tài)調(diào)整,僅僅為參考值而已。
4、特征決策:針對(duì)聚合出來的潛在特征,進(jìn)行基于代碼、經(jīng)驗(yàn)、默認(rèn)值等多種維度的判斷,最終進(jìn)行特征的推薦,這部分因?yàn)闃I(yè)務(wù)屬性比較重,我們?cè)谕扑]出來的同時(shí),最終更依賴于專家經(jīng)驗(yàn)進(jìn)行字段的最終判斷,目前推薦出來和最終采納的比例約為50%,我們后續(xù)會(huì)升級(jí)算法和參考維度進(jìn)一步提升采納率。
接下來,針對(duì)以上流程中關(guān)鍵環(huán)節(jié)會(huì)進(jìn)行一一介紹。
1)特征提取-特征擴(kuò)充
本文舉例商品及倉(cāng)的場(chǎng)景,對(duì)于商品根據(jù)商品id關(guān)聯(lián)找到對(duì)應(yīng)商品明細(xì),再將商品明細(xì)中有意義的字段,比如:是否是危險(xiǎn)品、是否是緊急配送商品、商品的標(biāo)簽、商品的狀態(tài)等等查詢出來關(guān)聯(lián)主數(shù)據(jù),對(duì)于倉(cāng)關(guān)聯(lián)查出倉(cāng)的類型和倉(cāng)的標(biāo)簽,如此可基于場(chǎng)景的主模型數(shù)據(jù)進(jìn)行分支場(chǎng)景的多層級(jí)關(guān)聯(lián),將需要關(guān)注到的場(chǎng)景維度值盡可能多的納入到數(shù)據(jù)模型中。
2)特征提取-特征聚類
本文舉例對(duì)于加工時(shí)長(zhǎng)bomCost字段,對(duì)于標(biāo)品來說是0,對(duì)于加工品來說,比如魚類,需要增加15分鐘宰殺作業(yè)時(shí)間,對(duì)于涼拌菜等需要增加10分鐘進(jìn)行制作等等。此處會(huì)單獨(dú)將特定字段進(jìn)行區(qū)間分類,如此將分類后的值進(jìn)行特征的挖掘基礎(chǔ),即可將離散的值變得有意義。
3)特征提取-特征聚合
將所有數(shù)據(jù)進(jìn)行擴(kuò)充完畢后,將所有相關(guān)字段進(jìn)行打平處理,根據(jù)相同字段進(jìn)行值的聚合,相同值記錄次數(shù),不相同時(shí)進(jìn)行歸類,如此便可將相關(guān)數(shù)據(jù)進(jìn)行初始化的數(shù)據(jù)處理,然后根據(jù)聚合出來的數(shù)據(jù)進(jìn)行默認(rèn)值個(gè)數(shù)的判斷進(jìn)行特征的推薦。
4)特征提取-特征決策
依賴上述聚合出來的全量潛在特征數(shù)據(jù),在特征決策模塊會(huì)基于代碼中抽象出的特征字段進(jìn)行匹配,當(dāng)然最重要的是依賴于業(yè)務(wù)領(lǐng)域的測(cè)試專家經(jīng)驗(yàn)進(jìn)行主動(dòng)識(shí)別標(biāo)注,最終沉淀出領(lǐng)域的基線特征集合。
以盒馬某業(yè)務(wù)領(lǐng)域?yàn)槔?#xff0c;下圖展示的是最終有效的特征集合,根據(jù)基線特征,我們的做法是都標(biāo)注了具體的含義,如此,便可很容易根據(jù)一個(gè)領(lǐng)域的業(yè)務(wù)特征識(shí)別出該領(lǐng)域的數(shù)據(jù)場(chǎng)景。
同樣,根據(jù)特征情況,也可以刻畫出每個(gè)領(lǐng)域的特征模型,如下圖所示,很輕松的看出領(lǐng)域的全量特征,同時(shí)根據(jù)每個(gè)特征,可以清晰的看出每個(gè)特征值的分布占比情況。
業(yè)務(wù)場(chǎng)景建模-場(chǎng)景提取
有了基線特征后,基于基線特征形成解析規(guī)則,再將全量數(shù)據(jù)基于特征規(guī)則匹配處理,對(duì)于命中規(guī)則的進(jìn)行打標(biāo)處理,即可識(shí)別出匹配基線特征的數(shù)據(jù)集合,這些數(shù)據(jù)集合對(duì)于每一條數(shù)據(jù)代表的特征組我們稱之為場(chǎng)景。具體的處理流程如下圖所示。
進(jìn)行特征規(guī)則匹配處理后,可識(shí)別出場(chǎng)景集,這些場(chǎng)景的集合對(duì)我們來說至關(guān)重要,因?yàn)檫@些場(chǎng)景集合從一定意義上要代表我們的線上全量場(chǎng)景。如下圖所示,除了有場(chǎng)景的推薦,還有場(chǎng)景對(duì)應(yīng)的數(shù)據(jù)的推薦。這些數(shù)據(jù)后續(xù)我們會(huì)進(jìn)行處理并進(jìn)行執(zhí)行鏈路的驅(qū)動(dòng)。
以下為推薦以驅(qū)動(dòng)鏈路自動(dòng)化執(zhí)行的場(chǎng)景及數(shù)據(jù)情況。
3 執(zhí)行鏈路分析及構(gòu)建
前文有介紹盒馬很多業(yè)務(wù)領(lǐng)域都是鏈路式驅(qū)動(dòng)類型,所以對(duì)于如何構(gòu)建出領(lǐng)域的執(zhí)行鏈路很關(guān)鍵,我們的思路是通過系統(tǒng)的調(diào)用日志及鷹眼trace相結(jié)合的方式進(jìn)行聚合清洗得到領(lǐng)域的大概執(zhí)行鏈路推薦,這里面的推薦會(huì)有多種情況。整體的思路如下圖。
執(zhí)行鏈路推薦出來后,這時(shí)候的鏈路還是無法執(zhí)行的,我們的目標(biāo)是根據(jù)推薦能夠自動(dòng)生成執(zhí)行鏈路,只是當(dāng)前基于進(jìn)展的考慮,我們先將推薦的鏈路進(jìn)行人工鏈路編排以執(zhí)行場(chǎng)景模型中的數(shù)據(jù)。以盒馬"履約"領(lǐng)域的系統(tǒng)執(zhí)行流程鏈路為例,如下,我們將對(duì)所有業(yè)態(tài)的數(shù)據(jù)的處理進(jìn)行統(tǒng)一流程編排,如此,即可更大限度和真實(shí)的處理模型數(shù)據(jù)。
4 數(shù)據(jù)校驗(yàn)
數(shù)據(jù)執(zhí)行完成之后,對(duì)于自動(dòng)化來說一個(gè)最關(guān)鍵且有意義的事情是進(jìn)行結(jié)果的校驗(yàn),為了能夠更全面的比對(duì)結(jié)果,我們將執(zhí)行鏈路進(jìn)行線上生產(chǎn)環(huán)境和測(cè)試環(huán)境的雙向執(zhí)行,對(duì)于兩套環(huán)境的結(jié)果數(shù)據(jù)進(jìn)行全量的數(shù)據(jù)比對(duì),可將比對(duì)結(jié)果精確到像素級(jí)別。
5 場(chǎng)景覆蓋率分析
針對(duì)場(chǎng)景覆蓋率,我們將場(chǎng)景模型所轉(zhuǎn)換的測(cè)試數(shù)據(jù)對(duì)應(yīng)的全量場(chǎng)景與線上全量場(chǎng)景進(jìn)行比較得出場(chǎng)景覆蓋率。在今年的OKR目標(biāo)下,我們也是目標(biāo)將業(yè)務(wù)場(chǎng)景覆蓋率達(dá)到80%以上。
四 產(chǎn)品解決方案
1 產(chǎn)品解決方案架構(gòu)圖
結(jié)合以上核心模塊的介紹,系統(tǒng)的產(chǎn)品解決方案框圖如下所示,基于核心的場(chǎng)景模型驅(qū)動(dòng)自動(dòng)化執(zhí)行過程為基準(zhǔn),分為業(yè)務(wù)場(chǎng)景建模模塊、測(cè)試數(shù)據(jù)生產(chǎn)模塊、回歸策略執(zhí)行選擇模塊、鏈路用例執(zhí)行、結(jié)果校驗(yàn)以及結(jié)果推送模塊。基于運(yùn)維視角,包含統(tǒng)計(jì)大盤、用例管理等。
在盒馬場(chǎng)景探索的場(chǎng)景模型驅(qū)動(dòng)自動(dòng)化,已經(jīng)在交易、履約、商品、配送、自提等諸多領(lǐng)域進(jìn)行了實(shí)踐,并取得了一定的成果。同時(shí)在發(fā)布回歸、小量數(shù)據(jù)的常規(guī)化壓測(cè)、系統(tǒng)重構(gòu)、線上業(yè)務(wù)巡檢等諸多場(chǎng)景中獲得了不錯(cuò)的使用。
五 實(shí)踐結(jié)果
基于場(chǎng)景模型驅(qū)動(dòng)自動(dòng)化的模式,已經(jīng)在盒馬事業(yè)群內(nèi)多個(gè)團(tuán)隊(duì)進(jìn)行了推廣接入使用,整體上累計(jì)沉淀有效的場(chǎng)景化用例2000以上,場(chǎng)景的特征覆蓋率均大于90%,各個(gè)領(lǐng)域新接入業(yè)務(wù)的自動(dòng)化構(gòu)建成本直線降低80%以上,有效的解決了傳統(tǒng)腳本方式的人工依賴過重,引流方式無法覆蓋鏈路場(chǎng)景的問題,也成為團(tuán)隊(duì)內(nèi)重要的發(fā)布前的回歸可信賴保障手段。
1 在盒馬交易領(lǐng)域的實(shí)踐
盒馬交易域是比較早的實(shí)踐方之一,基于上述方案,交易域進(jìn)行了整體的方案對(duì)接,沉淀了大量的場(chǎng)景及回歸用例。尤其交易領(lǐng)域在覆蓋率提升方面做了較多的工作。
在交易領(lǐng)域的特征覆蓋率的提升經(jīng)過了以下幾個(gè)階段,初始的測(cè)試單據(jù)(日常測(cè)試單據(jù)+鏈路自動(dòng)化單據(jù))特征覆蓋率僅50%左右,覆蓋率確實(shí)不高,通過覆蓋率報(bào)告的分析發(fā)現(xiàn),除了確實(shí)無單據(jù)覆蓋的特征,還有一類問題是有單據(jù)覆蓋但是平臺(tái)無法匹配上的特殊字符類特征值或不可窮盡枚舉類特征值,經(jīng)過二次處理后,特征覆蓋率提高到65%左右;第三階段,現(xiàn)有的全業(yè)態(tài)全場(chǎng)景用例構(gòu)建出來后覆蓋率提升到90%左右,剩余的10%特征基本是線上特定時(shí)期小概率出現(xiàn)場(chǎng)景階段性單據(jù)沒分析到或暫時(shí)無法構(gòu)建數(shù)據(jù)的特征,經(jīng)過指定單據(jù)有針對(duì)性地補(bǔ)充后特征覆蓋率達(dá)到96%,至此覆蓋率達(dá)到我們期望的95%以上,基線用例搭建完成。
因此,從最終結(jié)果看,交易領(lǐng)域?qū)儆诨谧罱K結(jié)果反推過程執(zhí)行,整體接入過程,基于場(chǎng)景構(gòu)建與鏈路編排的執(zhí)行能力,結(jié)合自身能力的構(gòu)建,接入過程約三周,推薦場(chǎng)景累計(jì)2000多例,對(duì)8種業(yè)態(tài)進(jìn)行全面支撐,能夠做到快速的回歸覆蓋,很好的做到需求的高質(zhì)量持續(xù)交付。
2 在盒馬其他典型領(lǐng)域的實(shí)踐
在商品領(lǐng)域,從全新的領(lǐng)域?qū)?#xff0c;整體投入2天,完成500+線上場(chǎng)景的接入,整體投入成本下降高達(dá)90%,代碼覆蓋率在原有腳本自動(dòng)化基礎(chǔ)上提升了28%,快速達(dá)到50%以上。
在履約領(lǐng)域:整體沉淀場(chǎng)景化鏈路用例1000+,成功率95%以上,特征覆蓋率95%以上,鏈路的仿真精準(zhǔn)度90%以上,全面保障履約域的質(zhì)量。
在配送領(lǐng)域:配送域沉淀場(chǎng)景化鏈路用例300+,作為作業(yè)操作的系統(tǒng),鏈路場(chǎng)景的覆蓋率97%以上,特征覆蓋率100%,新業(yè)務(wù)的自動(dòng)化成本下降80%以上。
六 未來展望
基于場(chǎng)景模型驅(qū)動(dòng)自動(dòng)化實(shí)現(xiàn),只是開始,遠(yuǎn)沒有終結(jié),前期只是針對(duì)一部分領(lǐng)域進(jìn)行了探索實(shí)踐落地,接下來希望能夠擴(kuò)展更多領(lǐng)域的同時(shí),更加深入的挖掘自動(dòng)化用例自動(dòng)生成及測(cè)試數(shù)據(jù)保活的能力,使之能夠更好的服務(wù)好盒馬的各團(tuán)隊(duì)業(yè)務(wù),也希望通過本文的分享,啟發(fā)更多的團(tuán)隊(duì)一起投入進(jìn)行探索并做出嘗試。
七 結(jié)束語
本文的探索方案前后歷時(shí)近一年半的時(shí)間,從0開始投入,團(tuán)隊(duì)也累計(jì)多人參與,投入雖大,但給我們的質(zhì)量保障工作帶來了不錯(cuò)的回報(bào),接下來的時(shí)間里也會(huì)繼續(xù)前行探索,勇于嘗試。
原文鏈接
本文為阿里云原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。?
總結(jié)
以上是生活随笔為你收集整理的场景模型驱动自动化测试在盒马的探索及实践的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: /usr/bin/ld: 找不到 -lo
- 下一篇: 成中集团线下IDC迁移上云