本文是《微服務治理實踐》系列篇的第六篇文章,為大家介紹微服務測試中的自動化回歸:基于微服務契約資訊快速編排被測服務、管理自動化測試用例。可視化用例編輯界面,豐富的預置檢查點、内置變量,支援自定義變量、參數傳遞、持續自動化測試,幫助您高效管理、回歸業務測試場景,幫助業務快速驗證、快速傳遞。 第一篇:《微服務治了解密》 第二篇:《微服務治理實踐:服務查詢》 第三篇:《微服務治理實踐:金絲雀釋出》 第四篇:《微服務治理實踐:服務契約》 第五篇:《微服務治理實踐:如何降低微服務測試成本?》
該系列文章基于阿裡雲商業化産品 MSE 的微服務實踐,如果您的團隊具備較強的微服務治理+測試能力,那麼希望我們在微服務治理+測試方面的實踐和背後的思考,可以為您提供一些參考。
本期内容相關直播内容如下:
前言
目前微服務疊代周期短、版本多,服務需要具備獨立測試和快速驗證能力,支撐服務測試耗時縮短以及測試活動前移。面臨多方面的挑戰:
• 服務不具備獨立驗證能力
• 自動化用例開發效率很低
• 在高并發的使用場景下健壯性如何保證
• 如何及時發現現網服務出現異常
本文旨在講述“自動化用例開發效率很低”的主要解決方案,在詳細講述微服務測試—自動化回歸之前,先給大家講一個場景。

在這個典型的企業微服務應用架構圖中,Product Service應用提供查詢商品清單和通過ID查詢商品詳情的功能,Business Service應用提供添加商品到購車的功能。如果想驗證使用者操作的從查詢商品清單→通過ID查詢商品詳情→将商品添加至購物車這個業務場景,現在我們一般怎麼做呢?
1、進入Product Service應用部署所在的機器(ECS)或者容器(Pod),通過 curl 指令調用查詢商品清單,驗證傳回的商品清單是否不為空
2、把查詢商品清單傳回值中的ID拼接到curl指令的入參中,調用通過ID查詢商品詳情,驗證詳情中的字段是否符合預期
3、進入Business Service應用部署所在的機器(ECS)或者容器(Pod),把ID拼接到 curl 指令入參中調用添加該商品至購物車,驗證添加是否成功
如果以上場景一次驗證不通過,還要反複重複以上操作,至此我們可以總結出雲上微服務測試的幾點問題:
• 雲上網絡拓撲複雜
• 業務鍊路場景驗證難
• 重複繁瑣操作驗證效率低
為什麼我們需要自動化回歸
微服務測試自動化回歸,結合我們的研發實踐和研發理念,測試用例免代碼編寫、一鍵選取被測服務、快速組裝編排、低成本管理自動化測試用例。
MSE 自動化回歸實踐
前提條件:微服務應用已接入MSE
下面圍繞前言中描述的場景如何使用微服務測試的自動化回歸,從用例設計,用例生成,用例執行,打造簡單、高效、專業的微服務測試能力,為微服務上線保駕護航。
用例設計
首先我們設計被測服務的加購物車業務場景,包括查詢商品清單、查詢商品詳情、添加商品至購物車三步,設定每步的入參和預期。
用例生成
1、登入MSE控制台,在頁面左上角選擇地域;
2、左側導航欄選擇:微服務治理 -> 微服務測試 -> 自動化回歸 -> 建立用例;
3、第1測試步驟查詢商品清單,選擇productservice應用 -> 選擇Spring Cloud架構 -> 選擇/products服務 -> (預設)選擇GET方法;第1測試步驟無需入參,直接點選“通路一次”檢視傳回值,再點選“出參提取助手”擷取需要校驗的檢查對象。
4、第1測試步驟在“斷言(選填)”中粘貼剛選取的檢查對象,檢查條件選擇不是空;在“出參提取(選填)”的出參提取表達式中粘貼需要提取的id字段,并定義出參名為id。
5、點選“添加下一步驟”增加第2測試步驟查詢商品詳情,選擇productservice應用 -> 選擇Spring Cloud架構 -> 選擇/product/{id}服務 -> (預設)選擇GET方法;Path切換自定義輸入,将/product/{id}修改為/product/${id},即把第1測試步驟中提取的id傳入第2步驟。
6、同時也對第2測試步驟設定斷言和出參提取。
7、點選“添加下一步驟”增加第3測試步驟查詢商品詳情,選擇cartservice應用 -> 選擇Dubbo架構 -> 選擇CartService服務 -> 選擇addItemToCart方法;在基本資訊中編輯入參資料,傳入第1和第2測試步驟提取的入參,并在斷言中設定預期傳回值為true。
8、點選“儲存配置”。至此已成功将用例設計的業務場景轉化成一個俱備上下文傳參、豐富斷言的能力的自動化測試用例。
用例執行
觸發立即執行測試用例,在執行曆史檢視驗證業務的正确性和編排用例的正确性。
檢視驗證不通過測試步驟的具體失敗資訊,比如預期價格為900,實際為800,校驗等于(數字)比較失敗。
我們還有什麼能力
本文介紹了微服務治理下微服務測試-自動化回歸的能力,補齊了微服務生态測試的能力,但我們不止于此,我們即将夯實自動化回歸能力,提供多樣化的入參能力(系統函數、環境變量、集合變量、全局變量、參數化、參數容錯自動生成等等),提供測試集管理能力(将測試用例分組、批量執行),豐富的執行能力(串行執行、并行執行、定時執行),甚至與服務測試、服務巡檢、服務壓測結合,将服務測試一鍵生成測試用例,将測試用例一鍵生成巡檢任務、生成壓測場景。
除了MSE(微服務引擎),微服務測試能力還将被EDAS、SAE等雲産品內建。将微服務測試能力作為一個基礎能力被更多雲産品內建,另外,将跟更多微服務産品 ARMS (應用實時監控服務)、ACM(應用配置管理)、CSB(網關)形成關聯,助力保障雲上業務穩定性,讓業務永遠線上。
微服務測試交流群
如果您在微服務引擎MSE使用微服務測試過程中有任何疑問,歡迎您使用釘釘掃描下方的二維碼或搜尋釘釘群号 31180380 加入釘釘群進行回報。