计划测试_黑盒测试
概述
黑盒测试:功能测试或数据驱动测试
测试对象:需求规格说明书和用户手册
动态黑盒测试分类:
因为黑盒测试不看源代码,因此没有静态黑盒测试
- 功能测试:⭐等价类划分、⭐边界值分析、⭐因果图、错误推测、⭐判定表、功能图法、⭐正交试验法
- 非功能测试:性能测试、强度测试、兼容性测试、配置测试、安全性测试
等价类划分
对于测试最基本的方法就是 穷举测试,但是穷举测试 效率低。为了提高效率 且 尽量少降低有效性;也就是说: 对海量数据
简化
。
对复杂问题简化的常用的方法就是 合理分类,精心挑选
传统等价类划分
基本理念: 根据等价关系对输入数据或输出数据的集合进行划分,对于同一个子集的数据相互等效,选全部的数据和选其中一个数据 效果是一样的。
划分方法简介:
- 根据等价关系对输入数据或输出数据的集合进行划分
- 对揭露系统中的缺陷来说,子集中的每个输入条件是等效的
- 从每个子集中选取少数代表性的数据做为测试用例
注: 理想情况下,集合划分应为互不相交(无冗余性
)的子集,且这些子集的并是整个集合(完备性
)
等价类划分 包括两种情况:
- 有效等价类:是指对于程序规格说明来说,是合理的、有意义的输入数据构成的集合
功能正确性
- 无效等价类:是指对于程序规格说明来说,是不合理的、无意义的输入数据构成的集合
功能健壮性
注:功能健壮性 和可靠性和容错性含义相同
等价类的划分原则:
集合评价标准: 集合是指 最小集合,可以接受适度冗余。具体评价标准如下:
- 互斥:每个子集相互互斥
- 完备: 能够包含所有的数据(注意是否覆盖了所有的输出)
基于集合的评价标准,常见类型的等价类划分原则如下:
-
按区间划分:如果可能的输入数据属于一个取值范围或规定了取值个数,则可以确定1个有效等价类和2个无效等价类
连续
-
按数值划分:如果规定了输入数据的一组值,且程序对于每个值分别进行处理,则可为每一个输入值确立1个有效等价类,也就是n个有效等价类,为这组值确立1个无效等价类
离散
(每个数据 处理方式不同) -
按输入集合划分:如果规定了输入值的集合,则可以确定1个有效等价类和1个无效等价类
离散
(每个数据 处理方式相同)
-
按限制条件划分:如果输入条件是一个布尔量时,可确立1个有效等价类和1个无效等价类
-
按限制规则划分:如果规定了输入数据必须遵守的规则,可确立1个有效等价类和若干个无效等价类
-
⭐按处理方式划分:在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,应将该等价类进一步划分
注:
- 复合条件需要拆分
- 输入输出平等,若输出海量,也需要按照6种方法分解。 (输出不为海量数据,无需划分等价类)
- 注意隐含条件,比如年龄范围在20~30岁,要注意隐含条件20是int类型
- 等价类以规则形式描述,测试用例给出具体数据
(阶段靠前就抽象\(\to\) 规则,阶段靠后就具体 )
划分等价类后,创建测试用例的过程:
-
确立等价类后,建立等价类表
-
再从划分出的等价类中选择测试用例(测试用例设计需同时兼顾输入和输出(等价类)的覆盖)
-
确定测试用例
选择测试用例的原则:
-
为每一个等价类规定一个唯一的编号
-
设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类;
重复这一步骤,直到所有的有效等价类都被覆盖为止 -
设计一个新的测试用例,使其仅覆盖一个无效等价类;
重复这一步骤,直到所有的无效等价类都被覆盖为止(为了故障隔离
,方便找到无效的原因)
应用实例
【例 2.1】某公司招聘人员,初审通过的基本要求为:
学历:本科及以上,否则“学历无效”;
专业:计算机、通信、自动化,否则“专业无效”;
年龄:22~30 岁,否则“年龄无效”。
请划分出各条件的有效等价类和无效等价类,并设计测试用例
1.等价类表
2.测试用例划分
例2
【例2.2】某系统的注册页面,要求如下:
登录账号:长度为3~19位,且以字母开头
真实姓名:必填项
登录密码:必填项
确认密码:与登录密码完全一致
出生日期:年份在19202022之间,月份在112之间,日期在1~31之间
请划分出各条件的有效等价类和无效等价类
1.等价类表
2. 测试用例分类
因为实际设计中日期是下拉框,因此遇到日期问题,作为整体处理即可
传统等价类测试存在的问题
-
规格说明往往没有定义无效测试用例的期望输出应该是什么样的。因此,测试人员需要花费大量时间来定义这些测试用例的期望输出
-
在“合理分类”基础上,未实现“精心挑选”
-
适合处理输入条件相互独立的情况,若存在联系则很难描述,且测试效果无法保障 (例如:2月30号、闰年情况等等)
-
强类型语言、图形化用户界面没有必要考虑过多无效输入
新型等价类分类方式
1. 弱一般等价类(弱:值的覆盖、一般:只考虑有效等价类)
单缺陷原则:缺陷极少是由两个或多个缺陷的同时发生引起的
遵循单缺陷原则,要求用例覆盖每一个变量的一种取值即可,取值为有效值值的覆盖,不考虑排列组合
两变量x1, x2的函数:\(a≤x1≤d\), 区间 \([a, b), [b, c), [c, d]\);\(e≤x2≤g\), 区间 \([e, f), [f, g]\)
变量对应等价类数的最大值
2.强一般等价类(强:排列组合、一般:只考虑有效等价类)
遵循多缺陷原则,要求用例覆盖每个变量的每种取值之间的笛卡尔乘积,即所有变量所有取值的所有组合,取值为有效值
两变量x1, x2的函数:\(a≤x1≤d\), 区间 \([a, b), [b, c), [c, d]\);\(e≤x2≤g\), 区间 \([e, f), [f, g]\)
变量对应等价类数的乘积
3.弱健壮等价类(弱:基于单缺陷假设,值的覆盖、健壮:考虑无效值)=传统等价类划分方法(缺省等价类划分方法)
- 对有效输入,使用每个有效等价类的一个值
- 对无效输入,测试用例将拥有一个无效值,并保持其余的值都是有效的
- 在弱一般等价类的基础上增加取值为无效值的情况
变量对应等价类数的最大值+各个变量的无效输入区间数
4.强健壮等价类(强:基于多缺陷假设、健壮:考虑无效值)
- 对有效和无效输入,使用笛卡尔积的每个元素获得测试用例
- 在强一般等价类的基础上增加取值为无效值的情况
(变量对应等价类数+变量的无效输入区间数)的乘积
选择依据:弱和强:有时间选强,没时间选弱。 一般和健壮:选择的选一般,用户输入的选健壮
佣金问题
问题描述
前亚利桑那州境内的一位步枪销售商销售密苏里州制造的步枪机、枪托和枪管。枪机(Lock)卖45美元,枪托 (Stock)卖30美元,枪管(Barrel)卖25美元。销售商每月至少要销售一支完整的步枪,且生产限额是大多数销售商在一个月内可销售70个枪机、80个枪托和90个枪管。每访问一个镇子之后,销售商都给密苏里州步枪制造商发出电报,说明在那个镇子中售出的枪机、枪托和枪管数量。到了月末, 销售商要发出一封很短的电报,通知-1个枪机被售出。这样步枪制造商就知道当月的销售情况,并计算销售商的佣金如下:销售额不到(含)1000美元的部分为10%,1000(不 含)~1800(含)美元的部分为15%,超过1800美元的部分为20%。佣金程序生成月份销售报告,汇总售出的枪机、枪托和枪管总数,销售商的总销售额以及佣金。
输入域的等价类
-
有效等价类:
L1={枪机:1≤枪机≤70}
L2={枪机=-1}
S1={枪托:1 ≤枪托≤80}
B1= -
无效等价类:
L3={枪机:枪机=0或枪机<-1}
L4={枪机:枪机>70}
S2={枪托:枪托<1}
S3={枪托:枪托>80}
B2={枪管:枪管<1}
B3=
弱/强一般等价类
弱健壮等价类
强健壮等价类(不推荐,没有实现缺陷隔离)
因为太复杂,只选冰山一角:过原点的三角锥
- 输出域的等价类
- 结合输入等价类和输出域等价类,得出等价类为:
三角形问题
【例 2.3】输入3个1~100之间的正整数a、b、c作为三边的边长构成三角形,其中整数的要求通过数据类型控制
输出结果:
(1) 输入无效
(2) 非三角形
(3) 一般三角形
(4) 直角三角形
a、b、c满足的条件:
- (1) 1≤a≤100
- (2) 1≤b≤100
- (3) 1≤c≤100
- (4) a+b>c
- (5) b+c>a
- (6) a+c>b
- (7) a2+b2=c2
- (8) b2+c2=a2
- (9) c2+a2=b2
可以看到:
- 1、2、3是4、5、6条件的前提条件
- 7、8、9条件只满足其中一个即可
(1)分析输入域得到的等价类表
(2)分析输出域得到的等价类表
注: a2+b2≠c2且b2+c2≠a2且c2+a2≠b2 与8、9、10互斥。因此7、8、9、10都没有无效等价类
(3)设计测试用例覆盖等价类
边界值分析
等价类划分方法更多的关注
合理分类
,等价类方法认为等价类内部的数据是等效的,因此经常需要边界值分析方法 更多的关注精心挑选
方法简介
大量错误是发生在输入或输出范围的边界上,而不是在输入或输出范围的内部
在测试过程中,边界值分析法是通过选择等价类边界的测试用例进行测试
边界值分析方法与等价类划分的区别:
- 边界值/典型值、任意值
考虑输出域边界(这句话是不对的。实际上两者都考虑了输入输出)
单变量边界值的选取原则
1.如果输入条件规定了取值范围,或规定了值的个数,测试用例选择方案:等价类 按区间划分
- 五点法(只考虑有效等价类):选择最小值,略高于最小值,正常值,略低于最大值,最大值
- 七点法(考虑了健壮性):选择略低于最小值,最小值,略高于最小值,正常值,略低于最大值,最大值,略高于最大值
注: 只有正常值是范围内的任意值,其余值 只要是范围固定,就是固定的。
下面的测试用例只是简单描述,不规范
例1:“某输入文件可包含1~255个记录”,测试用例(0),1,2,120,254,255,(256)
例2:程序的规格说明:“重量在10~50公斤范围内的邮件,其计算邮费……”,测试用例选择(9.99公斤,)10公斤,10.01公斤,25公斤,49.99公斤,50公斤(,50.01公斤)
例3:“计算出每月保险金扣除额为0~1165.25元”,测试用例:(-0.01,) 0.00,0.01,550,1165.24,1165.25(,1165.26)
-
针对规格说明的每个输出条件使用原则①
-
如果规格设计中提到的输入输出是个有序的集合(如顺序文件、表格等),就应注意选取有序集中的第一个和最后一个元素作为测试用例
-
如果程序用了一个内部结构,应该选取这个内部数据结构的边界值作为测试用例
-
分析规格说明,找出其他可能的边界条件
例: 基于边界值分析法为招聘问题补充测试用例
用例 学历 专业 岁月 预期结果 覆盖边界值 1 硕士 计算机 21 系统提示年无效 21 2 硕士 计算机 22 系统提示初审通过 22 3 硕士 计算机 23 系统提示初审通过 23 4 硕士 计算机 26 系统提示初审通过 26 5 硕士 计算机 29 系统提示初审通过 29 6 硕士 计算机 30 系统提示初审通过 30 7 硕士 计算机 31 系统提示年无效 31 注意:学历和专业随便选,但是必须有。注意预期结果可能为无效
多变量组合边界值的选取原则
- “单缺陷”假设:缺陷极少是由两个或多个缺陷的同时发生引起的
对于n变量函数,使除一个以外的所有变量取正常值,使剩余的那个变量取最小值、略高于最小值、正常值、略低于最大值、最大值,对每个变量都重复进行。
一个n变量函数的边界值有:\(4n+1\)个测试用例
例:涉及两个变量的函数x1∈[a,b],x2 ∈[c,d]
x1的取值:\(x_{1min},x_{1min+},x_{1nom},x_{1max-},x_{1max}\)
x2的取值:\(x_{2min},x_{2min+},x_{2nom},x_{2max-},x_{2max}\)
边界值分析测试用例为:
\(<x_{1nom}, x_{2nom}>\)
\(<x_{1nom}, x_{2min}> <x_{1nom}, x_{2min+}> <x_{1nom}, x_{2max-}> <x_{1nom}, x_{2max}>\)
\(<x_{1min}, x_{2nom}> <x_{1min+},x_{2nom}> <x_{1max-}, x_{2nom}> <x_{1max}, x_{2nom}>\)
- 健壮性测试是边界值分析的一种扩展
变量除了取min,min+,nom,max-,max五个边界值外,还要考虑采用一个略超过最大值(max+)以及一个略小于最小值(min-)的取值
一个n变量函数的健壮性测试用例有\(6n+1\)个(基于“单缺陷”假设)
健壮性测试最有意义的部分不是输入,而是预期的输出,观察例外情况如何处理
【例 2.6】NextDate函数的边界值分析测试
1 ≤ month ≤12
1 ≤ day ≤31
1912 ≤ year ≤2050
注意两点: 正常用例一定来源于边界值分析表,在过程中不要改变;注意预期结果可能为无效
三角形问题
(1)分析输入域得到的等价类表
通过边界值分析法补充测试用例
输入域 | 等价类 | 边界值 |
---|---|---|
a | 1~100 | 0、1、2、50、99、100、101 |
b | 1~100 | 0、1、2、50、99、100、101 |
c | 1~100 | 0、1、2、50、99、100、101 |
此时正常值最好选50,分析如下: (原因是因为要考虑输出域,如果不选50,那么将会增加测试用例)
如果正常值不为50,那么对于输出域很多都不符合,因此正常值选50最好。
(2)设计测试用例覆盖等价类
最坏情况边界值分析方法
对每一个变量,首先进行包含最小值、略高于最小值、正常值、略低于最大值、最大值五个元素集合的测试,然后对这些集合进行笛卡尔积计算,以生成测试用例
n变量函数的最坏情况测试会产生\(5^n\)个测试用例
考虑健壮性的最坏情况边界值分析方法
对每一个变量,首先进行包含最小值、略高于最小值、正常值、略低于最大值、最大值五个元素集合的测试,还要采用一个略超过最大值的取值,以及一个略小于最小值的取值。然后对这些集合进行笛卡尔积计算,以生成测试用例
n变量函数的健壮最坏情况测试会产生\(7^n\)个测试用例.
⭐特殊情况
-
区间较小
比如:3~4 七点法,只需要选出1,2,3,4,5 -
数值
比如:选2个班干部 七点法,只需要选出三个点:1,2,3 -
无界区间
比如:[a,+\(\infty\)] 右边界选一个符合要求的较大值就行,也就是选5个 -
日期和时间需要按正常的处理(看成一个整体)
因果图分析
等价类划分法和边界值分析法——输入条件相互独立,基于单缺陷假设
如果输入条件之间存在联系,则很难描述,测试效果难以保障
方法简介
因果图法适合于描述对于多种条件的组合,相应产生多个动作的形式
因果图方法最终生成的就是判定表。它适合于检查程序输入条件的各种组合情况
表示方法
因果图由 原因\(Ci\),结果\(Ei\),关系和约束 4部分组成。对四部分具体说明如下:
1.原因\(Ci\):用户输入条件的有效等价类
用户输入\(\to\) 等价类划分,且为输入条件的有效等价类
各结点表示状态,可取值逻辑值 \(“0”\)或\(“1”\)( 实际上 非逻辑值也能处理,但是太复杂,一般只使用逻辑值)
划分原则4,只写有效等价类
简单条件只有关系运算,没有逻辑运算
2.结果\(Ei\):系统的预期输出Expection
3.关系:表示 无效等价类
常见的有:
- 恒等和非:一对一
- 或和与:二对一
4.约束:输入状态相互之间可能存在某些依赖关系
-
E(互斥):Exclusive 至多有一个成立
≤1
-
I(包含):Inclusive 至少有一个成立
-
O(唯一):Only 有且只有一个成立
=1
-
R(要求):Request
单向
-
M(屏蔽) a出现了b就不能出现
单向,面向结果
注意:
- 屏蔽关系在弱健壮等价类无效,因为测试用例最多只能有一个无效等价类。
- 约束是对用户输入的限制,限制后没用办法改成其他方式。
比如:如果有4个填写框,要求用户至少输入一个,如果没用输入,点击确认时提示至少输入一个。此时不符合任何约束,因为有对应的预期输出
例如:
因果图法 测试用例的设计步骤
-
确定软件规格说明中的原因和结果。并给每个原因和结果赋予一个标识符
-
确定原因和结果之间的逻辑关系。分析软件规格说明中的语义,找出原因与结果之间、原因与原因之间对应的关系,根据这些关系画出因果图
-
在因果图上使用标准的符号标明约束条件
-
把因果图转换成判定表
-
为判定表中的每一列设计测试用例
【例 2.8】 规格说明书要求:第1列字符必须是A或B复合条件
,第2列字符必须是1个数字,在此情况下对文件进行修改。如果第1列字符不正确,给出信息L;如果第2列字符不是数字,给出信息M
原因:
C1—第1列字符是A
C2—第1列字符是B
C3—第2列字符是1个数字
结果:
E1—修改文件
E2—给出信息L
E3—给出信息M
注意:
- 为了确保测试的充分性,遇到复合条件必须拆成简单条件,拆到不能再拆为止。因为如果不是简单条件,无法进行有效的故障隔离。
比如:有效值\(1<a<100\)是符合条件,如果不拆分,他的逆是\(a≤1|a≥100\) 但是测试用例只能选一个,因此无法进行有效的故障隔离,因此必须拆分。
问题分析思路:从结果入手,分析结果与原因间存在的关系
结果分析顺序:
- 若结果间不存在递进关系,则一般从最简单的开始分析
- 若结果间存在递进关系,则必须按顺序进行分析
中间结果:
中间结果的确定:
- 原本拆分的输入条件,需通过中间结果合并描述其逻辑关系
- 多个输入条件间存在紧密依赖关系,考虑增加中间结果
- 一个结果与多个原因间存在关系,不是纯粹的与/或关系,需要增加中间结果
- 某输出以某输入作为前提条件,为了后续分析的顺利进行,必须增加中间结果
判定表
判定表不仅仅用于软件测试,平时工作也可以用到,例如:
方法简介
判定表是分析和表达多逻辑条件下执行不同操作的情况下的工具
注意:判定表可以独立于因果图使用, 常用于小型系统。(但是对于因果图一般做中间结果,不独立使用)
优点: 能把复杂的问题按各种可能的情况一一列举出来,简明而易于理解,也可避免遗漏
缺点:
- 难以直接从需求规格说明书中直接获取输入和输出之间的因果关系
- 测试用例数目较多
- 不擅长处理条件/动作为非逻辑值的情况
判定表的四部分
-
条件桩:列出问题的所有条件,条件桩就是有效等价类的逻辑值
因果图的原因--照搬需求
-
条件项:针对条件桩给出的条件列出所有可能的取值
-
动作桩:在条件项的各种取值情况下应采取的动作
-
动作项:指出在条件项的各组取值情况下应采取的动作
生成条件表的规则:
规则:任何一个条件组合的特定取值及其相应要执行的操作称为规则,也就是条件项和动作项的排列,一个条件项和动作项的映射关系。
化简:就是把有两条或多条具有相同的动作,并且其条件项之间存在着极为相似的关系的规则合并
注: \(“-”\):不关心条目,表示条件无关或者条件不适用,也可通过\(n/a\)表示条件不适用
正确示范:
错误示范:
-
1是因为没有考虑完整:真真和假假的情况。
-
2是因为同一个不能合并两次
\(2^n > 规则 > 测试\)
由于合并化简---规则小于等于\(2^n\)
由于约束--规则多余测试用例
2. 建立判定表的步骤
- 列出所有的条件桩和动作桩
- 确定规则的个数,假如有n个条件,每个条件有两个取值,故有\(2^n\) 种规则
- 填入条件项和动作项,得到初始判定表
- 简化,合并相似规则(相同动作)
简化可能和确定同时进行
- 为判定表中的每一列设计测试用例
应用实例
对上面例子的因果图转换成判定表
原因:C1—第1列字符是A ; C2—第1列字符是B ; C3—第2列字符是1个数字
结果: E1—修改文件 ; E2—给出信息L ; E3—给出信息M
中间结果: T1—第1列字符正确
【例 2.10】在某系统的注册页面中,规则如下:
① 用户名为必填项,若该项不符合要求,则提示“请输入用户名”;
② 密码长度大于4位小于8位,由纯字母、纯数字或者字母加数字组成,若用户名有效,且该项不符合要求,则提示“密码输入有误”;
③ 确认密码必须与密码完全一致。若用户名和密码均有效,若该项不符合要求,则提示“确认密码输入有误”;
④ 若用户名、密码和确认密码均有效,则提示“注册成功”。
因果图
判定表
测试用例
判定表单独使用
【例2.9】“……对功率大于50马力的机器、并且维修记录不全,或者已经运行10年以上的机器,应给予优先的维修处理……”
- 列出所有条件桩和动作桩
- 确定规则总数: \(2^{条件桩数量}=2^3=8\)
- 填入条件项和动作项
- 对相似规则进行合并化简
- 为判定表中的每一列设计测试用例
不能使用逻辑值
当不是划分成逻辑值时,就必须引入等价类划分方法,用来减少用例的数量。
考试时不考这种情况,了解即可
【例2.14】NextDate函数
其中1<=月份<=12,1<=日期<=31,1920<=年<=2050
-
列出条件桩和动作桩
条件桩: 1. 月份Month ; 2.日期Day 3. 年份Year
动作桩: 1. Day加1 ; 2. Day复位为1 ; 3. Month加1 ;4.Month复位为1 ; 5. Year加1 ; 6. 无效 -
确定规则个数(引入等价类): 12×31×131=48732 \(\to\) 4×5×2=40
Year取值:Y1={Year是闰年} ; Y2={Year非闰年}
Month取值:M1={Month有30天} ; M2={Month有31天,12月除外} ; M3={Month为12月} ; M4={Month为2月}
Day取值: D1={1≤Day≤27} ; D2={Day=28} ; D3={Day=29} ; D4={Day=30} ; D5= -
填入条件项和动作项 :通过合并化简只需要列出\(22\)个
-
设计测试用例
正交试验法
大题不考,考选择题
是一种在理科实验设计常用的 科学的数据采样方法。
实验指标:
- 有效性---质量
- 效率---成本
因子:输入条件
因子的水平:条件取值
测试步骤:
-
提取功能说明,构造因子-状态表
分解功能要求,确定因子状态(采样取值),并构造因子-状态二维表 -
加权筛选,生成因素分析表
1.将各个因子的权值ωi相加,得到权总和SUM
\(SUM=\displaystyle \sum^{n}_{i=1}{w_i}\)
2.将各个因子的权分别除以权总和,得到各因子的权在权总和中所占的比例
\(r_i=\frac{𝜔_𝑖}{𝑆𝑈𝑀}(𝑖=1,2,3,...,𝑛)\)
3.选择筛选标准
采用因子数倒数的一半,即 作为权比例标准值
将各因子的权比例ri与标准值进行比较
若 则保留该因子,若 则舍去该因子及其状态
4.对于保留下来的各个因子采用同样方法对其状态进行筛选
筛选2
- 利用正交表构造测试数据集
- “L”为正交表的代号,\(L_9(3^4)\)为三水平的正交表
- 下标“9”:表的行数,表示9个不同条件的试验
- 指数“4”:表的列数,最多可安排4个因子
- 底数“3”:每个因子取3个不同的水平
正交表特征/选数规则:
- 取值的均匀分配
- 任意两两组合取值的均匀搭配
对于的上述例子就是选取\(3^2\)
正交表的正交特性:
-
每列中不同的数字重复次数相同
在表\(L_8(2^7)\)中,每列有2个不同数字:1和2,每一个各出现4次 -
将任意两列的同行数字看成一个数对,那么一切可能数对重复次数相同
在表\(L_8(2^7)\)中,任意两列有4种可能的数对:(1,1),(1,2),(2,1),(2,2),每一对各出现2次
正交表分类
-
二水平正交表:\(L_4(2^3)、 L_8(2^7)、 L_{12}(2^{11}) 、 L_{16}(2^{15})\)
注:如果只有5个条件,则选用\(L_8(2^7)\) -
三水平正交表: L9(34)、 L18(37)、 L27(313)
-
四水平正交表: L16(45)
-
五水平正交表: L25(56)
-
混合水平正交表:L18(2×37)
分类2
-
完全正交表:行数n、列数p和水平q之间满足以下关系
-
其他类型正交表
设计用例时包括以下情况:
-
测试输入参数个数取值=正交表因子水平数
直接套用正交表+补充测试用例 -
测试输入参数个数≠正交表因子数
选择正交表中因子数略大的,多余因子舍弃 -
测试输入参数取值数≠正交表水平数
选择正交表中因子及水平数略大且总实验次数最少的,多余因子舍弃,多余水平均分
应用实例
【例2.15】某Web站点进行兼容性测试,其具体测试情况如下:
1.Web浏览器:Chrome 72、IE 10、Firefox 69
2.插件:无、RealPlayer、MediaPlayer
3.应用服务器:IIS、Apache、Netscape Enterprise
4.操作系统:Windows 7、Windows 10、Linux
方法评价
优点:
- 节省测试工作工时—设计简单
- 可控制生成测试用例的数量—加权筛选
- 测试用例具有一定的覆盖度—覆盖均匀
问题: 无法考虑输入参数相互组合的实际意义 , 小概率发生数量过多的情况。
其他黑盒测试方法
除了上述常用的测试方法,黑盒测试方法还有:
- 场景法
- 状态转换法
- 错误推测法
场景法
概述: 从一个流程开始,通过描述经过的路径来确定的过程,经过遍历所有的基本流和扩展流来完成整个场景
设计步骤
- 根据说明,描述程序的基本流及各项扩展流
- 根据基本流和各项扩展流生成不同的场景
- 对每一个场景生成相应的测试用例
- 对生成的所有测试用例重新复审,去掉多余的测试用例,测试用例确定后,对每一个测试用例确定测试数据值
示例
为网上银行系统的“转账”功能设计测试用例
-
应用场景法设计全局测试用例
创建用例规约
根据用例规约的事件流 创建用例场景设计
-
应用常规方法细化测试用例
【Pre-condition】当银行客户成功登录网上银行系统后,假定Mary为该客户收款方列表中存在的合法账户,支付密码为123456,账户余额为1000元
软件测试分析报告
示例2:设计ATM系统测试用例
例子描述
-
描述程序基本流和备选流
-
生成场景
-
用例设计
2. 状态转换法
概述
许多需求用状态机的方式来描述,状态机的测试主要关注在测试状态转移的正确性上面
测试要点:
- 设计测试用例以覆盖所有状态
- 设计测试用例以覆盖所有状态转换
- 设计测试用例以覆盖所有触发事件
设计步骤
- 根据需求提取全部状态
- 绘制状态转换图
- 根据状态迁移图推导测试路径(状态迁移树)
- 选取测试数据,构造测试用例
示例
- 测试需求分析
- 客户向航空公司打电话预订机票。此时,机票从“未预订”状态进入“完成预订”状态
- 顾客支付了机票款项后,机票变为“已支付”状态
- 客户当天到达机场并使用身份证换领登机牌后,机票变为“已出票”状态;
- 检票登机后,机票变为“已使用”状态
- 在登机前,可以取消自己的订票信息,若已支付机票费用,则可以退回票款。取消后,订票信息处于“已取消”状态
-
绘制状态转换图
-
根据状态转换图推导测试路径
错误推测法
概述
- 基于经验和直觉推测软件中容易产生缺陷的功能、模块及业务场景
- 依据推测逐一进行列举,从而有针对性的设计测试用例
- 一种提高软件质量和效率的技能