测试REST Web服务

时间:2008-10-15 02:06:56

标签: java web-services rest testing rest-client

我的组织正致力于在JBoss appserver上构建RESTful Web服务。到目前为止,QA团队使用SoapUI来测试SOAP Web服务。 SoapUI有一个具有REST功能的新版本。我们正在考虑使用它。

  1. 网上是否有免费公开提供的RESTful服务,有人可以测试?
  2. 可用(和使用)哪些工具来测试RESTful Web服务?

24 个答案:

答案 0 :(得分:28)

soapUI也可以完成这项工作,请查看this blog post以开始使用。

答案 1 :(得分:25)

请尝试使用Firefox插件海报,它简单易用,让您快速上手

答案 2 :(得分:20)

您可以使用相当简单的Python来运用Web服务。根据您的安全性,您可以简单地使用Python的urlliburllib2来处理REST请求并检查您的答案。

此外,您可能希望使用Python unittest来控制REST服务的Python测试的执行。

class TestSomeREST( unittest.TestCase ):
    def setUp(self):
        REALM = "blah@blah.com"
        self.client= RESTClient( "localhost", 18000, "tester", "tester", REALM )
    def test_1_get(self):
        response = self.client.get('/this/that/other/2/')
        self.failUnlessEqual(200, response.status_code)
        j1= JSONDecoder().decode(response.content)
        self.assertEquals(2, j1[0]['pk'] )
        entity= j1[0]['fields']
        self.assertEquals('Some Other Group', entity['name'])
        self.assertEquals('E1G2', entity['customer_id'])

RESTClient类使用urllib2为每个请求传递摘要式身份验证。它相当复杂,但如果感兴趣,我可以分享其本质。

答案 3 :(得分:12)

查看Fiddler

答案 4 :(得分:8)

要测试REST服务,您可以尝试使用REST Assured,这样可以非常简单地测试REST服务并验证Java中的响应(使用JUnit或TestNG)。

答案 5 :(得分:8)

查看邮递员 - https://chrome.google.com/webstore/detail/fdmmgilgnpjigdojojpjoooidkmcomcm/。这是我过去几个月一直在研究的工具,最近我从反馈中得到它,这对于大型REST项目变得非常有用,同时帮助进行基本的REST端点测试。

这个代码也可以在Github上找到。 https://github.com/a85/POSTMan-Chrome-Extension

答案 6 :(得分:8)

CURL半途而废。另一半是检查标题,响应代码和实体内容以确保其良好。你可以使用各种工具(在shell脚本的土地上,将标题和内容输送到文件,并将它们区分开来可能就是这样)。进一步改进工具集并不困难,可能会使用您选择的单元测试框架进行堆叠。

我使用AJAX构建了一个rest webservice测试面板。实际上并不困难。您需要解决一些安全问题(即确保您在同一台服务器上安装了测试套件,或者签署了Javascript。)

答案 7 :(得分:6)

测试REST Web服务的最简单方法是在终端中使用curl

我用一些代码来测试我的rails服务。 您可以修改它们以适合您的服务。

获取

curl http://localhost:3000/courses.json

发表

curl -H "Content-Type:application/json"  -d '{"courseCode":"55555","courseName":"SEEEE","courseYr":999}' http://localhost:3000/courses.json

PUT in Raills: eg1(包含所有字段):

curl -H "X-Http-Method-Override: put" -H "Content-Type:application/json"  -d '{"courseCode":"123456","courseName":"AAAAAAAA","courseYr":12345}' http://localhost:3000/courses/5.json

eg2(仅对字段进行编辑):

curl -H "X-Http-Method-Override: put" -H "Content-Type:application/json"  -d '{"courseYr":999999999}' http://localhost:3000/courses/3.json

在提供了ID的rails中删除

 curl -H "X-Http-Method-Override: delete" -H "Content-Type:application/json"  -d '{"id":4}' http://localhost:3000/courses/5.json

答案 8 :(得分:4)

我还没有测试过,但是这个Java应用程序似乎很适合测试REST服务。关于它的Javalobby还有一个教程。

Java App:http://code.google.com/p/rest-client/

Tuto:http://java.dzone.com/announcements/wiztoolsorg-restclient-21-rele

答案 9 :(得分:3)

您可以使用简单REST客户端也是Google Chrome的扩展程序https://chrome.google.com/webstore/detail/fhjcajmcbmldlhcimfajhfbgofnpcjmb

