2026年8月23日 Symbolic Execution 发现了我 94% 测试覆盖率都遗漏的整数溢出 你的单元测试只检查特定输入,而 symbolic execution 检查所有可能的输入。以下是它的工作原理、成本以及从何入手。 additional-strategiessymbolic-executiontestingverification
2026年8月3日 如何证明你的代码没有运行时错误(以及为什么你很可能会放弃尝试) 抽象解释让你在执行之前就证明运行时错误不可能发生。以下是它的实际工作原理、难点所在,以及它在你的工具链中的定位。 abstract-interpretationstatic-analysisruntime-errorsverification
2026年7月25日 真的有人验证了 1 万行代码零缺陷吗?IBM 做到了,而且方法比结果更离奇。 Cleanroom software engineering 承诺通过 mathematical verification 而非 debugging 实现零缺陷增量。我们查看 IBM 的实际项目数据,看看这一说法是否成立。 cleanroom-correctnesszero-defectsverificationcase-study
2026年7月9日 AutoVerus将40小时的证明编写变成3次LLM调用。诀窍在于知道何时放弃。 AutoVerus利用LLM智能体网络为Rust代码生成Verus正确性证明,通过由SMT求解器反馈驱动的生成-修复-消除循环,自动化超过90%的证明义务。 model-checkingautoverusrustverification
2026年7月6日 无需学习时序逻辑即可对代码进行模型检验 像Kani这样的有界模型检验器和像Alloy这样的关系模型查找器允许你用普通的断言和约束来验证性质。你放弃了活性证明,换来的是以小时而非周为单位的学习曲线。 model-checkingtemporal-logicformal-methodsverification
2026年7月5日 不写一行证明也能证明 Rust 代码正确,但状态空间就是代价 像 Kani 这样的模型检验工具让你可以用断言代替形式化证明来验证 Rust 性质。棘手之处在于,当你的循环没有小的边界时会发生什么。 model-checkingrustverificationformal-methods
2026年6月14日 测试无法证明两个函数等价。以下方法才能真正做到。 N-version programming 假设你的实现结果一致。我们来看为什么测试远远不够,SMT solvers 如何真正证明等价性,以及如何在‘足够好’和形式化验证之间取舍。 n-version-programmingequivalence-testingformal-methodsverification