MeterSphere 案例分享丨易盛資訊 MeterSphere 介面測試使用經驗

MeterSphere 小助手發表於2020-11-23

鄭州易盛資訊科技有限公司(以下簡稱為易盛資訊)是鄭州商品交易所的全資技術子公司。其主要的發展戰略為“兩個面向”,即面向鄭州商品交易所和麵向全球金融期貨市場。

目前,易盛資訊一個普通交易日6小時處理的交易額遠遠超過了天貓雙十一全天的交易額,核心系統處理時延精確至納秒級,部分系統資料精度要到小數點後三十多位。系統的穩定性至關重要,如果交易系統發生故障導致中斷會影響世界範圍內相關產品定價。總而言之一句話,我們要千方百計地確保系統“不能出事”。

系統測試階段面臨的問題

在系統測試階段,針對介面測試我們主要面臨兩類問題。

  • 第一類是私有協議問題,期貨交易採用基於TCP和UDP的期貨報文交換協議,市面上沒有針對性的測試工具。如果需要自動化,就需要編寫C++程式碼來進行測試,這無疑對測試人員提出了很高的要求;
  • 第二類問題則是我們的辦理申報類業務,對HTTP介面測試的需求具有鮮明的特點。此類採用非私有協議的系統,大部分採用Java開發,通過HTTP介面進行互動。

而在這一環節中,我們需要和資料庫進行比較。業務中有大量的表單填寫和各種計算,需要對介面處理後的資料進行一定規則的校驗。傳統介面測試工具均無法支援資料庫相關操作。

在這方面,我們也進行了一些嘗試,今年疫情期間,我們開發了一版以HttpRunner為核心引擎的介面測試工具原型,結合自有Python操作Oracle封裝的庫,實現了和資料庫結果的比較,但由於指令碼編寫內容多、UI不夠便捷、文件不夠清晰等一系列原因最終擱置了這一自研工具;

介面測試的另一個特點是具有複雜且長的流程性介面。對於很多審批、申報類業務,需要按照順序和邏輯條件請求十幾個介面,中間由不同的使用者登入並操作,過程之繁瑣遠超微服務的無狀態呼叫,對於很多長流程組成的場景,無論是手工測試還是編寫自動化測試指令碼都很複雜。

MeterSphere給我們帶來的幫助

任何技術都有著自己的生命週期,從誕生到衰落也符合事物發展的客觀規律。傳統金融行業的網際網路轉型是漫長的,為了求穩,對於業內的眾多新興技術,並不會立刻採納,但我們仍然持續關注相關理論、技術、工具及平臺,爭取成為早期技術紅利的受益者。

2020年8月,在朱少民老師的公眾號“軟體質量報導”上第一次瞭解到了MeterSphere這個開源專案,並在9月的QECon大會上第一次見面。真的是“相見恨晚”呀!

經過一段時間的使用,我們逐步將MeterSphere開源持續測試平臺引入到我們的業務場景測試之中,也收穫了一些使用心得和體會。在這裡和大家分享一下。

1.平臺即服務

在使用MeterSphere之前,我們主要用Postman進行介面測試。與工具型的Postman相比,MeterSphere是一個持續測試的平臺。MeterSphere的主要優勢包含以下幾點:

搭建方便

MeterSphere基於Docker提供服務,並提供完備的私有化部署能力,支援一鍵安裝和升級,整個過程非常流暢,體驗良好。容器化的部署方式避免了測試人員安裝工具的成本,搭建好平臺後即可直接使用。

▲圖1 MeterSphere支援一鍵安裝和升級

管理規範

MeterSphere能夠實現組織、工作空間、專案、測試、場景等多級管理,角色許可權分離,井井有條。它還可以與內部LDAP對接,使用起來非常方便。

▲圖2 MeterSphere可與LDAP進行對接

▲圖3 MeterSphere支援使用者、組織和工作空間管理

2. 與MeterSphere的“一見鍾情”

初次試用MeterSphere,就發現了它非同一般的易用性,提供介面測試解決方案上也恰好直擊我們的痛點。我們選擇了具體的業務組進行了試用推廣,真的很香,主要的原因來自以下幾個方面:

除錯功能

測試過程中常常需要除錯,MeterSphere貼心地提供了除錯按鈕,可以立刻看到當前介面的執行情況,方便使用者及時調整,這方面體驗和Postman完全一樣。

▲圖4 MeterSphere介面測試提供了與Postman類似的體驗

支援Python的前後置指令碼

Postman支援使用JavaScript編寫指令碼,但我的同事們更熟悉Python,而MeterSphere支援Python的前後置指令碼就給介面測試增加了更多的靈活性。在這方面,MeterSphere更具優勢。

▲圖5 MeterSphere支援Python的前後置指令碼

支援SQL語句

這應該是支援我的團隊開始使用MeterSphere最關鍵的原因了。支援SQL就滿足了我們在介面測試中50%的需求,結合自定義變數和資料庫源配置及除錯功能,可以非常便捷地編寫用例。即使測試人員不會寫程式碼只會寫SQL,也可以通過簡單的培訓快速上手,相較於原有需要測試人員手動編寫Python測試程式碼要便捷許多。

▲ 圖6 MeterSphere在介面測試中支援SQL語句

▲圖7 SQL請求返回結果

3. 支援測試跟蹤和效能測試

除了我們主要關注的介面測試,MeterSphere也支援測試跟蹤和效能測試。官方有意和我們目前正在使用的禪道平臺打通,進行缺陷管理,這樣工具就可以聯動起來。對於效能測試的功能,我們也正在探索中,將介面測試用例一鍵轉為效能測試用例,並輔以視覺化施壓曲線,非常直觀,點個贊!

4. 與技術棧契合

基於Vue.js和SpringBoot的前後端分離程式是當前主流的技術實現方式,MeterSphere沒有藏著掖著,核心功能程式碼全部開源,使用Swagger作為介面文件清晰易讀,大大降低了二次開發和定製化的門檻。

5. 支援持續整合

MeterSphere提供了Jenkins外掛用來打通持續整合,能夠和內部的CI/CD流水線配合工作,提高自動化率。同時,基於前後端分離的設計,MeterSphere還能夠便捷地通過自定義指令碼觸發介面批量執行。

使用情況

我們目前對MeterSphere的使用方法是在諸多測試團隊中選擇了一個典型團隊進行試點推廣,文中截圖均來源於此團隊的測試實踐。具體專案由專職測試團隊進行系統測試,充分設計場景和用例,開始逐漸將原有零散的用例向MeterSphere平臺遷移,充分利用其管理能力和複用能力。當用例積累到一定規模後,可以便捷地展開冒煙和迴歸測試。

感受與評價

MeterSphere開源持續測試平臺是一款經過細心雕琢的產品,易用性相較於之前接觸過的開源工具有極大的提升。

社群的活躍度是評價一個開源專案的關鍵指標。沒有社群哪來的生命力?MeterSphere團隊的同學非常熱情,積極協助我們解決使用中的各種問題,同時我們將發現的問題和意見建議提交Issue,官方再有選擇地採納,這就形成了一個良性的互補和迴圈,互相促進各自的產品質量持續提升,共同受益。

期待與建議

截至目前,MeterSphere每一個新版本都能解決多個切實關心的實際問題,並且積極採納使用者合理的意見和建議,永葆活力。希望MeterSphere開源專案不忘初心,在開源社群持續不斷地茁壯成長,成為測試工程師們不可或缺的工具。

注:本文作者為鄭州易盛資訊科技有限公司測試中心效能組狄雨晨。

相關文章