6个月才解决了这个小Bug
作者:至秦 发布时间:[ 2016/11/2 13:47:14 ] 推荐标签:缺陷管理 Bug
我曾经为一家美国的国防承包商工作过。我很高兴我做到了,因为它是我一直的梦想;但我也很高兴有机会继续前进。我学到了很多,遇到超多了不起的家伙,而且只要我活着,永远不会缩写另外一个变量。
我效力过一个隐形飞机的项目,这里不提它的名字,它主要负责制造雷达接收器。你可以能会问,“为什么隐形飞机还需要雷达接收器?”这主要有两个原因。这些接收器是定制的,专门用来接收和识别地理位置以及敌方系统发射雷达脉冲的国籍。首先,知道敌方雷达的地理位置,可以帮助你避免意外飞过他们的上空(如果你的影子飞过敌方空军基地上空,却没有被雷达发现,那是极好的)。第二,它让你分析敌方在哪里寻找你(比如在一个山头上出现了一个俄国的防空导弹基地,上个月还没有呢,那你知道一定有些东西在上面)。
当接收器在测试实验室的时候,你经常会看到 20~30 磅的精美的航空级铝,里面塞满了 10~20个 定制的电子卡,上面运行着价值 50~100 万美元的软件。移动接收器很容易,绝大多数我在实验室里处理的,都是空军部队在使用中遇到某些问题的。本质上,99.9% 的这些问题都是电子问题,我们不得不欺骗这个盒子,让它认为自己飞在空中,并接受敌方的雷达脉冲。测试仪器和软件在当初采购时,可能是很先进的,在合同获准后都维持不变。然而,因为它们是上世纪 90 年代获准的,你可以想象我们20年后还不得不处理这些遗物。以 MHz 计量的古老 CPU,比我还要老的操作系统,软件的用户友好特性根本无从谈起。我工作的一部分是执行新的合同,负责将升级原有测试仪器以及在上面运行的软件。接下来,有趣的事情发生了。
这项宏大的任务有很多层,我负责的一层是在同一个接收器上运行新旧两个测试,看结果有什么不同,找到软件的问题,然后修正它。因为有很多小问题要处理,所以事情进展地相当缓慢但是还算稳定,但是 SlowPOP 给我留下的印象却挥之不去。SlowPOP,也被称为“慢上升时间的脉冲叠加”,这项测试用来保证在接收到两个叠加的雷达脉冲,而且脉冲的上升、下降时间比正常时间要慢很多的情况下,接收器还能正常工作。这些细节不但枯燥而且还属于机密,所以可以这么说,结果相当糟糕。输入参数稍有调整,测试可以通过……差不多是这样……但是这仍旧不太正常,后面调整的参数和原始参数并不是很接近,这让我很不舒服。
我不停地重启,重新校准,重新安装(软件),重新测试、测试、不停地测试。
我不断地询问,调查,请求,追问,推测。
随后几个月,我们发布了其它可以通过测试的版本。
有趣的是,每当我问到 WaveGenAPI 函数的时候,每个人都说“那个函数不可能有问题,其他 80% 的测试都在使用它,而且它也正常工作一年多了。”
后在检查所有可能后,我知道必须要检查 WaveGenAPI 了。
当我研究 WaveGenAPI 函数代码时,经过几天的努力,我找到一些线索。有一行代码看上去不太对。它添加了一堆术语,其中有一个术语看上去不太对。我请 WaveGenAPI 的作者(他有令我羡慕的 26 年经验)下到实验室,和我一起看结果。他沉默地盯着那行代码差不多有半个小时,只问了这个问题的基本信息,包含了基本的检查和可能性。终他只说了一句“做得好”,然后我们握手,他离开了。
问题找到了:一个文件 → 一行代码 → 一个术语 → 一个变量 → 一个字母
当时,这位程序员接受的训练是要限定变量名的长度,他在实际工作中使用的变量名长度都不会超过 8 个字符。在这个案例中,有问题变量的含义是脉冲“下降沿十分之一高度的时间”。这个术语应该缩写成 “Ttpfe”,但是他错误地把它命名成“Ttpre”,而它却正好代表相反的含义,即“上升沿”。“Ttpre”这个术语也存在了,所以这个拼写错误才不会造成“undefined”错误。而且除了 SlowPOP 以外,所有测试的时间差异都在1个皮秒内(译注:1皮秒等于百万分之一微秒)。发现和修订这个错误,是对我六个月工作的高嘉奖,并且是迄今为止我职业生涯中找到让人满意的 bug。
这是为什么,只要我活着,永远不会缩写变量名。
简而言之,我花费了 6 个月的时间去查找一个错误的字母,而它是一个比我多 26 年工作经验的工程师所犯的输入错误。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11