【软件测试】黑盒测试方法小结

1.等价类划分法

一个程序可以有多个输入,等价类划分就是将这些输入数据按照输入需求进行分类,将它们划分为若干个子集,这些子集即为等价类(某个输入域的子集合),在每个等价类中选择有代表性的数据设计测试用例。

等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。测试代表值就等价于这一类其他值的测试。

在这里插入图片描述
同一个等价类中的数据发现程序缺陷的能力是相同的,如果使用等价类中的其中一个数据不能捕获缺陷,那么使用等价类中的其他数据也不能捕获缺陷;同样,如果等价类中的其中一个数据能够捕获缺陷,那么该等价类中的其他数据也能捕获缺陷,即等价类中的所有输入数据都是等效的。

2.边界值分析法

边界值分析法是对软件的输入或输出边界进行测试的一种方法,它通常作为等价类划分法的一种补充测试。

在等价类划分法中,无论是输入等价类还是输出等价类,都会有多个边界,而边界值分析法就是在这些边界附近寻找某些点作为测试数据,而不是在等价类内部选择测试数据。

3.错误推断法

错误推测法就是人们可以靠经验和直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的例子。

4.因果图设计法

如果在测试时必须考虑输入条件的各种组合以及各种输出情况,那么可以使用一种适用于描述对于多种条件的组合,相应产生多个动作的形式来设计测试用例,这就需要利用因果图。

因果图使用一些简单的逻辑符号和直线将程序的因(输入)与果(输出)连接起来,一般 原因ci 表示,结果ei 表示,各结点表示状态,可以取值 01,其中 0 表示状态不出现,1 表示状态出现。

在这里插入图片描述
ciei 之间有 恒等 ~ 4 种关系,分别为:

  • 恒等:在恒等关系中,要求程序有一个输入和一个输出,输出与输入保持一致。若 c11,则 e1 也为 1;若 c10,则 e1 也为 0
  • :非使用符号 ~ 表示,在这种关系中,要求程序有一个输入和一个输出,输出是输入的取反。若 c11,则 e10;若 c10,则 e11
  • :使用符号 表示,或关系可以有任意个输入,只要这些输入中有一个为 1,则输出为 1,否则输出为 0
  • :使用符号 表示,与关系也可以有任意个输入,但只有这些输入全部为 1,输出才能为1,否则输出为 0
    在这里插入图片描述

在软件测试中,如果程序有多个输入,那么除了输入与输出之间的作用关系之外,这些输入之间往往也会存在某些依赖关系,某些输入条件本身不能同时出现,某一种输入可能会影响其他输入。

为了表示原因与原因之间,原因与结果之间可能存在的约束条件,在因果图中可以附加一些表示约束条件的符号。

输入条件的约束类别可分为四种:

  • EExclusive,异):ab 中最多只能有一个为 1,即 ab 不能同时为 1
  • Iat least one,或):abc 中至少有一个必须是 1,即 abc不能同时为 0
  • Oone and only one,唯一):ab 有且仅有一个为 1
  • RRequires,要求):ab 必须保持一致,即 a1 时,b 也必须为 1a0时,b 也必须为 0

在这里插入图片描述

除了输入条件,输出条件也会相互约束,输出条件的约束只有一种 MMask,强制),强制约束关系。若结果 a1,那么结果 b 强制为 0

案例:输入的第一个字符必须是 #*,第二个字符必须是一个数字,在此情况下进行文件的修改;如果第一个字符不是 #*,则给出信息 N,如果第二个字符不是数字,则给出信息 M。采用因果图法设计该软件的测试用例。

(1)分析程序规格说明中的原因和结果:

原因结果
C1:第一个字符是 #e1:给出信息 N
C2:第一个字符是 *e2:修改文件
C3:第二个字符是一个数字e3:给出信息 M

(2)画出因果图:
在这里插入图片描述
后续仍需把因果图转为判定表。

5.判定表驱动法

判定表也称为决策表,其实质就是一种逻辑表。在程序设计发展初期,判定表就已经被当作程序开发的辅助工具了,帮助开发人员整理开发模式和流程,因为它可以把复杂的逻辑关系和多种条件组合的情况表达的既具体又明确,利用判定表可以设计出完整的测试用例集合。

判定表是把作为条件的所有输入的各种组合值以及对应的输出值都罗列出来而形成的表格,判定表由4个部分组成,判定表结构如下:

条件桩条件项
动作桩动作项

其中每一列称为一个规则。判定表的 4 个部分分别为:

  • 条件桩:列出问题的所有条件,除了某些问题对条件的先后次序有要求之外,通常决策表中所列条件的先后次序都无关紧要。
  • 条件项:条件项就是条件桩的所有可能取值。
  • 动作桩:动作桩就是问题可能采取的操作,这些操作一般没有先后次序之分。
  • 动作项:指出在条件项的各组取值情况下应采取的动作。

在判定表中,任何一个条件组合的特定取值及其相应要执行的操作称为一条规则,即 判定表中的每一列就是一条规则,每一列都可以设计一个测试用例,根据判定表设计测试用例就不会有所遗漏。

