代表线路:独特测试 笔记

代表线路:独特测试

Nikolai 的团队在其 CI/CD 流水线中遇到了间歇性构建失败问题,测试失败率约为 0.5%。这一烦扰促使 Nikolai 独立调查该问题。失败的测试与 Microsoft 的 GUID 实现相关,该实现是 UUID 算法的封装。具体的断言为 Assert.DoesNotContain("000", transactionId.ToString());,用于检查 GUID 字符串是否包含"000"。此断言旨在检测空 UUID,但假设有效 GUID 字符串中永远不会出现"000"是不正确的。Nikolai 发现该字符串表示形式出现的频率为 0.5527%,大约每 181 次中就有一次。该测试设计不当,可通过更健壮的检查加以改进。更好的方法是利用内置的 GUID.Empty 常量,该常量表示所有位均设为零的 UUID。作者表达了对开发者可能未使用如此明显的常量的沮丧,并指出查阅文档很可能就会发现这些常量的存在。本文还包含一则关于 NuGet 指南的广告。