静态度量
被测组件(CUT)的详细静态分析度量可以帮助您决定如何将测试按优先顺序排列。有一些用来分析组件体系结构、组件复杂程度和测试覆盖率的度量。
在选择了用来组成 CUT 的源文件之后,静态度量便显示在“新建 Java™ 组件测试”向导中。在此阶段,可以对数据进行排序,也可以隐藏和显示数据,以便确定最佳测试策略:
体系结构度量:依赖性级别、内部使用、外部使用和外部用户。这些度量用来衡量诸如方法调用、继承或变量使用等关系的复杂程度。
组件复杂程度度量:属性、方法、语句和 V(g)。这些度量用来衡量源代码的控制流的复杂程度。
测试覆盖率度量:行数和测试数。测试覆盖率度量指示代码是否需要进一步进行测试。行数显示测试涉及到的代码行所占的百分比。测试数指示直接使用类的方法的测试数目。
使用度量来计划测试
您可能会发现下列建议对于计划测试很有用:
重点测试将提供最高覆盖率的组件。“外部使用”度量表示使用在类的外部定义的方法或属性的次数。此度量可以很好地指示对覆盖率有很大影响的那些类。通过测试“外部使用”分数很高且无需创建任何存根的类,使您可以快速测试占很大百分比的代码。另一方面,如果对那些类进行严格的单元测试(使用存根来隔离组件),则需要执行大量工作来创建许多存根。
重点测试起关键作用的组件。让我们以诸如“内部使用”或“外部用户”度量为例,“内部使用”度量是指一个类中的公用属性数加上公用方法数;而“外部用户”度量是指使用该类的属性或方法的外部组件数。如果任何更改都是针对类进行的,则这些值越大,回归的风险就越大。因此,应该充分测试这些类。
重点测试最复杂的组件。复杂程度指示器主要是圈复杂度(V(g))和代码中的“语句”数。通常,V(g) 的变化范围是 1 到 10,如果它的值为 1,则表示代码没有分支。
即使您逐个测试类的所有方法,也务必定义类级别测试。但是这并不意味着需要测试每个类。例如,如果您具有紧耦合的一些类用来测试一个类,您需要为所有其它类创建存根,则可以考虑同时测试具有 3 到 10 个类的一个小集群。
标识应该作为一个整体来测试的子系统或大集群。当子系统满足下列任一条件时,就应该将它作为一个整体来测试:
需要将您的类具有的相互依赖性传递给另一个开发者。
您具有一些互相交互的类,而在类级别测试期间已经为其它类创建了存根。
使用“级别”指示符来评估应用程序的调用图中某个类的依赖性级别。
一旦执行了第一系列的测试,行覆盖率(“行数”度量)和应用于组件的测试数(“测试数”度量)就允许您标识先前测试尚未充分涉及到的任何组件。
注:
仅当先前已在使用概要分析的情况下运行了组件测试时,才计算行覆盖率度量。
相关参考
静态度量参考
组件测试静态度量首选项