該文章是基于阿裡雲商業化産品 EDAS 3.0的微服務實踐,如果您的團隊具備較強的微服務測試能力,那麼希望我們在微服務測試方面的實踐和背後的思考,可以為您提供一些參考。
點選
這裡 ,觀看直播,了解更多 EDAS 3.0 微服務測試相關内容。前言
随着雲原生時代的到來,越來越多的應用生在雲上,長在雲上,且随着越來越多的企業開始上雲,雲原生也是企業落地微服務的最佳伴侶。但雲上應用易測性受到了很大的挑戰,如何提高雲上應用易測性,增強DevOps能力,是微服務測試要解決的核心問題。
在詳細講述微服務測試之前,先給大家講一個場景。

上圖是一個典型的企業微服務應用架構圖,為了考慮安全性,雲上應用通常部署在雲上虛拟區域網路内,統一通過網關對外暴露服務。對于負責 Product Service 應用的同學來說,我隻想測試一下該應用對應的服務是否可用,他會怎麼做呢?
方案一:進入該應用部署所在的機器(ECS)或者容器(Pod),通過 curl 指令驗證該服務是否可用。
方案二:将該應用暴露給公網通路,通過本地指令行工具或者 Postman 工具驗證該服務是否可用。
方案三:拉一條網絡專線,打通雲上專有網絡VPC與辦公網網絡,通過本地指令行工具或者 Postman 工具驗證該服務是否可用。
從以上場景,我們可以總結出雲上微服務測試幾點問題:
• 雲上網絡拓撲複雜
• 暴露公網通路,會出現黑客攻擊,引發安全風險
• 拉一條網絡專線,浪費資源成本
明明隻想要一個簡單的測試能力,成本缺如此之高。上述場景還僅僅是一個簡單的調試功能,如果是壓測、自動化回歸、巡檢等其他測試及穩定性保障手段,不僅僅要解決上述場景遇到的問題,還需要自建工具,腦補一下,都覺得成本太高,是以,我們需要微服務測試來幫助我們解決這些問題,進一步加速軟體傳遞效率。
為什麼我們需要微服務測試
産品能力
提供測試、壓測、自動化回歸、巡檢等能力,形成一個微服務測試解決方案:
試想一下,研發同學送出代碼并部署,可以使用測試工具,驗證服務邏輯正确性;可以使用壓測工具,驗證服務性能名額;驗證通過後,開始進行冒煙測試,可以使用自動化回歸工具,編寫冒煙用例;冒煙通過後,開始進行曆史功能回歸,可以使用自動化回歸工具,編寫回歸用例;回歸通過後,送出測試驗收,測試隻需要驗證新功能,新功能驗證通過後,即可送出釋出。釋出後,進行線上環境驗證,需要回歸曆史功能主流程,可以使用自動化回歸工具,編寫主流程回歸用例,新功能手工驗證;主流程回歸通過且新功能驗證通過,代表釋出完成;研發同學,可以使用巡檢工具,配置線上巡檢;一旦巡檢告警,即可先于使用者發現問題,并解決問題。我們是将阿裡巴巴沉澱的測試解決方案産品化輸出,幫助雲上業務實作高品質地實作快速傳遞。
易用且安全
開箱即用,無需關注專有網絡VPC下的網絡拓撲;安全可靠,擁有在辦公網下的測試體驗。
試想一下,企業為了安全隔離,研發環境、測試環境、預發環境、生産環境部署在不同的專有網絡VPC内,如果使用者自建測試工具,需要解決測試工具到不同環境的網絡互通問題,企業IT人員明明隻想要一個簡單的測試工具,卻因為上雲之後,要解決複雜的雲上網絡拓撲,遠遠沒有結束,為了能夠在辦公網使用該測試工具,還需要保證該測試工具能夠被辦公網通路,此時又面臨着網絡安全的考驗。我們希望有一個能夠開箱即用且安全可靠的方案,能夠讓上雲的企業IT人員擁有在辦公網測試體驗的測試工具。
低成本
彈性拉起測試機/施壓機,用完銷毀,能夠大幅度降低建構測試工具需要的機器資源及人力成本。
試想一下,企業上雲是為了降低成本,應用托管極大地降低了資源成本和運維成本,但測試成本并沒有降低。企業IT人員自建測試工具需要準備測試機/施壓機,該部分機器長期占用且存在閑置,資源成本開銷大,尤其是在性能壓測場景,資源成本開銷會更大。除了資源成本外,企業IT人員還需要研發測試工具,人力成本及時間成本非常高,基本上每個企業都需要一套測試工具。我們希望有一個低成本的方案,不僅提高企業的資源使用率,同時降低企業IT人員開發和維護測試工具的成本。
微服務生态
雲上已提供了大量的微服務産品,解決了微服務應用的托管、治理、診斷,微服務測試補齊微服務能力。
試想一下,如何測試一個微服務接口,需要了解接口入參和出參,如果是研發同學-服務提供者,可能比較熟悉該接口,如果是測試同學,甚至是其他研發同學,可能就需要文檔,甚至是口口相傳,微服務治理已經可視化應用的服務契約資訊,結合服務契約資訊,隻需按照測試需要,選擇應用->架構->服務->方法,配置測試參數,即可進行測試,降低了服務契約同步的成本。
結合上述4點,測試同學隻需負責用例編寫+測試驗收,接口調試、接口性能水位、用例自動化均可賦能給研發同學,就像早期DevOps一樣,降低研發運維之間的回報回路,提高軟體傳遞效率,DevTest,降低研發測試之間的回報回路,在保證傳遞品質的前提下,進一步提升軟體傳遞效率,同時主動建立巡檢任務,定時監控線上服務可用率,先于使用者發現問題,解決問題。
EDAS3.0 微服務測試實踐
前提條件:微服務應用已接入EDAS3.0
下面我們來體驗一下,EDAS上如何使用微服務測試的能力。
服務測試
- 登入EDAS控制台,在頁面左上角選擇地域;
- 左側導航欄選擇:微服務治理 -> Spring Cloud -> 服務測試 -> 查詢服務;
- 單擊某個服務的詳情 -> 展示中繼資料清單;
- 單擊某個方法的測試 -> 進入測試頁面(已幫助使用者填充參數模闆);
- 點選執行即可。
EDAS 3.0 微服務測試最佳實踐 EDAS 3.0 微服務測試最佳實踐 EDAS 3.0 微服務測試最佳實踐
服務壓測
- 左側導航欄選擇:微服務治理 -> Spring Cloud -> 服務壓測 -> 建立場景;
- 選擇需要壓測的應用 -> 選擇架構 -> 選擇服務 -> 選擇方法;
- 填寫壓測參數,點選确認;
- 進入壓測場景清單頁,點選詳情;
- 進入壓測詳情頁,點選啟動,等待施壓機準備就緒;
- 點選詳情,進入壓測性能資料報告頁,實時檢視性能資料;
EDAS 3.0 微服務測試最佳實踐 EDAS 3.0 微服務測試最佳實踐 EDAS 3.0 微服務測試最佳實踐
自動化回歸
1、登入EDAS控制台,在頁面左上角選擇地域;
2、左側導航欄選擇:微服務治理 -> Spring Cloud -> 自動化回歸 -> 建立用例;
3、添加步驟
a. 選擇應用 -> 選擇架構 -> 選擇服務 -> 選擇方法;
b. 填寫參數;
c. 斷言/出參提取;
4、可以添加多個步驟;
5、儲存用例;
6、點選執行;
7、通過執行曆史,檢視用例是否通過;
服務巡檢
2、左側導航欄選擇:微服務治理 -> Spring Cloud -> 服務巡檢 -> 建立巡檢任務;
3、選擇需要巡檢的應用 -> 選擇架構 -> 選擇服務 -> 選擇方法;
4、填寫巡檢參數及斷言内容,點選确認;
5、進入巡檢任務清單頁,點選啟動,即開始巡檢;
6、巡檢失敗時,可以通過失敗記錄進行檢視,也可以添加告警,通過釘釘、短信、郵件的方式告警;
微服務測試實作細節
工具能力
将阿裡巴巴集團内實踐的測試工具産品化輸出,壓測、自動化回歸、巡檢,降低使用者研發工具的成本。
網絡互通
利用阿裡雲現有網絡打通技術方案(ENI挂載),打通雲産品專有網絡VPC與使用者專有網絡VPC
應用安裝微服務 Agent 時,主動将該應用所在的網絡資訊(專有網絡VPC,虛拟交換機VSwitch,安全組SecurityGroup)上報至服務端,根據應用所在的網絡資訊,即可打通雲産品專有網絡VPC與使用者專有網絡VPC,實作雲産品服務直接通路使用者專有網絡VPC部署的服務。
彈性資源
雲産品使用自己的資源賬号購買彈性機器,安裝測試工具。
服務契約
微服務治理已經可視化服務契約資訊,微服務測試直接查詢服務契約資訊即可
不止是微服務測試
本文介紹了微服務測試的幾個能力,補齊了微服務生态測試的能力,即将推出智能流量測試:提供微服務架構下的流量生産錄制生産回放、生産錄制線下回放、測試用例自動化生成、回歸測試場景自動化覆寫等能力,助力您的應用以更低的成本輕松完成測試驗證,歡迎前來體驗。
除了EDAS(企業級分布式應用服務),微服務測試能力已被MSE(微服務引擎)內建,還将被AHAS、CSB、SAE等雲産品內建。将微服務測試能力作為一個基礎能力被更多雲産品內建,另外,将跟更多微服務産品 ARMS (應用實時監控服務)、ACM(應用配置管理)等形成關聯,助力保障雲上業務穩定性,讓業務永遠線上。
微服務測試交流群
如果您在EDAS使用微服務測試過程中有任何疑問,歡迎您使用釘釘掃描下方的二維碼或搜尋釘釘群号 31180380 加入釘釘群進行回報。