Java 理论与实践: 平衡测试,第 1 部分:不要仅编写测试,还要编写 bug 检测器
2010-01-11 00:00:00 来源:WEB开发网测试是一种基本的质量管理工具,我们知道仅有多组测试用例还不足以找出复杂软件片段中的所有 bug。事实上,对于任何优秀程序而言,“查找所有 bug” 是不可能实现的目标。据估计,NASA 向每个开发人员提供了 20 个测试程序(大大超过任何商业实体)来负责质量评价 (QA) —— 但软件仍有缺陷。因此,质量评价的目标不应是查找所有的 bug,因为这是不可能的。相反,质量评价的目标应该是提高代码运行良好的信心,从而最大程度地提供可用资源。
要高效运行质量评估量 (QA),则需要对可用 QA 方法中的可用资源做预算,这样才能最大限度地提高信心。覆盖范围大的测试套件可以提高我们对代码使用的信心,因为它进行了一次彻底的代码审查。执行两次比执行一次较果好,因为每次都会发现另一次可能错过的错误。两次同样遵循收益递减规则,所以测试价值为 X 美元和代码审查价值为 Y 的 QA 计划要比价值为 X+Y 的任何一次测试或代码审查的效果好。
添加静态分析
静态分析是在不运行代码的情况下对其进行分析的过程,它与进行前面的代码审查时我们执行的操作非常相似,或者与标记可疑结构时 IDE 执行的操作非常相似。静态分析是添加到 QA 混合(QA mix)中的一项优良技术,因为它擅长查找其他方法(如测试和代码审查)可能错过的错误。静态分析相对比较容易一些,不像单元测试那样必须为要测试的每个类重新编写测试,您可以在任何代码上运行静态分析工具。
FindBugs 是一种开放源码的静态分析工具,它包含用于许多常见 bug 模式的 bug 模式检测器,令人惊讶的是,即使在测试良好的软件中,FindBugs 也常常会发现一些 “沉默” 的 bug,但是单元测试和专业代码审查都可能错过这些 bug。FindBugs 还允许编写新的 bug 模式检测器,并将它们包装为插件,所以如果一组标准的检测器不能按您的需要执行,那么您可以很容易地编写自已的检测器。此扩展性使 FindBugs 成为非常强大的质量管理工具,因为当发现新类型的错误时,可以针对该错误编写检测器,并在整个代码基址中搜索该错误。
更多精彩
赞助商链接