【转】路径测试

结构性测试是基于被测程序的源代码,而不是定义,也就是所谓的白盒测试,而功能性测试也就是所谓的黑盒测试。
1. 路径测试

程序图:对于采用命令式程序设计语言编写的一段程序,其程序图是一种有向图,图中的节点表示语句片段,边表示控制流。
DD-路径:决策到决策路径,从决策语句的出路开始,到下一个决策语句的结束,在此路径中没有内部分支,DD-路径是单入口,单出口的节点链. 它其实就是一系列的语句序列,在这个序列当中的每个结点的入度和出度都是1。
当然这只是基于长链的DD路径,DD路径还有其他情况

情况1. 由一个节点组成,内度=0
情况2. 由一个节点组成,外度=0
情况3. 由一个节点组成,内度>=2或外度>=2
情况4. 由一个节点组成,内度=1并且外度=1
情况5. 长度>=1的最大链

以上定义运用于以下程序图:

情况1:节点4
情况2:节点23
情况3:节点9,节点12,节点13,节点14,节点16,节点19,节点20,节点22
情况4:节点10,节点11,节点15,节点17,节点18
情况5:节点5~节点8

DD-路径图:有向图,其中,节点表示其程序图的DD-路径,边表示连续DD-路径之间的控制流,上图的DD-路径图形式上,仅仅是将节点5~节点8合并为一个节点,所以DD-路径图是一种压缩图。
测试覆盖指标:

C0 :所有语句
C1 :所有DD-路径
C1p :所有判断的每种分支
C2 :C1+循环覆盖
C0 :C1+DD-路径的所有依赖对偶
Cmcc :多条件覆盖
Cik :包含最多k次循环的所有程序路径(通常k=2)
Cstat :路径具有“统计重要性”的部分
C∞ :所有可能的执行路径

测试覆盖指标注解:

语句与判断测试
语句对应C0, if…then…else… 为一语句
判断对应C1,if…或then…或else… 为一DD-路径
DD-路径测试
同上面的判断测试,即覆盖每一条DD-路径
DD-路径的依赖对偶
涉及到数据流测试,DD-路径依赖对偶之间的最常见的依赖关系是定义/引用关系,其中变量在一个DD-路径中定义,在另一个DD-路径中引用。这种依赖关系的重要性在于他们与不可行路径问题有关。
多条件覆盖
对于在多个判断条件制约下的DD-路径,多条件覆盖意味着多个判断条件的不同组合,而非普通的DD-路径覆盖,可将多个复合判断条件(if ( … && … || … ))转换为多个简单判断条件(if … else … then …),所以多条件覆盖会产生更多的测试用例。
循环覆盖
三种循环:简单循环,嵌套循环,复杂循环(从一个循环内部跳入到或者跳出到另一个循环内部),对于简单和嵌套循环,可采用压缩图的办法,对于复杂循环,最简单的测试观点是认为每个循环都包含一个判断,并且需要测试判断的两个分支(继续遍历循环和退出循环)

2. 基路径测试

基路径测试:把程序看做是一种向量空间,则这种空间的基就是要测试的非常有意义的元素几何,如果基没有问题,则可以希望能够用基表述的一切都没有问题。
线性独立路径:对于任意的有向图,通过从汇接点到源节点添加一条边实现到强连接有向图的转换,但不会影响线性独立路径数。对强连接图,V(G)线性独立路径数 = e边数-n节点数+p连接区域数 = 11 – 7 + 1 = 5.

McCabe基路径算法:

1. 选择含有尽可能多的判断节点的路径:ABCBEFG
2. 依次回溯基线路径(自上而下):ADEFG, ADFG, ABEFG, ABCG
3. 分析以上第1步和第2步中得到的所有路径,分析并去除不可行路径,此例中所有路径都是可行的。

你可能感兴趣的:(misc)