2026年6月16日 TypeScript 允许我在需要订单 ID 的位置传入用户 ID TypeScript 中的类型别名不会创建独立的类型。Branded types 可以,而且它们能在编译时帮你避免混淆标识符。 type-level-correctnesstypescriptbranded-typesnewtypes
2026年6月15日 差分测试无需形式化证明也能奏效,但共模故障才是隐患 差分测试让你无需知道正确答案就能发现 bug。问题在于,相关的错误看起来像是达成一致。以下是如何发现盲点。 n-version-programmingdifferential-testingformal-methodstrust
2026年6月14日 测试无法证明两个函数等价。以下方法才能真正做到。 N-version programming 假设你的实现结果一致。我们来看为什么测试远远不够,SMT solvers 如何真正证明等价性,以及如何在‘足够好’和形式化验证之间取舍。 n-version-programmingequivalence-testingformal-methodsverification
2026年6月13日 如果我的 LLM 变体意见不一致,哪个才是对的? 并行运行多个 LLM 能够捕捉到任何单一模型都会自信地交付的错误。以下是如何构建一个真正有效的分歧解决系统。 n-version-programmingllmdifferential-testingdisagreement-resolution
2026年6月12日 五种实现却没有多数派:如何真正选出最佳方案 N-version programming 听起来很简单:运行多种实现,然后挑出最佳答案。但在实践中,'最佳'远比'最常见'更难定义。 n-version-programmingimplementation-selectiondifferential-testingai-engineering
2026年6月11日 同一个 LLM 可以写出五个版本的函数。下面介绍如何让它们真正不同。 基于 LLM 的 N 版本编程不需要多个模型。通过变化提示词、角色设定和推理约束,你可以从单个模型中提取多样化且正确的实现。 n-version-programmingllmdiverse-implementationsai-engineering
2026年6月10日 NASA 同时运行了 27 份相同的程序。Bug 们抱团投票。 N-version programming 曾承诺独立团队会犯独立的错误。Knight 和 Leveson 在 1986 年的实验证明了相反的事实,NASA 悄然放弃了这条路线。 n-version-programmingnasafault-tolerancesoftware-history
2026年6月9日 你有一半的 Cucumber 场景被跳过了。这就是那个状态在欺骗你的原因。 Cucumber 的 'skipped' 状态隐藏了三种完全不同的问题。以下是如何诊断是哪一种在侵蚀你的测试套件,以及如何阻止它。 deep-divescucumberbddtest-maintenance
2026年6月8日 你的 Gherkin 规格说明正在对你撒谎 一旦你指望人工手动维护,Gherkin 规格说明就会立刻与现实脱节。本文介绍如何通过自动化检查,让 feature 文件始终如实反映系统行为。 deep-divesgherkinbddliving-documentation
2026年6月7日 编译器检查语法,测试应该检查架构。 大多数团队把架构规则写在维基里。这里介绍如何把它们写成可执行的测试,当你的依赖图发生漂移时让 CI 挂掉。 deep-divesarchitecture-testingclean-architectureci-cd