大家一般用什么工具測試HTTP和json接口?
具體選擇什么樣的框架或者工具,取決于我們的測試復雜度,或者說取決于我們的測試需求(測試策略、深度、廣度)。
常見的接口測試工具及測試自動化測試框架我們先介紹下現在主流的接口測試工具和框架。
接口測試工具
Postman:接口功能
Jmeter:接口性能、功能
Loadrunner:接口性能、功能
SoapUI:接口功能、性能、安全
接口自動化測試框架
測試庫構架框架數據驅動的自動化測試框架關鍵字驅動的自動化測試框架如何選擇框架、工具的選擇是我們確認開展自動化后首先面臨的問題。之前網上有個梗,泡面煮著吃是沒有靈魂的,當然這是一種調侃。自動化測試開展一定要結合被測系統的特點進行選擇,不顧被測系統(系統框架)特性、場景而盲目選擇自動化測試框架(或工具), 它是沒有靈魂的,自動化失敗概率會相對高很多。
如果我們的測試需求,只是進行接口的功能測試,需要使用一種方便的工具進行接口請求響應的驗證。如上介紹的四種接口測試工具,都可以考慮,如果是功能性驗證,推薦使用Postman、SoapUI,如果進行接口的性能測試,推薦使用Jmeter、Loadrunner。
如果我們的測試需求是希望對接口進行自動化測試,考慮到具體系統業務的復雜度,比如接口之間的依賴,業務場景的覆蓋。單獨就某一個接口進行測試,難以覆蓋真實的測試場景,因此需要考慮結合接口自動化測試框架來滿足我們的測試需求。
首先自動化測試框架更傾向于一種設計思想 ,這種思想指導工具的使用或者自研開發,并且不是只能使用僅僅一種框架,結合被測系統本身特性一般是選擇多種測試框架的組合,來滿足測試和設計需求(開發、維護角度)。
這里直奔主題,不錯多余鋪墊,推薦使用Robot Framework關鍵字驅動的自動化測試框架進行接口自動化,通過自定義關鍵字的開發實現復雜的測試場景,需注意自定義關鍵字的易用性和可維護性。有興趣的可以關注下Httprunner接口自動化測試框架的設計思想,很不錯,指的學習和借鑒。
疑問:接口測試用例設計是只針對一個個單接口測試,還是流程場景測試?首先需要區分這里的流程場景指的是業務流程場景,還是操作流程場景。業務流程場景
業務流程場景一般指的是系統業務流程,類似于辦公流程,具有強流程性。
針對業務流程場景,接口的自動化用例是需要進行場景化設計的,一般常使用關鍵字驅動的測試框架+ python request模塊。
借鑒關鍵字驅動測試思想,把接口請求發送、響應校驗、響應內容返回(下一個接口依賴上一個接口,需返上一接口響應體),三部分封裝成"請求校驗"自定義關鍵字。
同時再封裝"內容提取"自定義關鍵字——提取接口響應體特定數據。這樣就可以獲取上一個接口返回中的特定數據作為下一個接口的輸入參數。
如此。任何業務場景都可以通過"請求校驗"自定義關鍵字 + "內容提取"自定義關鍵字 + "響應校驗"自定義關鍵字 +…
操作流程場景
操作流程場景一般指的是先使用哪個功能,再使用哪一個,沒有強制性的操作步驟規范,比如單一的查詢功能。
針對操作流程場景,則可以視情況,開展單一接口的自動化測試。現有的很多自動化框架、工具都適合此場景的自動化測試開發,在此不做擴展。
關于響應體為JSON的校驗方式在測試工作中,一般都會接觸到期望結果數據與實際結果數據一致性比對的測試場景,對于復雜、龐大數據的比對工作。如果依靠人工執行,其成本相當高,難以保障執行結果的一致性(多次執行可能存在偏差),并且重復性極高。因此,通常我們需要考慮如何通過自動化工具實現數據的比對。JSON的兩種數據結構
1.Key-Value對集合,在Python語言中可以理解為字典(Dict),如下圖。
2.有序集合,在Python語言中可以理解為列表(List),如下圖。
一致性校驗核心設計
在測試工作中接觸的Json數據校驗,大多是請求響應體的校驗,設計主要考慮了以下兩點:
1.需支持復雜JSON比對,如查詢地市編碼基本信息接口的響應體中包含,省份編碼、省份地市的基本信息(地市編碼、地市名稱、地市排序),例如 :
2.需支持比對結果的可追溯,比如地市數量(Count)不一致時,不能僅輸出期望、實際結果的地市數量,還需要輸出整個JSON的哪個節點的值不一致,或者缺失哪個節點,如Detail.Count的值不一致,例如:
[ERROR] ACTUAL-JSON ==> [Detail.Count]的VALUE不同: <actual>: 2 <expect>: 3設計實現
一致性比對的整體設計包含三個模塊:遞歸解析模塊,格式轉換模塊,數據比對模塊,具體描述如下。
具體Python實現可以閱讀:《Python實現JSON數據的一致性校驗》https://www.toutiao.com/i6662316383423955468/
相關推薦閱讀:可關注我,閱讀《測試之術》專欄,其中對接口自動化測試設計、場景測試框架的介紹及Robot Framework使用都有詳細介紹,希望能夠對你有所幫助。