MeterSphere案例分享丨易盛信息MeterSphere接口測(cè)試使用經(jīng)驗(yàn)
鄭州易盛信息技術(shù)有限公司(以下簡(jiǎn)稱(chēng)為易盛信息)是鄭州商品交易所的全資技術(shù)子公司。其主要的發(fā)展戰(zhàn)略為“兩個(gè)面向”,即面向鄭州商品交易所和面向全球金融期貨市場(chǎng)。
目前,易盛信息一個(gè)普通交易日6小時(shí)處理的交易額遠(yuǎn)遠(yuǎn)超過(guò)了天貓雙十一全天的交易額,核心系統(tǒng)處理時(shí)延精確至納秒級(jí),部分系統(tǒng)數(shù)據(jù)精度要到小數(shù)點(diǎn)后三十多位。系統(tǒng)的穩(wěn)定性至關(guān)重要,如果交易系統(tǒng)發(fā)生故障導(dǎo)致中斷會(huì)影響世界范圍內(nèi)相關(guān)產(chǎn)品定價(jià)。總而言之一句話,我們要千方百計(jì)地確保系統(tǒng)“不能出事”。
系統(tǒng)測(cè)試階段面臨的問(wèn)題
在系統(tǒng)測(cè)試階段,針對(duì)接口測(cè)試我們主要面臨兩類(lèi)問(wèn)題。
第一類(lèi)是私有協(xié)議問(wèn)題,期貨交易采用基于TCP和UDP的期貨報(bào)文交換協(xié)議,市面上沒(méi)有針對(duì)性的測(cè)試工具。如果需要自動(dòng)化,就需要編寫(xiě)C++代碼來(lái)進(jìn)行測(cè)試,這無(wú)疑對(duì)測(cè)試人員提出了很高的要求;
第二類(lèi)問(wèn)題則是我們的辦理申報(bào)類(lèi)業(yè)務(wù),對(duì)HTTP接口測(cè)試的需求具有鮮明的特點(diǎn)。此類(lèi)采用非私有協(xié)議的系統(tǒng),大部分采用Java開(kāi)發(fā),通過(guò)HTTP接口進(jìn)行交互。
而在這一環(huán)節(jié)中,我們需要和數(shù)據(jù)庫(kù)進(jìn)行比較。業(yè)務(wù)中有大量的表單填寫(xiě)和各種計(jì)算,需要對(duì)接口處理后的數(shù)據(jù)進(jìn)行一定規(guī)則的校驗(yàn)。傳統(tǒng)接口測(cè)試工具均無(wú)法支持?jǐn)?shù)據(jù)庫(kù)相關(guān)操作。
在這方面,我們也進(jìn)行了一些嘗試,今年疫情期間,我們開(kāi)發(fā)了一版以HttpRunner為核心引擎的接口測(cè)試工具原型,結(jié)合自有Python操作Oracle封裝的庫(kù),實(shí)現(xiàn)了和數(shù)據(jù)庫(kù)結(jié)果的比較,但由于腳本編寫(xiě)內(nèi)容多、UI不夠便捷、文檔不夠清晰等一系列原因最終擱置了這一自研工具;
接口測(cè)試的另一個(gè)特點(diǎn)是具有復(fù)雜且長(zhǎng)的流程性接口。對(duì)于很多審批、申報(bào)類(lèi)業(yè)務(wù),需要按照順序和邏輯條件請(qǐng)求十幾個(gè)接口,中間由不同的用戶登錄并操作,過(guò)程之繁瑣遠(yuǎn)超微服務(wù)的無(wú)狀態(tài)調(diào)用,對(duì)于很多長(zhǎng)流程組成的場(chǎng)景,無(wú)論是手工測(cè)試還是編寫(xiě)自動(dòng)化測(cè)試腳本都很復(fù)雜。
MeterSphere給我們帶來(lái)的幫助
任何技術(shù)都有著自己的生命周期,從誕生到衰落也符合事物發(fā)展的客觀規(guī)律。傳統(tǒng)金融行業(yè)的互聯(lián)網(wǎng)轉(zhuǎn)型是漫長(zhǎng)的,為了求穩(wěn),對(duì)于業(yè)內(nèi)的眾多新興技術(shù),并不會(huì)立刻采納,但我們?nèi)匀怀掷m(xù)關(guān)注相關(guān)理論、技術(shù)、工具及平臺(tái),爭(zhēng)取成為早期技術(shù)紅利的受益者。
2020年8月,在朱少民老師的公眾號(hào)“軟件質(zhì)量報(bào)道”上第一次了解到了MeterSphere這個(gè)開(kāi)源項(xiàng)目,并在9月的QECon大會(huì)上第一次見(jiàn)面。真的是“相見(jiàn)恨晚”呀!
經(jīng)過(guò)一段時(shí)間的使用,我們逐步將MeterSphere開(kāi)源持續(xù)測(cè)試平臺(tái)引入到我們的業(yè)務(wù)場(chǎng)景測(cè)試之中,也收獲了一些使用心得和體會(huì)。在這里和大家分享一下。
1.平臺(tái)即服務(wù)
在使用MeterSphere之前,我們主要用Postman進(jìn)行接口測(cè)試。與工具型的Postman相比,MeterSphere是一個(gè)持續(xù)測(cè)試的平臺(tái)。MeterSphere的主要優(yōu)勢(shì)包含以下幾點(diǎn):
■ 搭建方便
MeterSphere基于Docker提供服務(wù),并提供完備的私有化部署能力,支持一鍵安裝和升級(jí),整個(gè)過(guò)程非常流暢,體驗(yàn)良好。容器化的部署方式避免了測(cè)試人員安裝工具的成本,搭建好平臺(tái)后即可直接使用。
圖1 MeterSphere支持一鍵安裝和升級(jí)
■ 管理規(guī)范
MeterSphere能夠?qū)崿F(xiàn)組織、工作空間、項(xiàng)目、測(cè)試、場(chǎng)景等多級(jí)管理,角色權(quán)限分離,井井有條。它還可以與內(nèi)部LDAP對(duì)接,使用起來(lái)非常方便。
圖2 MeterSphere可與LDAP進(jìn)行對(duì)接
圖3 MeterSphere支持用戶、組織和工作空間管理
2. 與MeterSphere的“一見(jiàn)鐘情”
初次試用MeterSphere,就發(fā)現(xiàn)了它非同一般的易用性,提供接口測(cè)試解決方案上也恰好直擊我們的痛點(diǎn)。我們選擇了具體的業(yè)務(wù)組進(jìn)行了試用推廣,真的很香,主要的原因來(lái)自以下幾個(gè)方面:
■ 調(diào)試功能
測(cè)試過(guò)程中常常需要調(diào)試,MeterSphere貼心地提供了調(diào)試按鈕,可以立刻看到當(dāng)前接口的執(zhí)行情況,方便使用者及時(shí)調(diào)整,這方面體驗(yàn)和Postman完全一樣。
圖4 MeterSphere接口測(cè)試提供了與Postman類(lèi)似的體驗(yàn)
■ 支持Python的前后置腳本
Postman支持使用JavaScript編寫(xiě)腳本,但我的同事們更熟悉Python,而MeterSphere支持Python的前后置腳本就給接口測(cè)試增加了更多的靈活性。在這方面,MeterSphere更具優(yōu)勢(shì)。
圖5 MeterSphere支持Python的前后置腳本
■ 支持SQL語(yǔ)句
這應(yīng)該是支持我的團(tuán)隊(duì)開(kāi)始使用MeterSphere最關(guān)鍵的原因了。支持SQL就滿足了我們?cè)诮涌跍y(cè)試中50%的需求,結(jié)合自定義變量和數(shù)據(jù)庫(kù)源配置及調(diào)試功能,可以非常便捷地編寫(xiě)用例。即使測(cè)試人員不會(huì)寫(xiě)代碼只會(huì)寫(xiě)SQL,也可以通過(guò)簡(jiǎn)單的培訓(xùn)快速上手,相較于原有需要測(cè)試人員手動(dòng)編寫(xiě)Python測(cè)試代碼要便捷許多。
圖6 MeterSphere在接口測(cè)試中支持SQL語(yǔ)句
圖7 SQL請(qǐng)求返回結(jié)果
3. 支持測(cè)試跟蹤和性能測(cè)試
除了我們主要關(guān)注的接口測(cè)試,MeterSphere也支持測(cè)試跟蹤和性能測(cè)試。官方有意和我們目前正在使用的禪道平臺(tái)打通,進(jìn)行缺陷管理,這樣工具就可以聯(lián)動(dòng)起來(lái)。對(duì)于性能測(cè)試的功能,我們也正在探索中,將接口測(cè)試用例一鍵轉(zhuǎn)為性能測(cè)試用例,并輔以可視化施壓曲線,非常直觀,點(diǎn)個(gè)贊!
4. 與技術(shù)棧契合
基于Vue.js和SpringBoot的前后端分離程序是當(dāng)前主流的技術(shù)實(shí)現(xiàn)方式,MeterSphere沒(méi)有藏著掖著,核心功能代碼全部開(kāi)源,使用Swagger作為接口文檔清晰易讀,大大降低了二次開(kāi)發(fā)和定制化的門(mén)檻。
5. 支持持續(xù)集成
MeterSphere提供了Jenkins插件用來(lái)打通持續(xù)集成,能夠和內(nèi)部的CI/CD流水線配合工作,提高自動(dòng)化率。同時(shí),基于前后端分離的設(shè)計(jì),MeterSphere還能夠便捷地通過(guò)自定義腳本觸發(fā)接口批量執(zhí)行。
使用情況
我們目前對(duì)MeterSphere的使用方法是在諸多測(cè)試團(tuán)隊(duì)中選擇了一個(gè)典型團(tuán)隊(duì)進(jìn)行試點(diǎn)推廣,文中截圖均來(lái)源于此團(tuán)隊(duì)的測(cè)試實(shí)踐。具體項(xiàng)目由專(zhuān)職測(cè)試團(tuán)隊(duì)進(jìn)行系統(tǒng)測(cè)試,充分設(shè)計(jì)場(chǎng)景和用例,開(kāi)始逐漸將原有零散的用例向MeterSphere平臺(tái)遷移,充分利用其管理能力和復(fù)用能力。當(dāng)用例積累到一定規(guī)模后,可以便捷地展開(kāi)冒煙和回歸測(cè)試。
感受與評(píng)價(jià)
MeterSphere開(kāi)源持續(xù)測(cè)試平臺(tái)是一款經(jīng)過(guò)細(xì)心雕琢的產(chǎn)品,易用性相較于之前接觸過(guò)的開(kāi)源工具有極大的提升。
社區(qū)的活躍度是評(píng)價(jià)一個(gè)開(kāi)源項(xiàng)目的關(guān)鍵指標(biāo)。沒(méi)有社區(qū)哪來(lái)的生命力?MeterSphere團(tuán)隊(duì)的同學(xué)非常熱情,積極協(xié)助我們解決使用中的各種問(wèn)題,同時(shí)我們將發(fā)現(xiàn)的問(wèn)題和意見(jiàn)建議提交Issue,官方再有選擇地采納,這就形成了一個(gè)良性的互補(bǔ)和循環(huán),互相促進(jìn)各自的產(chǎn)品質(zhì)量持續(xù)提升,共同受益。
期待與建議
截至目前,MeterSphere每一個(gè)新版本都能解決多個(gè)切實(shí)關(guān)心的實(shí)際問(wèn)題,并且積極采納用戶合理的意見(jiàn)和建議,永葆活力。希望MeterSphere開(kāi)源項(xiàng)目不忘初心,在開(kāi)源社區(qū)持續(xù)不斷地茁壯成長(zhǎng),成為測(cè)試工程師們不可或缺的工具。