API 回放测试怎么发现隐藏的分页兼容问题
这周给一个老客户后台改分页接口,测试环境都绿了,线上灰度第一小时却有几台旧版移动端开始报空列表。问题不是数据库慢,也不是缓存脏,而是旧端还在传 page=0,新接口默认走 cursor 分页,边界值被我们漏掉了。 我先把当天 Nginx access log 做脱敏抽样,把旧版本请求按 user-agent 和接口参数分组,再用回放脚本打到 staging。复现后没有急着回滚,而是加了一层兼容 shim:page=0 继续按旧 offset 处理,同时在响应 header 里打 deprecated 标记,方便后面统计还有多少老端。 这次提醒我,接口迁移不能只看 Swagger 和单元测试。分页、排序、幂等键这些"老习惯参数"最容易藏问题。建议同行上线前留一份真实流量回放清单,灰度期间盯 4xx 比例、空结果率和慢查询,别等客服说用户看不到数据才开始找。