14個適用于REST和SOAP服務的開源API測試工具
隨著我們向更敏捷的左移軟件開發過程(如持續集成和交付)邁進,快速向開發人員提供測試反饋的需求正在增加。UI測試的一個不足之處是它們的速度很慢,如果開發者的代碼破壞了***的構建,它們很難讓開發者快速地知道。另一方面,API測試往往比UI測試更快,并且也更加可靠。
在仔細研究API測試工具之前,我們需要確保我們對API有著同樣的理解。
什么是API?
Application Programming Interfaces(API)是軟件組件之間的接口規范。大多數的功能測試包含了Web頁面測試或.net表單類的用戶界面測試,而API測試繞過了用戶界面通過調用API接口與應用程序直接進行通信。
API測試允許你測試像JMS HTTP,數據和web服務之類的無頭技術。API測試有時也被稱為“無頭”測試。大多數的無頭測試技術都包含了“繞過UI操作,直接發送請求給應用的后端或服務并接收響應,同時檢驗響應是否正確來保證系統按照我們預期的那樣工作”。
一個簡單的例子就是客戶端與服務器之間的通信。客戶端針對某一資源發出請求,該請求被發送到服務器并找到可以響應該請求的服務器。服務器查找客戶端所請求的資源并將響應發送回客戶端。
可以使用什么工具來自動化地進行API測試?
Selenium是一個基于瀏覽器的測試工具,你也許想要知道有什么工具可以開展基于REST或SOAP的服務的測試。下面將介紹幾個流行的API測試工具,可以用來測試符合REST和SOAP規范的web服務。
Postman
Postman是一個REST客戶端,起初作為Chrome瀏覽器的插件而運行,但最近推出了Mac和Windows的原生版本。你可以使用Postman發送一個post請求給web服務器,并且它會解析服務器返回的響應。它允許你構建你的API所需要的所有header和cookie并能夠檢查服務端返回的響應。它有如下的特點:
1:可以被用來做自動化測試,也可以被用來開展探索式的測試
2:可以運行在Mac,Windows,Linux以及Chrome App上
3:有許多集成,例如支持Swagger和RAML格式
4:有運行,測試,文檔化和監控等功能
5:不需要學習一門新的語言
Karate DSL
Karate允許你創建一個可以調用任何類型網絡服務的測試,并且能夠將得到的響應和期望值進行比較。它有如下的特點:
1:建立在 Cucumber-JVM基礎上
2:可以像標準的Java工程一樣運行測試并且產生報告
3:測試代碼的開發不需要掌握任何的Java知識
4:即使對非編程人員,測試代碼也很容易編寫
這里有一個簡單的例子可以讓你快速地了解Karate
SoapUI
SoapUI是由SmartBear公司開發的一款功能測試工具。它有兩個版本:免費的開源版本和專業版本。免費的版本是完全開源的,因此你可以根據需要對源代碼進行修改。專業版本更容易使用,并且有更多的功能包括表單編輯器,Xpath形式的斷言向導和SQL查詢生成器。而免費版本所具有的功能特點有:
1:可以使用Groovy輕松創建自定義代碼
2:拖放式的測試創建
3:可以創建復雜場景的測試
4:異步測試
5:SoapUI的mock服務允許在Web服務實現之前模擬Web服務
HttpMaster Express
HttpMaster聲稱自己作為一個web開發和測試工具可以自動化地測試web站點和服務。它可以被用來測試具有REST風格的web服務和API應用程序。同時HttpMaster允許你監視API響應。通常它具有如下特點:
1:HttpMaster提供了全局選項來自定義你的API請求
2:參數功能允許你在請求中包含動態的數據
3:你可以使用請求鏈功能使請求中可以包含來自之前請求的一些數據,并提供數據給后續的請求
Rest- Assured
Rest- Assured是一個開源的Java域特定語言(DSL),它能夠使REST服務測試變得簡單。它盡量不使用樣板代碼來測試和驗證復雜響應,從而簡化對REST服務的測試。它也支持XML和JSON格式的請求和響應。它具有如下的特點:
1:不需要創建與REST服務進行交互的樣板代碼
2:支持BDD Given/When/Then語法
3:與Java項目能夠無縫集成
RestSharp
RestSharp是一個簡單的適用于.net應用的具有REST風格的HTTP客戶端。它具有如下的特點:
1:支持.NET 3.5+,Silverlight 5,Windows Phone 8,Mono,MonoTouch,Mono for Android
2:對大多數支持.net的平臺,可以使用NuGet來輕松地安裝RestSharp
3:支持GET,POST,PUT,PATCH,HEAD,OPTIONS,DELETE等請求方法
Rest Console
Rest Console是一個HTTP請求可視化和構造工具,可幫助開發人員構建,調試和測試RESTful API。它具有如下特點:
1:請求參數很容易構建
2:具有語法高亮功能
3:支持身份驗證:普通,基本和Oauth+自定義
RoboHydra Server
RoboHydra是一個適用于基于HTTP的客戶端(即發出HTTP請求的軟件)的測試工具。在測試時,待測試的客戶端不是連接到真正的服務器,而是連接到RoboHydra,RoboHydra將響應每個請求所需的任何數據。它具有如下特點:
1:你可以測試許多類型的客戶端
2:RoboHydra是用Javascript開發的,運行在Node環境下
Hippie-Swagger
Hippie-Swagger是一個測試RESTful API的工具,它也是一個帶有自動化的swagger斷言的API測試工具。除了能夠驗證API的行為,當swagger文檔丟失或不準確時它將會運行失敗。它具有如下特點:
1:可以驗證swagger文件的所有方面:參數,請求/響應主體,路徑等
2:具有準確的,可讀的斷言信息
Weblnject
Weblnject是一個針對自動化測試web應用和web服務的解決方案。它可以被用來測試單獨的具有Http接口(如JSP, ASP, CGI, PHP, AJAX, Servlets, HTML Forms, XML/SOAP Web Services, REST等)的系統組件。它具有如下特點:
1:是一個基于命令行的工具
2:是用Perl語言開發的,可以被安裝在MS Windows, GNU/Linux, BSD, Solaris, MAC OS
PyRestTest
PyRestTest是一個基于python的REST API測試工具。它具有如下特點:
1:可以在YAML或Json配置文件中編寫測試用例,不需要代碼
2:會返回失敗時所調用的代碼
3:只能運行在Mac和Linux環境中
Airborne
Airborne是一個基于Ruby及RSpec驅動的API測試框架。它具有如下特點:
1:適用于像Sinatra和Grape類的Rack應用
2:適用于使用Rails編寫的API
Unirest
Unirest是一個輕量的HTTP請求庫,由Unmesh Gundecha推薦。可以和xUnit結合,BDD開發者可以把它作為一個測試工具。
Mockbin
Mockbin由Augusto Marietti推薦。Mockbin允許你生成自定義端點來測試,模擬和跟蹤庫,套接字和API之間的HTTP請求和響應。它具有如下特點:
1:可以模擬客戶端
2:能夠創造客戶端HTTP方法
3:能夠記錄并檢查客戶端下一步調用
以上我所提到的都是一些流行的API測試工具,但實際上API測試工具隨處可見,因此在之后的時間中我有可能會繼續擴充以上的內容。