软件白盒测试技术——方法与实践篇[3]

发表于:2010-01-15来源:作者:点击数: 标签:实践篇白盒软件技术
软件 白盒测试 技术——方法与实践篇[3] 软件测试方法 3、从覆盖的角度看,测试应该覆盖: 1)功能覆盖 2)输入域覆盖 3)输出域覆盖 4)函数交互覆盖 5)代码执行覆盖 大多数有效的 测试用例 都来自于分析,而不是仅仅为了达到测试覆盖率目标而草率设计测试用例

  软件白盒测试技术——方法与实践篇[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的含义。

  三、白盒测试推行

  前提条件

  ● 思想上的统一

  质量部门及项目责任人足够重视,将单元测试输出列为与代码输出同等重要地位。

  ● 完备的流程支撑

  主要指设计文档的完备性,比如《详细设计说明书》,因为《详细设计说明书》是白盒测试的重要依据。

原文转自:http://www.ltesting.net