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