200 likes | 340 Views
软件测试技术与质量保证. 主讲人:徐丽. 1.5 白盒测试用例设计. 白盒测试也称结构测试(逻辑驱动测试、基于程序的测试),它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,是针对源程序实现的测试。. s. 入口. t. (y > 1) and (z = 0). x = x / y. c. a. f. t. (y = 2) or (x > 1). x = x + 1. e. b. f. 返回. d. void example(int y, int z, int x) {
E N D
软件测试技术与质量保证 主讲人:徐丽
1.5 白盒测试用例设计 白盒测试也称结构测试(逻辑驱动测试、基于程序的测试),它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,是针对源程序实现的测试。
s 入口 t (y > 1) and (z = 0) x = x / y c a f t (y = 2) or (x > 1) x = x + 1 e b f 返回 d void example(int y, int z, int x) { if (y > 1 && z == 0) x = x / y; if (y == 2 || x > 1) x = x + 1; } 例题
s 入口 t (y > 1) and (z = 0) x = x / y c a f t (y = 2) or (x > 1) x = x + 1 e b f 返回 d 1.语句覆盖
答案:只要选择满足条件y=2,z=0的一组(x,y,z)作为测试用例,即可对该子程序的每个语句都执行一次。答案:只要选择满足条件y=2,z=0的一组(x,y,z)作为测试用例,即可对该子程序的每个语句都执行一次。 例如:x = 4, y = 2, z = 0, 预期结果x = 3。
s 入口 t (y > 1) and (z = 0) x = x / y c a f t (y = 2) or (x > 1) x = x + 1 e b f 返回 d 2.判定覆盖
图中有两个判定a和b,满足判定覆盖的测试路径可以有多种。图中有两个判定a和b,满足判定覆盖的测试路径可以有多种。 例1:sacbd和sabed就满足覆盖标准。 (1)x = 3, y = 3, z = 0 (判定a为真,判定b为假) (2) x = 1, y = 2, z = 1 (判定a为假,判定b为真) 例2:sacbed和sabd也满足覆盖标准。
s 入口 t (y > 1) and (z = 0) x = x / y c a f t (y = 2) or (x > 1) x = x + 1 e b f 返回 d 3.条件覆盖
(1)判定a的各种条件的所有可能结果为: y>1, y≤1, z=0, z≠0 (2)判定b各种条件的所有可能结果为: y=2, y≠2, x>1, x≤1 例如: (1) x = 1, y = 2, z = 0 (执行路径sacbed,满足y>1,z=0,y=2, x≤1) (2) x = 2, y = 1, z = 1 (执行路径sabed,满足y≤1,z≠0,y≠2 ,x>1)
s 入口 t (y > 1) and (z = 0) x = x / y c a f t (y = 2) or (x > 1) x = x + 1 e b f 返回 d 4.判定/条件覆盖
判定的所有可能结果及每个判定的每个条件的所有可能结果都至少出现一次。判定的所有可能结果及每个判定的每个条件的所有可能结果都至少出现一次。 例如: (1) x = 4, y = 2, z = 0 (执行路径sacbed,满足y>1,z=0,y=2, x>1,判定a为真,判定b为真) (2) x = 1, y = 1, z = 1 (执行路径sabd,满足y≤1,z≠0,y≠2 ,x≤1,判定a为假,判定b为假)
s 入口 t (y > 1) and (z = 0) x = x / y c a f t (y = 2) or (x > 1) x = x + 1 e b f 返回 d 5.条件组合覆盖
判定a中的所有可能组合: (1) y>1, z=0 (2)y>1,z≠0 (3) y≤1,z=0 (4)y≤1,z≠0 判定b中的所有可能组合: (5) y=2,x>1 (6) y=2,x≤1 (7) y≠2,x>1 (8)y≠2,x≤1 例如: x=4, y=2, z=0,执行sacbed,覆盖(1)(5) x=1, y=2, z=1,执行sabed, 覆盖(2)(6) x=2, y=1, z=0,执行sabed, 覆盖(3)(7) x=1, y=1, z=1,执行sabd, 覆盖(4)(8)
s 入口 t (y > 1) and (z = 0) x = x / y c a f t (y = 2) or (x > 1) x = x + 1 e b f 返回 d 6.路径覆盖
图中所有可能的路径有四条:sacbed,sacbd,sabed,sabd。图中所有可能的路径有四条:sacbed,sacbd,sabed,sabd。 例如: (1)x=4, y=2, z=0, 执行sacbed (2)x=3, y=3, z=0, 执行sacbd (3)x=2, y=1, z=0, 执行sabed (4)x=1, y=1, z=1, 执行sabd
关于覆盖标准的讨论 在逻辑覆盖中,语句覆盖发现错误的能力最弱,一般不单独采用。
判定覆盖与条件覆盖的区别 前者把判定看成一个整体,后者则着眼于其中的一个条件。当一个判定只含一个条件时,判定覆盖也就是条件覆盖。但如果一个判定含有一个以上的条件(复合条件),采用判定覆盖又可能出现如下所述的漏洞,即判定中有些条件得到测试,另一些条件却被忽略,从而掩盖程序的错误。
条件覆盖要求对每一个条件进行单独的检查,一般地说它的查错能力比判定覆盖更强,但也并不尽然。有时条件覆盖覆盖不了分支。把判定覆盖和条件覆盖的要求汇集于一身的判定/条件覆盖,正是为了弥补条件覆盖的这一不足。条件覆盖要求对每一个条件进行单独的检查,一般地说它的查错能力比判定覆盖更强,但也并不尽然。有时条件覆盖覆盖不了分支。把判定覆盖和条件覆盖的要求汇集于一身的判定/条件覆盖,正是为了弥补条件覆盖的这一不足。
条件组合覆盖在5种逻辑覆盖中发现错误的能力最强。凡满足条件组合覆盖的测试数据,也必然满足其余4种覆盖标准。条件组合覆盖在5种逻辑覆盖中发现错误的能力最强。凡满足条件组合覆盖的测试数据,也必然满足其余4种覆盖标准。