在19日寫的自動化測試文章裏面曾經談到過接口自動化測試,這篇文章做爲補充。

要知道原來對於接口的測試,我們經常會採用類似SoapUI,Postman等工具進行測試,或者再定製些腳本讓基於上面工具錄製的腳本能夠自動運行。在我們的SOA管控平臺裏面也會做接口的自動化測試,而這部分功能實現即基本全部是自己寫定製代碼來實現,並不具備太好的通用性。

今天專門針對Http Rest接口來談下接口自動化測試的方法實現。

基於Java+TestNG+Rest Assured進行自動化測試

可以看到TestNG和Rest Assured是兩個用於自動化測試的獨立類庫,這種方法偏白盒測試,需要自己編寫測試代碼,但是靈活性卻相當高,同時可以和類似Jekins工具集合,當然也就可以和我們DevOps平臺集成。

Rest-Assured 是一個測試Restful Web Service的Java類庫,我們可以創建高度定製的HTTP請求以發送到Restful服務器。這使我們能夠測試各種各樣的請求組合,依次測試核心業務邏輯的不同組合。Rest-Assured庫提供了驗證從服器收到的HTTP響應的功能。例如我們可以驗證狀態碼,狀態信息,標題甚至是響應的正文。這使Rest-Assured成爲一個非常靈活,可用於測試的Java庫。

而TestNG是一個開源自動化測試框架,其靈感來自JUnit和NUnit,TestNG還涵蓋了整個核心的JUnit4功能,但引入了一些新的功能,使其功能更強大,使用更方便。優勢:支持依賴測試方法,並行測試,負載測試,局部故障;靈活的插件API;支持多線程測試;可以看到TestNG不僅僅可以測試Rest接口,也可以測試標準的Java API接口方法。

https://www.cnblogs.com/wade-xu/p/4229805.html

注:上面這篇文章可以看到採用TestNG實現接口自動化測試,同時進行擴展,將測試腳本管理和測試數據管理分離。同時測試數據全部體現在Excel中。從Excel中讀入測試輸入,同時將測試接口輸出到Excel中。

https://my.oschina.net/u/4112294/blog/3037471

注:上面這篇文章談到TestNG和Rest Assured相結合如何進行接口自動化測試,同時如何和Jekins持續集成工具集成,將測試結果報告進行輸出。

Rest Assured 自帶支持對JSON、xml的解析,同時也提供了類似hasITems ,is,equalTo等靜態方法供使用。儘管Rest Assured 提供了校驗方法,但是在實際API自動化測試過程中,因爲往往需要校驗的字段非常多,建議還是直接先把要校驗的JSON字段解析出來,再通過TestNG提供的Assert類進行校驗。

對於Rest Assured的參考網站如下:

官方網站: http://rest-assured.io/

gitHub: https://github.com/rest-assured/rest-assured

幫助文檔: https://github.com/rest-assured/rest-assured/wiki/Usage

javadoc: http://www.javadoc.io/doc/io.rest-assured/rest-assured/3.0.2

LuckyFrame開源測試平臺

LuckyFrame測試平臺是一款免費開源的測試平臺,最大的特點是全緯度覆蓋了接口自動化、WEB UI自動化、APP自動化,並且支持分佈式測試。

既然是一個完整的測試平臺,那麼自然會提供測試用例管理,測試數據管理,測試執行,質量管理,測試結果和測試報告查看等相關的功能。這個平臺提供在線的Demo可以查看。

LuckyFrame自動化測試框架分爲兩個項目,一個服務端項目(LuckyFrameWeb),一個客戶端項目(LuckyFrameClient),服務端項目主要負責自動化過程的管理,比如用例管理、測試任務管理等等。客戶端其實就是測試執行機,主要負責測試用例以及任務的執行。

Web項目主要分爲系統管理、UTP、 質量管理、測試工具\測試環境管理等模塊。

具體演示地址: http://www.luckyframe.cn/page/lfdemo.html

這個平臺感覺有些思路還是可以借鑑,在前面DevOps整個子系統劃分的文章裏面我也談到,對於測試管理既可以是一個簡單的模塊放在DevOps支撐平臺裏面,也可以是一個獨立的子系統,然後再實現和DevOps支撐平臺的集成。

Http Runner自動化測試框架

HttpRunner 是一個基於 Python 開發的測試框架,2018年python開發者大會上,瞭解到HttpRuuner開源自動化測試框架,採用YAML/JSON格式管理用例,能錄製和轉換生成用例功能,充分做到用例與測試代碼分離,相比excel維護測試場景數據更加簡潔。在此,利用業餘時間研究這個框架去實現接口自動化測試。

HttpRunner 是一款面向 HTTP(S) 協議的通用開源測試框架,只需編寫維護一份 YAML/JSON 腳本,即可實現自動化測試、性能測試、線上監控、持續集成等多種測試需求。

https://v1.httprunner.org/

設計理念

充分複用優秀的開源項目,不追求重複造輪子,而是將強大的輪子組裝成戰車

遵循約定大於配置的準則,在框架功能中融入自動化測試最佳工程實踐

追求投入產出比,一份投入即可實現多種測試需求

核心特性

繼承 Requests 的全部特性,輕鬆實現 HTTP(S) 的各種測試需求

測試用例與代碼分離,採用YAML/JSON的形式描述測試場景,保障測試用例具備可維護性

測試用例支持分層機制,充分實現測試用例的複用

測試用例支持參數化和數據驅動機制

使用 skip 機制實現對測試用例的分組執行控制

測試請求支持完善的 hook 機制

藉助輔助函數(debugtalk.py),在測試腳本中輕鬆實現複雜的動態計算邏輯

基於 HAR 實現接口錄製和用例生成功能(har2case)

結合 Locust 框架,無需額外的工作即可實現分佈式性能測試

執行方式採用 CLI 調用,可與 Jenkins 等持續集成工具完美結合

測試結果統計報告簡潔清晰,附帶詳盡統計信息和日誌記錄

具有可擴展性,便於擴展實現 Web 平臺

HTTPrunner可以應用於一些簡單的接口測試,或者是不會有大改動的接口的迴歸測試,這樣也挺方便的。但是對於一些複雜的測試不如採用Rest Assured功能強和靈活,畢竟Rest Assured基於Java,可以靈活進行Java代碼腳本的擴展。

相關文章