计划测试_黑盒测试

image

概述

黑盒测试:功能测试或数据驱动测试
测试对象:需求规格说明书和用户手册

动态黑盒测试分类:
因为黑盒测试不看源代码,因此没有静态黑盒测试

  • 功能测试:⭐等价类划分、⭐边界值分析、⭐因果图、错误推测、⭐判定表、功能图法、⭐正交试验法
  • 非功能测试:性能测试、强度测试、兼容性测试、配置测试、安全性测试

等价类划分

对于测试最基本的方法就是 穷举测试,但是穷举测试 效率低。为了提高效率 且 尽量少降低有效性;也就是说: 对海量数据 简化
对复杂问题简化的常用的方法就是 合理分类,精心挑选

传统等价类划分

基本理念: 根据等价关系对输入数据或输出数据的集合进行划分,对于同一个子集的数据相互等效,选全部的数据和选其中一个数据 效果是一样的。

划分方法简介:

  1. 根据等价关系对输入数据或输出数据的集合进行划分
  2. 对揭露系统中的缺陷来说,子集中的每个输入条件是等效的
  3. 从每个子集中选取少数代表性的数据做为测试用例

注: 理想情况下,集合划分应为互不相交(无冗余性)的子集,且这些子集的并是整个集合(完备性)

等价类划分 包括两种情况:

  • 有效等价类:是指对于程序规格说明来说,是合理的、有意义的输入数据构成的集合功能正确性
  • 无效等价类:是指对于程序规格说明来说,是不合理的、无意义的输入数据构成的集合功能健壮性

注:功能健壮性 和可靠性和容错性含义相同

等价类的划分原则:

集合评价标准: 集合是指 最小集合,可以接受适度冗余。具体评价标准如下:

  • 互斥:每个子集相互互斥
  • 完备: 能够包含所有的数据(注意是否覆盖了所有的输出)

基于集合的评价标准,常见类型的等价类划分原则如下:

  1. 按区间划分:如果可能的输入数据属于一个取值范围或规定了取值个数,则可以确定1个有效等价类和2个无效等价类连续
    image

  2. 按数值划分:如果规定了输入数据的一组值,且程序对于每个值分别进行处理,则可为每一个输入值确立1个有效等价类,也就是n个有效等价类,为这组值确立1个无效等价类离散
    每个数据 处理方式不同

  3. 按输入集合划分:如果规定了输入值的集合,则可以确定1个有效等价类和1个无效等价类离散
    (每个数据 处理方式相同)
    image

  4. 按限制条件划分:如果输入条件是一个布尔量时,可确立1个有效等价类和1个无效等价类

  5. 按限制规则划分:如果规定了输入数据必须遵守的规则,可确立1个有效等价类和若干个无效等价类

  6. 按处理方式划分:在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,应将该等价类进一步划分

注:

  1. 复合条件需要拆分
  2. 输入输出平等,若输出海量,也需要按照6种方法分解。 (输出不为海量数据,无需划分等价类)
  3. 注意隐含条件,比如年龄范围在20~30岁,要注意隐含条件20是int类型
  4. 等价类以规则形式描述,测试用例给出具体数据
    (阶段靠前就抽象\(\to\) 规则,阶段靠后就具体 )

划分等价类后,创建测试用例的过程:

  1. 确立等价类后,建立等价类表
    image

  2. 再从划分出的等价类中选择测试用例(测试用例设计需同时兼顾输入和输出(等价类)的覆盖)

  3. 确定测试用例

选择测试用例的原则:

  1. 为每一个等价类规定一个唯一的编号

  2. 设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类
    重复这一步骤,直到所有的有效等价类都被覆盖为止

  3. 设计一个新的测试用例,使其仅覆盖一个无效等价类
    重复这一步骤,直到所有的无效等价类都被覆盖为止(为了故障隔离,方便找到无效的原因)

应用实例

【例 2.1】某公司招聘人员,初审通过的基本要求为:
学历:本科及以上,否则“学历无效”;
专业:计算机、通信、自动化,否则“专业无效”;
年龄:22~30 岁,否则“年龄无效”。
请划分出各条件的有效等价类和无效等价类,并设计测试用例
1.等价类表
image
2.测试用例划分
image

