网易首页 > 网易号 > 正文 申请入驻

测试全绿就代表补丁没问题?换个顺序跑可能全崩

0
分享至

一个AI写的补丁,在默认顺序下跑通了整套测试。绿灯亮起,很多人到这一步就点了合并。但绿灯只证明了一件事:这套测试在某一个特定顺序下能过。它没有证明这些测试彼此独立。

这是两个完全不同的问题。前者问的是"补丁有没有跑通",后者问的是"这套测试作为一个有状态的程序,会不会因为谁先跑谁后跑而改变结果"。机器写的补丁恰恰特别擅长扰动这种状态:新加一个模块级缓存、一个会改动共享数据行的 fixture、一个带副作用的 import、一个没被撤销的 monkeypatch,都可能让后面的测试莫名其妙地过或挂。

所以在信任一个机器补丁之前,值得先搞清楚:哪些测试能过,只是因为前面有别的测试先跑过了。

先确认顺序契约,再谈扫描

第一步不是急着打乱顺序,而是先跑两遍:一遍默认顺序,一遍固定种子但不启用任何 shuffle 插件。如果这两次结果就对不上,那说明存在 flaky 测试,不是顺序耦合,直接扫只会产出一堆噪声。

把基线记录成一组节点 ID 加结果,后面所有对比都拿它当参照。两次基线之间发生翻转的测试,先隔离掉。一个本身就不稳定的套件,做排列扫描无法归因——你分不清某个测试挂掉是因为前面的测试,还是因为它今天心情不好。

抽样跑种子排列,而不是穷举

400 个测试的排列组合多到跑不完,只能抽样。做法是:先收集全部节点 ID,用固定种子打乱顺序,再按这个顺序跑一遍,把每个测试的通过/失败记进矩阵。

这里有两个刻意的设计。一是把 PYTHONHASHSEED 跟着种子一起变,这样能顺带抓到依赖 set/dict 迭代顺序的问题;但代价是,一次失败可能来自哈希顺序而非前驱顺序,下一步必须把两者区分开。二是 junitxml 会篡改节点 ID,用之前得拿收集输出核对一遍映射关系。

报告里该给的是具体指标,不是一句"有点不稳定":

  • 耦合率 = 结果随种子变化的测试数 ÷ 收集到的测试总数
  • 基线干净率 = 在默认顺序下能过的耦合测试占比(这些正是当前 CI 藏起来的问题)
  • 最小化配对数量 = 归因之后剩下的不同"前驱→目标"边数

没算过的耦合率,就是一个你辩护不了的结论。

把失败压缩成最小前驱集合

一次失败的排列几乎说明不了什么——目标测试前面可能跑了 37 个测试。要做的是对前缀做增量调试:不断删掉前缀里的测试,直到再删任何一个都无法复现失败为止。

这个过程的复杂度是前缀长度的平方,但只对已经失败的测试跑,成本可以接受。产出通常小得离谱——一般就一两个测试——而这个小小的复现件,才是你附在补丁评审里的东西。

先分类,再动手修

最小化出来的配对是证据,不是诊断。分类时最容易被评审者跳过的一步是:在基线提交上跑同一套扫描,把两边的配对集合做差。耦合增量为零,说明补丁没有引入泄漏,只是让一个老问题浮出了水面——这依然值得知道,但不构成拒绝补丁的理由。

如果确实要冻结某些测试,边界得写死:冻结条目要写明最小化的前驱,而不只是那个测试;冻结要有硬性到期日;被冻结的测试仍然参与扫描,以便观察耦合是否扩散;冻结到期后挂掉的是构建,不是测试本身。一个没写前驱的冻结,本质上就是删测试换了个说法。

这套方法管不到的地方

它只能发现顺序耦合。最小配对集合为空,不代表补丁正确,只代表测试之间相互独立,还得配合 diff 覆盖率和断言强度检查一起看。

成本随套件时长线性放大:30 个排列乘以 12 分钟的套件,就是六小时。可以少抽几个种子,或者只扫补丁碰过的那些测试文件。

没有按测试隔离数据库的套件,几乎会把所有东西都报成耦合,先把隔离修好再谈扫描。做不出基线提交对比的,也别跑——否则每个历史遗留的泄漏都会被算到 AI 头上,评审一周内就会开始无视这道关卡。至于本身还没稳定下来的套件,同样先放一放。

起步建议很简单:拿五个种子,只扫补丁碰过的测试文件。如果最小配对集合非空,你手上就有了能摆上评审桌的具体材料——这比一句"看着没问题,测试都过了"要有分量得多。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
杜锋重磅发声:CBA比赛即便1000场也没用,联赛的本质是锻炼外援!

杜锋重磅发声:CBA比赛即便1000场也没用,联赛的本质是锻炼外援!

历史缝隙里的猹
2026-10-17 10:41:51
我们一直以为她是统派,但她实际是独台身份!

我们一直以为她是统派,但她实际是独台身份!

文史季季红
2026-10-16 06:45:04
菲律宾破防了!马科斯将召见中国大使,菲参议员叫嚣“驱逐”!

菲律宾破防了!马科斯将召见中国大使,菲参议员叫嚣“驱逐”!

故事终将光明磊落
2026-10-17 08:44:11
阿隆索怒了!切尔西 1.2 亿锁定巴萨两大核心!蓝军冬窗重磅补强

阿隆索怒了!切尔西 1.2 亿锁定巴萨两大核心!蓝军冬窗重磅补强

