拓胜技术专家教你如何深入理解静态分析测试.docVIP

拓胜技术专家教你如何深入理解静态分析测试.doc

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
拓胜技术专家教你如何深入理解静态分析测试

对于许多团队来说,单元测试现在是开发过程的一个主要部分;JUnit 之类的框架可以进行无损测试,尽管我们并不喜欢它,宁愿为某些 代码编写某些 测试。单元测试运行效率很低,只能测试单个代码片段,并且,一般情况下,测试代码的重用性通常很也低 —— 昨天为组件 A 编写的测试不能很好地用于测试组件 B(示例代码除外)。 典型的单元测试场景 在发现 bug 时,要做的第一件事是什么?您可能只是想去修复它,但是,在长时间的运行中,这不是一个最有效的方法。在许多开发部门中,处理 bug 的过程如下: 针对 bug 编写测试用例 确保测试用例在遇到 bug 时运行失败 修复 bug 确保测试用例通过 确保其他测试套件仍能通过 检查修正和测试用例,形成版本控制 将修正记录在 bug 跟踪系统中 尽管此方法在短期内比仅修复 bug 要多做许多工作,但它提供了许多更有价值的东西:获得修复 bug 的更多信心,因为您已经对它进行了测试;获得 bug 将不会再出现的更多信心,因为测试用例是回归测试套件的一部分。在版本控制系统和 bug 跟踪系统之间,还可以获得一个记录,该记录描述了 bug 是什么以及如何修复它 —— 这是非常有用的信息,其他人会从中受益。 如果进取心较强,那么可以思考一下 bug 是怎样出现的,并在其他位置查找同一错误。如果在别处发现同一错误,那么可以对这些 bug 进行测试和修复。单元测试作为质量管理工具的主要弱点是每个测试用例只能测试一个代码片段。因为测试用例是专为每个组件和每个潜在错误模式设计的,所以只有编写足够多的单元测试才能测试大量的产品,这非常耗时并且代价高昂。 QA 经济 测试是一种基本的质量管理工具,我们知道仅有多组测试用例还不足以找出复杂软件片段中的所有 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 成为非常强大的质量管理工具,因为当发现新类型的错误时,可以针对该错误编写检测器,并在整个代码基址中搜索该错误。 静态分析的主要作用是分析输出,并确定报告的条目是真的 bug 还是假警报。编写的部分优秀分析工具或 bug 模式检测器会管理误报率;核心 FindBugs 包中的检测器已经进行了调优,目的是使误报率不超过 50 %,这样分析输出时不会有太多的烦麻。(将此阈值与针对 C 的 lint-like 工具进行比较,后者常常发出许多假警报,使用时相当耗时。) 将它提升一个级别 前面描述修复 bug 的方法(首先编写测试用例,然后检查修复和测试用例)反映了这样一个愿望:不仅要修复 bug,还要提高修复它的信心,并记录如何修复它,以及何时修复它。此方法比仅修复 bug 要多做许多工作,但是它给我们提供了更多的信心,我们的代码在经过多个开发人员的不断修改后可以继续使用。不过,仅为所发现的 bug 编写测试用例是一种消极方法。在代码失败之前,我们希望尽可能以最佳实践分析代码。 清单 1 通过

文档评论(0)

youshen + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档