例2

【例2.2】某系统的注册页面,要求如下:
登录账号:长度为3~19位,且以字母开头
真实姓名:必填项
登录密码:必填项
确认密码:与登录密码完全一致
出生日期:年份在19202022之间,月份在112之间,日期在1~31之间
请划分出各条件的有效等价类和无效等价类
1.等价类表
image
2. 测试用例分类
image
因为实际设计中日期是下拉框,因此遇到日期问题,作为整体处理即可

传统等价类测试存在的问题

  • 规格说明往往没有定义无效测试用例的期望输出应该是什么样的因此,测试人员需要花费大量时间来定义这些测试用例的期望输出

  • 在“合理分类”基础上,未实现“精心挑选”

  • 适合处理输入条件相互独立的情况,若存在联系则很难描述,且测试效果无法保障 (例如:2月30号、闰年情况等等)

  • 强类型语言、图形化用户界面没有必要考虑过多无效输入

新型等价类分类方式

1. 弱一般等价类(弱:值的覆盖、一般:只考虑有效等价类)
单缺陷原则:缺陷极少是由两个或多个缺陷的同时发生引起的
遵循单缺陷原则,要求用例覆盖每一个变量的一种取值即可,取值为有效值值的覆盖,不考虑排列组合

两变量x1, x2的函数:\(a≤x1≤d\), 区间 \([a, b), [b, c), [c, d]\)\(e≤x2≤g\), 区间 \([e, f), [f, g]\)
变量对应等价类数的最大值
image

2.强一般等价类(强:排列组合、一般:只考虑有效等价类)
遵循多缺陷原则,要求用例覆盖每个变量的每种取值之间的笛卡尔乘积,即所有变量所有取值的所有组合,取值为有效值

两变量x1, x2的函数:\(a≤x1≤d\), 区间 \([a, b), [b, c), [c, d]\)\(e≤x2≤g\), 区间 \([e, f), [f, g]\)
变量对应等价类数的乘积
image

3.弱健壮等价类(弱:基于单缺陷假设,值的覆盖、健壮:考虑无效值)=传统等价类划分方法(缺省等价类划分方法)

  • 对有效输入,使用每个有效等价类的一个值
  • 对无效输入,测试用例将拥有一个无效值,并保持其余的值都是有效的
  • 在弱一般等价类的基础上增加取值为无效值的情况

变量对应等价类数的最大值+各个变量的无效输入区间数
image

4.强健壮等价类(强:基于多缺陷假设、健壮:考虑无效值)

  • 对有效和无效输入,使用笛卡尔积的每个元素获得测试用例
  • 在强一般等价类的基础上增加取值为无效值的情况

(变量对应等价类数+变量的无效输入区间数)的乘积
image

选择依据:弱和强:有时间选强,没时间选弱。 一般和健壮:选择的选一般,用户输入的选健壮

佣金问题

问题描述
前亚利桑那州境内的一位步枪销售商销售密苏里州制造的步枪机、枪托和枪管。枪机(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=

弱/强一般等价类
image

弱健壮等价类
image

强健壮等价类(不推荐,没有实现缺陷隔离)
image
因为太复杂,只选冰山一角:过原点的三角锥
image

  • 输出域的等价类
    image

image

  • 结合输入等价类和输出域等价类,得出等价类为:
    image

三角形问题

【例 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)分析输入域得到的等价类表
image
(2)分析输出域得到的等价类表
image

注: a2+b2≠c2且b2+c2≠a2且c2+a2≠b2 与8、9、10互斥。因此7、8、9、10都没有无效等价类

(3)设计测试用例覆盖等价类
image

边界值分析

等价类划分方法更多的关注合理分类,等价类方法认为等价类内部的数据是等效的,因此经常需要边界值分析方法 更多的关注 精心挑选

方法简介
大量错误是发生在输入或输出范围的边界上,而不是在输入或输出范围的内部
在测试过程中,边界值分析法是通过选择等价类边界的测试用例进行测试

边界值分析方法与等价类划分的区别

  • 边界值/典型值、任意值
  • 考虑输出域边界 (这句话是不对的。实际上两者都考虑了输入输出)