答案 10 :(得分:2)

SOA Cleaner,是一个测试工具,可以测试soap和rest(也是WCF,但似乎你不需要该功能)。它非常直观,可用。用.NET编写。还提供免费版本。可以从http://xyrow.com下载。祝你好运!

答案 11 :(得分:1)

我正在使用REST console extension用于谷歌浏览器,它是迄今为止我尝试过的最好的。 它还支持各种安全机制,如OAuth

(更新2:修复链接)

答案 12 :(得分:1)

我正在使用内部.NET框架测试RESTful服务(在Java中移植它没有问题)。基本原则:

  • 构建客户端(拨打电话)
  • 构建类型类(XML和JSON)
  • 反序列化响应
  • 断言东西

如果您想了解更多信息,我很高兴能够畅所欲言。

答案 13 :(得分:1)

对于java,还存在RESTFuse,它允许开发单元测试,如下所示:

@Rule
public Destination destination = new Destination("http://localhost:8080/rest/");


@HttpTest( method = Method.GET, path = "/status" ,authentications =
   @Authentication(type = AuthenticationType.BASIC, user = "joe", password = "doe")
)
public void testAuthRhqadmin() {
    com.eclipsesource.restfuse.Assert.assertOk(response);
}

此测试针对http://localhost:8080/rest/status运行,并使用密码doe作为用户joe进行身份验证。然后,该方法的主体检查GET调用是否返回200状态代码。

答案 14 :(得分:0)

如果您喜欢使用Ruby,那么它就是REST-Client gem

对于测试人员,我发现ruby是一种非常容易学习的语言,并且它有一些非常好的工具,比如Cucumber,用于进行BDD风格的验收测试。

答案 15 :(得分:0)

对于高级REST测试,您可以尝试HttpMaster
它支持动态参数,XML / JSON的友好查看器以及可以组合成逻辑表达式的各种类型的响应数据验证。
对于基本的http请求,一些浏览器插件就足够了。

答案 16 :(得分:0)

我知道这是一个非常古老的问题,但可能会对其他人有所帮助。只是回答您的第一个问题,您可以检查here以获取一些REST Web服务进行测试。

Firefox中的Fiddler和Poster插件可用于测试任何REST Web服务。 SoapUI还附带RESTful webservices支持。

答案 17 :(得分:0)

测试REST完整Web服务是一件容易的事。 浏览器上提供免费广告作为REST客户端,您必须从中发送具有预期/必需方法类型的Web服务: GET / POST / PUT / DELETE 如果参数匹配,那么将在浏览器主体中生成输出。enter image description here

答案 18 :(得分:0)

我尝试了很多REST客户端,到目前为止,我使用的最好的是Chrome应用:DHC

  DHC(又名Dev HTTP Client)是由开发人员为开发人员设计和开发的,可以更轻松地进行直接的HTTP资源发现,操作和测试。除了主要功能,发送/接收自定义HTTP请求/响应之外,它还允许永久地将请求保存到本地存储库以供以后重用,而且请求声明可以包括特定于上下文的变量。通过使用上下文,您可以轻松地在各种环境之间切换,而无需修改请求声明。 (例如从测试环境到生产)

答案 19 :(得分:0)

尝试使用Python的httplib。这很简单,你指定方法,url,并使用urllib.urlencode作为参数/ POST正文。

如果您愿意,可以与内置单元测试模块结合使用,以报告错误。

答案 20 :(得分:0)

我一直在使用JMeter,尤其是负载测试之类的东西。它与SoapUI(我也使用过)类似,但更倾向于测试网页,这也使得它在测试RESTful服务方面也相当不错。

答案 21 :(得分:0)

我目前正在为此目的调查wsclient CLI应用程序(http://wso2.org/library/3362)。它很有前途,可以用来破解bash shell的快速​​测试。当然,正如许多人在这里提到的那样,* nix系统附带的许多工具都可以通过编码/编写脚本来完成工作

答案 22 :(得分:0)

我编写了一个专门用于测试REST Web服务的程序。它是一个用.NET 2.0编写的非常简单的应用程序(我只在Windows Vista上测试它,但也应该在XP上运行)。该应用程序使用HttpWebRequest发出请求,并显示生成的响应,以及请求和响应的标头。我做了一些测试,但我认为它可以帮助您测试您的Web服务。

REST Test

答案 23 :(得分:-1)

OnionTest仍然是测试版,但非常有用