适用于AWS Lambda的烟雾测试方法

时间:2019-05-27 17:20:36

标签: amazon-web-services junit aws-lambda smoke-testing

我有许多使用Java 8的AWS Lambda。我们正在为所有具有Smoke / Live别名的Lambda使用Blue / Green部署。我们正在使用Jenkins通过以下步骤部署AWS Lambda

  1. 签出:这是从git签出lambda源。
  2. 使用Junit进行构建和单元测试。
  3. Jacoco的代码覆盖率
  4. 使用Smoke别名进行部署。
  5. 现在我们要针对Smoke别名对lambda执行Smoke测试
  6. 如果烟雾测试用例通过,我们将将Smoke别名提升为Live别名。

对于第5步,请问我们是否有方法对lambda执行“烟雾测试”?

我认为我们需要实际执行lambda本身(而不是junit),但是如果这样运行了实际的业务规则,则它可以生成许多输出到目标的东西,例如dynamodb和s3 ...

因此,请分享您在实际项目中拥有的最佳实践。谢谢。

我在考虑是否应该添加一个将通过Smoke测试传递的特殊参数,然后lambda本身就具有处理该参数的逻辑。

1 个答案:

答案 0 :(得分:0)

我也为这个概念而苦恼。

假设您正在通过环境变量或SSM参数之类的方法将配置(例如DynamoDB表,S3位置等)外部化:理想情况下,您将“冒烟”或将Lambda的暂存版本指向烟雾测试(即,生产)资源。

使用别名的一个问题是您can not have different environment variables for different aliases

请记住,用于冒烟/集成测试lambda的典型方法是放弃使用别名,将临时资源部署为与生产资源不同/分离的功能。

如果您有一个SAM / Cloudformation模板可以部署lambda及其依赖项,从而可以轻松设置开发,smoketest和生产堆栈,则可以更轻松地完成此操作。您将需要为前缀/后缀创建一个参数,您可以为其提供资源以区分不同的部署。

当您对烟雾测试结果感到满意时,只需将经过测试的lambda代码版本部署到生产lambda中即可。