什么时候测试什么?
What to test and when?
我正在构建在不同系统、服务和 API 之间同步数据的 mule 应用程序。
我的Mule应用大致如下:
- 轮询 HTTP 端点以获取一些用户信息
- 使用来自用户服务的用户 ID 丰富消息
- 为另一个服务转换数据
- 使用转换后的数据调用其他服务。
我应该在这里测试什么,
例如,我正在测试我认为是单元测试的数据转换。
我正在测试如果从用户服务返回(存根)响应,则使用我的表达式正确丰富该值。我想这将是功能测试?
但是我应该测试投票开始了吗?每个端点都被调用了吗?这会是集成测试吗?
就测试 Mule 代码而言,我会推荐三套 so f 测试用例。
- 单元测试。
独立测试所有代码的正确性。
- 功能测试。
测试 mule 流和子流以确保流按预期工作。对于此功能测试,可以使用 org.mule.tck.junit4.FunctionalTestCase。为了避免在测试过程中依赖外部因素,所有对外部服务和应用程序的调用都应该存根。
- 集成测试。
测试与所有外部服务和应用程序的集成。这些测试用例几乎与 Mule 功能测试用例相似,只是实际上调用了外部集成服务。
通过涵盖所有这三类测试用例,我们可以确信 Mule 服务功能齐全。
要测试的总是每个项目的要求和舒适度。
希望对您有所帮助。
我同意这里所说的,但只是评论。
关于单元测试,有两件事需要考虑。首先,您的自定义 java 代码应始终进行单元测试。但是你也可以对你的 Mule 应用程序进行单元测试。
为此 Mule 提供 Munit。
Munit 是一个测试框架,除其他外,它允许您创建消息处理器的模拟以及对消息处理器的调用进行验证。
Munit 部分基于 org.mule.tck.junit4.FunctionalTestCase
,因此您可以执行相同的操作,但 Munit 将拥有更多功能。
另请查看可能有帮助的其他 link
干杯!
对我有用的是确保我定义软件的 "units" 的方式允许我只测试对我的应用程序重要的部分,而不是如果我需要可能会改变的方面重构。在 Mule ESB 应用程序中,这有时会给我留下非常少的看起来与我在 java 程序中编写的单元测试相似的单元测试。我的大部分单元测试都继承自 FunctionalTestCase,并涉及一些 in-process 测试替身,用于我需要集成的真实系统。
我曾尝试使用 Munit 来完成此任务,但有一些设计决策使这种测试方式变得困难。因此我的单元测试通常继承自FunctionalTestCase。
对于您的应用程序,我可能会创建如下测试:
- 确保第一个 HTTP 端点被正确轮询(HTTP GET 带有我假设的一些路径信息和查询参数)
- 给定从用户服务返回的特定 ID,确保使用转换后的消息正确调用目标服务
- 如果转换逻辑很复杂,我可能会添加几个测试来探索不同的边缘情况,以确保我的转换正常工作
- 很多时候 Web 服务需要某些 headers 或授权令牌,因此我经常创建多个测试以确保这些都到位
请注意,我没有明确测试我的消息是否收到 "enriched" 或 "transformed" mid-flow,因为这些步骤只是达到目的的一种手段。如果您决定分两步进行转换,或者使用 XSLT 而不是 java,则这些测试将不需要更改。
要使您的 HTTP 服务的 in-process 测试加倍,请查看 sham-http。
我正在构建在不同系统、服务和 API 之间同步数据的 mule 应用程序。
我的Mule应用大致如下:
- 轮询 HTTP 端点以获取一些用户信息
- 使用来自用户服务的用户 ID 丰富消息
- 为另一个服务转换数据
- 使用转换后的数据调用其他服务。
我应该在这里测试什么,
例如,我正在测试我认为是单元测试的数据转换。 我正在测试如果从用户服务返回(存根)响应,则使用我的表达式正确丰富该值。我想这将是功能测试?
但是我应该测试投票开始了吗?每个端点都被调用了吗?这会是集成测试吗?
就测试 Mule 代码而言,我会推荐三套 so f 测试用例。
- 单元测试。 独立测试所有代码的正确性。
- 功能测试。 测试 mule 流和子流以确保流按预期工作。对于此功能测试,可以使用 org.mule.tck.junit4.FunctionalTestCase。为了避免在测试过程中依赖外部因素,所有对外部服务和应用程序的调用都应该存根。
- 集成测试。 测试与所有外部服务和应用程序的集成。这些测试用例几乎与 Mule 功能测试用例相似,只是实际上调用了外部集成服务。
通过涵盖所有这三类测试用例,我们可以确信 Mule 服务功能齐全。
要测试的总是每个项目的要求和舒适度。
希望对您有所帮助。
我同意这里所说的,但只是评论。 关于单元测试,有两件事需要考虑。首先,您的自定义 java 代码应始终进行单元测试。但是你也可以对你的 Mule 应用程序进行单元测试。 为此 Mule 提供 Munit。 Munit 是一个测试框架,除其他外,它允许您创建消息处理器的模拟以及对消息处理器的调用进行验证。
Munit 部分基于 org.mule.tck.junit4.FunctionalTestCase
,因此您可以执行相同的操作,但 Munit 将拥有更多功能。
另请查看可能有帮助的其他 link
干杯!
对我有用的是确保我定义软件的 "units" 的方式允许我只测试对我的应用程序重要的部分,而不是如果我需要可能会改变的方面重构。在 Mule ESB 应用程序中,这有时会给我留下非常少的看起来与我在 java 程序中编写的单元测试相似的单元测试。我的大部分单元测试都继承自 FunctionalTestCase,并涉及一些 in-process 测试替身,用于我需要集成的真实系统。
我曾尝试使用 Munit 来完成此任务,但有一些设计决策使这种测试方式变得困难。因此我的单元测试通常继承自FunctionalTestCase。
对于您的应用程序,我可能会创建如下测试:
- 确保第一个 HTTP 端点被正确轮询(HTTP GET 带有我假设的一些路径信息和查询参数)
- 给定从用户服务返回的特定 ID,确保使用转换后的消息正确调用目标服务
- 如果转换逻辑很复杂,我可能会添加几个测试来探索不同的边缘情况,以确保我的转换正常工作
- 很多时候 Web 服务需要某些 headers 或授权令牌,因此我经常创建多个测试以确保这些都到位
请注意,我没有明确测试我的消息是否收到 "enriched" 或 "transformed" mid-flow,因为这些步骤只是达到目的的一种手段。如果您决定分两步进行转换,或者使用 XSLT 而不是 java,则这些测试将不需要更改。
要使您的 HTTP 服务的 in-process 测试加倍,请查看 sham-http。