白盒测试的代码覆盖和等价类设计

代码覆盖

被测试的程序

IF ((A > 1) AND (B == 0)) THEN
	X = X / A
IF ((A == 2) OR (X > 1) THEN
	X = X + 1

语句覆盖

定义:程序中的每条可执行语句都能被执行到

A=2, B=0, X=4

判定覆盖,也叫分支覆盖

定义:程序中每个判断语句的的真值和假值至少执行一次。每个判定有T有F

测试输入判定1: (a > 1) && (b == 0)判定2: (a == 2) || (x > 1)
{a=2, b=0, x=2}TT
{a=1, b=1, x=1}FF

满足判定覆盖的一定可以满足语句覆盖

条件覆盖

定义:程序中每个条件的真值和假值至少执行一次。即( A > 1),( B = =0 ),( A == 2), ( X > 1 )都至少一次真假,每个条件有T有F

{a=1, b=0, x=3}{a=2, b=1, x=1}
判定1: (a > 1) && (b == 0)条件1 : a > 1FT
条件2: b == 0TF
判定1的结果FF
判定2: (a == 2) || (x > 1)条件3: a == 2FT
条件4: x > 1TF
判定2的结果TT

条件覆盖不能保证判定覆盖。

判定/条件覆盖

定义:每个判定的真值和假值至少执行一次,并且每个条件的真假和假值也至少执行一次。
每个判定和条件有T有F。

{a=2, b=0, x=4}{a=1, b=1, x=1}
判定1: (a > 1) && (b == 0)条件1 : a > 1TF
条件2: b == 0TF
判定1的结果TF
判定2: (a == 2) || (x > 1)条件3: a == 2TF
条件4: x > 1TF
判定2的结果TF

条件组合覆盖

定义:每个判定的条件取值组合至少能被覆盖一次。
对条件进行排列组合

{a=2, b=0, x=2}{a=2, b=1, x=1}{a=1, b=0, x=2}{a=1, b=1, x=1}
判定1: (a > 1) && (b == 0)条件1 : a > 1TTFF
条件2: b == 0TFTF
判定1的结果取值TFFF
判定2: (a == 2) || (x > 1)条件3: a == 2TTFF
条件4: x > 1TFTF
判定2的结果取值TTTF

路径覆盖

定义:程序中每条路径都能尽量被覆盖至少一次。路径覆盖不一定满足条件组合覆盖。

{a=2, b=0, x=2}{a=2, b=1, x=1}{a=1, b=0, x=1}{a=3, b=0, x=1}
判定1: (a > 1) && (b == 0)条件1 : a > 1TTFT
条件2: b == 0TFTT
判定1的结果取值TFFT
判定2: (a == 2) || (x > 1)条件3: a == 2TTFF
条件4: x > 1TFFF
判定2的结果取值TTFF
覆盖路径abdacdaceabe

六种覆盖技术从弱到强的排列顺序是:

语句覆盖->判定覆盖->条件覆盖->判定-条件覆盖->条件组合覆盖->路径覆盖

等价类设计

有效等价类

对于程序的规格而言是有意义、合理的数据输入的集合,用于测试程序是否实现了规格说明中约定的功能和性能要求。

无效等价类

对于程序的规格说明而言是不合理的数据输入,用于测试程序是否能经受得起非法输入的考验。

原则

原则1:输入条件是一个布尔量,可获得一个有效等价类和一个无效等价类。

有效等价类无效等价类
1:高电平0:低电平

原则2:输入条件规定的取值范围是一个闭合区间,可获得一个有效等价类和两个无效等价类;如果取值范围为开区间,则可获得一个有效等价类和一个无效等价类

有效等价类无效等价类
0 <= 索引范围 <=99索引范围 < 0
索引范围 >99

原则3:输入条件规定了输入数据必须遵守的规则,可获得一个符合所有规则的有效等价类和若干个从不同角度违反规则的无效等价类

有效等价类无效等价类
长度为6位的全数字组合长度大于6位的全数字组合
长度小于6位的全数字组合
非全数字组合

原则4:输入条件规定了输入数据的一组n个值且分别处理,可获得n个有效等价类和一个无效等价类

有效等价类无效等价类
硕士生其他人员
博士生

等价类设计

某网管用户登录界面要求输入用户ID和密码才能登录,对该用户登录功能进行测试。

用户ID、密码要求不能为空。

用户ID为4位数字,不能以“0”开头;

用户密码为6位数字,不能以“0”开头。

有效等价类等价类编号无效等价类等价类编号
用户ID非空1为空7
数字2非数字8
4位数字3小于4位数字9
大于4位数字10
不能以0开头以0开头15
密码非空4为空11
数字5非数字12
6位数字6小于6位数字13
大于6位数字14
不能以0开头以0开头16

第一步:设计用例,覆盖尽可能多的有效等价类

用例ID用户ID用户密码覆盖有效等价类编号
123457625321,2,3,4,5,6

第二步:设计用例,使其只覆盖一个等价类

用例ID用户ID用户密码覆盖无效等价类编号
27625327
3Ad343324328
42133243559
52346711532110
6122211
71222Yta2ds12
812221234513
91222123456714

设计一个新的测试用例,使其尽可能多的覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖

设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖

也就是说,设计无效等价类用例的时候,每次只满足一个无效等价类,不可以同时满足多个无效等价类,遵从单一原则

边界测试的用例设计

边界值测试用例的设计思路
字符起始-1个字符/结束+1个字符假设一个文本输入区域允许输入1个到255个字符,输入1个和255个字符作为有效等价类;输入0个和256个字符作为无效等价类,这几个数值都属于边界条件值。
数值最小值-1/最大值+1假设某软件的数据输入域要求输入5位的数据值,可以使用10000作为最小值、99999作为最大值;然后使用刚好小于5位和大于5位的 数值来作为边界条件。
空间小于空余空间一点/大于满空间一点例如在用存储数据时,使用比剩余磁盘空间大一点(几KB)的文件作为边界条件。
阈值小于阈值一点/大于阈值一点例如系统运维监控告警系统提供磁盘利用率告警功能,比阈值(95%)小一点94.9%和95.1%作为边界条件
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值