目录
(一)黑盒测试原理
只知道系统输入和预期输出,不需要了解程序内部结构和内部特性的测试方法就称为黑盒测试。
任何程序都可以被看做是从其输入域到输出域的映射。
对程序功能的理解仅基于输入和输出,对其实现原理和过程一无所知。
优势:
方法简单有效
可以整体测试系统的行为
开发与测试可以并行
对测试人员技术要求相对较低
不足与弊端: 入门门槛低
(二)等价类划分法
3个约束:
分而不交 、合而不变 、类内等价
如何划分等价类
有效等价类
输入域中一组有意义的数据的集合
有效等价类被用于检验系统指定功能和性能能否正确实现
无效等价类
输入域中一组无意义的数据的集合
无效等价类被用于检验系统的容错性
例:程序输入数据要求是两位正整数x,则有效等价类为10≤x≤99,两个无效等价类为x<10和x>99。
等价类划分法-案例1
假如某个系统的注册用户名要求由字母开头,后跟字母或数字的任意组合,有效字符数不超过6个。
等价类划分如下:
如何设计测试用例
弱覆盖
测试用例应覆盖所有的有效等价类
强覆盖
测试用例应覆盖所有的有效等价类的组合
等价类划分法-案例2
在应用程序中经常要求输入电话号码,我国的固定电话号码一般由两部分组成: 地区码:以0开头的3位或者4位数字。 电话号码:以非0、非1开头的7位或者8位数字。 应用程序应接受一切符合上述规定的电话号码,但应拒绝不符合上述规定的号码。
等价类测试流程
确定有几个输入条件
划分每个输入条件的等价类
选择合适的覆盖标准
设计测试用例
(三)边界值分析
边界在哪里? 如何定义边界的邻域? 如何选择测试数据? 如何设计测试用例?
例:某保险网站的前台计算保费的页面中要求输入被保险人的年龄,根据不同的年龄使用不同的保险费率计算标准。保费计算方式为:保费=投保额X保险费率。其中:1-15岁,保险费率为10%;16-20岁,保险费率为15%;21-50岁,保险费率为20%;51-70岁,保险费率为25%。
边界点就是可能导致被测系统内部处理机制发生变化的点
做一做:
ind add(int x1,int x2)
1 ≤ x1 ≤ 100
10 ≤ x2 ≤ 50
使用边界值测试设计测试用例
x1:[0,2] [99,101]
x2:[9,11] [49,51]
测试用例:
x1: 0,1,2 99,100,101
x2: 9,10,11 49,50,51
例题:蛋糕商城
网上蛋糕商城购物系统的用户注册功能中,要求填写用户邮箱,用户邮箱的规则为用户名+@符号+邮件服务器域名,用户名由字母、数字和特殊字符组成,不能含有空格、不能以句号结尾,用户名最多有64个字符。
(1)请根据以上设计说明,填写下表。
表1 等价类测试
编制人 | 梁日华 | 审定人 | 李旭峰 | 时间 | 2023年3月15日 |
软件名称 | 网上蛋糕商城 | 版本 | 1.0 | ||
测试目的 | 用户填写邮箱是否符合规则 | ||||
用例编号 | 01 | ||||
依赖关系 | 无 | ||||
用例描述 | 输入用户邮箱地址,检查邮箱地址是否符合规则 | ||||
输入数据 | 见表3 | ||||
期望输出 | 根据输入进行有效判断 | ||||
实际输出 | 根据系统注册规则判断是否成功 |
(2)根据用户邮箱输入规则,划分等价类,并填写下表
表2 等价类划分
输入条件 | 有效等价类 | 编号 | 无效等价类 | 编号 |
用户邮箱 | 有效邮箱地址(用户名+@符号+邮件服务器域名,用户名由字母、数字和特殊字符组成,不能含有空格、不能以句号结尾,用户名最多有64个字符。) | 01 | 用户名超过64个字符 | 02 |
用户名含特殊非法字符(如含空格) | 03 | |||
用户名以句号结尾 | 04 | |||
邮箱地址不包含@符号 | 05 | |||
空字符串 | 06 |
(3)对所划分的等价类设计测试用例,并写出覆盖的等价类。
表3 覆盖等价类的测试用例
测试用例编号 | 输入数据 | 覆盖的等价类 | 预期结果 |
tc01 | liangrihua@seig.edu.cn | 01 | 可以继续输入后续内容 |
tc02 | uruhuirrytrhhgfwertjsdhuwqejhdfjjhfgduytgfwugfbgfgr | 02 | 不可以继续输入后续内容 |
tc03 | Liangri hua@seig.edu.cn | 03 | 不可以继续输入后续内容 |
tc04 | Liangrihua。@seig.edu.cn | 04 | 不可以继续输入后续内容 |
tc05 | liangrihuaseig.edu.cn | 05 | 不可以继续输入后续内容 |
tc06 | 06 | 不可以继续输入后续内容 |
边界值法:
(二)假设商店货品价格(R)皆不大於100元(且为整数),若顾客付款(P)在100元内,求找给顾客之最少货币个(张)数?(货币面值50元(N50),10元(N10),5元(N5),1元(N1)四种)
(1)运用边界值分析法,对某商品(价格R)进行付款(P),找出系统输入边界及领域,设计测试用例。
表4 边界值分析
输入条件 | 边界点 | 领域 |
货品价格R | 1,100 | [0,2],[99,101] |
付款金额P | 1,5,10,50 | [0,2],[4,6],[9,11],[49,51] |
(2)运用边界值法,设计测试用例,填写下表。
表5 边界值测试用例
用例编号 | 货品价格 | 付款额 | 输出结果 |
01 | 1 | 1 | 无需找零 |
02 | 1 | 5 | 找零,N50=0,N10=0,N5=0,N1=4 |
03 | 1 | 10 | 找零,N50=0,N10=0,N5=1,N1=4 |
04 | 1 | 50 | 找零,N50=0,N10=0,N5=1,N1=4 |
05 | 0 | 0 | 无需找零 |
06 | 2 | 10 | 找零,N50=0,N10=0,N5=1,N1=3 |
07 | 99 | 2*50 | 找零,N50=0,N10=0,N5=0,N1=1 |
08 | 100 | 2*50 | 无需找零 |
(四)组合测试
全面测试需要对所有输入的各个取值之间的各种组合情形均进行相应的测试。对于软件测试而言,假设被测功能有m个输入,且每个输入有多个离散但有限的取值N1、N2……Nm(其中Ni的值可以不等,1≤i≤m),为了覆盖输入参数的全部取值组合,需要N1*N2…Nm个测试用例。
例题:
现有一信息管理系统需要做兼容性测试,主要从系统的运行平台、浏览器、代理服务器、网络协议等参数进行测试。各参数信息如表1-1所示:
表1-1 参数信息
操作系统 | 浏览器 | 代理服务器 | 网络协议 |
Windows XP | IE | Squid | Http |
Windows 7 | FireFox | CCProxy | UDP |
Ubuntu | Safari | Nginx | TCP |
(1)根据以上参数信息,要做全面覆盖的话,一共需要多少条测试用例。
答:一共需要81条(3*3*3*3)
(2)根据以上参数信息,请写出满足单因素覆盖的测试用例。
编号 | 测试用例 | |||
操作系统 | 浏览器 | 代理服务器 | 网络协议 | |
01 | Windows XP | IE | Squid | Http |
02 | Windows 7 | FireFox | CCProxy | UDP |
03 | Ubuntu | Safari | Nginx | TCP |
单因素覆盖
若测试用例集中的数据包含了每个因素的所有取值,则称测试用例集符合单因素覆盖标准。 设有以下需求规格说明要求:一个程序接受三个输入值A、B、C,A从集合{A1, A2, A3 }中取值,B从集合{B1,B2,B3 }中取值,C从集合{C1, C2, C3,C4 }中取值,则测试用例集的规模为4
编号 | 测试用例 |
T1 | A1 B2 C1 |
T2 | A2 B3 C3 |
T3 | A3 B1 C2 |
T4 | A1 B2 C4 |
(3)请使用正交实验法,选择合适的正交表,写出测试用例。
编号 | 测试用例 | |||
操作系统 | 浏览器 | 代理服务器 | 网络协议 | |
1 | Windows XP | IE | Squid | Http |
2 | Windows XP | FireFox | CCProxy | UDP |
3 | Windows XP | Safari | Nginx | TCP |
4 | Windows 7 | IE | CCProxy | TCP |
5 | Windows 7 | FireFox | Nginx | Http |
6 | Windows 7 | Safari | Squid | UDP |
7 | Ubuntu | IE | Nginx | UDP |
8 | Ubuntu | FireFox | Squid | TCP |
9 | Ubuntu | Safari | CCProxy | Http |
正交试验法
在测试实践中,可以直接使用现成的正交表进行测试用例的设计。正交表用Ln(tc)标识,其中L为正交表的代号,n为试验的次数(行数),t为水平数,c为因子数,常见的正交表有L4(23)、L8(27)、L9(34)、L16(45)等。
实例1 某所大学通信系共有2个班级,这两个班刚考完某一门课程,现在要通过教务系统查询学生成绩。假设有3个独立的查询条件,可以获得特定学生的个人成绩。 性别:{男,女} 班级:{1班,2班} 成绩:{及格,不及格}
(4)使用PICT工具,写出符合两两组合覆盖标注的测试用例。
编号 | 测试用例 | |||
操作系统 | 浏览器 | 代理服务器 | 网络协议 | |
1 | Windows 7 | Safari | Squid | TCP |
2 | Ubuntu | IE | CCProxy | Http |
3 | Windows 7 | IE | Nginx | UDP |
4 | Ubuntu | FireFox | Squid | UDP |
5 | Windows XP | FireFox | Nginx | Http |
6 | Windows XP | Safari | Squid | Http |
7 | Windows XP | FireFox | CCProxy | TCP |
8 | Ubuntu | Safari | Nginx | UDP |
9 | Windows 7 | Safari | CCProxy | Http |
10 | Windows XP | IE | Squid | TCP |
11 | Windows XP | Safari | CCProxy | UDP |
12 | Windows 7 | FireFox | Nginx | TCP |
13 | Ubuntu | FireFox | Squid | TCP |
PICT工具使用方法:
1、新建txt文本,写入数据(符号为英文)
2、进入pict当前目录,
pict test.txt>test.xls (转换成表格格式就不会乱)
pict test.txt (格式会乱)
(五)场景法
场景法就是模拟用户操作软件时的场景,主要用于测试系统的业务流程。当拿到一个测试任务时,一般并不是先关注某个控件的边界值、等价类能否满足要求,而是要先关注它的主要功能和业务流程能否正确实现,这就需要场景法来完成测试。
用例场景用来描述用例流经的路径,从开始到结束遍历整条路径上所有的基本流和备选流。 基本流:按照正确的业务流程实现的一条操作路径(模拟正确的操作流程)。 备选流:导致程序出现错误的操作流程(模拟错误的操作流程)。
在如图所示的操作流程中,可以确定以下场景:
场景1:基本流
场景2:基本流 备选流1
场景3:基本流 备选流1 备选流2
场景4:基本流 备选流3
场景5:基本流 备选流3 备选流1
场景6:基本流 备选流3 备选流1 备选流2
场景7:基本流 备选流4
场景8:基本流 备选流3 备选流4
例题:(二)场景法是黑盒测试中重要的测试用例设计方法。目前多数软件系统都是用事件触发来控制业务流程,事件触发时的情景便形成了场景,场景的不同触发顺序构成用例。场景法通过场景描述业务流程(包括基本流(基本流程)和备选流(分支流程)),设计用例遍历软件系统功能,验证其正确性。
下图为简化的中心层、省市层、地区层三级的“公文流转”业务流程,表1-2描述了省市层(图中阴影部分)业务的基本流和备选流。
公文的状态包括:已下发、未下发、已接收、未接收。
表1-2 省市层业务的基本流和备选流
业务流 | 编号 | 描述 | 说明 |
基本流 | A | 中心公文下发 | 省市层接收中心公文,并下发到地区层 |
B | 新建公文直接下发 | 省市层新建公文后,即下发到地区层 | |
备选流 | C | 保存新建公文 | 对保存的省市层新建公文,适当时下发到地区层 |
D | 修改新建公文 | 修改省市层新建的公文 | |
E | 删除新建公文 | 删除省市层新建的公文 |
(1)用表1-1中表述的基本流和备选流,使用场景法设计测试场景。基本流和备选流用表1-1中对应的字母编号表示。
场景描述 | 基本流 | 备选流 |
中心层公文下发,省市层接收中心公文,并下发到地区层 | A | |
省市层新建公文后,即下发到地区层,地区层接收公文 | B | |
省市层新建公文、保存公文并下发到地区层,地区层接收公文 | B | C |
省市层新建、保存公文并修改,修改后保存公文,并下发到地区层 | B | C、D |
省市层新建、保存公文并修改,修改后保存公文又删除公文 | B | C、E |
(2)下表给出了测试用例名称,请将表中的输入条件和预期输出补充完整。
编号 | 用例名称 | 输入条件 | 预期输出 |
1 | 省市层接收公文 | 中心层下发公文 | 下发到地区层 |
2 | 省市层新建并保存公文 | 省市层新建公文并保存省市层新建公文 | 下发到地区层 |
3 | 省市层新建并下发公文 | 省市层新建公文 | 下发到地区层 |
4 | 省市层修改公文 | 修改省市层保存的公文 | 保存省市层修改后公文 |
5 | 省市层删除公文 | 保存省市层新建公文 | 删除省市层新建的公文 |
常用正交表见:
L4(23) | |||
试验号 | 列号 | ||
1 | 2 | 3 | |
1 | 1 | 1 | 1 |
2 | 1 | 2 | 2 |
3 | 2 | 1 | 2 |
4 | 2 | 2 | 1 |
L8(27) | |||||||
试验号 | 列号 | ||||||
1 | 2 | 3 | 4 | 5 | 6 | 7 | |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
2 | 1 | 1 | 1 | 2 | 2 | 2 | 2 |
3 | 1 | 2 | 2 | 1 | 1 | 2 | 2 |
4 | 1 | 2 | 2 | 2 | 2 | 1 | 1 |
5 | 2 | 1 | 2 | 1 | 2 | 1 | 2 |
6 | 2 | 1 | 2 | 2 | 1 | 2 | 1 |
7 | 2 | 2 | 1 | 1 | 2 | 2 | 1 |
8 | 2 | 2 | 1 | 2 | 1 | 1 | 2 |
L12(211) | |||||||||||
试验号 | 列号 | ||||||||||
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
2 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 2 |
3 | 1 | 1 | 2 | 2 | 2 | 1 | 1 | 1 | 2 | 2 | 2 |
4 | 1 | 2 | 1 | 2 | 2 | 1 | 2 | 2 | 1 | 1 | 2 |
5 | 1 | 2 | 2 | 1 | 2 | 2 | 1 | 2 | 1 | 2 | 1 |
6 | 1 | 2 | 2 | 2 | 1 | 2 | 2 | 1 | 2 | 1 | 1 |
7 | 2 | 1 | 2 | 2 | 1 | 1 | 2 | 2 | 1 | 2 | 1 |
8 | 2 | 1 | 2 | 1 | 2 | 2 | 2 | 1 | 1 | 1 | 2 |
9 | 2 | 1 | 1 | 2 | 2 | 2 | 1 | 2 | 2 | 1 | 1 |
10 | 2 | 2 | 2 | 1 | 1 | 1 | 1 | 2 | 2 | 1 | 2 |
11 | 2 | 2 | 1 | 2 | 1 | 2 | 1 | 1 | 1 | 2 | 2 |
12 | 2 | 2 | 1 | 1 | 2 | 1 | 2 | 1 | 2 | 2 | 1 |
L16(215) | |||||||||||||||
试验号 | 列号 | ||||||||||||||
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
3 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 1 | 1 | 1 | 1 | 2 | 2 | 2 | 2 |
4 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 1 | 1 | 1 | 1 |
5 | 1 | 2 | 2 | 1 | 1 | 2 | 2 | 1 | 1 | 2 | 2 | 1 | 1 | 2 | 2 |
6 | 1 | 2 | 2 | 1 | 1 | 2 | 2 | 2 | 2 | 1 | 1 | 2 | 2 | 1 | 1 |
7 | 1 | 2 | 2 | 2 | 2 | 1 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 1 | 1 |
8 | 1 | 2 | 2 | 2 | 2 | 1 | 1 | 2 | 2 | 1 | 1 | 1 | 1 | 2 | 2 |
9 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 |
10 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 |
11 | 2 | 1 | 2 | 2 | 1 | 2 | 1 | 1 | 2 | 1 | 2 | 2 | 1 | 2 | 1 |
12 | 2 | 1 | 2 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 1 | 2 | 1 | 2 |
13 | 2 | 2 | 1 | 1 | 2 | 2 | 1 | 1 | 2 | 2 | 1 | 1 | 2 | 2 | 1 |
14 | 2 | 2 | 1 | 1 | 2 | 2 | 1 | 2 | 1 | 1 | 2 | 2 | 1 | 1 | 2 |
15 | 2 | 2 | 1 | 2 | 1 | 1 | 2 | 1 | 2 | 2 | 1 | 2 | 1 | 1 | 2 |
16 | 2 | 2 | 1 | 2 | 1 | 1 | 2 | 2 | 1 | 1 | 2 | 1 | 2 | 2 | 1 |
L9(34) | ||||
试验号 | 列号 | |||
1 | 2 | 3 | 4 | |
1 | 1 | 1 | 1 | 1 |
2 | 1 | 2 | 2 | 2 |
3 | 1 | 3 | 3 | 3 |
4 | 2 | 1 | 2 | 3 |
5 | 2 | 2 | 3 | 1 |
6 | 2 | 3 | 1 | 2 |
7 | 3 | 1 | 3 | 2 |
8 | 3 | 2 | 1 | 3 |
9 | 3 | 3 | 2 | 1 |
L18(37) | |||||||
试验号 | 列号 | ||||||
1 | 2 | 3 | 4 | 5 | 6 | 7 | |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
2 | 1 | 2 | 2 | 2 | 2 | 2 | 2 |
3 | 1 | 3 | 3 | 3 | 3 | 3 | 3 |
4 | 2 | 1 | 1 | 2 | 2 | 3 | 3 |
5 | 2 | 2 | 2 | 3 | 3 | 1 | 1 |
6 | 2 | 3 | 3 | 1 | 1 | 2 | 2 |
7 | 3 | 1 | 2 | 1 | 3 | 2 | 3 |
8 | 3 | 2 | 3 | 2 | 1 | 3 | 1 |
9 | 3 | 3 | 1 | 3 | 2 | 1 | 2 |
10 | 1 | 1 | 3 | 3 | 2 | 2 | 1 |
11 | 1 | 2 | 1 | 1 | 3 | 3 | 2 |
12 | 1 | 3 | 2 | 2 | 1 | 1 | 3 |
13 | 2 | 1 | 2 | 3 | 1 | 3 | 2 |
14 | 2 | 2 | 3 | 1 | 2 | 1 | 3 |
15 | 2 | 3 | 1 | 2 | 3 | 2 | 1 |
16 | 3 | 1 | 3 | 2 | 3 | 1 | 2 |
17 | 3 | 2 | 1 | 3 | 1 | 2 | 3 |
18 | 3 | 3 | 2 | 1 | 2 | 3 | 1 |
L27(313) | |||||||||||||
试验号 | 列号 | ||||||||||||
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
2 | 1 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
3 | 1 | 1 | 1 | 1 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 |
4 | 1 | 2 | 2 | 2 | 1 | 1 | 1 | 2 | 2 | 2 | 3 | 3 | 3 |
5 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 3 | 3 | 3 | 1 | 1 | 1 |
6 | 1 | 2 | 2 | 2 | 3 | 3 | 3 | 1 | 1 | 1 | 2 | 2 | 2 |
7 | 1 | 3 | 3 | 3 | 1 | 1 | 1 | 3 | 3 | 3 | 2 | 2 | 2 |
8 | 1 | 3 | 3 | 3 | 2 | 2 | 2 | 1 | 1 | 1 | 3 | 3 | 3 |
9 | 1 | 3 | 3 | 3 | 3 | 3 | 3 | 2 | 2 | 2 | 1 | 1 | 1 |
10 | 2 | 1 | 2 | 3 | 1 | 2 | 3 | 1 | 2 | 3 | 1 | 2 | 3 |
11 | 2 | 1 | 2 | 3 | 2 | 3 | 1 | 2 | 3 | 1 | 2 | 3 | 1 |
12 | 2 | 1 | 2 | 3 | 3 | 1 | 2 | 3 | 1 | 2 | 3 | 1 | 2 |
13 | 2 | 2 | 3 | 1 | 1 | 2 | 3 | 2 | 3 | 1 | 3 | 1 | 2 |
14 | 2 | 2 | 3 | 1 | 2 | 3 | 1 | 3 | 1 | 2 | 1 | 2 | 3 |
15 | 2 | 2 | 3 | 1 | 3 | 1 | 2 | 1 | 2 | 3 | 2 | 3 | 1 |
16 | 2 | 3 | 1 | 2 | 1 | 2 | 3 | 3 | 1 | 2 | 2 | 3 | 1 |
17 | 2 | 3 | 1 | 2 | 2 | 3 | 1 | 1 | 2 | 3 | 3 | 1 | 2 |
18 | 2 | 3 | 1 | 2 | 3 | 1 | 2 | 2 | 3 | 1 | 1 | 2 | 3 |
19 | 3 | 1 | 3 | 2 | 1 | 3 | 2 | 1 | 3 | 2 | 1 | 3 | 2 |
20 | 3 | 1 | 3 | 2 | 2 | 1 | 3 | 2 | 1 | 3 | 2 | 1 | 3 |
21 | 3 | 1 | 3 | 2 | 3 | 2 | 1 | 3 | 2 | 1 | 3 | 2 | 1 |
22 | 3 | 2 | 1 | 3 | 1 | 3 | 2 | 2 | 1 | 3 | 3 | 2 | 1 |
23 | 3 | 2 | 1 | 3 | 2 | 1 | 3 | 3 | 2 | 1 | 1 | 3 | 2 |
24 | 3 | 2 | 1 | 3 | 3 | 2 | 1 | 1 | 3 | 2 | 2 | 1 | 3 |
25 | 3 | 3 | 2 | 1 | 1 | 3 | 2 | 3 | 2 | 1 | 2 | 1 | 3 |
26 | 3 | 3 | 2 | 1 | 2 | 1 | 3 | 1 | 3 | 2 | 3 | 2 | 1 |
27 | 3 | 3 | 2 | 1 | 3 | 2 | 1 | 2 | 1 | 3 | 1 | 3 | 2 |
L16(45) | |||||
试验号 | 列号 | ||||
1 | 2 | 3 | 4 | 5 | |
1 | 1 | 1 | 1 | 1 | 1 |
2 | 1 | 2 | 2 | 2 | 2 |
3 | 1 | 3 | 3 | 3 | 3 |
4 | 1 | 4 | 4 | 4 | 4 |
5 | 2 | 1 | 2 | 3 | 4 |
6 | 2 | 2 | 1 | 4 | 3 |
7 | 2 | 3 | 4 | 1 | 2 |
8 | 2 | 4 | 3 | 2 | 1 |
9 | 3 | 1 | 3 | 4 | 2 |
10 | 3 | 2 | 4 | 3 | 1 |
11 | 3 | 3 | 1 | 2 | 4 |
12 | 3 | 4 | 2 | 1 | 3 |
13 | 4 | 1 | 4 | 2 | 3 |
14 | 4 | 2 | 3 | 1 | 4 |
15 | 4 | 3 | 2 | 4 | 1 |
16 | 4 | 4 | 1 | 3 | 2 |
L32(49) | |||||||||
试验号 | 列号 | ||||||||
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
2 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
3 | 1 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 |
4 | 1 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 |
5 | 2 | 1 | 1 | 2 | 2 | 3 | 3 | 4 | 4 |
6 | 2 | 2 | 2 | 1 | 1 | 4 | 4 | 3 | 3 |
7 | 2 | 3 | 3 | 4 | 4 | 1 | 1 | 2 | 2 |
8 | 2 | 4 | 4 | 3 | 3 | 2 | 2 | 1 | 1 |
9 | 3 | 1 | 2 | 3 | 4 | 1 | 2 | 3 | 4 |
10 | 3 | 2 | 1 | 4 | 3 | 2 | 1 | 4 | 3 |
11 | 3 | 3 | 4 | 1 | 2 | 3 | 4 | 1 | 2 |
12 | 3 | 4 | 3 | 2 | 1 | 4 | 3 | 2 | 1 |
13 | 4 | 1 | 2 | 4 | 3 | 3 | 4 | 2 | 1 |
14 | 4 | 2 | 1 | 3 | 4 | 4 | 3 | 1 | 2 |
15 | 4 | 3 | 4 | 2 | 1 | 1 | 2 | 4 | 3 |
16 | 4 | 4 | 3 | 1 | 2 | 2 | 1 | 3 | 4 |
17 | 1 | 1 | 4 | 1 | 4 | 2 | 3 | 2 | 3 |
18 | 1 | 2 | 3 | 2 | 3 | 1 | 4 | 1 | 4 |
19 | 1 | 3 | 2 | 3 | 2 | 4 | 1 | 4 | 1 |
20 | 1 | 4 | 1 | 4 | 1 | 3 | 2 | 3 | 2 |
21 | 2 | 1 | 4 | 2 | 3 | 4 | 1 | 3 | 2 |
22 | 2 | 2 | 3 | 1 | 4 | 3 | 2 | 4 | 1 |
23 | 2 | 3 | 2 | 4 | 1 | 2 | 3 | 1 | 4 |
24 | 2 | 4 | 1 | 3 | 2 | 1 | 4 | 2 | 3 |
25 | 3 | 1 | 3 | 3 | 1 | 2 | 4 | 4 | 2 |
26 | 3 | 2 | 4 | 4 | 2 | 1 | 3 | 3 | 1 |
27 | 3 | 3 | 1 | 1 | 3 | 4 | 2 | 2 | 4 |
28 | 3 | 4 | 2 | 2 | 4 | 3 | 1 | 1 | 3 |
29 | 4 | 1 | 3 | 4 | 2 | 4 | 2 | 1 | 3 |
30 | 4 | 2 | 4 | 3 | 1 | 3 | 1 | 2 | 4 |
31 | 4 | 3 | 1 | 2 | 4 | 2 | 4 | 3 | 1 |
32 | 4 | 4 | 2 | 1 | 3 | 1 | 3 | 4 | 2 |
(六)因果图测试法
因果图的原理
一些程序的功能可以用判定表(或称决策表)的形式来表示,并根据输入条件的组合情况规定相应的操作。。 定义:是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。
因果图基本符号
左结点ci表示输入状态(或称原因),右结点ei表示输出状态(或称结果)。ci 与 ei 取值0或1,0表示某状态不出现,1则表示某状态出现。
因果图4种关系
- 恒等:若 c1 是1,则 e1 也为1,否则 e1 为0。
- 非:若 c1 是1,则 e1 为0,否则e1为1。
- 或:若 c1 或 c2 或 c3 是1,则 e1 为1,否则 e1 为0。
- 与:若 c1 和 c2 都是1,则 e1 为1,否则 e1 为0。
因果图中的约束
在实际问题中输入状态相互之间、输出状态相互之间可能存在某些依赖关系,称为“约束”或“制约”。
对于输入条件的约束有E、I、O、R四种约束,
对于输出条件的约束只有M约束。
- E约束(异):a和b中最多只有一个为1,即a和b不能同时 为1。(如3个a、b、c则a、b、c最多只有一个1,或全0)
- I 约束(或):a、b、c中至少有一个必须为1,即 a、b、c不能同时为0。
- O约束(唯一):a和b必须有一个且仅有一个为1。
- R约束(要求):a是1时,b必须是1,即a为1时,b不能为0。
- M约束(强制):若结果a为0,则结果b强制为0。(输出条件)
因果图约束符号
因果图测试流程
1.根据程序规格说明书描述,分析并确定因(输入条件)和果(输出结果或程序状态的改变),画出因果图
2.将得到的因果图转换为判定表。
3.为判定表中每一列所表示的情况设计一个测试用例。
因果图测试案例
公交一卡通自动充值系统,其需求描述如下:
系统只接收50元或100元纸币,一次充值只能使用一张纸币,一次充值金额只能为50元或100元。
- 若输入50元纸币,并选择充值50元,完成充值后退卡,提示充值成功。
- 若输入50元纸币,并选择充值100元,提示输入金额不足,并退回50元。
- 若输入100元纸币,并选择充值50元,完成充值后退卡,提示充值成功,找零50元。
- 若输入100元纸币,并选择充值100元,完成充值后退卡,提示充值成功。
- 若输入纸币后在规定时间内不选择充值按钮,退回输入的纸币,并提示错误。
- 若选择充值按钮后不输入纸币,提示错误。
(1)条件之间的制约及组合关系
根据上述描述,输入条件(原因)为:
① 投币50元
② 投币100元
③ 选择充值50元
④ 选择充值100元
输出(结果)有:
(a)完成充值、退卡
(b)提示充值成功
(c)找零
(d)提示错误
(2)明确所有条件之间的制约关系以及组合关系 条件之间的制约关系以及组合关系如图所示。
(3)画出因果图
为了描述得更清楚,这里把每种情况单独画一个因果图出来。
条件①和条件③可以组合,输出a和b的组合,也就是投币50元,充值50元,会输出完成充值、退卡,提示充值成功的结果。其因果图如图所示。
条件①和条件④可以组合,输出c和d的组合,也就是投币50元,充值100元,会输出找零、提示错误的结果。其因果图如图所示。
条件②和条件③可以组合,输出a、b、c的组合,也就是投币100元,充值50元,会输出找零、完成充值、提示充值成功的结果。其因果图如图所示。
条件②和条件④可以组合,输出a和b的组合,也就是投币100元,充值100元,会输出完成充值、退卡,提示充值成功的结果。其因果图如图所示。
条件①、②、③、④均可以单独出现,其因果图如图所示。
(4)根据因果图,写出判定表 根据上面的因果图,写出对应的判定表。
(5)根据判定表,写出测试用例
编号 | 用例说明 | 预期结果 |
1 | 投币50元 选择充值50元 | 正确充值50元,提示充值成功后退卡 |
2 | 投币50元 选择充值100元 | 系统提示错误并退回50元 |
3 | 投币100元 选择充值50元 | 正确充值50元,提示充值成功后退卡,并找回50元 |
4 | 投币100元 选择充值100元 | 正确充值100元,提示充值成功后退卡 |
5 | 投币50元 | 系统提示错误并退回50元 |
6 | 投币100元 | 系统提示错误并退回100元 |
7 | 选择充值50元 | 系统提示错误 |
8 | 选择充值100元 | 系统提示错误 |
(七)决策表法
决策表是分析和表达多逻辑条件下执行不同操作的情况的工具。
在所有的黑盒测试方法中,基于决策表(也称判定表)的测试是最为严格、最具有逻辑性的测试方法。
决策表的优点
能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用决策表能够设计出完整的测试用例集合。
在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。决策表很适合于处理这类问题。
决策表的构成
条件桩、动作桩、条件项、动作项和规则。
条件桩:列出问题的所有条件,如上述3个条件——功率大小、维修记录和运行时间。
动作桩:列出针对问题所采取的操作,如优先维修。
条件项:针对所列条件的具体赋值,即对每个条件可以取真值和假值。
动作项:列出在条件项(各种取值)组合情况下应该采取的动作。
规则:任何一个条件组合的特定取值及其相应要执行的操作。在决策表中贯穿条件项和动作项的一列就是一条规则。
决策表构建步骤
确定规则个数
列出所有的条件桩和动作桩
填入动作项,得到初始决策表
简化决策表,合并相似规则
若表中有两条以上规则具有相同的动作,并且在条件项之间存在极为相似的关系,便可以合并。
合并后的条件项用符号“-”表示,说明执行的动作与该条件的取值无关,称为无关条件。
决策表例题:
(1)某学生成绩管理系统,要求对“平均成绩在90分以上,且没有不及格科目的学生,或班级成绩排名在前5的学生,在程序中将学生的姓名用红色标识”,请建立该场景的判定表。
1、列出所有条件桩和动作桩
所有条件项和动作项 | |
条件 | 平均成绩在90分以上 |
没有不及格科目 | |
班级成绩排名在前5 | |
动作 | 用红色标识 |
用黑色标识 |
2、填入条件项、动作项,得到初始判定表
8是由2的三次方(三个条件项)
初始判定表
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ||
条件 | 平均成绩在90分以上 | Y | Y | Y | Y | N | N | N | N |
没有不及格科目 | Y | Y | N | N | Y | N | Y | N | |
班级成绩排名在前5 | Y | N | Y | N | Y | Y | N | N | |
动作 | 用红色标识 | Y | Y | Y | Y | ||||
用黑色标识 | Y | Y | Y | Y |
3、简化判定表,合并相似规则
1、2 | 3、5、7 | 4 | 6 | 8 | ||
条件 | 平均成绩在90分以上 | Y | -- | Y | N | N |
没有不及格科目 | Y | -- | N | Y | N | |
班级成绩排名在前5 | -- | Y | N | N | N | |
动作 | 用红色标识 | √ | √ | |||
用黑色标识 | √ | √ | √ |