我应该如何测试我的"Serverless"(API 网关/Lambda/ECS)应用程序?



我使用AWS API网关,Lambda/ECS用于计算,Cognito用于用户。但我发现测试这样的应用程序真的很难。使用AWS SAM Local,我可能可以测试简单的Lambda和API网关功能,但如果我使用API网关授权程序,我会发现很难端到端测试这些功能。

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

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

  1. 单元测试:SAM本地或其他带有单元测试库(mocha(的本地docker主机会很好,因为:
    • 速度。所有测试都应该针对lambda函数快速执行
    • 示例:野扁豆配摩卡
  2. 集成测试:一旦您准备好更改,就会有很多选项调用API。我会从邮递员开始运行API测试,如果需要,您可以将它们链接在一起或在命令行中运行它们
  3. 端到端(E2E(测试:如果API是您的前端,那么E2E和API测试之间可能没有任何差异。UI、语音、聊天前端与选项有很大不同,因此我将建议一些选项:
    • UI:Selenium(拥有最多的支持和选项,包括docker镜像:SeleniumHub或单机版(
    • 声音:建议
    • 文本:建议
  4. 阶跃函数
    • 允许您可视化每个步骤
    • 出现错误时重试
    • 允许您诊断和调试问题
  5. X-Ray:收集应用程序提供的请求数据,并提供可用于查看的工具

至于代码覆盖率,我不确定您目前是如何进行代码覆盖的。也许是这样的npm跑步报道?

我假设您正在使用cloudformation来部署如此广泛的堆栈,下面的答案是基于这一假设的。

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

同样对于lambda,您可以使用部署首选项挂钩在将lambda移动到新版本之前和之后测试无服务器lambda。

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

最新更新