软件测试用例(白盒).ppt
实用软件测试培训 测试方法 软件结构测试方法 白盒法考虑的是测试用例对程序内部逻辑的覆盖程度。最彻底的白盒法是覆盖程序中的每一条路径,但是由于程序中一般含有循环,所以路径的数目极大,要执行每一条路径是不可能的,只能希望覆盖的程度尽可能高些。 为了衡量测试的覆盖程度,需要建立一些标准,目前常用的一些覆盖标准从低到高分别是: 语句覆盖。 判定覆盖。 条件覆盖。 判定/条件覆盖。 条件组合覆盖 语句覆盖:就是设计若干个测试用例,运行所测程序,使得每一条可执行语句至少执行一次。 判定覆盖(或称分支覆盖) :执行足够的测试用例,使得程序中的每一个分支至少都通过一次。 条件覆盖”:执行足够的测试用例,使得判定中的每个条件获得各种可能的结果。 判定/条件覆盖:执行足够的测试用例,使得判定中每个条件取到各种可能的值,并使每个判定取到各种可能的结果。 条件组合覆盖:执行足够的例子,使得每个判定中条件的各种可能组合都至少出现一次。 一个程序模块的例子 一个程序模块的例子 4条路径应该满足的逻辑表达式分别为: 设定:M={(A>1)and(B=0)};N={(A=2)or(X/A>1)},”/M”表示M的反,”/N”表示N的反 L1(a→c→e)= M and N = {(A>1)and(B=0)}and {(A=2)or(X/A>1)} L2(a→b→d)=/M and /N = {(A>1)and(B=0)}and {(A=2)or(X/A>1)} L3(a→b→e)=/M and N = {(A>1)and(B=0)}and {(A=2)or(X/A>1)} L4(a→c→d)= M and /N = {(A>1)and(B=0)}and {(A=2)or(X/A>1)} 由符号”and”连接起来的语句是为了遍历这条路径各个输入变量应取值的范围,而由”or”划分了几组可选的取值。 根据上面的逻辑表达式,就可以用来设计测试用例了。 语句覆盖 语句覆盖就是设计若干个测试用例,运行所测程序,使得每一条可执行语句至少执行一次。 结合上面的例子,所有可执行语句就在路径L1上,所以选择路径L1来设计测试用例,就能覆盖所有的可执行语句。 测试用例的设计格式如下: [输入的(A,B,X),输出的(A,B,X)] 为覆盖路径: L1(a→c→e)= M and N。 能够设计的测试用例: [(2,0,4),(2,0,3)],覆盖ace[L1]。 语句覆盖 在程序中执行每一段的语句 if (condition) { DO_SOMETHING; } 把条件 condition 设为真的测试案例,就能全覆盖上面的语句 语句覆盖并不意味着执行每一行的语句 语句覆盖 优点 最简单的结构测试覆盖 易于自动化 易于实现大量的代码覆盖 缺点 语句覆盖所用标准是结构测试里最弱的 仅测试条件语句的一方面 判断覆盖 所谓判断覆盖就是运行所测程序,使得程序中每个判断取“真”的分支和取“假”的分支至少经历一次,判断覆盖又称为分支覆盖。 我们依然结合开始的例子。 如果选择路径L1和L2,可得到如下的测试用例: [(2,0,4),(2,0,3)],覆盖ace[L1] [(1,1,1),(1,1,1)],覆盖abd[L2] 如果选择路径L3和L4,可得到如下的测试用例: [(2,1,1),(2,1,2)],覆盖abe[L3] [(3,0,3),(1,1,1)],覆盖acd[L4] 条件覆盖 一个判定中往往包含了若干个条件,例如程序中,判定 (A>1) AND (B=0)包含了两个条件: A>1以及 B=0,所以可引进一个更强的覆盖标准——“条件覆盖”。 “条件覆盖”的含义是:执行足够的测试用例,使得判定中的每个条件获得各种可能的结果。 ??? 程序有四个条件: A>1、 B=0、A=2、X>1 为了达到“条件覆盖”标准,需要执行足够的测试用例使得在a点有: A>1、A≤1、B=0、B≠0 等各种结果出现,以及在b点有: A=2、A≠2、X>1、X≤1 等各种结果出现。 判断-条件覆盖 针对上面的问题引出了另一种覆盖标准——“判定/条件覆盖”,它的含义是:执行足够的测试用例,使得判定中每个条件取到各种可能的值,并使每个判定取到各种可能的结果。 判断-条件覆盖 “判定/条件覆盖”似乎是比较合理的,但事实并非如此,因为大多数计算机不能用一条指令对多个条件作出判定,而必须将源程序中对多个条件的判定分解成几个简单判定,所以较彻底的测试应使每一个简
459

被折叠的 条评论
为什么被折叠?



