我使用AWS API网关,Lambda/ECS用于计算,Cognito用于用户。但我发现测试这样的应用程序真的很难。使用AWS SAM Local,我可能可以测试简单的Lambda和API网关功能,但如果我使用API网关授权程序,我会发现很难端到端测试这些功能。
看起来要测试这样的应用程序,我需要一个全新的设置来测试吗?我的意思是,像一个单独的API网关与Lambda/ECS集群/Cognito用户池只是为了启用测试?这看起来很慢,我想我将无法再获得代码覆盖率报告之类的东西了?
免责声明:我对AWS Lambda/ECS/Cognito还很陌生,所以对此持谨慎态度。
-
单元测试:SAM本地或其他带有单元测试库(mocha(的本地docker主机会很好,因为:
- 速度。所有测试都应该针对lambda函数快速执行
- 示例:野扁豆配摩卡
- 集成测试:一旦您准备好更改,就会有很多选项调用API。我会从邮递员开始运行API测试,如果需要,您可以将它们链接在一起或在命令行中运行它们
-
端到端(E2E(测试:如果API是您的前端,那么E2E和API测试之间可能没有任何差异。UI、语音、聊天前端与选项有很大不同,因此我将建议一些选项:
- UI:Selenium(拥有最多的支持和选项,包括docker镜像:SeleniumHub或单机版(
- 声音:建议
- 文本:建议
-
阶跃函数:
- 允许您可视化每个步骤
- 出现错误时重试
- 允许您诊断和调试问题
- 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