单元测试:需求覆盖与逻辑覆盖

上一篇 / 下一篇  2011-10-31 11:00:12 / 个人分类:测试技术

单元测试一般分为两个主要阶段:需求覆盖,逻辑覆盖(又称为结构覆盖,代码覆盖)。

需求覆盖

需求覆盖主要是对照软件的详细设计文档,对被测单元功能性的规格属性进行测试,不关心被测单元内部结构,主要关注输入和输出满足设计需求。此阶段测试用例设计主要有两种方法:1.等价类划分。2.边界值分析。类似于软件的功能测试用例设计方法。

逻辑覆盖

在完成了被测单元的需求覆盖之后,再对被测单元进行逻辑覆盖,此时就要关系被测单元的内部结构和代码逻辑,根据被测单元的详细设计文档中描述的流程图(若有的话)对被测单元进行不同程度的覆盖。按照覆盖程度从低到高主要以下几种覆盖方式:

1.语句覆盖:覆盖每一条语句。

2.分支覆盖:覆盖每一个分支;如:A&&B||C,可以设计两个用例(111)和(000)。

3.条件覆盖:覆盖每一个条件,如:A&&B||C,可以设计两个用例(111)和(000)。

4.分支条件覆盖:覆盖每一个条件和每一个分支,如:A&&B||C,可以设计两个用例(111)和(000)。

5.MCDC/修正的分支条件覆盖:覆盖每一个条件和每一个分支,并且,每一个条件都要单独决定分支的去向。如:A&&B||C,可以设计4个用例:针对A条件设计用例(110)和(010),针对B条件设计用例(110)和(100),针对C条件设计用例(100)和(101),去掉两个重复的用例(110)和(100),最后得到:(110)(010)(100)(101)。

6.路径覆盖:覆盖被测单元的所有路径,一般为简单路径覆盖,对于循环只覆盖有限次(0次和1次),简单路径个数等于圈复杂度,用例设计思路为:首先选择第一条路径,其后选择的每条路径都要包含一条前面的路径没有包含的分支路径,直至所有分支路径都被选择。

根据软件重要程度和测试需求的不同,选取不同的逻辑覆盖程度。在实际的应用中,常用的覆盖方式主要包含:语句覆盖,分支覆盖,MCDC覆盖;而条件覆盖、分支条件覆盖和路径覆盖因为种种限制和原因实际使用并不是很多。

另外,在实际的执行过程中,为了减少冗余的工作,需求覆盖所覆盖的代码通常都是计算在逻辑覆盖中的,需求覆盖所覆盖的内容无需再在逻辑覆盖中重复进行。


TAG:

 

评分:0

我来说两句

Open Toolbar