参考:ysu老师课件(测试老师和软件工程老师的结合了一下)
本文章总结了控制流测试的知识点和习题练习,没有总结如何画控制流图,很简单,跟着思路走就行,但是要注意一定要画合并结点。
目录
路径覆盖
语句覆盖原则
判定覆盖(分支覆盖原则)
条件覆盖
谓词覆盖原则(条件组合覆盖)
生成测试输入
路径覆盖
路径覆盖的含义是,选取足够多的测试数据,使程序的每条可能路径都至少执行一次(如果程序图中有环,则要求每个环至少经过一次)。
路径覆盖要求设计足够多的测试用例,在白盒测试法中,覆盖程度最高的就是路径覆盖,因为其覆盖程序中所有可能的路径。
对于比较简单的小程序来说,实现路径覆盖是可能的,但是如果程序中出现了多个判断和多个循环,可能的路径数目将会急剧增长,以致实现路径覆盖是几乎不可能的。
总结:选取程序中所有可能(可执行)的路径。
比如上述图的部分输入与路径:
输入:<no,no,no>
路径:1-2-3(F)-8-9(F)-14-15(F)-9-21
输入:<yes,no,no>
路径:1-2-3(T)-4(F)-6-8-9(F)-14-15(F)-9-21
语句覆盖原则
选取路径,是的程序单元中所有的语句至少被执行一次(覆盖CFG中的所有结点)。
在程序测试中的完全语句覆盖是最弱的覆盖标准。
任何测试套件,如果对新程序的测试没有达到语句覆盖,则认为是不可接受的。
总结:选择测试数据,使被测程序中每个语句至少执行一次
分析:
取A=2,B=0,X=3,则 通过路径 acbed ,符合语句覆盖
所以测试用例取(2,0,3)
判定覆盖(分支覆盖原则)
每个语句至少执行一次,每个判定的真假分支至少执行一次。
每个条件取true和false各一次。
比语句覆盖强,但只覆盖一半路径
1.a 真 b也真 acbed (2,0,3)
2.a 假 b 也假 abd(3,1,1)
另外一组:
1.a 真 b假 acbd (3,0,1)
2.a 假 b真 abed (2,0,3)
条件覆盖
每个语句至少执行一次,判定表达式每个条件取各种可能结果。
为了做到条件覆盖,应该选取测试数据使得:
在a点有下述各种结果出现:
A>1,A<=1,B=0,B!=0;
在b点有下述各种结果出现:
A=2,A!=2,X>1,X<=1。
使用下面两组测试数据就可以达到上述覆盖标准:
A=2,B=0,X=4 (满足A>1,B=0,A=2,X>1)
A=1,B=1,X=1 (满足A<=1,B!=0,A!=2,X<=1)
谓词覆盖原则(条件组合覆盖)
使每个判定表达式中条件的各种组合都至少执行一次。
生成测试输入
1.输入向量
是所有读入例程的数据实体的集合,数据的值在进入例程前必须固定。
例程输入向量的一些不同的形式:
程序的输入参数、全局变量和常量、文件;汇编语言编程中寄存器内容;网络连接;定时器。
2.谓词
决策点的逻辑函数。
3.路径谓词
与一条路径相关的谓词集(包含谓词的真值)。
4.谓词解释
用输入向量和常量来表达谓词。
5.路径谓词表达式
由输入向量及可能的常量向量构成的约束集。
6.从路径谓词表达式生成输入数据
字面意思,从路径谓词表达式生成输入数据
笔记: