一. 什么是接口測試
接口測試是一種軟件測試方法,用于驗證不同軟件組件之間的通信接口是否按預期工作。在接口測試中,測試人員會發送請求并檢查接收到的響應,以確保接口在不同場景下都能正常工作。
就工具而言,常見的測試工具有Jmeter、Postman等。但這類工具往往更是做接口調試,對于做自動化以及測試集成卻不夠理想,因此便有了接口測試腳本,Java、Python、GO等語言都能支持。
然而語言總歸是要學習成本的,因此陸續開始有了各類測試平臺。為什么做測試平臺?即將接口測試工具與接口測試腳本結合起來,實現像測試工具做接口調試一樣簡單,同時也能更好的支撐場景化測試、持續集成測試。
二. 接口測試的要素有哪些
接口測試其實無外乎就是將請求發送出去并驗證響應結果。我們常做的接口測試主要是HTTP協議,針對這類接口,其請求數據,主要構成是:請求方法,請求地址,請求頭,請求參數。
請求方法即是常見的GET/POST/PUT/DELETE等,根據接口文檔來維護即可,只是定義了不同的請求方式而已。
至于請求地址,在做自動化測試時,又可以拆分為請求域名和請求路由,一般來說不同的環境域名會產生變化,但是路由一般是固定的,因為我們在做測試集成時為保證一個接口請求能在多個環境下執行,會選擇將域名提出來放在環境中管理,而每個接口對應的域名通常可以根據路由的值來匹配即可。當然在微服務架構中,我們也可以給每個接口打上微服務的標識,而同一個微服務的接口無論在任何環境下其域名應當是一致的。因此除了通過路由匹配,我們也可以通過微服務標識來匹配,我稱之為域名標識。
?此外,接口測試最重要的一點就是登錄驗證,通常會有四種方式。RestAPI最常見的是Session/Cookies和Token,OpenAPI一般是OAuth,最古老的鑒權則是HTTP Basic Authorization。對于Cookies和Token,一般我們都是通過放在請求頭中發送出去,Session一般都是作為狀態管理員來保存,通常編程語言的HTTP包會自帶該方法,我們需要做的無外乎就是在登錄后保存這個Session即可。至于OAuth,通常是需要加密成一個簽名來做校驗,我會在后面單獨開一篇文章來介紹具體的使用。
對于請求數據,一般有三種方式,分別是:查詢參數、路由參數以及請求體。查詢參數即將參數轉變為name=value的形式放在請求地址后面,以?號分隔多個參數中間加&符。路由參數往往是將參數值放在路由中,因此路由的值往往會是動態的,且路由數量也是不定的。至于請求體則比較好理解,一般常用的是表單和json串。當然古老的接口也有文本格式/XML格式等,另外就是文件上傳的接口會是二進制流。
最最重要的一點就是,無論什么業務,接口測試一定要有斷言,沒有斷言的接口測試用例就是在耍流氓。因此接口還有一個重大要素就是編寫斷言,斷言的方式有很多,可以斷言接口的響應數據,對于數據增刪改的接口同樣也可以去斷言數據庫的內容。
三. 如何用開源工具平臺來做接口自動化測試
前面了解了接口自動化測試基本原理之后,我們用一款開源測試平臺來快速的實現一個簡單的接口自動化測試用例編寫,接下來我們合并圖文來介紹用法:
第一步:創建環境,如上所述,環境是接口測試用例為了能在多環境復用下不可缺少的一部分。環境創建完成后,還需要在環境下創建域名,域名匹配規則在上文介紹過,可以通過路由匹配和域名標識匹配。
新增環境
第二步:創建接口,我們在做自動化測試時,接口需要單獨維護和管理,從而做到當接口發生變化時,只需要維護接口管理處的接口,所有引用該接口的用例都能隨之變化,提升維護效率。在創建接口前,我們可以先創建接口所屬的業務模塊,同樣的也方便后期快速找到接口。
而接口需要維護的數據也很簡單,即前面所述的四大請求數據即可完成最基礎的接口信息維護。當然為了后期記憶,我們最好還是給接口起個名字加個描述。同時,如果希望使用域名標識,則給接口綁定上一個微服務的標識即可。
新增接口
第三步:做好了接口維護,那就可以開始寫接口用例了。接口用例其實不過是在接口上面再套一層殼罷了,之所以套上這層殼,主要目的還是為了做業務邏輯的驗證,可能一個業務邏輯的驗證需要執行多個接口,將多個接口加入到一個用例中,即可完成。如果多個接口之間數據有依賴關系,也可以通過一些關聯參數的引用實現,這在后面的文章我會單獨介紹。
新增用例
第四步:接口加進來后,直接調試。選擇之前維護的環境執行即可。調試成功后,維護一下用例的基本信息,如給用例起個名字,寫一段描述,點擊保存,即完成一條接口自動化用例的編寫。
調試用例
四. 總結
通過上述的幾個步驟,不難看出,在使用平臺后,完全可以拋棄代碼編寫接口測試腳本那一套方案,而且便捷程度不屬于postman等工具。最大的好處是,用例保存服務端,我們可以任意編排用例去執行,從而驗證不同的需求。只要用例數據設計得當,即便是換產品經理來驗證,選好用例直接執行也能完成自動化測試。
感謝每一個認真閱讀我文章的人,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:
?
這些資料,對于【軟件測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴上萬個測試工程師們走過最艱難的路程,希望也能幫助到你!有需要的小伙伴可以點擊下方小卡片領取??