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