3.2 基于输入域的测试方法
3.2.1 等价类测试方法
等价类:某个输入域的子集,在该子集中每个输入数据的作用是等效的。分为有效等价类和无效等价类。
(1)有效等价类
合理、有意义的输入数据构成的集合,即被测对象能接受的数据。用于考查软件的正常工作能力
(2)无效等价类
不合理、无意义的输入数据构成的集合,即被测对象不能接受的数据。用于考查软件的容错能力。
将输入数据分成若干个子集,从每个子集选取一个代表性的数据作为测试用例。
设计测试用例时,要同时考虑有效和无效两种等价类。因为软件不仅要能接收合理的数据,也要能经受异常数据的考验。经过正反的测试才能确保软件具有更高的可靠性。
确定等价类的方法:
- 在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。
- 在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可以确立一个有效等价类和一个无效等价类。
- 在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。
- 在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。
- 在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
判断等价类中所有数据是否完全等价的简便原则:
在某个指定的等价类中,被测对象对该等价类中的输入数据或输入项的处理方式是否一致,如果不一致,则该等价类需要进一步做等价划分
根据等价类创建测试用例的步骤
①建立等价类表,列出所有划分出的等价类:
②为每个等价类规定一个唯一的编号;
③设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类
④重复③,最后使得所有有效等价类均被测试用例所覆盖;
⑤设计一个新的测试用例,使其只覆盖一个无效等价类。
⑥重复⑤使所有无效等价类均被覆盖。
测试用例的完整性划分
完整性从弱到强排序:弱一般等价类测试、弱健壮等价类测试。强一般等价类测试、强健壮等价类测试。下面逐一定义。
-
弱一般等价类:遵循单缺陷原则,要求用例覆盖每一个变量的一种取值即可,取值为有效值。
-
弱健壮等价类:在弱一般等价类的基础上,增加取值为无效值的情况。“健壮”意味着程序要有容错性,取到无效值也要正确识别出来。对于有效输入,使用每个有效值类的一个值。对于无效输入,测试用例将拥有一个无效值,并保持其余的值是有效的。
-
强一般等价类:遵循多缺陷原则,要求用例覆盖每个变量的每种取值之间的迪卡尔乘积,即所有变量所有取值的所有组合,取值为有效值。例如变量X有3个等价类,变量Y有2个等价类,那么应设计3*2共6个用例。要覆盖所有的有效等价类组合。
-
强健壮等价类:在强一般等价类的基础上,增加取值为无效值的情况。(不仅取单个无效值,也要取多个无效值。)
例1:有关三角形判定的例子。我们也将等价类分为有效类和无效类两类来进行讨论。如图所示共有20种情况:
从而确定并得出测试用例如图所示:
例2:第二日问题
- 第一次划分尝试
等价划分:
无效等价类的测试用例:
有效等价类的测试用例:
- 第二次划分尝试;
等价划分:
测试用例:
要考虑测试用例中不存在的情况(独立性假设所产生的冗余):
若针对整体输入域:对输入对象施加条件:
总结:
- 目标:从理论上追求测试的完备性和无冗余性
- 基于:独立性假设和单缺陷假设
- 当等价划分不合理(即存在漏洞时),将导致测试用例的漏洞;
- 当输入条件之间存在关联时,若基于个体输入域进行测试,将导致测试用例的冗余。
3.2.2 边界值分析方法(BVA – Boundary Value Analysis)
设计方法:
1.确定边界情况(输入或输出等价类的边界)。
2.选取正好等于、刚刚大于或小于边界值作为测试数据。
确定边界值的方法:
-
如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。
-
如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少一、比最大个数多一的数作为测试数据。
-
如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
-
如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。
在边界值是在有效类的边界上选取
例1:
例2:
例3:佣金问题
某酒水销售公司指派销售员销售各种酒水,其中白酒、红酒和啤酒的单价分别为168元/瓶、 120元/瓶、5元/瓶。
每个销售员,白酒每月的最高供应量为5000瓶,红酒为3000瓶,啤酒为30000瓶
各销售员每月至少需售出白酒50瓶,红酒30瓶,啤酒300瓶
月末,各销售员向酒水销售公司上报他所在区域的销售业绩,酒水销售公司根据其销售额计算该销售员的佣金,并作为奖金发放
销售员的佣金计算方法如下:
2万元以下(含):4%;
2万元(不含)~4.5万元(含):1%;
4.5万元以上(不含):0.5%。
最终将由佣金计算系统生成月销售报告,对当月售出的白酒、红酒和啤酒总数进行汇总,并计算销售公司的总销售额和各销售员的佣金。
边界点:1.35为每月最少销售额度
针对输出域的测试用例:
总结:
- 边界值测试:一种最基本、最简单的黑盒测试方法,通常可作为等价类测试的补充
- 基于:独立性假设和单缺陷假设
- 边界值测试关注的是系统边界,并不关注系统对不同类型数据的处理规律,因此,该法设计的测试用例往往具有较大的系统冗余与漏洞,但这并不影响该法的有效性