我的组织正致力于在 JBoss 应用服务器上构建 RESTful Web 服务。到目前为止,QA 团队习惯于使用 SoapUI 测试 SOAP Web 服务。SoapUI 有一个具有 REST 功能的新版本。我们正在考虑使用它。
- 网络上是否有任何公开可用的 RESTful 服务可供人免费测试?
- 有哪些工具可用于(和使用)测试 RESTful Web 服务?
我的组织正致力于在 JBoss 应用服务器上构建 RESTful Web 服务。到目前为止,QA 团队习惯于使用 SoapUI 测试 SOAP Web 服务。SoapUI 有一个具有 REST 功能的新版本。我们正在考虑使用它。
请尝试 Firefox 插件海报,它使用简单,让您快速上手
您可以使用相当简单的 Python 代码来运行 Web 服务。根据您的安全性,您可以简单地使用 Pythonurllib
或urllib2
执行 REST 请求并检查您的答案。
此外,您可能希望使用 Pythonunittest
来控制 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 为每个请求传递摘要身份验证。它相当复杂,但如果我感兴趣,我可以分享本质。
查看提琴手
CURL 让你走到一半。另一半是检查标头、响应代码和实体内容以确保其良好。您可以为此使用各种工具(在 shell 脚本领域,将标头和内容通过管道传输到文件,并对它们进行差异化可能就可以解决问题)。进一步完善工具集并不难,也许与您选择的单元测试框架叠加起来。
我用 AJAX 构建了一个 rest webservice 测试面板。其实一点也不难。您需要解决一些安全问题(即确保您在同一台服务器上拥有测试套件,或者可能是签名的 Javascript。)
要测试 REST 服务,您可以尝试REST Assured,这使得测试 REST 服务和验证 Java 中的响应变得非常简单(使用 JUnit 或 TestNG)。
查看邮递员 - https://chrome.google.com/webstore/detail/fdmmgilgnpjigdojojpjoooidkmcomcm/。这是我过去几个月一直在研究的一个工具,最近从我得到的反馈来看,它对于大型 REST 项目变得非常有用,同时有助于进行基本的 REST 端点测试。
这个代码也可以在 Github 上找到。https://github.com/a85/POSTMan-Chrome-Extension
测试 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
放入 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
我还没有测试它,但是这个 Java 应用程序似乎很适合测试 REST 服务。Javalobby 上也有一个关于它的教程。
Java 应用程序:http ://code.google.com/p/rest-client/
教程:http : //java.dzone.com/announcements/wiztoolsorg-restclient-21-rele
您可以使用 Simple REST Client 也是 Google Chrome 的扩展https://chrome.google.com/webstore/detail/fhjcajmcbmldlhcimfajhfbgofnpcjmb
SOA Cleaner,是一个测试soap 和rest 的测试工具(也是WCF,但是你好像不需要那个特性)。它非常直观且可用。用 .NET 编写。还提供免费版本。可以从http://xyrow.com下载。祝你好运!
我正在为 Google Chrome 使用REST 控制台扩展,这是迄今为止我尝试过的最好的。它还支持各种安全机制,如 OAuth
(更新2:修复链接)
我正在使用内部 .NET 框架测试 RESTful 服务(在 Java 中移植它没有问题)。基本原则:
如果您想了解更多信息,我很高兴与您交谈。
对于 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 状态代码。
试试 Python 的 httplib。这很容易,您指定方法、url,并使用 urllib.urlencode 作为参数/POST 正文。
如果您愿意,这可以与内置的 unittest 模块结合使用,以报告错误。
为此,我一直在使用 JMeter,尤其是负载测试之类的东西。它类似于 SoapUI(我也使用过),但更倾向于测试网页,这使得它在测试 RESTful 服务方面也相当不错。
我编写了一个专门用于测试 REST Web 服务的程序。它是一个用 .NET 2.0 编写的非常简单的应用程序(我只在 Windows Vista 上测试过它,但应该也可以在 XP 上运行)。应用程序使用 HttpWebRequest 发出请求,并显示结果响应,以及请求和响应的标头。我做了一些测试,但我认为它可能会帮助您测试您的 Web 服务。
我目前正在为此目的调查 wsclient CLI 应用程序(http://wso2.org/library/3362)。它很有前途,可用于从 bash shell 破解快速测试。当然,正如这里许多人提到的,*nix 系统附带的许多工具将通过一些编码/脚本来完成这项工作
如果您喜欢使用 Ruby,那么可以使用REST -Client gem
对于测试人员,我发现 ruby 是一门非常容易学习的语言,并且它有一些优秀的工具,比如 Cucumber,用于进行 BDD 风格的验收测试。
我尝试了许多 REST 客户端,到目前为止,我使用过的最好的是 Chrome 应用程序:DHC。
DHC(又名 Dev HTTP 客户端)是由开发人员设计和开发的,目的是让开发人员更轻松地直接发现、操作和测试 HTTP 资源。除了发送/接收自定义 HTTP 请求/响应的主要功能之外,它还允许将请求永久保存到本地存储库以供以后重用,此外,请求声明可以包含特定于上下文的变量。通过使用上下文,您可以轻松地在各种环境之间切换,而无需修改请求声明。(例如从测试环境到生产环境)
测试 REST 完整的 Web 服务是一项简单的任务。浏览器上提供免费的插件作为 REST 客户端,您必须从该客户端发送具有预期/必需方法类型的 Web 服务:GET/POST/PUT/DELETE 如果参数匹配,则将在浏览器主体中生成输出.
我知道这是一个非常古老的问题,但可能对其他人有所帮助。只是为了回答您的第一个问题,您可以在此处查看以获取一些 REST Web 服务进行测试。
Firefox 中的 Fiddler 和 Poster 插件可用于测试任何 REST Web 服务。SoapUI 还带有 RESTful Web 服务支持。
对于高级 REST 测试,您可以尝试HttpMaster。
它支持动态参数、友好的 XML/JSON 查看器以及可以组合成逻辑表达式的各种类型的响应数据验证。
对于基本的 http 请求,一些浏览器插件就足够了。
OnionTest 仍处于测试阶段,但非常有用