单变量边界值的选取原则

1.如果输入条件规定了取值范围,或规定了值的个数,测试用例选择方案:等价类 按区间划分

  • 五点法(只考虑有效等价类):选择最小值,略高于最小值,正常值,略低于最大值,最大值
  • 七点法(考虑了健壮性):选择略低于最小值,最小值,略高于最小值,正常值,略低于最大值,最大值,略高于最大值
    image

注: 只有正常值是范围内的任意值,其余值 只要是范围固定,就是固定的。

下面的测试用例只是简单描述,不规范
例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. 针对规格说明的每个输出条件使用原则①

  2. 如果规格设计中提到的输入输出是个有序的集合(如顺序文件、表格等),就应注意选取有序集中的第一个和最后一个元素作为测试用例

  3. 如果程序用了一个内部结构,应该选取这个内部数据结构的边界值作为测试用例

  4. 分析规格说明,找出其他可能的边界条件

例: 基于边界值分析法为招聘问题补充测试用例
image

用例 学历 专业 岁月 预期结果 覆盖边界值
1 硕士 计算机 21 系统提示年无效 21
2 硕士 计算机 22 系统提示初审通过 22
3 硕士 计算机 23 系统提示初审通过 23
4 硕士 计算机 26 系统提示初审通过 26
5 硕士 计算机 29 系统提示初审通过 29
6 硕士 计算机 30 系统提示初审通过 30
7 硕士 计算机 31 系统提示年无效 31

注意:学历和专业随便选,但是必须有。注意预期结果可能为无效

多变量组合边界值的选取原则

  1. “单缺陷”假设:缺陷极少是由两个或多个缺陷的同时发生引起的
    对于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}>\)
image

  1. 健壮性测试是边界值分析的一种扩展
    变量除了取min,min+,nom,max-,max五个边界值外,还要考虑采用一个略超过最大值(max+)以及一个略小于最小值(min-)的取值
    一个n变量函数的健壮性测试用例有\(6n+1\)(基于“单缺陷”假设)

健壮性测试最有意义的部分不是输入,而是预期的输出,观察例外情况如何处理
image

【例 2.6】NextDate函数的边界值分析测试
1 ≤ month ≤12
1 ≤ day ≤31
1912 ≤ year ≤2050
image
注意两点: 正常用例一定来源于边界值分析表,在过程中不要改变;注意预期结果可能为无效

三角形问题

(1)分析输入域得到的等价类表
image

通过边界值分析法补充测试用例

输入域 等价类 边界值
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,那么将会增加测试用例)
image
如果正常值不为50,那么对于输出域很多都不符合,因此正常值选50最好。

(2)设计测试用例覆盖等价类

image

最坏情况边界值分析方法

对每一个变量,首先进行包含最小值、略高于最小值、正常值、略低于最大值、最大值五个元素集合的测试,然后对这些集合进行笛卡尔积计算,以生成测试用例
n变量函数的最坏情况测试会产生\(5^n\)个测试用例
image

考虑健壮性的最坏情况边界值分析方法

对每一个变量,首先进行包含最小值、略高于最小值、正常值、略低于最大值、最大值五个元素集合的测试,还要采用一个略超过最大值的取值,以及一个略小于最小值的取值。然后对这些集合进行笛卡尔积计算,以生成测试用例
n变量函数的健壮最坏情况测试会产生\(7^n\)个测试用例.

image

⭐特殊情况

  1. 区间较小
    比如:3~4 七点法,只需要选出1,2,3,4,5

  2. 数值
    比如:选2个班干部 七点法,只需要选出三个点:1,2,3

  3. 无界区间
    比如:[a,+\(\infty\)] 右边界选一个符合要求的较大值就行,也就是选5个

  4. 日期和时间需要按正常的处理(看成一个整体)

因果图分析

等价类划分法和边界值分析法——输入条件相互独立,基于单缺陷假设
如果输入条件之间存在联系,则很难描述,测试效果难以保障

方法简介
因果图法适合于描述对于多种条件的组合,相应产生多个动作的形式
因果图方法最终生成的就是判定表。它适合于检查程序输入条件的各种组合情况

