# 1. Serverless 函数(AWS Lambda/Cloud Functions)的测试策略,冷启动、超时、并发限制的测试方法? A 冷启动、超时与并发行为都可以在本地模拟环境中完全复现 B 并发压测只需验证返回 200,无需关注 429 或 504 C 增大内存配置一定会降低冷启动延迟且不会影响成本 D 函数业务逻辑应单元化测试,而冷启动/超时/并发属平台行为必须在真实环境验证 ✓ 正确答案
# 2. Serverless 架构的集成测试,如何验证函数间通过事件总线(EventBridge/SNS)的通信正确性? A 由于链路异步,应通过捕获端点或可观测副作用来断言消费者处理结果 ✓ 正确答案 B 只需验证生产者成功发出事件即可断言整个链路正确 C 事件发布后消费者一定按顺序投递且只投递一次 D 总线路由规则无需纳入测试范围
# 3. Serverless 的本地测试与模拟,SAM Local/Serverless Framework 的模拟环境与生产环境的差异如何弥合? A 本地模拟环境能完全等价于生产环境并直接替代生产测试 B 契约测试只在生产环境执行,与本地 mock 无关 C 本地模拟环境一定包含真实 IAM 权限 D 本地用 mock 保证逻辑与契约,生产环境冒烟测试验证平台行为,两者结合 ✓ 正确答案
# 4. Serverless 函数的幂等性测试,重试、重复事件、乱序消息与并发执行如何验证输出一致 A 幂等性只需保证函数不报错即可,无需关心最终状态 B 事件源提供"恰好一次投递",因此无需处理重复事件 C 应通过幂等键与条件写/唯一约束,在重试、重复、乱序与并发下断言最终状态一致 ✓ 正确答案 D 并发执行同一事件时应产生多次写入
# 5. Serverless 的状态管理测试,如何验证 DynamoDB/Redis 等外部状态存储的一致性? A 强一致读与最终一致读在测试中行为完全相同,无需区分 B 用纯 mock 即可完全验证一致性问题 C 应验证条件写/乐观锁防止并发覆盖,并区分强一致与最终一致读的差异 ✓ 正确答案 D 测试数据无需清理,只要功能正确即可
# 6. Serverless 的成本测试,如何验证函数执行时间和内存配置不会导致成本失控? A 内存配置越大成本一定越高,无需优化 B 成本主要由执行时间与内存配额决定,应建立指标基线并监控回归 ✓ 正确答案 C 成本测试只需确认函数能正常运行即可 D 无限重试不会造成成本放大
# 7. Serverless 的安全测试,IAM 权限最小化、事件源注入和冷启动信息泄露如何验证? A 事件源中的对象 key 等不可信字段可直接用于拼 SQL 或命令,无需处理 B 函数角色的 IAM 权限越宽越不容易出错 C 冷启动不会导致任何信息泄露风险 D 应验证 IAM 最小权限是否阻断越权,并测试不可信输入注入与日志脱敏 ✓ 正确答案
# 8. 函数并发与限流测试,并发上限、队列积压、背压与限流错误响应的验证方法 A 超出并发上限时函数应直接崩溃 B 限流错误 429 应无限重试直到成功 C 并发压测无需关注队列积压 D 应验证限流时消息积压、背压传导与 429 重试策略,避免重试风暴 ✓ 正确答案
# 9. Serverless 函数的超时与重试策略测试,函数超时、重试次数与死信队列(DLQ)如何联动验证? A 超时后的消息应无限重试直到处理成功 B DLQ 与重试次数无关 C 应端到端验证超时终止、按配置重试、重试耗尽后进入 DLQ 并触发告警 ✓ 正确答案 D 函数超时不会导致调用失败
# 10. 冷启动优化手段的验证,预留并发、快照启动与依赖瘦身对冷启动延迟的影响如何量化,优化组合收益如何对比? A 冷启动优化只需测一次平均值即可得出结论 B 预留并发不产生额外成本 C 快照启动对所有运行时都无副作用 D 应控制变量分别量化各优化手段,再对比组合的延迟分布与成本 ✓ 正确答案
# 11. Serverless 批处理的失败语义,批事件部分失败时的整批重试与单条重试语义如何验证,死信队列如何承接? A 部分失败时永远整批重试,导致成功消息也被重复处理 B 批处理失败的消息不会进入 DLQ C 通过 BatchItemFailures 返回失败项,可只重试失败消息而成功消息不重派,最终失败进 DLQ ✓ 正确答案 D 部分失败与全部失败的重试行为完全相同
# 12. Serverless 工作流(Step Functions/Cloud Workflows)的测试,如何验证状态机的各分支和错误处理? A 只需测试成功路径,无需覆盖各分支与错误处理 B 状态机不存在错误处理逻辑 C 应覆盖各状态分支并用执行历史断言,同时注入故障验证 Retry/Catch ✓ 正确答案 D 状态间输入输出传递无需验证
# 13. Serverless 的可观测性测试,如何验证分布式追踪在函数链路中的完整性? A 应验证 traceId 在同步与异步调用间正确传递,span 树完整、日志可关联 ✓ 正确答案 B 只要每函数单独记录日志即可,无需关联 traceId C 异步链路无需传递追踪上下文 D 采样配置不会影响追踪完整性
# 14. Serverless 多环境的配置测试,环境变量、Secret 与 Stage 差异如何验证? A 应验证不同 Stage 的环境变量与 Secret 正确注入、环境隔离有效,并做配置冒烟 ✓ 正确答案 B 各环境共用同一份 Secret 即可,无需区分 C Secret 硬编码在代码中更安全 D 配置漂移不影响上线
# 15. Serverless 函数版本与别名的发布测试,金丝雀流量与版本回滚如何验证? A 函数版本发布后可以随时修改已发布代码 B 应验证别名金丝雀权重流量、错误率告警触发自动回滚,以及手动回滚 ✓ 正确答案 C 别名与版本无关,路由不生效 D 金丝雀发布不需要监控错误率
# 16. Serverless 应用的事件重放测试,把历史事件重放到新版本验证行为兼容? A 应用真实历史事件重放到新版本,对比输出基线验证行为兼容 ✓ 正确答案 B 历史事件与新版行为无关,重放无意义 C 重放测试只能在生产环境执行,且会污染生产数据 D 重放时无需考虑副作用隔离
# 17. Serverless 依赖层(Layer)的版本兼容测试,公共层升级对函数的影响如何回归? A 应维护依赖清单,变更时自动回归所有依赖函数,并利用不可变版本灰度与回滚 ✓ 正确答案 B Layer 升级只影响新函数,旧函数不受影响 C Layer 版本可变,无需回滚机制 D 公共 Layer 可直接全局替换,无需验证
# 18. Serverless 事件 schema 演进,事件格式变更时新旧函数版本并存如何兼容,契约如何验证? A 事件格式变更后,旧版本函数无需兼容新格式 B 新增字段一定会破坏旧消费者 C 应保证向后兼容、用 schema 版本管理,并回放新旧格式验证并存的兼容性 ✓ 正确答案 D 契约测试与 schema 演进无关