【问题标题】:REST functionality test suite, alternative to SoapUI?REST 功能测试套件,SoapUI 的替代品?
【发布时间】:2014-03-07 04:42:54
【问题描述】:

我正在寻找一个 REST 功能测试套件。我想到的是一个工具,它允许我拥有几个“块”(脚本、函数、类,你可以命名它),一个用于我们系统中的每个 API 函数。

然后,我必须能够订购这些块来构建功能测试。 例如:我有一个 Auth API,它接受用户/密码作为参数并返回一个 access_code。此 access_code 应用作排行榜 API 的参数。排行榜 API 可以返回要在 Awards API 中使用的参数,等等。

我想为每个 API 设置块,这样我就可以使用流程快速构建测试 AUTH --> Awards --> Messages,比如Auth --> Messages --> Leaderboards

我昨天在看 SoapUI,它看起来很有希望,但一些怪癖让我望而却步(如果我编辑资源,我必须删除并再次创建所有使用该资源的测试,举出最烦人的一个——当您有将近一百个 API 需要测试时,资源中的任何更改都会产生大量返工,并且它用于将结果从一个测试传递到另一个测试的方式很奇怪——这里很好)。

我正在考虑使用 shell 脚本(每个 API 一个脚本/函数,然后根据需要编写一个脚本将它们粘合在一起),但我认为这会花费太多时间(我对 shell 脚本不是很精通,并且已知 curl 不能很好地与我们的某些 API 配合使用)。

JMeter 看起来很有趣,但我不确定它是否会以这种模块化的方式工作,也不确定它是否支持 REST 是否完全可靠。

我不介意花一些时间学习一个新工具,但我需要能够轻松地将所有这些 API 保持在最新状态。

说了这么多,还有什么建议吗?您如何测试您的 REST API?

【问题讨论】:

标签: api rest soapui


【解决方案1】:

我认为您不能使用专为 SOAP 设计的工具来测试您的 REST API。我的意思是对于基础知识,你可以使用任何你想要的东西,例如带有 curl 和 jasmine 的节点,或者其他任何东西,我认为这部分并不重要。我更关心测试的可维护性...

REST 架构有一个 HATEOAS 原则,即 REST Web 服务应该提供抽象控制器,并且客户端应该使用这些控制器,而不是从头开始构建新的控制器。这可以防止业务逻辑的重复,并使您的 REST 客户端难以破解,例如使用不同的 URL 模板或添加新功能。

如果你想测试一个 REST API,我认为你应该考虑构建一个自动化客户端来进行测试。此客户端应解析由 REST Web 服务返回的超媒体,以便跟踪它包含的链接。它应该在它们包含的链接关系之后识别链接(因为这是当前的准标准)。所以简单并使用当前测试创建的 URL 的 cURL 不是我认为的选项......目前我认为没有任何通用工具可以完成这种工作,你必须使用 HTTP 客户端自己编写和一个测试框架......顺便说一句。这个自动化客户端可以作为如何为您的 API 构建客户端的示例,因此这可以像通常对文档类进行单元测试一样记录您的 API...

【讨论】:

  • 完全同意你的观点,但有时非技术性用户友好的 API 测试人员会有所帮助(例如 Swagger)。但是是的,一个真正的 REST API 将很容易导航和发现,只提供一个从哪里开始的 URI。
【解决方案2】:

您可以阅读描述一些 SOAPUI 替代方案的文章 - 5 Best SOAPUI alternative applications.

您还可以查看12 Great Web Service Testing Tools,了解流行的 REST 测试工具的简要说明。

【讨论】:

    【解决方案3】:

    如果你想要一个完整的套件,我认为 SoapUI 是要走的路……现在,为了测试我开发的 RESTful API,我实际上使用 Node(或 bash,如果你愿意)+ cURL + TeamCity(持续集成服务器)。 如何?好吧,基本上我通过节点脚本定义我的测试场景,然后将它们作为作业添加到我的持续集成服务器(我使用的是 TeamCity,但 Jenkins 或任何其他 CI 应该可以工作)。 澄清一下:它不是一个工具,正如您对您的问题所期望的那样,但使​​用这种组合,您可以获得足够的灵活性来实现您需要的任何类型的复杂测试场景。甚至您还可以将测试直接集成到您的部署管道中。实际上一点也不难。

    【讨论】:

      【解决方案4】:

      我发现了一个有趣的免费 SOA 测试工具:SOArite。值得一试

      【讨论】:

        猜你喜欢
        • 2021-06-16
        • 2013-07-30
        • 2010-11-30
        • 2016-06-09
        • 2018-02-09
        • 1970-01-01
        • 1970-01-01
        • 2018-07-07
        • 1970-01-01
        相关资源
        最近更新 更多