案例:某公司的薪资管理制度如下:员工工资分为年薪制与月薪制两种,员工的错误定位包括普通错误与严重错误两种,如果是年薪制的员工,犯普通错误扣款 2%,犯严重错误扣款 4%;如果是月薪制的员工,犯普通错误扣款 4%,犯严重错误扣款 8%。该公司编写了一款软件用于员工工资计算发放,现在要对该软件进行测试。

对公司员工工资管理进行分析,可得出员工工资由 4 个因素决定:年薪、月薪、普通错误、严重错误。其中,年薪与月薪不可能同时并存,但普通错误与严重错误可以并存。

员工最终扣款结果有 7 种:未扣款、扣款 2%、扣款 4%、扣款 6%(2% + 4%)、扣款 4%、扣款 8%、扣款 12%(4% + 8%)

采用判定表驱动法设计该软件的测试用例。

(1)分析员工工资的原因和结果:

在这里插入图片描述
(2)有 4 个原因,每个原因有 YN 两个取值,理论上可以组成 2 4 = 16 2^4=16 24=16 种规则,但是 c1c2 不能同时并存,因此有 2 3 = 8 2^3=8 23=8 种规则。得出员工工资判定表如下:

在这里插入图片描述
(3)最终得出员工工资测试用例表:

在这里插入图片描述

6.正交实验设计法

正交实验设计法(Orthogonal experimental design)是指从大量的实验点中挑选出适量的、有代表性的点,依据 Glois 理论导出 “正交表”,从而合理的安排实验的一种实验设计方法。

  • 指标:判断实验结果优劣的标准。
  • 因子:因子也称为因素,是指所有影响实验指标的条件。
  • 因子的状态:因子的状态也叫因子的水平,它指的是因子变量的取值。

(1)提取因子,构造因子状态表:即分析软件的规格需求说明得到影响软件功能的因子,确定因子可以有哪些取值,即确定因子的状态。

例如,某一软件的运行受到操作系统和数据库的影响,因此影响其运行是否成功的因子有操作系统和数据库两个,而操作系统有 WindowsLinuxMac 三个取值,数据库有 MySQLMongoDBOracle 三个取值,因此操作系统的 因子状态3数据库因子状态3。得到如下因子-状态表:

在这里插入图片描述
(2)加权筛选,简化因子状态表:在实际软件测试中,软件的因子及因子的状态会有很多,每个因子及其状态对软件的作用也大不相同,如果把这些因子及状态都划分到因子-状态表中,最后生成的测试用例会相当庞大,从而影响软件测试的效率。因此需要根据因子及状态的重要程度进行加权筛选,选出重要的因子与状态,简化因子-状态表。

(3)构建正交表,设计测试用例:正交表的表示形式为 L n ( t c ) L_n(t^c) Ln(tc) 来表示。

  • L 表示正交表。
  • n 为正交表的行数,正交表的每一行可以设计一个测试用例,因此行数 n 也表示可以设计的测试用例的数目。
  • c 表示正交实验的因子数目,即正交表的列数,因此正交表是一个 nc 列的表。
  • t 称为水平数,表示每个因子能够取得的最大值,即因子有多少个状态。
  • 在行数为 nn 为正整数)的正交表中, n = ∑ ( t − 1 ) + 1 n=∑(t-1)+1 n=(t1)+1。如:① L 8 ( 2 7 ) L_8(2^7) L8(27) n = 7 × ( 2 − 1 ) + 1 = 8 n=7×(2-1)+1=8 n=7×(21)+1=8;② L 4 ( 2 3 ) L_4(2^3) L4(23) n = 3 × ( 2 − 1 ) + 1 = 4 n=3×(2-1)+1=4 n=3×(21)+1=4

例1 L 4 ( 2 3 ) L_4(2^3) L4(23) 是最简单的正交表,它表示该实验有 3 个因子,每个因子有 2 个状态,可以做 4 次实验,如果用 0 和 1 表示每个因子的两种状态,则该正交表就是一个 4 行 3 列的表。正交表如下图所示:
在这里插入图片描述
例2:在实际软件测试中,大多数情况下,软件有多个因子,每个因子的状态数目都不相同,即各列的水平数不等,这样的正交表称为混合正交表,如 L 8 ( 2 4 + 4 1 ) L_8(2^4 + 4^1) L8(24+41),这个正交表表示有 4 个因子有 2 种状态,有 1 个因子有 4 种状态。那么正交表的行数为 n = ∑ ( t − 1 ) + 1 = ( 2 − 1 ) × 4 + ( 4 − 1 ) × 1 + 1 = 8 n= ∑(t-1) + 1 = (2-1) × 4 + (4-1) × 1 + 1 = 8 n=(t1)+1=(21)×4+(41)×1+1=8,这个 n 值的计算如果发生在大型项目时往往是很难计算的。所以,混合正交表往往难以确定测试用例的数目,即 n 的值。因此,在这种情况下,可以登录正交表的一些权威网站,查询 n 值。 在这里,可以查询到不同因子数、不同水平数的正交表的 n 值。最终得出,该混合正交表如下图所示:
在这里插入图片描述
案例:微信是一款手机 App 软件,但它也有 web 版微信可以登录,如果要测试微信 web 页面运行环境,需要考虑多种因素,在众多的因素中,我们可以选出几个影响比较大的因素,如服务器、操作系统,插件和浏览器。利用正交实验设计法设计该软件的测试用例。

