轉自 https://www.jianshu.com/p/5029ce89a2d0,記錄供自己復習
前言
隨着測試技術的發展,接口自動化測試逐漸成為各大公司投入產出比最高的測試技術。介入時間早,執行效率高,穩定性高的優點,讓越來越多的公司引入接口自動化測試。
框架簡介
APIAutoTest是處理API接口的輕量級自動化測試框架,Java語言實現,基於TestNG測試框架,支持持續集成,自動構建與測試。
框架介紹
1. 數據驅動設計,使用TestNG中的@DataProvider讀取Excel中存儲的自動化測試用例。
2. 基於TestNG測試框架
3. 使用HttpClient發送Http請求,並統一接口response返回值為String
4. 使用fastJson和Jsoup進行數據解析,由於請求返回值的統一,解析數據異常方便,方便接入不同接口類型的數據
5. 獨立封裝的檢查點“Jsonpath”檢查點,極大方便檢查點的設置
6. 在線報告以及Email報告
7. 持續集成、持續交付、自動構建與測試
框架技術棧圖

框架組件圖

Maven進行項目、依賴管理
HttpClient進行通信
TestNG測試框架管理測試腳本以及測試驅動
FastJson/Jsoup用於數據解析
AssertJ用於檢查點設置
ExtentReports輸出具備圖表分析的報告
SVN+Jenkins實現持續集成
框架執行流程圖

測試執行的流程(代碼層):
測試執行的入口為TestNG的XML文件
獲取測試用例的腳本,測試用例執行分為測試前(@BeforeTest),測試中(@Test),測試后(@AfterTest)
@BeforeTest:獲取/解析測試數據(Excel文件),接口關聯參數化,Cookie裝載等
@Test:初始化httpclient對象,執行請求,獲取響應並轉換成String等
@AfterTest:jsonpath檢查點,對於接口正確/錯誤請求的邏輯處理
生成在線ExtentReports報告/日志
Email報告,測試結果通知測試相關人員
測試用例設計

測試用例設計:
通過TestNG的@DataProvider獲取Excel測試數據
將數據的表頭與數據存儲在map中,具體使用時方便
jsonpathPoint:jsonpath檢查點,框架特點之一,極大的方便斷言的編寫
前后綴的使用:通過前后綴使用來區分統一作用的數據,如請求參數:params
是否運行/檢查控制:通過編寫測試用例時就可以控制該用例是否運行,是否檢查
不足之處:一個接口的測試數據對應一個Excel文件/Sheet表,后期數據量太大
測試報告

結語
接口自動化測試在這個追求效率的時代,逐漸的取代UI自動化測試,而做接口自動化測試的工具很多,比如soapUI,postman,jmeter等等,但是這些通用的工具的可擴展性以及跟項目的契合度上並不是十分合適。框架的作用在於使測試腳本編寫變得簡單,增強測試腳本的可維護性,容錯率等,提高測試腳本的編寫效率,從而提高測試效率。