方法
等价类划分
1、基本思路
把程序的输入域划分成若干部分,从每个部分中选取少数代表作为测试用例
有效等价类:
有意义的数据,
无效等价类:
不仅满足程序输入要求或者无效的输入数据
2、原则
规定了输入域的范围或者个数,可以确定一个有效等价类和两个无效等价类
规定输入值的集合,不是一个范围,可以确定一个有效等价类和一个无效等价类
规定输入数据的一组值,并且程序对每一个输入的值分别进行处理,则确定一个有效等价类,在选择一个无效
3、基本步骤
第一步:划分等价类,列出等价类表
第二步:列出输入条件可能组合输入的情况
第三步:选取合适数据,编写测试用例
4、案例
(一)输入用户名密码以及确定密码
编写测试用例
(二)输入3边长度判断三角形类型
分析程序规格,列出等价类
编写测试用例
5、小结
等价类中的一个测试数据能捕获一个缺陷,那么该等价类中的其他测试数据也能捕获该缺陷;
如果等价类中的一个测试数据不能捕获缺陷,那么选择该等价类中的其他测试数据也不能捕获缺陷。
只要有数据输入的地方,就可以采用等价类划分法,它可以从很多的数据中选取少数代表性的数据进行测试以减少测试人员的工作量。
判定表法
1、基本思路
是一种表格状图形工具,处理判断条件较多,条件互相组合、有多种决策方案的情况
2、判定表法组成部分
-
条件桩:问题的所有条件
-
动作桩:问题的所有输出
-
条件项:针对条件桩具体取值
-
动作项:条件项各种取值情况下的输出结果
-
规则数:条件项可能取值个数^条件数
3.步骤
-
列出所有条件桩和动作桩
-
确定规则数:条件取值个数^条件数
-
输入条件项
-
填入动作项。得到初始判定表
-
简化判定表
4、案例
(一)判断三角形
输入三个整数a、b、c,分别作为三角形的三条边
判断三条边是否构成三角形
如果构成三角形,判断三角形类型,等边三角形,等腰三角形,一般三角形
确定条件桩
C1:a,b,c构成三角形? a<b+c b<a+c c<a+b C2:a=b? C3:a=c? C4:b=c?
确定动作桩
A1:非三角形 A2:不等边三角形 A3:等腰三角形 A4:等边三角形 A5:不可能
分析
条件桩 | 条件项 |
---|---|
c1 :abc构成三角形? | 1:满足两边之和大于第三边 |
0:不满足 | |
c2 :a = b? | 1: a = b |
0: a != b | |
c3 :a = c? | 1: a = c |
0: a != c | |
c4 : b = c? | 1: b = c |
0: b != c | |
动作桩 | 动作项 |
A1:非三角形 | 1:不是三角形 |
A2:不等边三角形 | 1:是一般三角形 |
A3:等腰三角形 | 1:是等腰三角形 |
A4:等边三角形 | 1:是等边三角形 |
A5:不可能 | 1:条件组合不可能出现 |
2^4 | (条件项可能取值个数^条件数) |
初始判定表
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
条件桩 | ||||||||||||||||
c1 :abc构成三角形? | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
c2 :a = b? | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
c3 :a = c? | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
c4 : b = c? | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
动作桩 | ||||||||||||||||
A1:非三角形 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ||||||||
A2:不等边三角形 | 1 | |||||||||||||||
A3:等腰三角形 | 1 | 1 | 1 | |||||||||||||
A4:等边三角形 | 1 | |||||||||||||||
A5:不可能 | 1 | 1 | 1 |
简化判定表
1 | 2 | 3 | 4 | 5 | 6 | |
---|---|---|---|---|---|---|
条件桩 | ||||||
c1 :abc构成三角形? | 0 | 1 | 1 | 1 | 1 | 1 |
c2 :a = b? | 1 | 0 | 0 | 0 | 1 | 1 |
c3 :a = c? | 1 | 0 | 0 | 1 | 0 | 1 |
c4 : b = c? | 1 | 0 | 1 | 0 | 0 | 1 |
动作桩 | ||||||
A1:非三角形 | 1 | |||||
A2:不等边三角形 | 1 | |||||
A3:等腰三角形 | 1 | 1 | 1 | |||
A4:等边三角形 | 1 |
测试用例表
编号 | a | b | c | 预期结果 |
---|---|---|---|---|
1 | 4 | 1 | 2 | 非三角形 |
2 | 3 | 4 | 5 | 普通三角形 |
3 | 3 | 4 | 4 | 等腰三角形 |
4 | 5 | 3 | 5 | 等腰三角形 |
5 | 2 | 2 | 3 | 等腰三角形 |
6 | 1 | 1 | 1 | 等边三角形 |
因果法
1、因果图定义
因------输入条件
果------输出结果
2、适用场景
描述多种条件组合
产生多个动作
3、基本符号
恒等:若原因出现,则结果出现。若原因不出现,则结果也不出现。
非:若原因出现,则结果不出现。若原因不出现,则结果也出现。
或:有多个原因,若几个原因中有一个出现,则结果出现。若几个原因中都不出现,则结果不出现。
与:有多个原因,若几个原因中都出现,则结果才出现。若其中一个原因中不出现,则结果不出现。
4、约束条件
原因
互斥 E: a、b、c 只能有一个成立,但是可以都不成立
包含 I: a、b、c 中至少有一个成立
唯一 O: a、b、c 有且仅有一个成立
要求 R:如果 a 成立,则要求 b 也必须成立,其他不约束
结果
屏蔽 M:如果 a 成立,则要求 b 不成立,其他不约束
互斥与唯一 区别
互斥:可以都不成立
唯一:有且仅有一个成立
5、基本步骤
-
找出所有输入条件(因)
-
找出所有的输出条件(果)
-
明确所有输入条件之间的制约以及组合关系
-
明确所有输出条件之间的制约以及组合关系
-
找出什么样的输入条件组合会产生那种输出结果
-
把因果图转换为判定表
-
为判定表的每一列表示的情况设计测试用例
6、案例
(一)交通一卡通自动充值软件系统
需求解释
系统只接受 50 或 100 元纸币,一次只能使用一张纸币,一次充值金额只能为 50 或 100 元。
在投币后面选择 50 的按钮,代表投入 50 元纸币, 按 100 元按钮,代表投入 100 元纸币。
若按 50 元按钮,并选择充值 50 元,完成充值,提示充值成功。
若按 50 元按钮,并选择充值 100 元,提示输入金额不足,退回 50 元。
若按 100 元按钮,并选择充值 50 元,完成充值,提示充值成功,退回 50 元。
若按 100 元按钮,并选择充值 100 元,完成充值,提示充值成功。
若按投币后在规定时间内不选择充值按钮,提示错误,退回纸币。
若选择充值按钮后不按投币按钮,提示错误
输入
1、选择投币 50 元
2、选择投币 100 元
3、选择充值 50 元
4、选择充值 100 元
结果
a.完成充值
b.提示充值成功
c.退回纸币
d.充值错误
输入关系
输出结果关系
输入和输出关系
转化测试用例
用例编号 | 测试点 | 测试步骤 | 预期结果 |
---|---|---|---|
1 | 投50元充50元 | 1、点击投币50元按钮 2、点击充值50元按钮 | 充值成功并退卡,提示充值成功 |
2 | 投50元充100元 | 1、点击投币50元按钮 2、点击充值100元按钮 | 提示输入金额不足,并退回50元 |
3 | 投100元充50元 | 1、点击投币100元按钮 2、点击充值50元按钮 | 完成充值成功并退卡,提示充值成功,找零50元 |
4 | 投100元充100元 | 1、点击投币100元按钮 2、点击充值100元按钮 | 充值成功并退卡,提示充值成功 |
5 | 投50元不充值 | 1、点击投币50元按钮 2、不点充值按钮 | 提示错误,找零50元 |
6 | 投100元不充值 | 1、点击投币100元按钮 2、不点充值按钮 | 提示错误,找零100元 |
7 | 不投币点击充值50元 | 1、不点投币按钮 2、点击充值50元按钮 | 提示错误 |
8 | 不投币点击充值100元 | 1、不点投币按钮 2、点击充值100元按钮 | 提示错误 |
正交法
1、正交实验法介绍
正交表表现形式如下
行数(Runs):代表测试用例的个数
因素数(Factor):在一项试验中,被考察的变量就被称为因素
水平数(Levels):因素的值
2、基本步骤
-
确定有哪些因素?
-
确定每个因素有几个水平?
-
选择合适的正交表。
-
把变量的值映射到表中。
-
加上认为可疑且没有在表中出现的组合。
3、案例
(一)字符属性设置程序
字体:仿宋、楷体、华文彩云
字符样式:粗体、斜体、下划线
字体颜色:红色、黑色、绿色
字号:20号、30号、40号
步骤1
确定因素(字体、字体样式、颜色、字号) 因素=4
步骤2
确定水平(每个因素有3个水平) 水平=3
步骤3
选择合适的正交表
步骤4
把变量映射到表中
列号 | 1 | 2 | 3 | 4 |
---|---|---|---|---|
试验号 | ||||
1 | 仿宋 | 粗体 | 红色 | 20号 |
2 | 仿宋 | 斜体 | 黑色 | 30号 |
3 | 仿宋 | 下划线 | 绿色 | 40号 |
4 | 楷体 | 粗体 | 黑色 | 40号 |
5 | 楷体 | 斜体 | 绿色 | 20号 |
6 | 楷体 | 下划线 | 红色 | 30号 |
7 | 华文彩云 | 粗体 | 绿色 | 30号 |
8 | 华文彩云 | 斜体 | 红色 | 40号 |
9 | 华文彩云 | 下划线 | 黑色 | 20号 |
(二)【系统管理】→【岗位管理】页面中的搜索组合条件
搜素模块截图
步骤1
确定因素(岗位编码、岗位名称、岗位状态) 因素=3
步骤2
确定水平(每个因素最大有3个水平) 水平=3
步骤3
选择合适的正交表(正交表无合适的,取大不取小)
步骤4
把变量映射到表中
公式:L9(3的4次方)
因素 | 岗位编码 | 岗位名称 | 岗位状态 |
---|---|---|---|
1 | 填 | 填 | 所有 |
2 | 不填 | 不填 | 正常 |
3 | 填 | 不填 | 停用 |
4 | 填 | 填 | 停用 |
5 | 不填 | 不填 | 所有 |
6 | 不填 | 填 | 正常 |
7 | 填 | 填 | 正常 |
8 | 不填 | 不填 | 停用 |
9 | 不填 | 不填 | 所有 |
场景法
1、概念
场景法模拟用户操作软件时的场景
基本流:按照正确的业务流程来实现一条操作路径
备选流:导致程序出现错误的操作流程
2、基本步骤
场景法的典型应用偏重于大的业务流程
目的是用业务流把各个孤立的功能点串起来
避免陷入功能细节忽视业务流程要点的错误倾向
3、案例
3.1 图书管理系统
下图给出了某公共图书管理系统的用例图和用例规约表
用例规约编号 | UC001 |
---|---|
用例规约名称 | 注册用户 |
参与者 | 借阅卡办理人员 |
用例规约说明 | 用例起始于卡办理人员接受读者的办卡请求 |
前置条件 | 卡办理人员经过身份验证 |
后置条件 | 保存读者信息,并分发一张对应的借阅卡 |
第一步分析基本流和各项备选流
参与者动作 | 系统动作 |
---|---|
1.卡办理人员在注册界面中录入读者的登记信息 | 2.系统对录入信息进行有效性检验 |
3.系统验证读者注册证件号具有唯一性 | |
4.卡办理人员录入借阅卡卡号,并收取押金,确认信息提交 | 5.系统验证卡号的有效性 |
6.系统向读者信息表中增加一条读者信息,并将借阅卡卡号与读者进行对应后显示成功界面 | |
7.卡办理人员将借阅卡和押金收据交于读者 |
2.系统检查录入信息存在问题,则提示用户相应信息,系统返回到注册界面
3.系统发现读者有效证件号已经存在于已注册的读者信息中,则提示用户“该证件号已经被注册”,系统返回原有注册界面。
4.卡办理人员取消办卡过程,则系统提示用户是否确实要取消操作
-
如果卡办理人员确认“取消”操作,则系统返回到初始注册界面
-
如果卡办理人员取消“取消”操作,则系统保持原有注册界面
5.系统发现卡号无效,提示重新输入。
根据以上分析,确定基本流和备选流,如下表所示
基本流 | 录入信息有效性检查、证件号的唯一性检查、卡号的有效性检查、生成借阅关系 |
---|---|
备选流 1 | 录入信息存在问题 |
备选流 2 | 证件号已注册 |
备选流 3 | 取消办卡操作 |
备选流 4 | 卡号无效 |
生成注册用户的场景,如下表所示
场景描述 | 基本流 | 备选流 |
---|---|---|
场景 1:成功注册 | 基本流 | |
场景 2:信息存在问题 | 基本流 | 备选流 1 |
场景 3:证件号已注册 | 基本流 | 备选流 2 |
场景 4:取消办卡操作 | 基本流 | 备选流 3 |
场景 5:卡号无效 | 基本流 | 备选流 4 |
矩阵
3.2 登录系统界面
以登录系统界面为例,业务流程如图
流程图
分析题目,列出基本流和备选流
登录系统的场景
登录系统的用例矩阵
边界值
1、概述
测试用例来自于等价类的边界,是等价类划分法的补充。
根据边界值划分法,等价类分析法中的测试数据不是选取等价类中的典型值或任意值,而是应当选取正好等于、刚刚大于、刚刚小于边界的值作为测试数据。
-
对于 int 类型的整数而言,-2 的 15 次方 和 2 的 15 次方 -1 是它的边界,也就是 -32768 和 32767 是边界;
-
对于屏幕的光标焦点来说,屏幕上光标的最左上、最右下的位置是它的边界;
-
对于报表来说,报表的第一行和最后一行是它的边界;
-
对于数组来说,数组元素的第一个和最后一个是它的边界;
-
对于循环条件来说,循环的第 0 次、第 1 次和倒数第 2 次以及最后一次是它的边界。
2、应用场景
输入(输出)条件规定了取值范围或值的个数;
程序规格说明书中提到的输入或输出是一个有序的集合;
可以通过分析找出程序的边界。
3、上点、离点、内点的确定
上点:边界上的点,区间的终点值。
离点:离上点最近的点称为离点。开区间的离点,就是开区间中 上点 内侧紧邻的点。闭区间的离点,就是闭区间中 上点 外侧紧邻的点。
内点:上点之间(域范围内)的任意一点。
闭区间(边间两个值包括在内如,[a,b] )
开区间(边界的两个值不包括在内,如(a,b))
半开半闭区间(闭区间一边的值包括在内,开区间一边的值不包括在内,如(a,b])
4、步骤
第 1 步:根据等价类划分有效及无效等价类,确定上点、离点及内点,每个点统一编号。
第 2 步:设计一个新的测试用例,使其尽可能覆盖所有尚未覆盖的有效等价类,直到所有有效等价类完全覆盖。
第 3 步:设计一个新的测试用例,使其仅覆盖一个无效等价类,直到所有无效等价类完全覆盖。
5、案例
如有一个用户名输入框,取值范围是:用户名在 6-18 位之间。那么:
上点:区间的端点值,6、18
内点:边界上有效范围内的任意一点,10
离点:离上点最近的点,根据上述情况也分为3种,如下:
大纲法
1、基本内容
大纲法是一个迭代过程
大纲是一种组织思维的工具,它汇集了需求文档的核心内容,大纲的每项都可以根据测试人员的喜好以逻辑形式分组。
通常我们会将需求转换为大纲树的形式,如下图所示:
就是通过列大纲的方式,检测未被覆盖的功能点,从而发现系统的缺陷。
错误推断法
1、基本内容
错误推测法是经验丰富的测试人员喜欢使用的一种测试用例设计方法。
错误推测法就是基于经验和直觉推测程序中所有可能存在的各种错误,有针对性地设计测试用例的方法。也就是列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据这些情况选择测试用例。