观点:你的测试无法看到移徙会破坏什么——干跑 用克隆铁

2026年8月23日3 次浏览来源:Dev.to阅读原文

观点:你的测试无法看到移徙会破坏什么——干跑 它在克隆一号绿色测试套件上是判断AI生成的迁移的错误工具,因为测试会与后迁移计划相悖,从不观察数据消失的中间状态.

向上迁移是经过审查的可见文物,而向下迁移则被视为事后考虑,尽管这是部署失误的唯一安全网。

自由模型访问使问题的结构化:生成成本降至零,因此迁移量会上升,每增加一次迁移会将表面乘以未经审查的数据丢失.

披露:这篇文章是作为MonkeyCode产品推广的一部分而编写的.

测试验证目的地,而不是行程 当一个测试套件运行在迁移的数据库上时,它确认应用程序可以读取新的计划,但它不能确认迁移保留了它应该保存的数据.

测试跑道在迁移执行后连接,因此它从未看到一列被丢弃,一表被重新命名,或者约束被默默地放松的瞬间.

通过每个测试的迁移仍然可以破坏生产数据,因为测试是为了验证应用行为,而不是迁移安全.

标准的缓解是一个中转数据库,但中转不能替代干跑,因为它有不同的数据、不同的体积和不同的使用模式。

我推荐的干跑使用一个具有代表性数据样本的生产计划克隆,它通过每一步的数据完整性检查来进行迁移的两个方向.

克隆人不需要大;每张桌子有几千行就足以暴露出最具破坏性的模式.

五步走的干燥工作流程 工作流程是故意机械化的,因为目标是去除核查过程中的判断力,保留人类的注意力,以达到迁移的意图: Clone the schema并加载一个数据样本——丢弃目前的schema,创建一个新的数据库,并加载一个有代表性的生产数据片.

绘制基线图——记录行数、无效费率和制约在迁移触及任何事情之前就计算在内。

再次应用上升的迁移和快照——运行人工智能生成的迁移并记录相同的度量.

第三次应用下行迁移和快照——运行下行迁移,并再次记录衡量标准。

比较所有三个快照——向上迁移只应改变补丁的意图,向下迁移应完全恢复基线.

以下脚本执行步骤二至步骤五用于 PostgreSQL : 剧本收录了三个结构度量衡——表数,约束数,和"非虚"属性分数,足以捕捉到最常见的破坏性迁移模式.

生产级版本还应记录每行的计数和一栏的无效率,然后通过三个快照加以传播。

关键属性不是下移执行时没有出错;而是图和数据返回基线状态.

能够捕捉到Schema修复失败的图案的数据检查是必要的,但还不够,因为数据损坏能够成功向下迁移。

列类型更改可能不可逆地转换值,而下移会在数据被损坏时恢复类型.

捕捉这些问题的检查是你们为进行数据质量审计而运行的检查: 平面行数——任何大小变化超过迁移意图的表格都是一面红旗.

列为空速率——这一列在迁移前从未无效,在表示数据损失后无效.

重复检测——增加独特约束的迁移不应默默地合并行.

外国密钥完整性——下行迁移应恢复确切的参考行.

这些检查在克隆上运行是便宜的,免费的服务器选项使得克隆本身

分享