等价类划分法
一.等价类划分法的概念
等价类划分法是最常用的黑盒功能测试方法之一,根据程序对数据的要求,把程序的输入域划分成若干个部分,从每个部分中选取少数代表性数据作为测试用例的数据。这样,每一类的代表数据在测试中的作用都等价于这类中的其他值。所谓的等价类是指具有相同属性或方法的集合.
二.等价类划分法分为有效等价类和无效等价类
(1)有效等价类是指对软件规格说明来说,合理、有意义的输入数据等构成的集合,利用有效等价类可以检验程序是否满足需求规格说明书所规定的功能和性能。
(2)无效等价类是指不满足程序输入要求或者无效的输入数据所构成的集合,利用无效等价类可以检验程序异常情况的处理。
举例:有一个输入值,范围是40=<Y<=80
那么,有一个有效等价类:40=<Y<=80
两个无效等价类:小于40,大于80
三.划分等价类的几个原则
1.程序规定了输入域的取值范围,则可以确定一个有效等价类和 2 个无效等价类
2.程序规定了输入值的集合,不是一个范围,则可以确定一个有效等价类和一个无效等价类
3.程序规定了输入数据的一组值,并且程序要对每一个输入值分别进行处理,则可以每一个值确定一个有效等价类,然后再选择一个无效等价类
4.程序规定了输入数据必须遵守的规则,则可以确定一个有效等价类和若干个无效等价类
5.已知的等价类中各个元素在程序中的处理方式不同,则应将该等价类进一步划分成更小的等价类
注意:在测试用例中,可以先测试全部输入条件的有效等价类组合,再每次只测试一个输入条件的无效等价类情况。无效等价类在开始测试的时候不能一起组合,避免“屏蔽”现象发生(前面输入条件的错误提示一出现,后面控件的错误提示就不出现了)
四.使用等价类划分法设计测试用例的步骤如下:
第 1 步:分析程序的规格说明,列出有效等价类和无效等价类;列出等价类表,并对每个等价类规定唯一的编号,如下表所示。当然也可以不是表格形式,采用文字描述的形式。
第 2 步:一一列出输入条件中可能的组合输入情况。
第 3 步:选取合适的数据,编写测试用例
五.等价类划分案例
- 用户名要求:3~12 位,只能使用英文字母、数字、中划线-、下划线_,这 4 种字符或 4 种字符的组合。并且首字符必须为字母或数字。
- 密码要求:6~20 位,只能使用英文字母、数字、中划线-、下划线_,这 4 种字符或 4 种字符的组合。
- 确认密码:与密码相同,并且区分大小写。
分析程序的规格说明,列出等价类表(包括有效等价类和无效等价类),如下表所示:
边界值划分法
一、边界值划分法的概述
边界值分析法(Boundary Value Analysis,BVA)的测试用例来自于等价类的边界,是等价类划分法的补充。根据边界值划分法,等价类分析法中的测试数据不是选取等价类中的典型值或任意值,而是应当选取正好等于、刚刚大于、刚刚小于边界的值作为测试数据。
二、上点、离点、内点的确定
-
上点:边界上的点,区间的终点值。
-
离点:离上点最近的点称为离点。开区间的离点,就是开区间中 上点 内侧紧邻的点。闭区间的离点,就是闭区间中 上点 外侧紧邻的点。
-
内点:上点之间(域范围内)的任意一点。
三、边界值划分法应用步骤
第 1 步:根据等价类划分有效及无效等价类,确定上点、离点及内点,每个点统一编号。
第 2 步:设计一个新的测试用例,使其尽可能覆盖所有尚未覆盖的有效等价类,直到所有有效等价类完全覆盖。
第 3 步:设计一个新的测试用例,使其仅覆盖一个无效等价类,直到所有无效等价类完全覆盖。
四、边界值划分法案例
如有一个用户名输入框,取值范围是:用户名在 6-18 位之间。那么:
-
上点:区间的端点值,6、18
-
内点:边界上有效范围内的任意一点,10
-
离点:离上点最近的点,根据上述情况也分为3种,如下:
注意:常见边界值
如果是字符的话,我们常常考虑它的:正常长度、最大长度、最大长度+1、最小长度-1、空值、只有空格、字符前后有空格。
如果是整数的话,我们常常考虑它的:正常长度、最小值、最小值-1、最小值+1、最大值、最大值-1、最大值+1、中间值、字母、特殊字符、非整数、有小数点。
判定表法
一.判定表法的概念
判定表又称“决策表”,是一种表格状的图形工具,适用于处理判断条件较多,各条件又相互组合、有多种决策方案的情况。
判定表法的基本思路是对多个条件的组合进行分析,从而设计用例来覆盖各种组合。
二.判定表法的4个组成
条件桩(Condition Stub):指所有条件的名称,列出的条件的先后次序无关紧要。
动作桩(Action Stub):指所有可能采取的操作,顺序没有约束。
条件项(Condition Entry):条件桩中的条件所有可能的取值。
动作项(Action Entry):与条件项紧密相关,列出在条件项的各组取值情况下应该采取的动作。
<规则>任何一个条件组合的特定取值及其相应要执行的操作称为一条规则(Rules),在判定表中贯穿条件项和动作项的一列就是一条规则。显然,判定表中条件有多少组合取值,也就有多少条规则。
三.判定表的步骤
1.分析需求,列出所有的条件桩和条件项
2.分析需求,列出所有的动作桩和动作项
3.根据规则,设计初始判定表
4.简化判定表,合并相似规则,设计测试用例
四.判定表案例:
超市产品案例:
超市中如果某产品的销售好并且库存低,则继续销售并增加该产品的进货;如果该产品销售好,但库存量不低,则继续销售;若该产品销售不好,但库存量低,则该产品下架;若该产品销售不好,且库存量不低,如果有空货架则继续销售,如果没有空货架,则该产品下架。
分析需求,列出所有的条件桩和条件项。如下表所示。
分析需求,列出所有的条件组合所产生的动作。
- A1:增加进货
- A2:继续销售
- A3:产品下架
根据规则,设计初始判定表,如下表 所示。
第 4 步:简化判定表
因果图法(考虑输入之间的约制关系)
一.因果图的概念
在因果图法中,输入就是因,输出就是果,因之间有相互制约关系,因果之间也有制约关系。
二.关系符号
(1)恒等:若c1是1,则e1也是1;否则e1为0;
(2)非:若c1是1,则e1是0;否则e1为1;
(3)或:若c1.c2.c3中有一个是1,则e1是1;否则e1为0;
(4)与:若c1.c2.c3都是1,则e1是1;否则e1为0;
三. 约束符号(原因和原因之间的关系)
有一些输入条件是不可能同时存在的,也就是说输入条件相互之间存在着某些制约关系
-
E 约束(异、互斥):a、b、c 中最多有一个可能为 1,也就是 a、b、b 不能同时为 1,输入条件之间为互斥关系。但可以同时为 0。
-
I 约束(或、包含):a、b、c 中最少有一个必须是 1,也就是 a、b、c 不能同时为 0,输入条件之间为包含关系。但可以同时为 1。比如程序中的多选按钮。
-
O 约束(唯一):a、b、c 中必须有一个且仅有一个为 1。比如程序中的单选按钮。
-
R 约束(要求):a 是 1 时,b 必须是 1,a 为 0 时,b 的值不确定。即不可能 a 是 1 时,b 是 0。
以上 4 种是输入条件的约束,输出条件的约束只有一种,就是 M 约束:
-
M 约束(强制、屏蔽):若 a 是 1,则 b 强制为 0;若 a 是 0,那么 b 的值不确定。
四.使用因果图设计测试用例的步骤如下:
第 1 步:分析待测系统的规格说明,找出原因与结果。
第 2 步:明确所有原因和结果之间的制约关系以及组合关系,画出因果图。
第 3 步:在因果图上标记约束条件。
第 4 步:跟踪因果图中的状态条件,把因果图转换为判定表。
第 5 步:将判定表中的每一列作为依据,生成测试用例。
五.因果图案例
某软件的规格说明中对登录名输入包含这样的要求:输入的第一个字符必须是”$”或英文字母,第二个字符必须是一个数字,在此情况下进入第二个窗口;但如果第一个字符不正确,则给出信息 M;如果第二个字符不是数字,则给出信息 N。
分析程序的规格说明,列出原因和结果。如下表所示。
将原因和结果之间因果关系用逻辑符号连接起来,得到因果图,如下图所示。
图中 c12为中间节点,是导出结果的进一步原因。
在因果图上标记约束条件。
因为 c1和 c2不可能同时为 1,即第一个字符不可能既是 c1又是 c2,所以在因果图上对其施加 E 约束,得到具有约束的因果图。如下图所示。
将因果图转换成判定表,如下表所示:
设计测试用例。
表中的前 2 种情况,因为 c1和 c2不可能同时为 1,所以排除。根据判定表,设计出 6 个测试用例,如下表所示。
正交实验法
一.正交实验法的概念
正交实验法是一种基于正交表的、高效率、快速、经济的实验设计方法,它研究的“多因素多水平”的情况,然后套用正交表来随机地产生用例(用例之间没有主次之分),是一种提高测试覆盖率的简单易用的方法。
二.它分为因素和水平:
因素(Factor):在一项实验中,凡是被考查的变量就称为因素。
水平(Level):在实验范围内,因素被考查的值称为水平。
三.正交表的表现形式可描述如下:
L 行数(水平数因素数)
行数(Runs):正交表中行的个数,也就是实验的次数,也指测试用例的个数。
因素数(Factors):指正交表中列的个数。
水平数(Levels):任何单个因素能够取得的值的最大个数。
四.正交法案例
“历年学生档案查询”界面中,利用正交实验法对其设计测试用例。
第1步:确定表中的因素数。
共有5个因素:姓名、专业、年级、班级、户籍地。故因素数=5。
第2步:确定每个因素的水平数。
通过分析,以上5个因素的水平数均为“填”和“不填”。故水平数=2。
第3步:选择合适的正交表
把变量的值映射到表中
因为程序中只有5个因素,只需要5列,所以直接删除第6、7列,然后把变量的值映射到表格中就得到了表5-20(1à填,2à不填)。
增加几条可疑测试用例:
场景法
一.场景法的概念
场景法一般包含基本流和备选流,从一个流程开始,通过描述经过的路径来确定测试用例的过程,经过遍历所有的基本流和备选流来完成整个场景。我们通常以正常的用例尝尽刚开始分析,再着手分析其他的场景
基本流也叫有效流或正确流,主要是模拟正确的业务操作过程的情景。
备选流也叫无效流或错误流,主要是模拟错误的业务操作过程的情景。
二.识别原则:
-
一个业务只存在一个基本流;
-
基本流只有一个起点,一个终点;
-
基本流是主流,备选流是支流;
-
备选流可以起始于基本流,也可以起始于其它的备选流;
-
备选流的终点,可以是一个流程出口,也可以是回到基本流,还可以是汇入其它的备选流;
-
如果在流程图中出现了两个不相上下的基本流,一般需要把它们分开对待
三.基本设计步骤
-
根据需求说明,分析出程序的基本流以及各项备选流;
-
根据基本流和各项备选流生成不同的场景;
-
对每一个场景生成相应的测试矩阵;
-
生成测试用例,去掉多余的测试用例,并确定测试数据值。
四.场景法案例
大纲法
大纲法是一种着眼于需求功能的方法,是从宏观上检验需求的完成度.
错误推测法
错误推测法是经验丰富的测试人员喜欢使用的一种测试用例设计方法。
错误推测法就是基于经验和直觉推测程序中所有可能存在的各种错误,有针对性地设计测试用例的方法。