3

所以我的应用程序堆栈在产品中看起来像这样:

  • 后端:AWS API Gateway + Lambda + DynamoDB + ElastiCache(redis)
  • 后端 - 算法:长时间运行的进程 - 在 ECS (Fargate) 上运行的 dockerized Java 应用程序
  • 前端:Angular 应用,由 S3 提供

我想使用https://www.cypress.io/进行端到端测试,我想使用https://circleci.com/作为我的构建服务器。

如何创建一个允许端到端测试运行的环境?

选项:

1) 每次运行端到端测试时,使用 Terraform 编写基础架构脚本并创建/拆除整个环境。就启动时间而言,这听起来像是一个巨大的开销。此外,完全脚本化的环境创建和设置听起来需要做很多工作!

2) 创建一个专用的、长期存在的环境,我们将逐步部署到该环境中。这听起来会变得一团糟——对于运行测试的地方来说并不理想。

3)制作它,以便我们可以在本地运行环境。所以也许使用 AWS 的SAM或类似这个项目的东西https://github.com/gertjvr/serverless-plugin-simulate

最后一个选项也可以回答本地开发环境设置的问题,但是在本地模拟无服务器技术的所有东西似乎都处于测试阶段,我担心如果我沿着这条路走下去,我可能会在投入大量时间后遇到一些问题。 ...

4

4 回答 4

2

“另外,完全脚本化的环境创建和设置听起来需要做很多工作”——确实如此。这也是正确的做法。它不仅允许您对代码进行版本控制,还允许您对代码运行的环境进行版本控制。自动化部署不仅仅是您的代码。我会推荐这个。

于 2018-09-20T07:11:15.903 回答
2

您可以使用无服务器框架将您的应用程序编码为基础设施代码并创建测试

https://serverless.com
https://serverless.com/framework/docs/providers/aws/guide/testing

于 2018-09-20T16:32:05.957 回答
1

在我这边,我将我的测试策略拆分如下:

Api: - 单元测试:(使用您喜欢的语言框架) - 集成测试:这取决于您选择的 InfraAsCode,如果您使用 SAM 或 Serverless 框架,您将能够在本地将事件直接注入您的函数。如果您想添加像 DynamoDB 或 S3 交互这样的集成部分,您应该考虑使用 LocalStack ( https://github.com/localstack/localstack ) 来模拟这些服务。

前端: - 对于那部分,我总是使用 Stub 模拟 API 请求,并且只测试前端部分(我之前已经测试过 api 部分)。然后您将能够使用 cypress 或其他框架。

于 2019-03-26T15:31:27.940 回答
0

使用endly e2e 和自动化运行程序怎么样,它允许您构建测试工作流以自动化构建、部署、数据填充和验证(NoSQL:DynamoDB、Firebase 或 SQL:MySQL、BigQuery、PostgreSQL 等)、日志(云手表) 、消息总线(SNS、SQS、Cloud Pus/Sub),触发 backrond 或发送 HTTP 请求。

你可以在这里找到一些 lambda、云函数/

或者更多的 e2e 生产项目:

于 2020-09-21T20:13:34.823 回答