当前位置: 首页 > 知识库问答 >
问题:

我可以使用Pact broker进行功能测试吗?

狄富
2023-03-14

我有一个服务,它接收请求,生成电子邮件,将电子邮件保存到消息队列(由其他微服务发送)并返回HttpStatus.ok。我想测试一下,对于不同的请求,一个相关的电子邮件将被生成。

在这样的功能测试中使用Pact有意义吗?
有人知道类似的用法吗?
有没有其他的技术(最好是.NET Core中的技术)可以进行类似的测试?

我也在考虑https://github.com/approvals/approvaltests.net,但Pact基础设施更吸引我。

相关说明:Pact通常处理http请求/响应,但Pact V3(尚未由PackNet实现)为通过事件流和消息队列进行通信的服务引入了消息。描述pact contract测试消息的示例是https://dius.com.au/2017/09/22/Contract-Testing-Serverless-and-Asynchronous-Applications/pact for MessageQueue的引用:MessageQueue的示例提供程序测试

共有1个答案

马丰
2023-03-14

我有一个服务,它接收请求,生成电子邮件,将电子邮件保存到消息队列(由其他微服务发送)并返回HttpStatus.ok。

正如您所说的,Pact的目的并不是要成为一个传统意义上的功能测试工具,它几乎无法避免不测试功能。目标实际上是测试系统之间的契约(这会产生一个小的灰色区域,您需要在其中决定什么最适合您的测试策略)。

您不想对Pact做的是运行验证测试,然后检查电子邮件是否真的发送了,是否已写入队列,以及下游微服务是否可以处理它--这将超出“契约测试”的范围。

另外,您可以做的是在这个发布到队列的组件和从它接收的下游组件之间创建一个单独的契约测试(请参阅.NET库的WIP分支:https://github.com/pact-foundation/pact-net/pull/175)

我想测试一下,对于不同的请求,一个相关的电子邮件将被生成。

如果对于那些“不同的测试”,来自API的响应是可预测的--那么是的,您绝对可以使用Pact做到这一点。

因此,将上面的内容改写为“我有一个接收请求、返回HttpStatus.ok并发送电子邮件正文的服务”是一个可接受的合同测试IMO。

    null

希望有帮助!

附注。可能值得跳入https://slack.pact.io并与那里的社区进一步聊天。

 类似资料:
  • 问题陈述:我有一个“成功登录网页”的简单测试。此测试将使用100个不同的用户名和密码进行。要求是测试应该同时使用100个用户名访问服务器。 信息:我们是否必须使用selenium grid或RC或简单的WebDriver,我们可以自由使用任何。读取用户名 这可能吗? 我们如何才能实现这一点?

  • 问题内容: 您如何自动化集成测试?我将JUnit用于其中一些测试。这是解决方案之一,还是完全错误?你有什么建议? 问题答案: JUnit可以工作。没有任何限制将其限制为仅单元测试。我们使用JUnit,Maven和CruiseControl来执行CI。 可能有一些特定于集成测试的工具,但我认为它们的用处取决于所集成的系统组件的类型。JUnit可以很好地用于非UI类型测试。

  •  什么是 Selenium?   Selenium 是 ThoughtWorks 专门为 Web 应用程序编写的一个验收测试工具。据 Selenium 主页所说,与其他测试工具相比,使用 Selenium 的最大好处是:   “Selenium 测试直接在浏览器中运行,就像真实用户所做的一样。Selenium 测试可以在Windows、Linux 和 MacintoshAnd 上的 Interne

  • 本文向大家介绍您如何进行功能测试?,包括了您如何进行功能测试?的使用技巧和注意事项,需要的朋友参考一下 功能测试 作为功能测试的一部分,应该对业务指定的所有用户要求进行良好的测试。功能测试要求在类似于客户要求的环境中进行测试。所有边界条件,负面情景都被考虑在内。应用程序的每个功能都应该可以很好地运行,并且不会出现任何错误。 功能测试的目的 应该测试运行良好的应用程序预期的基本要求。用户界面应易于使

  • 我在布局中使用,我需要确定用户已到达滚动的起点和终点。 对于,我尝试了,可以找到滚动的开始和终端。 我试图在我的中做同样的事情,但似乎不可能。还有其他可能的方法来实现我的需求吗?

  • 我正在尝试使用Jersey测试框架为我的REST API编写功能测试。然而,当我在功能测试中使用依赖注入时,我似乎遇到了一个障碍。我的主应用程序看起来是这样的: 是否有一种方法可以将HK2服务定位器与Jersey测试框架一起使用,或者我是否需要将我的应用程序视为外部容器并使用外部容器提供程序,如这里所述:外部容器? 此外,由于这些是功能测试,因此在这里不允许对注入的服务进行嘲弄。