结构性测试(1)控制流测试
结构性测试
结构性测试方法的突出特点,是它们都基于被测程序的源代码,而不是基于定义
由于这种绝对化的基础,结构性测试方法支持严格定义、数据分析和精确度量
结构性测试方法大致包括两类:
基于控制流(或基于路径)的测试:以程序图为基础(结点表示语句片断,边表示控制流),通过图论的一些知识完全从程序的结构来定义结构性的测试,而不考虑代码本身的内在关系
基于数据流的测试:从代码本身的内在关系出发进行的一种结构性的测试
内容
逻辑覆盖
语句覆盖
判定覆盖(分支覆盖)
条件覆盖
判定-条件覆盖
条件组合覆盖
路径覆盖
DD路径
基路径测试
例:实现一个简单的数学运算
int a,b;
double c ;
scanf(“%d,%d,%f”,&a,&b,&c)
If (a>0 And b>0)
c=c/a;
If (a>1 or c>1)
c=c+1;
c=b+c
语句覆盖
基本思想是:设计若干测试用例,运行被测程序,使程序中每个可执行语句至少执行一次。
1
只需设计一个测试用例:a=2,b=1,c=6,即达到了语句覆盖。
语句覆盖(续)
语句覆盖(续)
优点:可以很直观地从源代码得到测试用例,无须细分每条判定表达式。
缺点:语句覆盖是最弱的逻辑覆盖。对程序的逻辑覆盖很少,只关心判定表达式的值,而没有分别测试判定表达式中每个条件取不同值时的情况。(这种方法仅仅针对程序逻辑中显式存在的语句,但对于隐藏的条件是无法测试的。比如在if结构中若源代码没有给出else后面的执行分支,那么语句覆盖测试就不会考虑这种情况。)
判定覆盖
基本思想是:设计若干测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足。
判定覆盖(续)
a=2,b=1 ,c=6可覆盖判断M的Y分支和判断Q的Y分支
a=-2,b=-1 ,c=-3可覆盖判断M的N分支和判断Q的N分支
这两组测试用例可覆盖所有判定的真假分支
判断M
判断Q
4-1结构性测试-控制流测试 来自淘豆网www.taodocs.com转载请标明出处.