表示方法
因果图由 原因\(Ci\),结果\(Ei\),关系和约束 4部分组成。对四部分具体说明如下:

1.原因\(Ci\):用户输入条件的有效等价类
用户输入\(\to\) 等价类划分,且为输入条件的有效等价类
各结点表示状态,可取值逻辑值 \(“0”\)\(“1”\)( 实际上 非逻辑值也能处理,但是太复杂,一般只使用逻辑值)
划分原则4,只写有效等价类
简单条件只有关系运算,没有逻辑运算

2.结果\(Ei\):系统的预期输出Expection

3.关系:表示 无效等价类
常见的有:
image

  • 恒等和非:一对一
  • 或和与:二对一

4.约束:输入状态相互之间可能存在某些依赖关系

image

  1. E(互斥):Exclusive 至多有一个成立≤1

  2. I(包含):Inclusive 至少有一个成立

  3. O(唯一):Only 有且只有一个成立=1

  4. R(要求):Request 单向

  5. M(屏蔽) a出现了b就不能出现 单向,面向结果

注意:

  1. 屏蔽关系在弱健壮等价类无效,因为测试用例最多只能有一个无效等价类。
  2. 约束是对用户输入的限制,限制后没用办法改成其他方式。
    比如:如果有4个填写框,要求用户至少输入一个,如果没用输入,点击确认时提示至少输入一个。此时不符合任何约束,因为有对应的预期输出

例如:
image

因果图法 测试用例的设计步骤

  1. 确定软件规格说明中的原因和结果。并给每个原因和结果赋予一个标识符

  2. 确定原因和结果之间的逻辑关系。分析软件规格说明中的语义,找出原因与结果之间、原因与原因之间对应的关系,根据这些关系画出因果图

  3. 在因果图上使用标准的符号标明约束条件

  4. 把因果图转换成判定表

  5. 为判定表中的每一列设计测试用例

【例 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
image

注意:

  1. 为了确保测试的充分性,遇到复合条件必须拆成简单条件,拆到不能再拆为止。因为如果不是简单条件,无法进行有效的故障隔离。
    比如:有效值\(1<a<100\)是符合条件,如果不拆分,他的逆是\(a≤1|a≥100\) 但是测试用例只能选一个,因此无法进行有效的故障隔离,因此必须拆分。

问题分析思路:从结果入手,分析结果与原因间存在的关系

结果分析顺序

  • 若结果间不存在递进关系,则一般从最简单的开始分析
  • 若结果间存在递进关系,则必须按顺序进行分析

中间结果:
中间结果的确定:

  1. 原本拆分的输入条件,需通过中间结果合并描述其逻辑关系
  2. 多个输入条件间存在紧密依赖关系,考虑增加中间结果
  3. 一个结果与多个原因间存在关系,不是纯粹的与/或关系,需要增加中间结果
  4. 某输出以某输入作为前提条件,为了后续分析的顺利进行,必须增加中间结果

判定表

判定表不仅仅用于软件测试,平时工作也可以用到,例如:
image

方法简介
判定表是分析和表达多逻辑条件下执行不同操作的情况下的工具

注意:判定表可以独立于因果图使用, 常用于小型系统。(但是对于因果图一般做中间结果,不独立使用)

优点: 能把复杂的问题按各种可能的情况一一列举出来,简明而易于理解,也可避免遗漏
缺点:

  1. 难以直接从需求规格说明书中直接获取输入和输出之间的因果关系
  2. 测试用例数目较多
  3. 不擅长处理条件/动作为非逻辑值的情况

判定表的四部分

  • 条件桩:列出问题的所有条件,条件桩就是有效等价类的逻辑值因果图的原因--照搬需求

  • 条件项:针对条件桩给出的条件列出所有可能的取值

  • 动作桩:在条件项的各种取值情况下应采取的动作

  • 动作项:指出在条件项的各组取值情况下应采取的动作

生成条件表的规则:
规则:任何一个条件组合的特定取值及其相应要执行的操作称为规则,也就是条件项和动作项的排列,一个条件项和动作项的映射关系。
化简:就是把有两条或多条具有相同的动作,并且其条件项之间存在着极为相似的关系的规则合并

注: \(“-”\):不关心条目,表示条件无关或者条件不适用,也可通过\(n/a\)表示条件不适用

正确示范:
image

错误示范:
image

  • 1是因为没有考虑完整:真真和假假的情况。

  • 2是因为同一个不能合并两次

    \(2^n > 规则 > 测试\)
    由于合并化简---规则小于等于\(2^n\)
    由于约束--规则多余测试用例

2. 建立判定表的步骤

  1. 列出所有的条件桩和动作桩
  2. 确定规则的个数,假如有n个条件,每个条件有两个取值,故有\(2^n\) 种规则
  3. 填入条件项和动作项,得到初始判定表
  4. 简化,合并相似规则(相同动作) 简化可能和确定同时进行
  5. 为判定表中的每一列设计测试用例

应用实例

对上面例子的因果图转换成判定表
原因:C1—第1列字符是A ; C2—第1列字符是B ; C3—第2列字符是1个数字
结果: E1—修改文件 ; E2—给出信息L ; E3—给出信息M
中间结果: T1—第1列字符正确
image

【例 2.10】在某系统的注册页面中,规则如下:
① 用户名为必填项,若该项不符合要求,则提示“请输入用户名”;
② 密码长度大于4位小于8位,由纯字母、纯数字或者字母加数字组成,若用户名有效,且该项不符合要求,则提示“密码输入有误”;
③ 确认密码必须与密码完全一致。若用户名和密码均有效,若该项不符合要求,则提示“确认密码输入有误”;
④ 若用户名、密码和确认密码均有效,则提示“注册成功”。
因果图
image
判定表
image
测试用例
image

判定表单独使用

【例2.9】“……对功率大于50马力的机器、并且维修记录不全,或者已经运行10年以上的机器,应给予优先的维修处理……”

  1. 列出所有条件桩和动作桩
    image
  2. 确定规则总数: \(2^{条件桩数量}=2^3=8\)
  3. 填入条件项和动作项
    image
  4. 对相似规则进行合并化简
    image
  5. 为判定表中的每一列设计测试用例
    image

不能使用逻辑值

当不是划分成逻辑值时,就必须引入等价类划分方法,用来减少用例的数量。

考试时不考这种情况,了解即可

【例2.14】NextDate函数
其中1<=月份<=12,1<=日期<=31,1920<=年<=2050

  1. 列出条件桩和动作桩
    条件桩: 1. 月份Month ; 2.日期Day 3. 年份Year
    动作桩: 1. Day加1 ; 2. Day复位为1 ; 3. Month加1 ;4.Month复位为1 ; 5. Year加1 ; 6. 无效

  2. 确定规则个数(引入等价类): 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=

  3. 填入条件项和动作项 :通过合并化简只需要列出\(22\)
    image
    image

  4. 设计测试用例
    image

正交试验法

大题不考,考选择题
是一种在理科实验设计常用的 科学的数据采样方法。

实验指标:

  1. 有效性---质量
  2. 效率---成本

因子:输入条件
因子的水平:条件取值

测试步骤:

  1. 提取功能说明,构造因子-状态表
    分解功能要求,确定因子状态(采样取值),并构造因子-状态二维表

  2. 加权筛选,生成因素分析表
    1.将各个因子的权值ωi相加,得到权总和SUM
    \(SUM=\displaystyle \sum^{n}_{i=1}{w_i}\)

2.将各个因子的权分别除以权总和,得到各因子的权在权总和中所占的比例
\(r_i=\frac{𝜔_𝑖}{𝑆𝑈𝑀}(𝑖=1,2,3,...,𝑛)\)

3.选择筛选标准
采用因子数倒数的一半,即 作为权比例标准值
将各因子的权比例ri与标准值进行比较
若 则保留该因子,若 则舍去该因子及其状态

4.对于保留下来的各个因子采用同样方法对其状态进行筛选
image
筛选2
image

  1. 利用正交表构造测试数据集
    image
  • “L”为正交表的代号,\(L_9(3^4)\)为三水平的正交表
  • 下标“9”:表的行数,表示9个不同条件的试验
  • 指数“4”:表的列数,最多可安排4个因子
  • 底数“3”:每个因子取3个不同的水平

