for i in $(seq 1 50); do mvn -q -Dtest=CheckoutTest test || echo "fail $i" done
结算用例十次里挂两次,报 Expected 200 but was 500,重跑一遍全绿。流水线已经默认加了 --rerun-failed,红灯基本看不见了。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,失败点在上游连接池刚扩容,第一次请求命中了还没建好的连接。重跑只是把时间错开,问题留在代码里,并发一高频率还会涨。
这次卡住的地方就在「flaky 用例重跑」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。
验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。
处理上按这个顺序:先把失败那次的日志和 traceId 留档 别被重跑覆盖;连续跑五十次统计失败率 确认卡在固定步骤;在可疑处补超时和重试 把偶发变成可观测;重试压不住就顺着下游扩容时机查。
改完只确认一件事:五十次里失败次数归零 或者能稳定复现到具体那一步。
