微服务架构下的测试策略
源寶導讀:最近幾年,微服務架構越來越火爆,逐漸被企業所采用。隨著軟件架構的變化,對應的軟件測試策略需要作何調整呢?本文將介紹云客在微服務架構下的測試策略。
一、云客測試策略模型
策略分析
行業內的測試策略是一個先底層再上層、從局部到整體的一個過程:
從行業內的演進過程可以看到,項目測試策略在不同階段結合參考了不同的策略模型:金字塔->近似鉆石->蜂巢。
基于行業經驗,結合我們實際的架構特點,云客同樣劃分為不同的層級進行測試:客戶端、BFF層、服務層,跟鉆石型的過程是類似的。
各層測試側重點
服務層不正常可能會影響BFF,BFF不正常可能會影響客戶端,但每一層級各自驗證的側重點是不同的:
1
客戶端
檢查客戶端(APP、小程序、WEB站點)操作以及操作后的界面呈現。
2
BFF層
不考慮服務層的實現規則和數據庫存儲,只關注用戶在客戶端的不同操作場景下,業務邏輯是否達到預期,確保銜接客戶端和服務層是否正確。
3
服務層
對單個服務接口逐個測試,需要考慮入參和出參、數據庫存儲是否符合預期。
二、BFF層測試策略
BFF層測試面臨的問題
由于BFF層的接口通常會調用到多個底層服務接口,由此暴露出一系列問題:
涉及業務場景多
涉及多種緩存????
自動化用例設計難度大
工具的缺失
BFF層測試策略分析
針對以上問題,考慮云客的BFF層測試策略需要達到以下效果:
解決用例設計困難:能快速方便測試人員編寫和維護測試用例;
輕量級:減少消耗大量的人力在開發框架上;
易操作:讓測試同學都能簡易使用,且保證持續集成;
兼容性:能兼容Middleman或公司層面的其他工。
BFF層解決方案
1、錄制:對接口進行錄制。回歸測試時,利用代理進行接口抓包。
2、清洗:清洗數據生成用例。清除掉重復接口、無用接口、補充漏掉接口并生成接口測試用例。
3、回放:利用其它框架運行接口用例。如robotframework ,postman , jemeter ,或自研框架。
4、持續集成:部署自動化。解決cookie等問題,自動化部署進行持續集成。
為了讓大家能更清楚的理解我們的策略,結合剛剛介紹的BFF測試策略以及解決方案,這里以智能收款項目為例:
1、錄制:通過啟動本地代理,使用抓包工具抓取到用戶操作的各種場景;
2、清洗:通過腳本過濾獲取的接口,進行去重,按照規則篩選,最終生成接口用例;
3、回放:核對生成的接口用例,并運行;
4、持續集成:使用selenium模擬登錄拿到登錄態后,可以通過Jenkins進行持續集成,最終生成測試報告。
三、服務層測試策略
服務層測試面臨的問題
覆蓋率
測試用例覆蓋率的不足會很大程度上影響測試的效果。
服務依賴? ?
在測試服務時,常常會遇到服務之間存在依賴的情況。此時無法單獨對單個服務進行完整的測試,往往會依賴于其他關聯的服務狀態。
服務容錯
我們對服務的測試,還需要考慮服務的容錯和可用性,比如:當服務器的負載達到瓶頸或者當某個服務發布新的升級導致出現問題時,就會遇到服務的熔斷、降級。
服務熔斷:某個服務出現故障的時候,為了保證系統整體的可用性,會關閉出現故障的服務;
服務降級:當系統整體負荷過載的時候,關閉某些服務來保證系統的整體可用性。服務層解決方案
服務覆蓋率
? ? 通過Middleman工具中測試覆蓋率的數據指標,引導測試人員去完善用例,以達到接口的全覆蓋。并且在代碼提交時,需要保證用例全部通過才允許代碼合入。
服務之間的依賴、連通性
? ? Middleman工具通過內置mock服務,解耦服務間的依賴,只測試那些真正被實際使用到的 API 調用,如果沒有被使用到的,就不去測試,具體如下圖。
多泳道測試
? ? 核心解決的問題:多個開發并行,測試互不干擾,按分支需要創建,泳道完成環境隔離。
服務的容錯性、可用性
? ? 通過服務的熔斷、降級的自動化預警工具,當慢SQL增多時,自動化腳本會自動Kill掉符合條件的慢SQL。同時可視化Kill記錄、kill異常中斷,既方便又直觀。
四、云客測試策略
整體解決方案
在測試過程中,我們不難發現云客的產品測試現在正在面臨的問題:
迭代頻繁
測試時間短
測試評估不全面
測試人員少
隨著功能的逐步增加,回歸任務重
針對上面提到的微服務對測試的挑戰,一方面為了保證在服務各個層級上對微服務進行全面的測試;另一方面又要確保測試執行的效率,這樣才能保證持續集成/持續交付(CI/CD)。因此,云客總體的測試策略采用如下解決方法:以增量測試為主,輔以自動化測試,探索性測試以及checklist檢查
測試策略的影響因素不是唯一的,技術架構并不是最關鍵的因素。業務價值始終是我們的終極目標。在這個終極目標的驅動下,測試策略不是制定完了就可以束之高閣的,需要在整個軟件系統構建過程中不斷的度量和改進,是演進式的。
------ END ------
作者簡介
彭同學:?測試SM,目前負責云客相關的測試方案設計和執行工作。
也許您還想看
基于 Go 的微服務運行情況監控實踐
在明源云客,一個全新的服務會經歷什么?
“弱中心”化的分布式配置管理技術可行性探索
ERP平臺的自動化測試技術實踐
為什么容器內存占用居高不下,頻頻 OOM
總結
以上是生活随笔為你收集整理的微服务架构下的测试策略的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 拥抱.NET 5,可以从这个极速开发的W
- 下一篇: 在家办公这半年,让我开始热爱生活