REST Assured 与 JMeter:REST 测试工具的比较

已发表: 2022-03-11

自动化测试是软件质量保证过程的重要组成部分。 但测试代表性状态转移 (REST) API 可能是一项棘手的工作。 许多求助于手动测试 REST API 的人忽略了细节,错过了可以节省时间的方法。

任何经过正确测试的 REST API 服务都将涵盖以下领域:

  • 测试 API 服务是否符合 REST 标准
  • API服务响应码测试
  • API服务响应内容的断言
  • API服务的性能基准测试

REST 测试工具

为此,您需要正确的工具。 Apache JMeter 和 REST Assured 是两种流行的 REST 测试工具,用于测试 REST API 服务。 您可以从此处和此处了解有关如何在实践中使用它们的更多信息。

在本文中,您将了解这两种工具的优缺点,以及它们最适合您现有 REST API 项目的位置。

易于设置

有一个先决条件:JMeter 和 REST Assured 都需要 Java,因此您需要在计算机上安装 Java 才能运行 JMeter 或 REST Assured。

安装 Apache JMeter 非常简单:转到下载页面,选择 ZIP 或 TAR,下载存档,解压缩,然后就可以开始使用了。

转到您已解压缩存档的文件夹,转到bin子文件夹,然后运行jmeter.bat (或适用于您的操作系统的类似文件,如果不是 Windows)。 有关如何设置 Apache JMeter 的更多详细信息,请参阅此页面。

安装 REST Assured 是一种不同的体验。 REST Assured 不是一个独立的工具。 它是一个 Java 库。 为了使用它,您必须设置一个新的 Java 项目并将其作为您的项目的库包含在内。 当然,它支持许多构建工具,因此您只需将依赖解析器指向某个公共(Maven)存储库即可。 您可以在此处找到有关如何设置 REST Assured 的更多详细信息。

文档

Apache JMeter 文档可以在 JMeter 官方网站上找到。 它提供了一些非常全面的文档,从入门到复杂的功能(例如侦听器)。 此外,在 JMeter 官方网站上,您可以找到一些非常丰富的资源的链接,例如视频教程。 如果您不太喜欢阅读而更喜欢看,这对您来说绝对是一个加分项。

REST Assured 文档,作为工具/库本身,可以在 Github 存储库中找到。 它具有在线文档中列出的大量功能,并非常详细地说明了如何实现某些功能。 然而,整个文档是一个巨大的网页——不是探索工具的最用户友好的方式。

自动化 REST 测试创建和维护

Apache JMeter 作为具有图形用户界面 (GUI) 的独立应用程序,允许您从 GUI 创建测试。 这很方便,特别是因为从 JMeter 引入的实体层次结构——您在测试中创建的所有内容都将在 JMeter GUI 中以树状表示形式显示。

为了创建一个测试,一个人不必具备任何编码技能。 然而,GUI 并不限制有关测试计划的任何可能性。 如果您仍想添加一些自定义编程/流程,BeanShell 组件将允许您这样做。

JMeter GUI 截图

当您保存 JMeter 项目时,您创建的所有内容都将保存到一个巨大的 XML 文件中(扩展名为.jmx )。 通常,即使对其中一个测试进行微小更改,您也(很可能)必须在 GUI 中重新打开项目才能进行更改。

如果您需要在同一个 JMeter 项目文件上与其他人协作,那么使用任何源代码控制管理 (SCM) 系统(例如 Git、SVN、Perforce 等)都不容易维护这个巨大的 XML 文件。