(1)提取因子,构造因子状态表

对于选取出的 4 个影响因素,每个因素又有不同的取值,同样,在每个因素的多个值中,可以选出几个比较重要的值。如:

  • 服务器:IIS、Apache、Jetty;
  • 操作系统:Windows7、Windows10、Mac;
  • 插件:无、小程序、微信插件;
  • 浏览器:IE11、Chrome、FireFox;

构造的因子状态表如下:

在这里插入图片描述

(2)加权筛选,简化因子状态表

  • 微信 web 版运行环境正交实验中有 4 个因子:服务器、操作系统、插件、浏览器,每个因子又有 3 个水平,因此该正交表是一个 4 因子 3 水平正交表。
  • 所以正交表的行数为 n = ∑ ( t − 1 ) + 1 = ( 3 − 1 ) × 4 + 1 = 9 n=∑(t-1) + 1 = (3-1) × 4 + 1 = 9 n=(t1)+1=(31)×4+1=9,因此正交表的表示形式为 L 9 ( 3 4 ) L_9(3^4) L9(34)
  • 得出 n = 9 n=9 n=9 后,查表可得,简化后的因子状态表如下:
    在这里插入图片描述

(3)构建正交表,设计测试用例

将因子、状态映射到正交表,可生成具体的测试用例,具体如下表:

在这里插入图片描述

7.场景法

现在的软件几乎都是由事件来触发的,事情触发便形成了场景,而同一事件不同的触发顺序和处理结果就形成了事件流。

场景可以看成是 基本流与备选流 的集合。用例的场景用来描述流经用例的路径,从用例的开始到结束遍历这条路径上所有的基本流和备选流。

  • 基本事件流,从系统某个初始状态开始,经一系列状态后,到达最终状态的一个业务流程,并且是最主要、最基本的一个业务流程(无任何差错,程序从开始直接到执行结束)。
  • 备选事件流,以基本流为基础,在基本流所经过的每个判定节点处满足不同的触发条件而导致的其他事件流。

在这里插入图片描述
在这里插入图片描述
基本流只有一个,而备选流的数目则取决于基本流上判定节点的数目与事务分析的颗粒度,颗粒度越细,考虑越周全,得到的备选流数目就越多,相应的测试工作量就越大。

  • 场景法以事件流和场景为核心,又被称为业务流程测试法,要求测试人员使用场景法设计测试用例时把自己当成最终用户,尽可能真实地模拟用户在使用此软件时的操作情形。
  • 在测试过程中,测试人员需要模拟两个方面的业务:正确的操作流程和可能出现的错误操作。
  • 它适用于业务比较复杂的软件系统测试。

案例:有一个在线购物的实例:用户进入一个在线购物网站进行购物,选购物品后,进行在线购买,这时需要使用账号登录;登录成功后,进行付钱交易;交易成功后,生成订购单;完成整个购物过程。请使用场景法设计测试用例。

(1)确定基本流和备选流

  • 基本流:登录在线购物网站,选择物品,登录账号,付钱交易,生成订购单。
  • 备选流1:账号不存在。
  • 备选流2:密码错误。
  • 备选流3:货物库存不足。
  • 备选流4:账号余额不足。

(2)根据基本流和备选流来确定场景,如下表:

在这里插入图片描述
(3)根据每一个场景,设计需要的测试用例

可以采用矩阵或判定表来确定和管理测试用例,下面介绍一种通用的格式,其中各行代表各个测试用例,而各列则代表测试用例的信息。在矩阵中,

  • V(有效):用于表明这个条件必须是 VALID(有效的)才可执行基本流;
  • I(无效):用于表明这种条件下将激活所需备选流;
  • N/A(不适用):表明这个条件不适用于测试用例。

在这里插入图片描述
(4)设计具体的测试用例数据(假设所购物品单价为30元)

在这里插入图片描述

8.功能图法

一个程序的功能包括静态和动态说明。动态说明描述输入数据的次序或转移的次序,和业务流程紧密对应。静态说明描述了输入输出条件之间的对应关系。对于面向市场的产品,其逻辑复杂、组合庞大,必须用动态说明来补充功能说明。

功能图设计方法:功能图方法使用功能图形象地表示程序的功能说明,并机械地生成功能图的测试用例。我们在不同文档中看到的 “状态迁移图”、“流程图”、“菜单树”,在一定程度上都是功能图的不同表现,不同测试人员可能对具体方法的使用稍有不同。功能图方法中的逻辑覆盖和路径测试是功能或系统水平上的,黑盒的。


参考资料
【1】『软件测试』八大典型的黑盒测试方法已来袭,快快接住!

  • 9
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

G皮T

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值