超时与重试用例
覆盖各层超时与重试的组合:客户端、网关、服务端处理超时。重点验证超时后的数据一致性与用户可见状态——客户端超时但服务端成功、重试风暴、重试破坏幂等,都是事故高发点。超时参数应可配置并纳入测试:硬编码超时在不同环境表现差异大,问题难以复现。
基本信息
| 覆盖层次 | 客户端、网关与代理、服务端、依赖调用 |
|---|---|
| 关键场景 | 客户端超时服务端成功、服务端超时客户端等待 |
| 重试风险 | 重试风暴放大故障、非幂等重试产生重复 |
| 配置原则 | 外层超时大于内层处理时间,各级留余量 |
| 断言重点 | 数据一致性、连接与线程回收、用户可见状态 |
| 环境要求 | 超时值可配置,测试与生产行为可比 |
用例矩阵
用例矩阵
客户端超时 + 服务端成功 -> 幂等查询补偿、重复提交被拦
服务端超时 + 客户端等待 -> 连接与线程回收、无悬挂事务
重试风暴 -> 限流与熔断生效、下游不放大
# 每类断言:最终一致性 + 资源回收 + 提示信息超时层级核对
| 层级 | 核对点 |
|---|---|
| 客户端 | 等待可取消、重试操作保持幂等 |
| 网关与代理 | 超时值略大于后端处理时间 |
| 服务端 | 超时后释放连接、线程与事务 |
| 依赖调用 | 熔断、降级与重试次数上限 |
典型使用场景
- 支付链路:超时后的订单状态与补偿查询验证。
- 消息重试:消费超时后的重投与去重验证。
- 网关配置:代理超时与后端处理时间的匹配检查。
- 弱网模拟:高延迟下客户端取消与恢复行为。
- 故障演练:依赖变慢时熔断与降级路径验证。
- 配置评审:各层超时参数一致性核对。
超时用例不检查重复副作用,越重试越出错:幂等断言必须写进用例。
重试要防放大:故障时批量重试会把下游从慢拖到不可用,验证限流与退避策略。