黑盒测试方法小结

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=∑(t−1)+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×(2−1)+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×(2−1)+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=∑(t−1)+1=(2−1)×4+(4−1)×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=∑(t−1)+1=(3−1)×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】『软件测试』八大典型的黑盒测试方法已来袭,快快接住!

【软件测试】黑盒测试方法小结相关推荐

  1. 『软件测试3』八大典型的黑盒测试方法已来袭,快快接住!

    文章目录 一.等价类划分法 1.定义 2.等价类划分法步骤 3.设计测试用例步骤 4.案例:学生选修课程 二.边界值分析法 1.边界值分析法概述 2.设计测试用例 3.边界值设计原则 三.错误推测法 ...

  2. 【软件测试】白盒测试方法与黑盒测试方法的区别

    软件测试方法一般分为两种:白盒测试与黑盒测试.其中,白盒测试又称为结构测试.逻辑驱动测试或基于程序本身的测试,着重于程序的内部结构及算法,通常不关心功能与性能指标.黑盒测试又被称为功能测试.数据驱动测 ...

  3. 深圳软件测试 黑盒测试,深圳软件测试培训:常用控件黑盒测试方法有哪些?...

    深圳软件测试培训(sz.qa.tedu.cn)专家就针对常用控件黑盒测试方法有哪些这一问题做一个详细的分解.希望能在工作中对你有所帮助! 1.常用控件有哪些 文本框,复选框,按钮,单选按钮,列表框,组 ...

  4. 软件测试常见概念(软件生命周期、软件开发模型、软件质量模型、软件缺陷管理、软件测试概述、软件测试分类、软件测试与软件开发、软件测试原则、黑盒测试方法、白盒测试方法、性能测试)

    文章目录 1. 软件概述 1.1 软件生命周期 1.2 软件开发模型 1.2.1 瀑布模型 1.2.2 快速原型模型 1.2.3 迭代模型(增量模型或演化模型) 1.2.4 螺旋模型 1.2.5 敏捷 ...

  5. 【软件测试】软件测试方法之黑盒测试方法和白盒测试

    白盒测试方法 一.概念 白盒测试也称结构测试或逻辑驱动测试,是针对被测单元内部是如何进行工作的测试.它根据程序的控制结构设计测试用例,主要用于软件或程序验证.它可以形象得用下图表示: 二.白盒测试方法 ...

  6. 【软件测试】07 -- 黑盒测试方法(等价类划分法)

       等价类划分法    等价类划分法是一种常用的黑盒测试方法,它主张从大量的数据中选择一部分数据用于测试,即尽可能使用最少的测试用例覆盖最多的数据,以发现更多的软件缺陷.    一个程序可以有多个输 ...

  7. 黑盒测试方法(等价类划分法、边界值法、决策表、判定表、正交表、场景法、错误推断法)

    1.黑盒测试方法 1.1.等价类划分法: 根据软件测试原则可以知道,要做到穷举是不可能的,事实上也是不必要的.为了减少工作量,需要对测试用例进行适当选取.等价类划分法便提供了一种选取测试用例的方法. ...

  8. 软件测试基础 - 测试方法

    一.等价类划分 1.有效等价类 是指对于程序的规格说明来说是合理的,有意义的输入数据构成的集合 2.无效等价类 与有效等价类相反 二.边界值分析 边界值分析法就是对输入或输出的边界值进行测试的一种黑盒 ...

  9. 黑盒测试概念简述,黑盒测试优缺点、黑盒用例设计方法简单介绍及黑盒测试方法使用总结

    黑色测试 黑盒测试概念: 黑盒的优缺点介绍: 黑盒测试用例设计方法简单介绍: 黑盒测试方法使用总结: 黑盒测试概念: 又称功能测试或数据驱动测试,是用来检测每个功能是否正常使用.黑盒测试主要意味着测试 ...

最新文章

  1. 清华男女图鉴 | 有电车会拍照,我在清华还是找不到女朋友
  2. 图片缩放 算法 matlab,图像放大算法总结及MATLAB源程序.doc
  3. 《工作细胞》电影观后感
  4. Linux 自动删除N天前的文件
  5. Administrator用户被禁用
  6. 《长安十二时辰》背后的文娱大脑:如何提升爆款的确定性?
  7. 四叶草社交平台——十天冲刺(10)
  8. 图的广度优先搜索遍历
  9. Python学习(六)模块
  10. WIN10命令提示符/黑窗口/cmd打不开怎么办
  11. java.sql.SQLException: Invalid utf8 character string: 'ACED00'
  12. android+后台自动更新+上架,Android增量自动更新
  13. 【JS】学习记录【页面打印】
  14. 12. FolderDialog、FileDialog、FolderListModel的简单使用
  15. Python 绘制椭圆 平移 旋转
  16. rpc服务器不可用桌面图标消失,rpc服务器不可用,教您rpc服务器不可用怎么办
  17. 买一台 iPhone X,还是创建一家未来的独角兽? 1
  18. 迅雷链流量扶持放大招:手雷链克专区上线!
  19. RS-232或RS-485与CAN网络互联互通
  20. 商人的诀窍 结构体

热门文章

  1. 英语长难句之非谓语动词作状语与独立主格-学习笔记
  2. artemis服务_Artemis安装
  3. String+CytoScape构建PPI网络
  4. 飞凌OK6410、TE6410、FL6410 等ARM11 开发板的区别——非常详细哦
  5. 数据结构c语言——树的三种存储结构(双亲表示法、孩子表示法、兄弟表示法)
  6. infrastructure as a service
  7. 计算机褐色,脂肪也有“好坏”之分?看颜(yán)值(sè),看分布
  8. 三十二楼层选几层最好_32楼层的选择几层最好 住楼房几层最好风水
  9. Bugzilla使用说明
  10. renqun_youhua=2004892,竞价链接后缀标识都是什么含义?