摘要:軟體質量是衡量一個軟體是否成功的重要標準,在軟體的生命周期中,自動化測驗金字塔給大家提供了一種測驗策略,根據專案具體的情況,優化測驗活動,最終讓軟體質量得到提升,
本文分享自華為云社區《測驗金字塔,你在哪一層?》,作者:敏捷的小智 ,
前言
軟體質量是衡量一個軟體是否成功的重要標準,在軟體的生命周期中,如果沒有良好的質量管控,很容易造成產品質量不滿足客戶預期,最終導致專案交付困難,軟體質量可以通過規范化的研發流程、系統的軟體測驗等方式進行保障,本文我們就聊點測驗相關的內容,
測驗金字塔
軟體測驗是伴隨著軟體開發一同誕生的,隨著軟體規模大型化,結構復雜化,軟體測驗也從最初的簡單“除錯”,發展到當今的自動化測驗,原始的“除錯”,在這里就不細聊了,那自動化測驗是什么呢?自動化測驗是把以人為驅動的測驗行為轉化為機器執行的一種程序,自動化測驗通常會借助某些工具或者框架,雖然不能完全取代手工測驗,但相比手工測驗來講,自動化測驗可以減少人力成本,降低重復作業,從而更快速、高效的進行測驗活動,

測驗金字塔是一種自動化測驗程序的金字塔形策略結構,用來指導軟體開發程序中,各層自動化測驗的投入比例,其最早由Mike Cohn在2009年的著作《Scrum敏捷軟體開發》中提出,Mike Cohn在書中指出:測驗金字塔從上到下分為三層,分別是UI測驗、服務/介面測驗、單元測驗,越接近金字塔底部的測驗活動,投入的作業量應該越多,即單元測驗投入作業量最多,介面測驗次之,UI測驗投入最少,

測驗金字塔最底層——單元測驗
單元測驗屬于代碼級別的測驗,撰寫成本低,執行速度快,能夠快速定位問題,極限編程中的TDD測驗驅動開發很多時候都是圍繞單元測驗開展,單元測驗可以說是最低級別的測驗活動,關于單元測驗的內容也很多,在這不做過多介紹,

測驗金字塔中間層——介面測驗
隨著微服務架構的廣泛普及,API也成為大勢所趨,因而,對API進行持續測驗成為DevOps的關注點之一,如果沒有API介面測驗,微服務架構的實施對于企業將會成為一場災難,
介面測驗是測驗系統組件間介面的一種測驗,主要用于測驗系統與外部其他系統之間的介面,以及系統內部各個子模塊之間的介面,介面測驗既可關注單個介面的引數取值和引數取值組合的合理性,也可以驗證產品功能的完整性和正確性,相對比單元測驗,服務/介面測驗的覆寫范圍要大一些,
介面測驗的重點如下:
- 檢查介面引數傳遞的正確性;
- 介面功能實作的正確性;
- 輸出結果的正確性;
- 對各種例外情況的容錯處理的完整性和合理性,
如何進行介面測驗
Swagger是一種可生成、描述并呼叫RESTFUL風格API的框架,Swagger官網的樣例Demo——petstore(寵物商店)對外提供一系列可以對寵物資訊進行增刪改查的介面,本文使用這些介面進行介面測驗,
1.準備作業
首先,通過華為云DevCloud的云測功能中的“測驗用例”,創建介面測驗的測驗用例,

將petstore專案的網址設為默認環境變數,這里給他命名為“pethost”,測驗用例可通過“$$petstore”的形式,直接呼叫該變數,

環境變數也可以不設定,但每次測驗都需要輸入petstore的域名,很麻煩,設定成環境變數可以減少作業量,云測中輸入“$$”可以直接關聯預設的環境變數,

2.創建“添加寵物資訊”的介面測驗用例
petstore專案中,“添加寵物資訊”是通過post請求完成的,該請求的請求體如下所示

創建“URL請求”,將請求型別設定為“POST”,請求地址為“$${pethost}/v2/pet”,在請求體中輸入上圖Json字串,請求部分設定完成,

接下來,我們設計我們預期的檢查結果,期望回傳值是200,即成功,如果回傳其他回應碼則測驗失敗,

同時,還要對回應體中的某些引數做提取,便于后續業務的測驗使用,在這里我們提取相應體中category.id的值,并將他賦給區域變數“id”,

3.執行用例并查看回傳值
請求設定完成后,我們執行用例,可以看到回應碼是200,結果是成功的,如果想看到測驗不成功的場景,可以試試不按照引數串列規定,使用其他引數,

通過“近一次的結果”中“回應”,可以看到這次請求的回傳值,回傳值中提供的各類引數都可以通過上文提到的“回應提取”功能進行提取,供其他測驗使用,

4.創建“查詢寵物資訊”的介面測驗用例
寵物資訊創建完成后,我們通過Get請求查詢寵物是否真的添加完成,
創建“URL請求”,將請求型別設定為“GET”,請求地址中,通過“$id”直接呼叫之前介面回傳的id(同“$$”,“$”可以直接關聯預設的區域變數),

回應碼設定為200,預計測驗通過,

5.執行用例查看是否可以查詢到寵物資訊
執行用例后可以看到回應碼是200,和預期相符,測驗成功,

通過“id”查詢到的寵物資訊也和之前創建的寵物資訊一致,表示這兩個功能是OK的,

6.創建“洗掉寵物資訊”的介面測驗用例
測驗完成后,需要洗掉測驗資料,
創建“URL請求”,將請求型別設定為“DELETE”,同樣通過“$id”洗掉對應的寵物資訊,

回應碼設定為200,預計測驗通過,

7.洗掉測驗用例
執行用例后可以看到回應碼是200,和預期相符,測驗成功,

通過回應體也可以看出,寵物資訊洗掉完成,

以上就是一個簡單的介面測驗的例子,體現了介面測驗既可以測驗單個介面的功能,也可以測驗產品多個模塊聯動的功能,
測驗金字塔最高層——UI測驗
在測驗金字塔中,UI測驗的覆寫范圍廣,接近業務側,但是撰寫成本高、執行速度和穩定性都會下降,問題定位也很難,所以在測驗設計中,要減少界面層的測驗,如果是下層測驗可以覆寫的場景和邏輯,為了提高測驗的速度和節省資源,盡量放到下層去進行,
總結
軟體想要有一個好的質量,嚴謹的測驗活動必不可少,自動化測驗金字塔給大家提供了一種測驗策略,我們要根據專案具體的情況,優化測驗活動,最終讓軟體質量得到提升,
最近華為云與高校聯合發起的開學季活動,邀請了華為專家、斬獲21offer的優秀學長,采用線上直播+賽道闖關+豐厚獎品的形式進行,旨在讓同學們了解華為前沿研發理念和先進技術,體驗用華為云不同產品進行場景應用的開發,加深高校學生對企業技術應用的了解,讓校園學習與企業技術應用接軌,為高校學生的擇業就業進行助力賦能,
獎品多多,了解一下:華為云DevCloud&AI&IoT新學期挑戰賽

點擊關注,第一時間了解華為云新鮮技術~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/298645.html
標籤:其他
下一篇:uni-app 主干知識梳理
