测试人员使用 PureCoverage
一个测试套件只是与它所包含的测试质量有同样的性能。那看起来很明显,但是仅仅是负担着重复的操作。如果它不能真正运行这个项目,就没有必要花费时间和资金来运行这个测试套件,即使能够通过它所有的测试。如果来自这个测试套件的结论不能真实地告诉您这个项目的质量,那么您只是在浪费时间和资源。
一种度量测试质量的方法是,了解它们所运行的这个项目的区域以及(更为重要的是)它们所错过的区域。只有了解了您的测试所覆盖的范围和漏洞,您才能够判断出测试结论的价值。没有工具,测试中的漏洞是很难识别的――一个测试的失败或者崩溃是很显然的,然而测试中的漏洞确是隐蔽的。如果您不度量您测试的覆盖范围,您会继续运行您的测试并看到它们都通过测试,但是从来不会知道您的覆盖水平(因此这个测试运行的价值)正在恶化。
PureCoverage 可以度量您的测试覆盖范围,并可以显示漏洞。它可以产生单线水平的报告;但是对于测试人员来说,在文档或者子目录水平通常是最容易捕捉、总结,并趋向覆盖数据的。这样可以识别在项目整个运行时间中覆盖较少范围的区域,可以显示测试的什么位置需要按行展开有代码变更和增添新特征的区域。
测试人员使用 Purify
从测试人员或者测试经理的角度来看, Purify 是他们梦想的工具,因为它可以让您从您完成的工作中获得更多的价值。毕竟,您已经拥有运行这个项目的测试,因为它让您可以从您正在从事的工作中获得更多的价值。毕竟,您已经拥有了运行这个项目的测试,验证了它的正确性,报告了它的质量。利用 Purify 运行那些测试,您可以使它们执行双份的任务。也就是说,当您的测试忙于执行通常所执行的同样的工作时,您还可以利用 Purify 来监控这个程序的执行来检测和报告内存的使用错误。
正如上面所提到的,许多内存使用错误都是潜伏的:程序似乎在正常地运行,即使它所面临着内存崩溃或者错误行为的危险。十分普遍地情况是,测试环境并没有最终的产品环境复杂,因此即使测试都通过了,程序也能够包含一个在发布版本后即将引起严重破坏的内存崩溃性的错误。Purify 可以通过同时检查内存访问错误来对您的现存正确性测试增加价值。
这里是另一种使 Purify 成为梦想工具的方法:它可以报告出错误,以完全或者简单的方式。有些工具生成出数据后,您需要花很多时间评审或者解释或者用图示表示出来,以查看结果。但是 Purify 并不是那样的。Purify 可以识别您所测试程序中的真实错误,并向您指出正确的。Purify 有两种类型:它们被用黄色的“警告”图标标出,那些红色的是“错误的”表示。“错误”类型很明显反映了这个程序逻辑中的缺陷: Purify 报告了一个程序的错误,那也正是您所想要的。
因为 Purify 对内存使用错误的分析是如此的彻底和完全,因此,即便在测试运行中 Purify 没有报告任何错误,它仍然也是很有价值的。当 Purify 不报告任何错误时,意味着这个程序(如测试的那样)并没有那些错误。这是一个好消息,即这是一个关于被测试项目高质量的正面陈述。
理所当然的是,这仅仅运用于 Purify 所发现的内存错误的类型,以及您的测试运用这个程序的方法。在这个程序中仍然可能存在内存错误,可能随着不同的代码路径发生,或者使用没有被测试的数据模型。
这就是为什么在测试中识别漏洞时,使用 PureCoverage 与使用 Purify 同样重要。如果整个测试套件运用这个程序时不能真正完成它的引导,那么一个通过 Purify 的等级也并没有很大意义。就像一个交通警察, Purify 可以仅仅报告在有人监控时所发生的错误行为。PureCoverage 可以让您识别测试中的漏洞,因此您可以填充这个漏洞并使用 Purify 来诊断问题。
测试人员使用 Quantify
测试不仅仅是与正确性有关的。项目质量的另一个因素是执行。即使这个软件通常运作地很好并且给了您正确的答案,如果它慢得让人难于忍耐您也不可能拥有高质量的产品。并不明显得是,性能可以从一个构架到另一个构架或者从一个发布版本到另一个发布版本发生变更,比如您开始时可以有很好的性能,但是也可能在中途的某个位置遗失了好的性能。
Quantify 让您能够度量项目的性能特征。您可以利用这个数据在整个过程中跟踪结果,辨认出从一个构架到另一个构架或者从发布版本到发布版本的性能。例如,想想您已经拥有一个服务器上测试,并且这个测试将带有标准数据包和事务序列。您可以利用 Quantify 来度量这个测试的性能,并且您可以在项目进展时对性能进行跟踪。证实新特征和代码变更并没有对整个性能产生严重影响是十分重要的。利用 Quantify 的 "图像偏差 1 " 特性,您可以利用函数调用关系图和 River of Time 来比较先前和当前的趋势,并重点突出新热点和时间陷阱。
如果一个测试套件含对 Quantify 度量特征的了解,它甚至能够缩小焦点来消除不重要的因素。例如,如果这个服务器要花费很长时间来启动,那么对于许多服务器应用软件来说就不重要:重要的启动之后事务性能的运行速率。一个 Quantify 知晓的测试可以使带有标准数据和事务的服务器“预热”(来填充这个缓存),然后使 Quantify 在完成所有事务之后开始数据交换。通过聚集连续事务的时间数据,这个数据可以消除一次的启动成本,对这个系统的核心性能是否以及怎样从一个构架到另一个构建或者一个发布版本到另一个发布版本进行变更有一个清晰的概念。
结论
事实是:开发人员和测试人员的想法不同。他们使用工具的方式也不同。他们的共同点是对质量的关注。这两种角色都能够从使用 Rational PurifyPlus 的使用过程中获得利益,因为它既是开发人员也是测试人员的工具――它是一个质量工具。
注释
1只有 Windows 版本的 PurifyPlus 才有这个“图像便查”特性。
参考资料
学习
您可以参阅本文在 develperWorks 全球网站上的 英文原文。
您可以参阅 Rational Edge 电子月刊中文版 的其他文章。
Goran Begic 和 Allan Pratt 所著的 "使用 Rational PurifyPlus 进行运行时分析的介绍" 发表在 Rational Edge 2007 年三月刊中:使用 Rational PurifyPlus 进行运行时分析的介绍。
IBM developerWorks 中的 Rational PurifyPlus 资源页面
讨论
参与论坛讨论。
现在开办了一个特别为 Rational Edge 的文章创办的 新论坛,现在您就可以分享您对本文或本期杂志或以前杂志中的其他文章的想法。 阅读世界各地您的同行们所说的内容,生成您自己的讨论,或者加入正在进行的讨论。单击 这里 开始。
全球 Rational 用户组社区
| 第1页: 低质量的成本 | 第2页: PureCoverage 组件 |
| 第3页: 测试人员使用 PureCoverage |