【问题标题】:How to perform integration testing on AWS Step Function如何在 AWS Step Function 上执行集成测试
【发布时间】:2021-12-16 09:42:12
【问题描述】:

我在 API Gateway 中有一个带有 lambda 代理集成的 REST API。 Lambda 将异步调用 Step Function 工作流,并将在负载中返回一个 ID。这些 AWS 资源由 AWS CDK 部署和管理。

我的问题是,有没有合适的方法来执行集成测试?我想到了两种方法:

  1. 调用 REST API 端点,并对副作用进行断言。但由于工作流是异步执行的,测试需要不断轮询,直到副作用变得可见。
  2. 根据这个博客https://www.10printiamcool.com/step-function-integration-testing-with-cdk,似乎我们可以使用 CDK 来部署一个测试堆栈,模拟依赖资源(例如 Lambda)。但这听起来更像是单元测试。

我不确定是否有更好的选择。有什么想法吗?

【问题讨论】:

    标签: amazon-web-services integration-testing aws-step-functions


    【解决方案1】:

    我了解您希望在无服务器 CDK 应用的上下文中对您的 Step Function 进行集成测试。 除了 200 API 响应之外,Step Function 的通过标准还包括某些异步后端副作用。

    鉴于这种情况,以下是关于两个相关主题的一些想法:

    如何设计 Step Function 测试

    如何测试您的 Step Function 与另一个 Step Function 的集成? TestSfn 将映射通过 测试用例,依次在一个任务中使用各种输入调用 API,并在另一个任务中检查预期的副作用。 毕竟,Step Functions 非常擅长并行编排逐步、异步的工作流程,而这正是您的用例所需要的。如果TestSfn 成功,则测试通过。执行历史控制台和日志为诊断测试失败提供了很好的可见性。

    测试环境

    无服务器 + CDK 设置使采用 best practice multi-account strategy 以及启动和启动整个应用的完整非产品部署以进行测试变得容易、快速且便宜。

    您可以在日常dev 环境中执行临时测试,并在一天结束时在cdk destroy 中执行临时测试。和/或构建 CDK CI/CD pipeline,如果测试通过,则部署到您的 prod 环境并推送到主环境:[pull from github] -> [deploy stacks to TEST account] -> [seed test data] -> [run tests] -> [destroy TEST stacks] -> [deploy stacks to PROD acccount]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      • 2018-10-18
      • 1970-01-01
      • 2021-04-26
      • 1970-01-01
      • 1970-01-01
      • 2021-10-29
      相关资源
      最近更新 更多