image

正交表特征/选数规则:

  1. 取值的均匀分配
  2. 任意两两组合取值的均匀搭配
    对于的上述例子就是选取\(3^2\)

正交表的正交特性:

  1. 每列中不同的数字重复次数相同
    在表\(L_8(2^7)\)中,每列有2个不同数字:1和2,每一个各出现4次

  2. 将任意两列的同行数字看成一个数对,那么一切可能数对重复次数相同
    在表\(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

  1. 完全正交表:行数n、列数p和水平q之间满足以下关系
    image

  2. 其他类型正交表

设计用例时包括以下情况:

  1. 测试输入参数个数取值=正交表因子水平数
    直接套用正交表+补充测试用例

  2. 测试输入参数个数≠正交表因子数
    选择正交表中因子数略大的,多余因子舍弃

  3. 测试输入参数取值数≠正交表水平数
    选择正交表中因子及水平数略大且总实验次数最少的,多余因子舍弃,多余水平均分

应用实例

【例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
image

方法评价

优点:

  • 节省测试工作工时—设计简单
  • 可控制生成测试用例的数量—加权筛选
  • 测试用例具有一定的覆盖度—覆盖均匀

问题: 无法考虑输入参数相互组合的实际意义 , 小概率发生数量过多的情况。

其他黑盒测试方法

除了上述常用的测试方法,黑盒测试方法还有:

  1. 场景法
  2. 状态转换法
  3. 错误推测法

场景法

概述: 从一个流程开始,通过描述经过的路径来确定的过程,经过遍历所有的基本流和扩展流来完成整个场景
image

设计步骤

  1. 根据说明,描述程序的基本流及各项扩展流
  2. 根据基本流和各项扩展流生成不同的场景
  3. 对每一个场景生成相应的测试用例
  4. 对生成的所有测试用例重新复审,去掉多余的测试用例,测试用例确定后,对每一个测试用例确定测试数据值

示例

为网上银行系统的“转账”功能设计测试用例
image

  1. 应用场景法设计全局测试用例
    创建用例规约
    image
    image
    根据用例规约的事件流 创建用例场景设计
    image

  2. 应用常规方法细化测试用例
    image
    【Pre-condition】当银行客户成功登录网上银行系统后,假定Mary为该客户收款方列表中存在的合法账户,支付密码为123456,账户余额为1000元
    image
    软件测试分析报告
    image

示例2:设计ATM系统测试用例
例子描述
image

  1. 描述程序基本流和备选流
    image
    image
    image

  2. 生成场景
    image

  3. 用例设计
    image
    image

2. 状态转换法

概述
许多需求用状态机的方式来描述,状态机的测试主要关注在测试状态转移的正确性上面
测试要点:

  1. 设计测试用例以覆盖所有状态
  2. 设计测试用例以覆盖所有状态转换
  3. 设计测试用例以覆盖所有触发事件

设计步骤

  1. 根据需求提取全部状态
  2. 绘制状态转换图
  3. 根据状态迁移图推导测试路径(状态迁移树)
  4. 选取测试数据,构造测试用例

示例

  1. 测试需求分析
  • 客户向航空公司打电话预订机票。此时,机票从“未预订”状态进入“完成预订”状态
  • 顾客支付了机票款项后,机票变为“已支付”状态
  • 客户当天到达机场并使用身份证换领登机牌后,机票变为“已出票”状态;
  • 检票登机后,机票变为“已使用”状态
  • 在登机前,可以取消自己的订票信息,若已支付机票费用,则可以退回票款。取消后,订票信息处于“已取消”状态
  1. 绘制状态转换图
    image

  2. 根据状态转换图推导测试路径
    image

错误推测法

概述

  • 基于经验和直觉推测软件中容易产生缺陷的功能、模块及业务场景
  • 依据推测逐一进行列举,从而有针对性的设计测试用例
  • 一种提高软件质量和效率的技能
posted @ 2023-03-06 15:03  kingwzun  阅读(355)  评论(0编辑  收藏  举报