AI 将 COBOL 迁移至 Java,连同 Bug 一起
AI migrated legacy COBOL programs to Java, bugs included

将遗留的 COBOL 程序迁移到 Java 时,测试数据的缺失和边界案例的验证难题往往让人头疼。这篇论文提出了一种名为 Locksmith Loop 的代理测试合成方法,通过在普通硬件上运行 COBOL 源程序和生成的 Java 目标程序,并利用 Mock 进行插桩,构建了一个迭代循环。该循环执行 Witness Search 以穿透程序分支,随后进行保持一致性的变异。当遇到路由边界时,分析器会识别出阻止深入探索的 Locked Paragraph。在三个案例研究中,Locksmith 显著提升了代码覆盖率,在两个开源项目中实现了近乎完全的覆盖,在内部生产级 COBOL 程序中达到了 91.90% 的分支覆盖率。生成的 Java 代码在所有通过确定性一致性检查的测试用例中,都与 COBOL 参考代码完全匹配。
在三个跨越两个开源程序和内部生产级 COBOL 程序的案例研究中,Locksmith 始终能够突破输入搜索的平台期,显著提升覆盖率。