开发过程中使用的 8 个有用的 gRPC 测试工具

gRPC 是一种由谷歌开发的远程过程调用(RPC)框架。

关于其命名的由来,有一个 有趣的背景故事。远程过程调用允许在远程计算机上执行函数或方法,就像它们是本地函数一样。 这是一种抽象,它简化了处理 HTTP 调用和其他网络相关复杂性的过程。

gRPC 有效地促进了微服务之间的数据传输和通信,使其更加便捷和高效。 它基于 HTTP/2 协议,但简化了开发人员连接各个组件的过程。

由于微服务可以使用多种编程语言编写,因此需要一种机制来确保它们之间的顺畅通信。

gRPC 通过支持多种语言来解决这个问题。 它采用协议缓冲区作为接口定义语言,用来定义消息结构。

gRPC 应用程序测试

测试对于任何复杂的软件开发至关重要,gRPC 应用程序也不例外。 通过测试 gRPC 应用程序,可以保证微服务和其他服务之间可靠且高效的交互。

测试还确保即使服务是用不同的语言编写的,它们也能够无障碍地进行通信。 这得益于 gRPC 使用与语言无关的协议缓冲区。

此外,应用程序测试过程可以帮助发现错误和异常处理问题。 性能测试可以评估服务在不同网络负载下的表现。

既然已经了解了 gRPC,我们来看看一些 gRPC 测试工具。

Kreya

Kreya 是一个 API 客户端,提供了一个用于 gRPC 和 REST API 的图形用户界面。 其 gRPC 客户端支持请求流、一元调用和验证等功能。 为了测试 API,Kreya 还允许用户生成模拟数据。

请求及其配置存储在文件系统中,因此可以使用诸如 Git 之类的版本控制系统来同步项目。 Kreya 允许用户通过脚本定义测试,并在每次 API 调用时执行测试。

Kreya 为个人用户提供免费套餐,其中包括功能齐全的 gRPC 客户端、可重复使用的身份验证配置、环境和模板等。

ghz

ghz 是一个使用 Go 编写的开源 gRPC 基准测试和负载测试命令行工具,用于测试 API 并收集结果。 ghz 支持原型文件、预构建的原型集包或服务器反射。 通过 Go 的模板变量,可以向请求添加自定义数据。

除了命令行工具外,ghz 还提供了一个配套的 Web 应用程序界面,用户可以使用它来查看、跟踪和保存测试结果。 测试结果可以用 CSV、JSON 和 HTML 等多种格式查看。 截至本文撰写之时,Web 界面仍处于测试阶段。

Postman

Postman 是一个 API 开发平台,支持构建和测试几乎所有类型的 API,包括 gRPC。 在 Postman 中,可以为单个请求、集合或集合中的文件夹编写测试。

在 Postman 中发出 gRPC 请求时,请转到请求视图中的“脚本”选项卡,然后选择测试的执行时间——请求前或收到响应后。 可以使用代码片段来加速测试的编写。

Insomnia

Insomnia 是一种用于设计、测试和调试 API 的工具。 它支持 REST、GraphQL、WebSockets 和 gRPC 请求。 在 Insomnia 中创建新请求时,可以选择 gRPC 并输入 API 的 URL 端点。

还需要添加一个 .proto 文件来定义消息结构。 Insomnia 支持几乎所有类型的请求,包括一元请求、客户端和服务器流以及双向流。

为了在 Insomnia 中测试 API,需要为 API 添加设计文档,然后在“测试”选项卡中创建测试套件。 请注意,Insomnia 使用 Mocha 框架进行单元测试,并使用 Chai 进行断言。

StackHawk

StackHawk 是一种 API 安全测试工具,它也为 gRPC 服务提供解决方案。 该工具可用于确保 API 端点的安全性。 要使用 Stackhawk 扫描 gRPC 应用程序,需要 定义一个 stackhawk.yml 文件,并指定所需的配置。

Stackhawk 提供免费套餐,该套餐在 CI/CD 管道中为单个应用程序提供现代 DAST 集成自动化测试。 此外,所有定价计划都包含身份验证、自动化、洞察、通知和对所有 API 类型的支持等功能。

gRPCurl

gRPCurl 是一个开源命令行工具,用于连接到启用 gRPC 的服务器。 顾名思义,它类似于“gRPC 服务器的 curl”。 无法使用 cURL 向 gRPC 服务器发出请求,是因为它不支持协议缓冲区(二进制消息)。 cURL 仅处理 JSON 字符串。

可以通过查询支持服务器反射的服务器、读取原型源文件或加载已编译的“protoset”文件(包含编码文件描述符原型的文件)来检查 gRPC 服务的结构。

gRPCurl 并不是一个成熟的测试工具,但仍然可以使用命令行工具进行基本查询和测试。

Smartbear 的 ReadyAPI

ReadyAPI 由 Smartbear 提供,支持 gRPC API 测试,但仅限于一元操作。 为了测试 gRPC 服务,首先需要设置 API 连接测试步骤。 设置完毕后,可以发送请求并接收 gRPC 服务的响应。

ReadyAPI 目前仅支持一元操作,这意味着 ReadyAPI 仅等待来自服务器的单个响应。

Nosy Mouse

Nosy Mouse 是一款包含 gRPC 测试器的工具,用于手动或自动运行功能、性能和安全测试。 它提供了并发虚拟用户、启动、通过标准、思考时间、测试数据、测试场景支持以及多个加权用例等功能。

它遵循数据驱动的测试方法,确保始终支持单独的测试数据、变量、自动验证和实际用例。 可以使用不同的输入运行测试并验证界面中的输出。

它提供 14 天的免费试用期,用于测试两个并发服务用户。

总结

随着 gRPC 服务和工具的普及,选择合适的 gRPC 测试工具可能具有挑战性。 选择正确的工具至关重要,因为它会直接影响 API 的功能。 需要考虑的一个关键因素是对各种 gRPC 功能(例如服务器反射、流式传输等)的支持。 在选择测试工具时,请特别注意 gRPC 特定的功能。

接下来,可以研究一些出色的 API 负载测试平台,以提高性能。