澜归序
2026-10-18 08:54:08
烧光350亿,又一家国产造车新势力倒下,正式宣告破产

烧光350亿,又一家国产造车新势力倒下,正式宣告破产

诗意世界
2025-12-31 10:45:29
央视怒批!出尽洋相、目不识丁,难怪国家广电总局对流量明星出手

央视怒批!出尽洋相、目不识丁,难怪国家广电总局对流量明星出手

皮皮电影
2026-10-17 09:30:38
有没有发现,身边有很多60、70后,银行里存有上百万,也有退休保障,却不舍得花钱,甚至一杯奶茶都没喝过,就知道存钱

有没有发现,身边有很多60、70后,银行里存有上百万,也有退休保障,却不舍得花钱,甚至一杯奶茶都没喝过,就知道存钱

犀利强哥
2026-10-18 07:00:00
小杨哥宣布注册新账号“庆杨”复播:“疯狂小杨哥”停播以来,我痛定思痛,深刻反省,并经过2年认真整改;其原有1亿粉丝账号显示已注销

小杨哥宣布注册新账号“庆杨”复播:“疯狂小杨哥”停播以来,我痛定思痛,深刻反省,并经过2年认真整改;其原有1亿粉丝账号显示已注销

大风新闻
2026-10-16 19:42:05
变天!特朗普突遭重创!

变天!特朗普突遭重创!

财经要参
2026-10-16 07:37:25
上海徐浦大桥清晨突发严重车祸:白车强行超车酿祸 平板货车失控冲过隔离栏冲入对向车道致1死2伤

上海徐浦大桥清晨突发严重车祸:白车强行超车酿祸 平板货车失控冲过隔离栏冲入对向车道致1死2伤

老猫观点
2026-10-18 07:30:54
毛人凤接到暗杀令手抖:名单上这三人,动了谁都是死

毛人凤接到暗杀令手抖:名单上这三人,动了谁都是死

纪史行者
2026-10-14 11:43:56
轰14+8+7还能低位单打!西帝归位引美记盛赞 湖媒盼布朗尼1换3太扯

轰14+8+7还能低位单打!西帝归位引美记盛赞 湖媒盼布朗尼1换3太扯

颜小白的篮球梦
2026-10-17 11:27:24
森保一:我感觉日本和巴西没太大差距,他们一对一突破高一档

森保一:我感觉日本和巴西没太大差距,他们一对一突破高一档

懂球帝
2026-10-17 17:50:10
爱心捐赠遭冒名顶替?女子称捐赠300套衣服却被义工联合会会长儿子冒名宣传,活动组织者发声:现场沟通失误,导致报道错误

爱心捐赠遭冒名顶替?女子称捐赠300套衣服却被义工联合会会长儿子冒名宣传,活动组织者发声:现场沟通失误,导致报道错误

封面新闻
2026-10-16 23:20:29
9.24新政2周年,为什么套在3700多点的投资者,感受比2689点时还痛苦?类平准基金大手笔进场,能扭转A股的颓势吗?

9.24新政2周年,为什么套在3700多点的投资者,感受比2689点时还痛苦?类平准基金大手笔进场,能扭转A股的颓势吗?

李志林
2026-10-18 07:10:13
广州禁摩,张雪机车却把华南最大店开进白云:300台车卖给了谁?

广州禁摩,张雪机车却把华南最大店开进白云:300台车卖给了谁?

娱乐圈的笔娱君
2026-10-18 09:06:32
特斯拉会飞的汽车一经公开,各种吸附原理大揭秘都出来了,其实还是得佩服人家想象力

特斯拉会飞的汽车一经公开,各种吸附原理大揭秘都出来了,其实还是得佩服人家想象力

三叔的装备空间
2026-10-17 16:38:44
暴跌93%,中国人的梦中神车,崩了!

暴跌93%,中国人的梦中神车,崩了!

i黑马
2026-10-16 20:26:14
1950年新疆两千五百骑兵突然哗变,王震不调追兵,用一通电话解决

1950年新疆两千五百骑兵突然哗变,王震不调追兵,用一通电话解决

饭小妹说历史
2026-10-15 09:48:16
黄镇廷谈王楚钦实力:王楚钦实力到底强不强,他拿过奥运冠军、拿过世界冠军,你自己衡量

黄镇廷谈王楚钦实力:王楚钦实力到底强不强,他拿过奥运冠军、拿过世界冠军,你自己衡量

极目新闻
2026-10-17 16:26:18
2026-10-18 09:43:00
野生运营
野生运营
懂点产品,懂点AI,正在努力给平淡日子搞点新花样。
198文章数 97关注度
往期回顾 全部

科技要闻

刘煜辉:99%的黄金分析师报告一钱不值

头条要闻

女生科目三没过出来发现教练走了 跟其语音听到麻将声

头条要闻

女生科目三没过出来发现教练走了 跟其语音听到麻将声

体育要闻

升级版杨瀚森再闯难关:当上开拓者第三中锋还得拼

娱乐要闻

李连杰回应抛妻弃女传闻,透露四个女儿关系

财经要闻

马斯克:美债问题只能靠AI和机器人解决

汽车要闻

星瑞L PLUS限时售价10.97万元起 开启智混3L时代

态度原创

健康
教育
艺术
家居
公开课

看着很健康的人,怎么会突然猝死?

教育要闻

故宫:为什么一定要建在一条中轴线上?

艺术要闻

美到窒息!黛安笔下的午后“印象”,明媚又温柔,看完心情都亮了!

家居要闻

2026建博会(广州) 公装联探展交流活动

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版