现阶段,随着软件开发过程的规范化,越来越多的软件公司加强了对软件测试的重视,希望通过测试,能够使发布的系统更安全、更稳定、更符合用户的需求。然而大家都知道,从理论上讲测试是永无止境的,只要不断测试就一定能不断发现问题。那究竟如何度量测试的进度,如何判断测试可以完结,这些,可以依靠测试覆盖率的分析来实现。
一、什么是测试覆盖
测试覆盖,是对测试完全程度的评测,是由测试需求和测试用例的覆盖或已执行代码的覆盖表示的。通过覆盖指标,就可以回答“测试的完全程度如何”这一问题。
二、最常用的覆盖评测
目前最常用的覆盖评测是基于需求的测试覆盖和基于代码的测试覆盖。简单的说,测试覆盖是就需求(基于需求的)或代码的设计/实施标准(基于代码的)而言的完全程度的任意评测,如已设定测试用例的核实(基于需求的)或所有代码行的执行(基于代码的)。
1、基于需求的测试覆盖
如果需求已经完全分类,则基于需求的覆盖策略可能足以生成测试完全程度的可计量评测。例如,如果已经确定了所有性能测试需求,则可以引用测试结果来得到评测,如已经核实了75% 的性能测试需求。基于需求的测试覆盖在测试生命周期中要评测多次,并在测试生命周期的里程碑处提供测试覆盖的标识(如已计划的、已实施的、已执行的和成功的测试覆盖)。
测试覆盖通过以下公式计算:
测试覆盖=T(p,i,x,x)/RfT
其中:
T是用测试过程或测试用例表示的测试(Test)数(已计划的、已实施的或成功的)。
RfT是测试需求(Requirement for Test)的总数。
在制订测试计划活动中,将计算测试覆盖以决定已计划的测试覆盖,其计算方法如下:
测试覆盖(已计划的)=Tp/RfT
其中:
Tp是用测试过程或测试用例表示的已计划测试(Test)数。
RfT是测试需求(Requirement for Test)的总数。
在实施测试活动中,由于测试过程正在实施中(按照测试脚本),在计算测试覆盖时使用以下公式:
测试覆盖(已执行的)=Ti/RfT
其中:
Ti是用测试过程或测试用例表示的已执行的测试(Test)数
RfT是测试需求(Requirement for Test)的总数。
在执行测试活动中,使用两个测试覆盖评测,一个确定通过执行测试获得的测试覆盖,另一个确定成功的测试覆盖(即执行时未出现失败的测试,如没有出现缺陷或意外结果的测试)。
这些覆盖评测通过以下公式计算:
测试覆盖(已执行的)=Tx/RfT