1

我将 AWS API Gateway 与 Lambda/ECS 用于计算,将 Cognito 用于用户。但我发现测试这样的应用程序真的很困难。使用 AWS SAM Local,我或许能够测试简单的 Lambda 和 API 网关功能,但如果我使用 API 网关授权方之类的东西,我发现很难端到端地测试这些功能。

看起来像测试这样的应用程序,我需要一个全新的设置来测试吗?我的意思是像一个单独的 API 网关与 Lambda/ECS 集群/Cognito 用户池只是为了启用测试?这似乎很慢,我想我再也无法获得代码覆盖率报告之类的东西了?

4

2 回答 2

0

免责声明:我对 AWS Lambda/ECS/Cognito 还很陌生,所以对此持保留态度。

  1. 单元测试:SAM Local 或其他带有单元测试库 ( mocha ) 的本地 docker 托管会对此有好处,因为:
    • 速度。您的所有测试都应该针对 lambda 函数快速执行
    • 示例:wildrydes与摩卡咖啡
  2. 集成测试:一旦您进行更改,就会有很多选项调用 API。我会从postman开始运行 API 测试,如果需要,您可以将它们链接在一起或在命令行中运行它们。
  3. 端到端 (E2E) 测试:如果 API 是您的前端,那么 E2E 和 API 测试之间可能没有任何区别。UI、语音、聊天前端和选项差别很大,所以我建议一些选项:
    • UI:Selenium(为您提供最多的支持和选项,包括 docker 图像:Selenium Hub 或独立)
    • 声音:建议?
    • 文字:建议?
  4. 阶梯函数
    • 让您可视化每个步骤
    • 有错误时重试
    • 允许您诊断和调试问题
  5. X-Ray:收集有关您的应用程序所服务的请求的数据,并提供可用于查看的工具

至于代码覆盖率,我不确定您目前如何进行代码覆盖率。也许像这样的npm run coverage ?

于 2018-11-04T11:18:33.130 回答
0

我假设您正在使用 cloudformation 来部署如此广泛的堆栈,并且以下答案基于该假设。

因此,除了@lloyd 的回答之外,我想补充一点,您可以在 cloudformation 模板中添加自定义资源,以测试每个单独的 lambda 甚至 api 端点。

同样对于 lambda,您可以使用 Deployment Preferences Hooks 在将 lambda 移动到新版本之前和之后测试您的无服务器 lambda。

https://github.com/awslabs/serverless-application-model/blob/release/v1.8.0/docs/safe_lambda_deployments.rst

于 2018-12-18T12:38:55.020 回答