另一方面,REST Assured 需要 Java 编码技能来创建测试。 没有用于测试创建的用户友好的 GUI。 但是,REST Assured 允许您使用 Gherkin 语言(Given-When-Then 语法)编写测试,因此即使您需要一些 Java 编码技能,测试也是相当易读的。

 given(http://via.placeholder.com/2000x200?text=image+placeholder). config(RestAssured.config(http://via.placeholder.com/2000x200?text=image+placeholder).jsonConfig(jsonConfig(http://via.placeholder.com/2000x200?text=image+placeholder).numberReturnType(BIG_DECIMAL))). when(http://via.placeholder.com/2000x200?text=image+placeholder). get(“/price”). then(http://via.placeholder.com/2000x200?text=image+placeholder). body(“price”, is(new BigDecimal(12.12)));

由于 REST Assured 是一个库,并且测试实际上是用 Java 编写的,因此您可以将测试组织在单独的 Java 文件中,因此当您需要更改一项测试时,只需打开一个文件。 您不需要 GUI,因此即使通过 SSH 终端也可以轻松编辑测试。 与他人的协作相当简单,因为使用任何 SCM 都可以轻松维护 Java 文件。

REST 测试的类型

JMeter 是众所周知的用于测试 Web 应用程序和服务的性能测试工具。 开箱即用,它有很好的报告选项和不同的图表类型,您可以使用这些选项来显示性能测试指标。

JMeter 响应时间截图

另一方面,它也不是 JMeter 的主要使用场景。 您可以使用 JMeter 为 REST API 创建功能测试,包括响应断言。

REST Assured 的主要使用场景是对 REST API 服务进行功能测试。 它甚至带有自己的响应断言机制(Gherkin 语法)。 由于 REST Assured 是一个 Java 库,它可以很容易地与单元测试集成。

在性能测试方面,REST Assured 不支持开箱即用的性能测试。 但是,如果您想将其用于性能测试,则必须开发自己的自定义框架来围绕 REST Assured 进行性能测试。

测试执行

JMeter 测试可以通过两种方式调用。

从用户界面单击运行按钮:

JMeter 运行按钮截图

从命令行:

 jmeter -n -t your_script.jmx

JMeter 的官方建议是不要使用 GUI 运行性能测试,因为与从命令行运行测试相比,测试运行速度会更慢(就每秒的请求数而言)。

另一方面,REST Assured 需要单独的测试运行程序,例如 jUnit 或 TestNG(或任何其他执行 Java 代码的方式)。

从 Eclipse 使用 TestNG:

REST 保证 Eclipse 截图

例如,从命令行使用 Ant 构建工具:

 ant run-tests

报告类型

由于其主要用途,Apache JMeter 具有大量报告类型,您可以根据测试结果创建这些报告类型。 由于您可以从 JMeter 运行性能测试,因此性能指标通常使用如下图表显示:

JMeter 性能报告

您可以在此处了解有关 JMeter 报告以及您可以创建的报告类型的更多信息。

REST Assured 本身不会创建任何报告,因此这取决于您和您选择的测试框架。 但是,当与某些单元测试框架集成时,您可以获得非常有用的 HTML、文本或 XML 格式的报告。

REST 有保证的 HTML 报告

与詹金斯集成

当涉及到被测产品的持续集成时,将测试自动化框架与 CI 工具集成以运行测试和报告结果非常重要。

JMeter 自动化测试可以使用 Performance 插件轻松与 Jenkins 集成,该插件允许您设置构建后操作并从 Jenkins 工作页面中获得一个漂亮的仪表板页面。

JMeter 詹金斯截图

REST Assured 也可以很容易地与 Jenkins 集成,因为 Jenkins 具有适用于几乎所有测试框架的插件; 例如,TestNG 插件可以再次为测试结果创建可靠的趋势图。

REST 保证 Jenkins 截图

社区活动

这是一个不容易衡量的类别。 社区活动取决于许多因素,例如工具的成熟度或贡献者的数量。

Apache JMeter 现在有一个更大的社区。 这主要是因为 JMeter 很久以前就出现在市场上,并且在 Web 应用程序和服务的性能测试方面被认为是行业标准。 JMeter 每 5-6 个月发布一次正式版本。 它的 GitHub 存储库非常活跃,每天都有新的提交。 JMeter 使用 Bugzilla 作为问题跟踪器,并有一个经常更改的未解决问题列表。 在 StackOverflow 搜索中,JMeter 有 23000 多个结果。 从社交网站来看,JMeter 有一个官方推特账号。 在 Facebook 和 LinkedIn 上,没有 JMeter 的官方账号,但是有几个群,其中较大的是这个 Facebook 群和这个 LinkedIn 群。

在自动化 REST API 服务功能测试方面,REST Assured 正在进入主要阶段,并已成为首选,来自多个来源的推荐。 REST Assured 在过去两年中每 6 个月发布一次正式版本。 GitHub 存储库有很多贡献者,比 JMeter 的活跃度稍低,但它也非常活跃。 REST Assured 正在跟踪 GitHub 存储库中的问题,因此一切都在一个地方。 在 StackOverflow 中,REST Assured 有 2000 多个搜索结果,因此我们可以说它与 JMeter 搜索结果相比要低得多。 至于社交网络群组,与 JMeter 相比,只有 LinkedIn 群组的成员数量显着减少。 REST Assured 社区可能没有 JMeter 社区那么大,但它非常活跃。

概括

JMeter 和 REST Assured 都有各自的优势。 但是根据您正在从事的项目,一个比另一个更适合您的 REST API 测试自动化。 两者都非常健壮,具有有用的测试选项,拥有出色的报告功能,并且可以轻松地与自定义测试框架集成。

以下是本文探讨的这两种流行 REST 测试工具的所有比较标准的摘要:

阿帕奇 JMeter 放心
需要编码技能是(Java)
详尽的文档是的是的
功能测试是的(但矫枉过正) 是的
性能测试是的否(开箱即用)
适用于单片机(Git、P4...)是的
测试报告是的
与 CI 工具集成是的是的
与单元测试集成是的
测试并行化是的是的
社区活动是的是的