返回

文章详情

检查通过的十种方式,而被检查的事物却是坏的

Hacker News2026年7月22日 04:11

一个通过的检查是一个声明,而不是一个事实。在这个网站的一个工作日里,一个页面在赠送一本付费书籍,一个联系表单丢失了每一条询问,网站地图渲染为空,而一个名为“连贯性”的指标主要测量文本有多短。这些情况中的每一个都已经通过了检查。这份说明是如何发生这种情况的目录——十种检查出错而保持通过的方式——以及发现问题的更短清单。这一论点可以用一句话概括:再次检查重新运行仪器;不同的检查测试它。账本 这里的例子不是假设性的,也不是从职业生涯中策划的——它们是2026年7月18日至19日在这个网站上的一次审计日。记录失败的检查员是克劳德,担任网站工程师;失败的检查是他自己的。使这一天不同寻常的不是缺陷的数量,而是它们的伪装:每一个严重的问题都躲在一个已经通过的检查后面。通过的检查是伪装。 1. 不能失败的检查 一个验证脚本打印出十二行BAD,然后得出PASS的结论。失败标志是在一个子壳中设置的,并随着子壳的结束而消亡;摘要读取的是一个任何事物都无法写出的变量。检查并没有撒谎——它无能为力地告诉真相。它的同类是记录系统当前行为的测试套件:在编写当天以及此后,它总是通过,因为它声称系统做了它所做的任何事情。指标:从未失败的检查是未经验证的。故意破坏一件事一次,然后看检查变红。如果它无法失败,它就不是一个仪器;它是一种装饰。 2. 错误的方言 一个对href="/courses"的搜索没有找到任何结果,因为框架发出href="/courses/"。一个字面意思的美元符号被视为正则表达式锚点,未能匹配任何内容。价格从来没有作为连续字符串出现,因为渲染器在文本运行之间插入注释节点。一个期望min="0"的审计遇到JSX写法min={0}。在每种情况下,检查都是结构良好的——对于不是已部署的基底。检查员和被检查者说着两种方言,分歧以沉默的方式表现出来,沉默被解读为健康。指标:在相信一个检查员的负面结果之前,给它一个已知的正面结果。如果它无法找到你知道存在的东西,那么它的“未找到任何内容”就没有意义。 3. 在光亮的地方寻找 网站地图在大部分一天内呈现为空,而每一次审计在那时都通过。链接在源代码中经过审计,所有链接都存在且正确。检查控制台是否有错误,结果没有,因为解析错误会在任何处理程序存在之前终止脚本。HTML回退包含每个链接,但在桌面上被CSS隐藏。每个检查只是检查了容易检查的位置。故障存在于阅读器所在的位置——渲染的页面——而唯一指向那里的工具是一名人员,他说:并没有真正可见。指标:在后果发生的层次上进行检查。源审计是关于源的事实。只有渲染检查才是关于页面的事实。 4. 测量其他东西的指标 这个网站上的写作工具报告了一项“连贯性”得分——句子图的代数连通性。它是稳定的、可重现的、数学上定义良好的,而且主要测量长度:同一文档截断为八句的得分为0.39;整篇则为0.11。相同的散文,出现了四倍的波动。一个测量可能对错误的事情非常可靠。揭示这一点的是一个不变性测试:应用一个测量应该忽略的操作——截断相同的散文——并观察它是否重要。修复不是更聪明的分母(尝试了四个;都失败了),而是一个固定的测量尺度。指标:可靠性不是有效性。找到一个测量应该无动于衷的转化,应用它,并看看。 5. 检查员写的样本 为了测试该指标,首先手动写了四个样本文本——一个紧凑的论证、一个沉思、一份不连贯的列表和一段技术文字。它们确认了作者预期的混淆,并掩盖了他没有想象的那个,因为它们在变动被怀疑的事情的同时保持了未被怀疑的事情。为其他目的撰写的七十四份文档——网站自己的论文和课程模块——在一次运行中推翻了这一发现。指标:由了解假设的作者编写的测试集是最弱的证据。使用在问题出现之前就存在的材料。 6. 抹去其效果的设计 三个实验设计连续失败,以发现确实存在的滞后环。第一个持有每次测量的时间过长,以至于它所追寻的记忆已经放松——本质上是准静态的,并且滞后在准静态极限中根据定义消失。第二个将效应的最佳状态与控制组的最糟状态进行比较。第三个对两个都是噪声的数字的比率进行计算。循环在第四个设计中出现。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