导读:面试和工作必备的九大黑盒软件测试方法。
目录
黑盒测试九大用例设计方法
一、白盒、黑盒和灰盒
1.1 软件测试方法划分
1.2 白盒测试
1.3 黑盒测试
1.4 灰盒测试
1.5 白盒黑盒和灰盒
二、黑盒测试
2.2 边界值分析法
2.3 判定表分析法
2.4 因果图分析法
2.5 正交试验法
2.6 流程分析法/场景设计方法
2.7 状态迁移法
2.8 异常分析法
2.9 错误推测法
2.10 黑盒测试的总结
黑盒测试九大用例设计方法
软件测试方法主要分白盒测试、灰盒测试、黑盒测试、静态测试、动态测试、手动测试、自动测试等方法。
一、白盒、黑盒和灰盒
1.1 软件测试方法划分
三种划分方式:
- 执行阶段:白盒测试、黑盒测试、灰盒测试。
- 执行状态:静态测试、动态测试。
- 执行行为:手动测试、自动测试。
1.2 白盒测试
白盒测试的概念:
白盒测试(White Box Testing)又称结构测试、逻辑驱动测试或基于代码的测试。
主要检查产品内部结构是否按照规格说明书的规定正常运行。
盒子和白盒的概念:
盒子指的是被测试的软件,白盒指盒子是可视的,观察者清除盒子内部的东西以及里面是如何运作的。
白盒测试要求对系统内部的结构和工作原理有一定的了解,比如对封装好的类和函数有一定的理解能力。
可以理解代码的单元测试就是白盒测试。
白盒测试常用技术:
一般分为静态分析技术和动态分析技术,而在白盒测试中最常用到的技术就是逻辑覆盖率。
- 语句覆盖 ———— 被测程序中每一个语句至少被执行一次,所有语句都要执行。
- 判定覆盖 ———— 也被称为分支覆盖,被测程序中每个判断至少被执行一次。
- 条件覆盖 ———— 被测程序中每个条件至少被执行一次。
- 判断条件覆盖 ———— 被测程序中每个条件的取值和判定的结构都要至少被执行一次。
- 路径覆盖 ———— 被测程序中所有路径至少被执行一次。
由于每种覆盖率都是有局限性,在测试中要把各种覆盖率方法组合起来进行测试。
白盒测试的优缺点:
优点:
- 白盒测试主要是检查代码中的每条分支和路径,对代码的测试比较充分。
- 同时可以揭示一些隐藏在代码中的缺陷和错误,从而让测试人员仔细去思考软件的实现,利于测试人员的技术提升。
缺点:
- 不能对软件规格的正确性进行验证,对测试人员的要求高,需要有一定的开发经验,能够编写测试驱动或测试桩。
- 成本高,一般由开发人员进行测试。
1.3 黑盒测试
黑盒测试也就是功能测试,主要是检测每个功能是否能正常使用,也是软件测试中使用最广泛的一类测试。
在黑盒测试中,通常把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,对程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。
黑盒测试着眼于程序外部接口,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
关注的是软件的功能需求。
关注点:
- 功能是否正确,是否有遗漏
- 界面是否错误
- 数据结构或外部数据库访问错误
- 性能错误
- 初始化和终止错误
黑盒测试方法:
- 等价类划分法:把程序的输入域划分成若干部分(子集),然后从每个部分中选取少数代表性数据作为测试用例
- 边界值分析法:对输入或输出的边界值进行测试的一种方法。通常边界值分析法是作为对等价类划分法的补充
- 判定表分析法:在多个条件决定多个动作,并且每个条件的取值只有两种情况下,我们就可以采用判定表方法
- 因果图分析法: 用图解的方法表示输入的各种组合关系,写出判定表,从而设计相应的测试用例
- 正交试验法: 正交试验法也叫正交试验设计法,它是用“正交表”来安排和分析多因素试验的一种数理统计方法
- 流程分析法: 针对测试场景类型,针对测试场景的测试项下的测试子项进行设计
- 状态迁移法: 状态迁移法的思想是提供将多个状态的转换串联起来进行测试的思路
- 异常分析法: 异常分析法是根据系统有可能存在的异常、软硬件的缺陷等构造测试用例
- 错误推测法: 在测试程序时,根据经验推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误
1.4 灰盒测试
综合测试法,介于白盒测试与黑盒测试之间的一种测试,不仅关注输出、输入的正确性,同时也关注程序内部的情况。灰盒测试以程序的主要功能和主要性能为测试依据。
测试方法主要根据程序流程图、需求说明书以及测试者的实践经验来设计。
灰盒测试由方法和工具组成,这些方法和工具取材与应用程序的内部知识和与之交互的环境,能够用于黑盒测试以增强测试效率、错误发现和错误分析的效率。
通常灰盒测试关注的刻度是一个模块或模块与模块之间是如何运作。
测试人员需要熟悉接口测试工具的使用方法,还可以和自动化测试相结合,从而提升测试的效率,进一步提升软件的质量。
1.5 白盒黑盒和灰盒
白盒和黑盒两类测试是完全不同的出发点,并且是两个完全对立点,反应了事物的两个极端,两种方法各有侧重,是不能替代的。
灰盒测试不像白盒那样详细、完整,但有比黑盒测试更关注程序的内部逻辑,常常是通过一些表征性的现象、事件、标志来判断内部的运行状态。
二、黑盒测试
2.1 等价类划分法
将软件的输入域分为若干部分,从每个部分中选取少数具有代表性的数据进行测试。
等价类定义:指某个输入域的子集合,在子集合中每个输入数据对于揭露软件中的错误都是等效的。
等价类划分为两种情况:有效等价类和无效等价类。
有效等价类:合理的、有效的输入数据构成的集合。
无效等价类:不合理的、无效的输入数据构成的集合。
需要注意,划分的子集必须互不相交,符和完备测试,避免出现冗余。
划分等价类的标准:
- 完备测试、避免冗余
- 划分等价类重要的是:集合的划分,划分为互不相交的一组子集,而子集的并是整个集合
- 并是整个集合:完备性
- 子集互不相交:保证一种形式的无冗余性
- 同一类中标识(选择)一个测试用例,同一等价类中,往往处理相同,相同处理映射到”相同的执行路径”
划分等价类的方法:
- 根据取值范围来确定一个有效等价类和两个无效等价类,比如注册用户名长度
- 根据必须条件划分一个有效等价类和一个无效等价类,比如要求首字母为字母
- 根据布尔值划分一个有效等价类和一个无效等价类,比如确认协议
- 对一组数据每个输入的值做不同的处理,化为若干个有效等价类和一个无效等价类
- 规定必须遵守的规则,可确立一个有效等价类(符合规则)和若干个无效等价类(违反规则)
- 在确知已划分的等价类处理中的方式不同,则应再将该等价类划分为更小的等价类
等价类划分法用例设计步骤:
1)根据规格说明书,等价类划分
2)设计等价表 —— 表格设计:输入条件 子条件 有效等价类 无效等价编 无效等价类 无效等价编
3)设计覆盖表 —— 尽可能多的覆盖尚未覆盖的有效等价类,只覆盖一个无效等价类
4)根据数据生成测试用例
总结:
等价类划分法是使用最广泛的一种用例设计方法。
优点是尽可能地考虑取值情况,避免测试不完整,缺点是测试用例比较多,并且没有考虑输入条件之间的约束关系,可能产生一些无效的测试用例,所以在设计用例时通产结合边界值分析法等设计方法进行补充。
等价类划分法的关键就是对输入域的划分以及寻找隐藏的条件。
2.2 边界值分析法
边界值分析法是对等价类划分法的一个补充,区别在于多了输出域边界的考虑。
三点选择:
上点:边界上的点
离点:离上点最近的点
内点:输入域内任意一个点
划分方法:
1)选取刚好在范围边界的点,以及刚好超过边界的点作为测试输入数据,需要注意精度问题
2)输入值个数选择最大个数和最小个数,以及正负差一的取值作为测试数据
3)输入一个有序集合,则选取集合的第一个元素和最后一个元素作为测试数据
边界值分析法用例设计步骤:
1)设计等价表
2)在等价类边界点设计上点、离点、内点
3)覆盖所有的点
4)生成测试用例
2.3 判定表分析法
主要是分析和表达多种输入条件下系统执行不同动作的技术,可以把复杂的逻辑关系和多种条件组合情况表达得很明确。
判定表的优点:
能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用判定表能够设计出完整的测试用例集合。
在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。判定表很适合于处理这类问题。
判定表的组成:
条件桩:列出被测对象的所有输入,并列出输入条件与次序无关
动作桩:列出输入条件系统可能采取的操作,操作的排列顺序没有约束
条件项:列出输入条件的其他取值,在所有可能情况下的真假值
动作项:列出在条件项的各种取值情况下应采取的动作
1)条件桩(Condition Stub):列出了问题得所有条件。通常认为列出的条件的次序无关紧要。
2)动作桩(Action Stub):列出了问题规定可能采取的操作。这些操作的排列顺序没有约束。
3)条件项(Condition Entry):列出针对它左列条件的取值。在所有可能情况下的真假值。
4)动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作。
判定表分析法的设计用例步骤:
1)找出条件桩和动作桩
2)分析条件项,并计算规则个数,构成判定表
3)根据条件项的各种取值将动作项填入判定表
4)简化判定表,合并相似规则
5)根据每条规则生成对应的测试用例
总结:
将条件项和动作项组合在一起,即在条件项的各种取值情况下应该采取的动作,在判定表中贯穿条件项和动作项的每一列构成一条规则,即测试用例。并针对每个合法的输入组合规则设计测试用例进行测试。
因为是以牺牲输入条件组合为代价,所以合并是存在风险的。测试用例少的时候不建议合并,多的时候最多进行一次合并。
2.4 因果图分析法
为了弥补条件过多导致判定表设计困难的缺点,通过因果图分析法来解决。
因果图法产生的背景:
等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。
如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图(逻辑模型)。
因果图分析法分析输入条件之间的约束情况,生成判定表,进行用例设计。
因果图图形符 :
因果符 :指输入和输出的因果关系,恒等、非、或、与四种表示方法
约束符 :输入与输入之间存在某些依赖关系。异、或、唯一、要求、强制五种表示方法
因果图分析法的设计用例步骤:
1)找出输入条件和输出条件
2)画出因果关系图,可以借助中间节点
3)将因果关系图转换为判定表
4)简化判定表,合并相似规则
5)根据规则生成对应的测试用例
2.5 正交试验法
正交实验法是从大量的试验点中挑选出适量的、有代表性的点,应用依据伽罗瓦理论导出的“正交表”,合理的安排试验的一种科学的试验设计方法。具备“均匀分散,整齐可比”的特点,研究多因素多层次采样点的一种设计方法。
正交试验设计是一种基于正交表的、高效率、快速、经济的试验设计方法。
利用因果图来设计测试用例时, 作为输入条件的原因与输出结果之间的因果关系,有时很难从软件需求规格说明中得到。往往因果关系非常庞大,以至于据此因果图而得到的测试用例数目多的惊人,给软件测试带来沉重的负担,为了有效地,合理地减少测试的工时与费用,可利用正交实验设计方法进行测试用例的设计。
正交实验设计方法:依据Galois理论,从大量的(实验)数据(测试例)中挑选适量的,有代表性的点(例),从而合理地安排实验(测试)的一种科学实验设计方法.类似的方法有:聚类分析方法,因子方法方法等.
正交试验中常用术语:
1)指标:通常把判断试验结果优劣的标准叫做试验的指标
2)因子:把所有影响试验指标的条件称为因子
3)因子的状态:把影响试验因子成为因子的状态
正交试验法设计用例的步骤:
1)提取功能说明,构造因子——状态表
2)加权筛选,生成因素分析表
3)利用正交表构造测试数据
4)依照因果图上根节点到叶子节点的顺序逐步替换正交表上的中间节点,得到最终的正交表
5)利用正交表每行数据构造测试用例
正交试验法的优点:
- 节省测试工作工时
- 可控制生成的测试用例数量
- 测试用例具有一定的覆盖率。
2.6 流程分析法/场景设计方法
流程分析法也称为场景法,主要针对测试场景类型,类似于白盒测试设计中路径覆盖分析法。
在黑盒测试中,针对软件系统某个流程使用路径分析法进行设计测试用例。
现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。
这种在软件设计方面的思想也可以引入到软件测试中,可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,同时使测试用例更容易理解和执行。
流程分析法构成:
基本流:程序的主程序,最简单的路径
备选流:实际业务流程时,因错误操作或者异常操作,导致最终未达到目的的流程
流程分析法设计用例步骤:
1)根据规格说明,描述程序的基本流和备选流并画业务流程图
2)根据业务流程,分析每一个节点的输入和输出
3)确定测试流程
4)根据节点输入、输出,选取测试数据,构造测试用例
2.7 状态迁移法
状态迁移法是通过把被测系统分析出它的若干个状态,以及这些状态之间的转换条件和路径,就可以从状态迁移路径覆盖的角度来对设计用例进行测试。
验证在给定的条件内能否产生需要的状态变化,是否存在不可能达到或非法的状态,是否可能产生非法的状态转移。
在黑盒测试中主要目标是设计足够的用例达到对系统状态的覆盖、状态——条件组合的覆盖以及状态迁移路径的覆盖。
简单来说状态迁移就是将程序业务流程中每一个节点用状态来描述,通过触发的事件来完成各状态之间的转换。
状态迁移法设计用例步骤:
1)分析需求规格说明书来绘制状态迁移图
2)定义状态——事件表
3)根据状态迁移推出测试的路径
4)根据测试路径选取测试数据,最后生成测试用例
总结:
实际工作中,在业务流程中都涉及了复杂的业务场景,即业务状态的迁移。而这些业务场景在需求规格中往往不能够完全阐述清清楚,容易出现遗漏。所以当被测系统的业务场景复杂时,在工程中应用这种针对状态迁移测试的思路完成对复杂业务场景的测试有时是很有必要。
2.8 异常分析法
针对系统可能存在的异常操作、软硬件缺陷引起的故障进行分析,依此设计测试用例。
一方面主要针对系统的容错能力,故障恢复能力进行测试,另一方面针对系统资源的异常进行测试。
简单地说,通过人为的制造异常情况,来检查系统处理能力。
常见分析情况:
1)测试软件不按照正常的流程运行
2)删除或修改系统的重要配置文件
3)比如特殊符 “/”斜杠、“./”点斜杠、“‘”单引 以及空格等
4)强行关闭数据库服务器、制造数据库死机、非法破坏数据表或数据等
5)增加服务器资源的使用情况,CPU、内存、硬盘等
6)对部分或者所有相关软件进行断电测试
2.9 错误推测法
软件测试中,基于经验和直觉推测程序中可能存在的各种错误,从而有针对性的设计测试用例的方法,就是错误推测法。
设计思路就是分析程序中易出错的场景和情况,在此基础上有针对性的设计测试用例。
需要测试人员深度熟悉被测系统的业务、需求,对被测系统或类似系统之前的缺陷分布情况进行过系统的分析,包括功能缺陷、数据缺陷、接口缺陷和界面缺陷等。
在实际测试中,随着对产品的了解的加深和测试经验的丰富,使得错误推测法设计的测试用例往往非常有效,可以作为测试设计的一种补充手段。
总结:
简单说就是积累的经验丰富,方法使用效率越高。错误推测不是瞎猜,主要针对系统可能错在的薄弱环节的测试补充,而不是为了覆盖而测试。
2.10 黑盒测试的总结
黑盒测试使用范围广泛,优点主要是站在用户的角度进行测试,测试人员不需要了解程序实现的细节。
相对白盒测试而言,黑盒测试的测试数据很容易生成,但是要测试到每一个输入流几乎是不可能的。
最大的缺点就是不能针对特定的程序段,这样很容易造成程序路径的漏测,当程序非常复杂时其隐藏的问题很难发现。
在实际工作中,由于黑盒测试的测试人员编程能力相对薄弱,所以大部分测试人员现在研究的都是介于白盒和黑盒之间,就是灰和测试,也是常说的接口测试。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!