技术开发 频道

白盒测试技术——方法与实践篇

  二、 白盒测试评估

  1、测试完备性评估,主要检查测试过程中是否已经执行了所有的测试用例,对新增的测试用例是否已及时更新测试方案等。

  2、代码覆盖率评估,主要是根据代码覆盖率工具提供的语句覆盖情况报告,检查是否达到方案中的要求,公司要求语句覆盖达到100%。但很多情况下,第一轮测试用例执行完后是很难达到的,这时在评估过程中要对覆盖率进行分析,主要从以下方面来考虑:

  1)不可能的路径或条件

  2)不可达的或冗余的代码

  3)不充分的测试用例

  3、从覆盖的角度看,测试应该覆盖:

  1)功能覆盖

  2)输入域覆盖

  3)输出域覆盖

  4)函数交互覆盖

  5)代码执行覆盖

  大多数有效的测试用例都来自于分析,而不是仅仅为了达到测试覆盖率目标而草率设计测试用例。千万不要误解测试覆盖,测试覆盖并不是我们最求的目的,它只是评价测试的一种方式,为测试提供指导和依据。

  4、测试覆盖程度评估:

  ● 位置无关调用覆盖率(Location-independent call coverage,LICC)

  LICC = (已覆盖的不重复的函数调用个数 / 全部不重复的函数调用个数) * 100%

  ● 位置相关调用覆盖率(Location-dependent call coverage,LDCC)

  LDCC = (已覆盖的函数调用个数 / 全部函数调用个数) * 100%

  案例:

  void Func(int i)

  {

  call1();

  if(i==2)call2();

  else if((i==3)call3();

  else call1();

  }
 


  调用Func(2)和Func(3)后我们对Func()的覆盖评估如下:

  LICC:3/3 = 100%

  LDCC:3/4 = 75%
 


  5、测试设计程度评估:

  测试设计程度也称用例覆盖度(Test Case Coverage,TCC),以被测函数在正式测试中使用频度与其函数定义中分支总数之间关系作为依据,定义如下:

  TCC = 用例中调用被测函数的总次数 / 函数定义的分支总数

  其中,某函数的分支总数的定义如下:函数分支总数 = 1 + if语句总数 * 2 + while语句总数 * 2 + for语句总数 * 2 ,if语句有TRUE与FALS两个分支,原理上说应该设计两次测试才是完整的,while与for也类似,循环至少进入一次应设计一个用例,一次都不进入也应设计一个用例,所以计算出if、while与for语句总数后要乘以2,但如果一个函数没使用这3个控制语句,也应至少设计一个用例测试它,这是上面公式额外加上1的含义。

0
相关文章