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



我有很多使用 Java 8 的 AWS Lambda。我们正在对所有具有烟雾/实时别名的 Lambda 使用蓝/绿部署。我们正在使用 Jenkins 通过以下步骤部署 aws lambda

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

对于第 5 步,您能否告知我们是否有对 lambda 进行"冒烟测试"的方法?

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

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

我在想我是否应该添加一个将通过烟雾测试的特殊参数,然后 lambda 本身有一个逻辑来处理该参数。

我也一直在为这个概念而苦苦挣扎。

假设您通过环境变量或 SSM 参数等方式外部化配置(例如 DynamoDB 表、S3 位置等):理想情况下,您将拥有 Lambda 点到烟雾测试(即非生产)资源的"烟雾"或暂存版本。

使用别名的一个问题是,不能为不同的别名使用不同的环境变量。

考虑到这一点,冒烟/集成测试 lambda 的典型方法是放弃使用别名将暂存资源部署为与生产资源不同/单独的函数。

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

如果您对冒烟测试结果感到满意,只需将测试版本的 lambda 代码部署到生产 lambda 即可。

最新更新