type
status
date
slug
summary
tags
category
icon
password
⚠️
由于可能会在接下来的面试中被问到关于AWS测试的问题(我想可能是广义的上的品质保证问题),所以事先让AI帮忙整理了AWS中常见的质量保证手段,用来学习。

① 基础设施层(Infrastructure as Code / Platform)

目标:确保环境配置可重复、变更可控、资源合规。

核心测试手段

类别
实践
工具 / 服务
示例
单元与静态检查
IaC 模块级验证,避免拼写与依赖错误
Terratest, cdk-assertions, tfsec, cfn-lint
PR 阶段自动运行 terraform plan,校验 S3 是否默认加密、IAM 权限是否超宽
合规与安全
Policy as Code 审计
AWS Config Rules, Service Control Policy, CloudFormation Guard, OPA (Rego)
检查 EBS 未加密、RDS 公网暴露、IAM 无 MFA 用户
变更评审
部署前 diff 审查与审批流
GitHub Actions + Terraform plan JSON, Spacelift, Atlantis
PR 评论区自动显示 plan 差异,由架构师批准
灰度 / 蓝绿验证
新旧环境并存,健康检查通过后切流
Route 53 weighted routing, ALB target group shift, Lambda alias
新版 Lambda 发布后执行 health-check Lambda 确认依赖可达

易忽视

  • 环境漂移检测(Drift Detection)要自动化。
  • IaC 模块需版本化并有回滚策略(state lock + backend 版本控制)。
  • Tagging 与资源命名也属于“质量”范畴,应有 lint 规则。

② 应用与服务层(Lambda / API / 容器)

目标:保证业务逻辑在云环境中正确运行,接口稳定可靠。

常见测试

类别
做法
工具 / 服务
示例
函数 / 微服务单元测试
本地模拟事件与 AWS SDK
AWS SAM CLI, pytest + moto, LocalStack
模拟 S3 触发 Lambda,验证 JSON 输出格式
集成与端到端
部署后验证 API 逻辑、认证与延迟
Postman/Newman, k6, JMeter, Cypress
对 API Gateway 发请求校验 JWT 权限、响应时间 < 200 ms
容器质量
镜像安全扫描、配置基线检测
ECR Scan, Trivy, Grype, Dockle
CI 阶段拦截含高危 CVSS 漏洞镜像
可用性监控
模拟用户请求检测可用性
CloudWatch Synthetics Canary, Pingdom
每 5 分钟调用关键 API,失败触发 SNS 告警

补充

  • Serverless 环境要关注冷启动延迟测试
  • 若多区域部署,应做跨 Region 延迟与 DNS 切换测试。
  • 权限(IAM Role)误配属于安全测试范畴,可用 Access Analyzer

③ 数据与分析层(ETL / Data Lake / ML)

目标:数据正确、可追溯、模型可靠。
类别
实践
工具 / 服务
示例
ETL 输出验证
校验行数、空值、主键唯一
Athena SQL, AWS Glue Job metrics, Lambda Validator
Glue 作业完成后触发 SQL 比对上次批次行数差异
数据质量框架
自动化验证 + 报告
Great Expectations, Deequ
检查日期列格式、分类字段分布漂移
数据漂移检测
比较统计特征与历史基线
SageMaker Model Monitor, CloudWatch Metrics
特征均值变化 > 3σ 触发 retraining
元数据与血缘验证
Catalog 一致性检查
Glue Data Catalog + DataBrew profiling
确保表 schema 与实际文件一致
模型评估 (MLOps)
自动比较精度、阻断不达标部署
SageMaker Pipeline evaluation step, MLflow
accuracy < 0.9 则中止部署
性能与成本测试
查询延迟、压缩比、分区策略
Redshift Advisor, Athena Workgroup metrics
调整 partition size 评估成本下降 15 %

补充

  • 数据测试要与 数据版本控制(DVC) 联动。
  • 用 Glue/Athena 校验输出是最低成本的“烟雾测试”。

④ 交付流水线与环境管理(CI/CD & Release)

目标:确保发布流程安全、可回滚、环境一致。
类别
做法
工具 / 服务
示例
多阶段部署验证
Dev → Stg → Prod 逐级 Smoke Test
CodePipeline, GitHub Actions, Lambda test hook
部署后触发 Lambda 调关键 API,成功才推进
Rollback 测试
自动回滚验证
CodeDeploy Blue/Green, ECS canary
部署失败 5 min 内自动恢复旧版本
环境一致性
检测 stack 漂移
AWS Config, CFN Drift Detection
Prod 与 Stg 资源 diff 报告
凭证与安全
CI 扫描密钥泄漏
GitGuardian, TruffleHog, CodeGuru Security
拦截 .env 文件提交
Approval Gate
人工审核关键资源变更
CodePipeline Manual Approval
改动 IAM 或 VPC 配置时需批准

补充

  • CI/CD 自身要有测试:Pipeline 脚本单元测试 + Mock deploy。
  • 可在 Pipeline 里运行轻量 Chaos Test 验证回滚。

⑤ 运行与可观测性(Post-Deployment Quality)

目标:上线后可诊断、可量化、自愈。
类别
做法
工具 / 服务
示例
日志一致性
格式与聚合校验
CloudWatch Logs Insights, OpenSearch, FluentBit
检查每条日志包含 requestId、timestamp
指标监控
自定义业务与系统指标
CloudWatch Custom Metric, Prometheus/Grafana
跟踪延迟 p95 与 error rate 变化
分布式追踪
Trace 链完整性测试
AWS X-Ray, ADOT (OpenTelemetry)
验证服务间 span 关联正确
异常注入(Chaos)
模拟失败观测恢复
AWS Fault Injection Simulator, Gremlin
随机停 EC2 节点,看 AutoScaling 是否拉起
成本与配额监控
FinOps 健康度
Cost Anomaly Detection, Service Quota Alerts
异常费用突增自动发 SNS 告警

补充

  • 可观测性也要测试:每次新服务部署后验证 trace 是否进系统。
  • 混沌实验先在非生产做,留好 rollback 脚本。

🎯 总体回答思路

如果面试官问“你在 AWS 项目中如何做测试 / 保证质量”,你可以:
“我通常把质量保障分成五层:
  • 基础设施层:通过 Terraform lint 和 policy guard 确保资源合规;
  • 应用层:用 SAM 或 Postman 做集成测试,ECR 扫描镜像安全;
  • 数据层:ETL 结果和数据漂移由 Great Expectations 验证;
  • 流水线层:在 CodePipeline 里配置 Smoke Test 和 自动回滚;
  • 运行层:通过 CloudWatch Canary 和 X-Ray 验证上线质量。
    • 不同层次结合 CI/CD 自动化,让整个系统在设计、交付、运行各阶段都有可验证点。”
这样回答够体系,也能随问随拆。