最近 Ross Crawford 在开发者列表中提出了一个关于测试用户界面代码的问题。我并不知道第二天我就会将我的回答付诸实践。
今天我在向我的一个站点添加模块时,我决定模块列表应该按列而不是按行排序,就像现在这样。我想,这是一个简单的更改,为什么不花几分钟来实现它。
自然,我第一次尝试时出现了错误。在这种情况下,是一个无限循环。这个无限循环产生了无限的输出,让我的带有 Firebug 插件的 Firefox 浏览器非常艰难。重新启动一个有 20 多个打开标签的浏览器非常困难。不好玩。
我想,有一个简单的修复方法... 单元测试!毕竟我最终要为它编写测试,然后才能提出更改,因为能够证明更改有效是(或应该是)获得批准的最佳方式之一。
在模拟 JText 和尝试让 Windows 命令行版本的 PHP 不将捕获的输出转储到控制台中遇到了一些问题,然后我就准备好编写一些测试了。过了一会儿,修订/测试周期的时间缩短到了大约一分钟,消除了杀死并重新启动 Firefox 的痛苦需求。不久之后,bug 被修复,一切看起来都很好。
然后我决定用 Tidy 验证 HTML。它失败得很厉害。似乎是一个 misplaced /> 导致一个 span 元素变得不平衡,一个 input 元素格式不正确。我修复了这个问题,消除了所有其他警告,创建了一个补丁。
这就是测试的力量。我发现了以前存在但未检测到的 bug,显著减少了我的测试周期时间,现在项目有了工具,其他开发者可以免费使用它获得相同的优势。