【软件测试学习笔记】黑盒测试方法及案例

【软件测试学习笔记】黑盒测试方法及案例文章目录一、黑盒测试基本概念二、黑盒测试的主要目的三、优缺点优点缺点四、黑盒测试的策略五、黑盒测试方法等价类划分分类划分方法原则等价类划分案例边界值分析法原则边界值分析法案例因果图法四种因果关系五种约束因果图法设计测试用例的步骤因果图法案例判定表驱动测试一、黑盒测试基本概念1.数据驱动测试,基于规格说明的测试。2.从用户观点和需求出发进行测试。3.不考虑程序内部逻辑结构和内部特性。二、黑盒测试的主要目的1.检查是否有不确定或者遗漏的功能。2.界面是否有错误。3.在接口上,输入能否正确的接


一、黑盒测试基本概念

1.数据驱动测试,基于规格说明的测试。
2.从用户观点和需求出发进行测试。
3.不考虑程序内部逻辑结构和内部特性。

二、黑盒测试的主要目的

1.检查是否有不确定或者遗漏的功能。
2.界面是否有错误。
3.在接口上,输入能否正确的接受,能否输出正确的结果。
4.是否有数据结构错误。
5.性能上是否满足要求。
6.初始化或终止性错误。
7.数据库的访进访出是否正常。

三、优缺点

优点

1.不用了解程序内部的代码以及实现。
2.与软件的内部实现无关。
3.从用户角度出发,很容易知道用户会用到哪些功能和问题。
4.基于软件开发文档。

缺点

1.代码覆盖率低。
2.自动化测试复用性低。

四、黑盒测试的策略

1.在任何情况下都必须采用边界值分析法,这种方法设计出来的测试用例对发现程序的错误非常有用的。
2.必要时采用等价类划分法补充测试用例。
3.对照程序逻辑,检查已经设计的测试用例的逻辑覆盖程度,如果没有达到要求的覆盖标准,则应当补充更多的测试用例。
4.如果程序功能说明中含有输入条件的组合情况,则应该一开始就选择因果图。
5.对于业务流程清晰的系统,可以利用场景法贯穿整个测试案例过程,在案例中综合试验各种测试方法。

五、黑盒测试方法

等价类划分

分类

  • 有效等价类:对程序规格说明来说,是合理的、有意义的输入数据构成的集合;检验程序是否实现了规格说明预先规定的功能和性能。
  • 无效等价类:对软件规格说明来说,没有意义、不合理的输入数据集合;检验程序功能和性能的实现是否有不合规格说明要求的地方。

划分方法

  • 按区间划分。
  • 按数值划分。
  • 按数值集合划分。
  • 按限制条件或规划划分。
  • 按处理方式划分。

原则

  • 输入条件规定的取值范围或值的个数,一个有效等价类,两个无效等价类。
  • 一组数有N个值,并且程序都要进行处理,N个有效等价类,1个无效等价类。
  • 规定输入数据必须遵守规则的情况下,一个有效等价类,无数个无效等价类。
  • 输入条件规定了输入值和集合或规定了“必须如何”,一个有效等价类,一个无效等价类。
  • 确定已划分的等价类中各元素在程序处理中的方式不同,等价类进一步划分为更小的等价类。

等价类划分案例

输入三个整数 a 、 b 、 c 分别作为三边的边长构成三角形。通过程序判定所构成的三角形的类型,当此三角形为一般三角形、等腰三角形及等边三角形时,分别作计算 …
① 输入条件的要求:
(1)整数、(2)3个数、(3)非零、(4)正数、(5)两边之和大于第三边、(6)等腰、(7)等边。
② 假设1、2、3、4都满足
5不满足 非三角形
5满足,三边不相等 一般三角形
5满足,两边相等,等腰三角形
5满足,三边相等,等边三角形
在这里插入图片描述

边界值分析法

是对于输入或输出的边界值进行测试。

原则

  • 如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数小1的数,比最大个数大1的数为测试数据。
  • 如果输入条件规定了值的范围,则应取刚达到这个范围边界的值,以及刚刚超过这个范围边界的值作为测试输入数据。
  • 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。
  • 如果程序的规格说明给出的输入和输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
  • 分析程序规格说明,找出其他可能的边界条件。

边界值分析法案例

注册功能的手机号注册应该是11位数字。
使用边界值设计测试用例
输入10位数字
输入11位数字
输入12位数字
在这里插入图片描述

因果图法

表示输入条件和输出动作之间的因果关系
描述多种输入条件组合
与判定表结合使用,最终生成的是判断表

四种因果关系

  • 恒等:若c1是1,则e1也是1;否则e1为0。
  • 非:若c1是1,则e1是0;否则e1是1。
  • 或:若c1或c2或c3是1,则e1是1;否则e1为0。“或”可有任意个输入。
  • 与:若c1和c2都是1,则e1为1;否则e1为0。“与”也可有任意个输入。
    在这里插入图片描述

五种约束

输入条件的约束

  • E约束(异):a和b两个输入条件中至多有一个可能为1,即a和b不能同时为1。
  • I约束(或):a、b和c三个输入条件中至少有一个必须是1,即 a、b 和c不能同时为0。
  • O约束(唯一):a和b两个输入条件必须有一个,且仅有1个为1。
  • R约束(要求):a,b两个输入条件,a是1时,b必须是1,即不可能a是1时b是0。

输出条件的约束

  • M约束(强制):若结果a是1,则结果b强制为0。
    在这里插入图片描述

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

1.分析软件规格说明描述中, 明确哪些是原因(即输入条件或输入条件的等价类)和哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。
2.分析软件规格说明描述中的语义,找出原因与结果之间,,原因与原因之间对应的关系,根据这些关系,画出因果图。
3.由于语法或环境限制, 有些原因与原因之间,原因与结果之间的组合情况不可能出现,为表明这些特殊情况, 在因果图上用一些记号表明约束或限制条件。
4.把因果图转换为判定表。
5.把判定表的每一列拿出来作为测试依据,完成测试用例设计。

因果图法案例

第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改,但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。
① 分析原因和结果
原因:
1 第一列字符是A
2 第一列字符是B
3 第二列字符是一数字。
结果:
21 修改文件
22 给出信息L
23 给出信息M
② 画出因果图
在这里插入图片描述
③ 根据因果图建立判定表
在这里插入图片描述

判定表驱动测试

判定表的组成

  • 条件桩:列出了问题的所有条件,列出条件的次序没有约束。
  • 动作桩:列出问题规定可能采取的操作,这些操作的排列顺序无关紧要。
  • 条件项:列出针对它左列条件的取值,在所有可能情况下的真假值。
  • 动作项:列出在条件项的各种取值情况下应该采取的动作。

判定表的建立步骤

1.确定规则的个数。假如有n个条件,每个条件有两个取值(0,1),故2的n次方种规则。
2.列出所有的条件桩和动作桩。
3.填入条件项的取值。
4.填入动作项的取值,得到初始判定表。
5.简化,合并相似规则(相同动作)。

判定表驱动测试实例

例子:打印机是否能打印出来正确的内容,有多个因素影响,包括驱动程序、纸张、墨粉等。(为了简化问题,不考虑中途断电、卡纸等因素的影响)
① 列出条件桩和动作桩
条件桩:
驱动程序是否正确
是否有纸张
是否有墨粉
动作桩:
正确打印内容
提示驱动程序不对
提示没有纸张
提示没有墨粉

② 生成判定表
在这里插入图片描述

③ 优化判定表
如果动作结果一样,对于某些因素取“1”或“0”没有影响可以合并。
在这里插入图片描述

场景法

场景法的应用是基于对软件业务(需求)的深入理解(业务层面),基于等价类划分(技术层面)。

场景法目的

测试软件的主要业务流程,主要功能的正确性和主要的异常处理能力。

场景法核心

基本流(正确流)
模拟用户正确的操作流程。
目的:验证软件的业务流程和主要功能。
备选流(错误流)
模拟用户错误的操作流程
目的:验证软件的错误处理能力。

场景法基本设计步骤

1、根据说明,描述出程序的基本流及各项备选流。
2、根据基本流和各备选流生成不同的场景 。
3、对每一个场景生成相应的测试用例。

场景法实例

使用场景法分析程序:ATM取款

1、根据需求,找到基本流和备选流(找出正确的操作流程和可能出错的环节)
(1)基本流—正确取款
①插入银行卡:客户将银行卡插入ATM机的读卡器
②验证银行卡:ATM机从银行卡的词条中读取账号代码,并检查它是否属于可以接收的银行卡
③输入密码:ATM机要求输入密码
④验证密码:验证该密码是否正确
⑤进入ATM机主界面:ATM显示在本机中可用的各种选项
⑥取款并选择金额:客户选择“取款”,并选择取款金额
⑦ATM机验证:ATM机进行验证账户余额是否满足以及总取款金额是否满足要求,验证ATM机内现金是否够用
⑧更新账户余额、出钞:验证成功,更新账户余额,输出现金,提示用户收取现金
⑨返回主界面
(2)备选流—出错环节
①银行卡错误
②密码错误
③密码3次错误
④卡内余额不足
⑤超出当日可取
⑥ATM余额不足
2、根据基本流和备选流列出场景
在这里插入图片描述
在这里插入图片描述
3、根据场景编写用例
预设条件:
一张无效银行卡
一张银行卡:账户12345678901234密码123456
账户余额4000 当日限额20000
ATM机余额10000
在这里插入图片描述
账户余额40000 当日限额20000
ATM机余额50000
在这里插入图片描述

账户余额40000当日限额20000
ATM机余额10000

在这里插入图片描述

功能图法(灰盒测试)

是黑盒、白盒混合用例的设计方法

功能图法组成

状态迁移图
逻辑功能模型

功能图基本设计步骤

1、明确状态节点。 分析被测对象的测试特性及需求规格说明书,明确被测对象的状态节点数量及相互迁移关系。
2、绘制状态迁移图。 利用圆圈表示状态节点,有向箭头表示状态间的迁移关系,根据需要在箭头旁边标识迁移条件。可以利用绘图软件绘制状态迁移图。
3、绘制状态迁移树。 根据状态迁移图,按照广度优先和深度优先搜索绘制状态迁移树。首先确定起始节点和终止节点,在绘制时,当路径上遇到终止节点时,不再扩展,遇到已经出现的节点也停止扩展。
4、抽取测试路径设计用例。 根据绘制好的状态迁移树,提取测试路径,从左到右,横向抽取,每条路径构成一条测试规则,然后再利用等价类和边界值等测试用例设计方法设计具体的测试用例。

功能图实例

实例:一个编辑文本的软件中有可以改变字体颜色的功能,其中可选的颜色共有黑、红、蓝三种颜色。
1、明确状态节点
该功能有三种状态:黑、红、蓝
2、绘制状态迁移图
在这里插入图片描述
3、绘制状态迁移树
假设起始状态是红色
在这里插入图片描述
4、抽取测试路径设计用例
导出规则
在这里插入图片描述
编写测试用例
在这里插入图片描述

错误推测法

基于以往的经验和直觉,参照以往软件系统出现的错误,推测程序中所有可能存在的各种缺陷和错误。

正交试验设计法

通过正交试验理论来指导测试用例的选取

正交试验设计法基本设计步骤

1.提取功能说明:构造因子–状态表。
2.加权筛选,生成因素分析表。对因子与状态的选择可按其重要程度分别加权.可根据各个因子及状态的作用大小,出现频率的大小以及测试的需要,确定权值的大小。
3.利用正交表构造测试数据集。利用正交实验设计方法设计测试用例,比使用等价类划分,边界值分析,因果图等方法有以下优点:节省测试工作工时;可控制生成的测试用例数量;测试用例具有一定的覆盖率。

正交试验设计法案例

例题:PPT打印需求

功能描述如下:
打印范围:全部、当前幻灯片、给定范围
打印内容:幻灯片、讲义、备注页、大纲视图
打印颜色/灰度:颜色、灰度、黑白
打印效果:幻灯片加框和幻灯片不加框两种方式

1.选择正交表
4因数4水平
在这里插入图片描述
在这里插入图片描述
2.生成表
在这里插入图片描述
整理生成表
在这里插入图片描述
在这里插入图片描述

正交表的构成

在这里插入图片描述

行数(Runs):正交表中的行的个数,即试验的次数,也是通过正交实验法设计的测试用例的个数。
因素数(Factors):正交表中列的个数,即要测试的功能点。
水平数(Levels):任何单个因素能够取得的值的最大个数,即要测试功能点的输入值。

正交表的类别

可分为:单一水平正交表 和 混合水平正交表。

  • 单一水平正交表:各列水平数相同的正交表称为等水平正交表。比如:L9 (3* * 4) -->(附:括号里意思为3的4次方,下同。)、L2 7(3 * * 13) 称为3水平正交表。 L4 (2* * 3)、L8 (2* * 7) 称为2水平正交表。单一水平正交表可以用 Ln(m* * k) 表示,n是行数,m是水平数,k是因数。比如上边需求示例:可以理解为4因数(字体,字符样式,颜色,字号),3水平(意思是每个因数里都有三个选项,比如:字体里有 仿宋、楷体、华文彩云 3个选择)。一般情况下,我们可以直接确定m和k,n 可以根据水平数和因数计算行数,公式为:n=k*(m-1)+1。
  • 混合水平正交表:各列水平数不完全相同的正交表称为混合水平正交表。比如:L8 (4 * * 1 2 * * 4)–>(附:括号里意思为4的1次方 和 2的4次方。意思为表中共有8行,有一列的水平为4,有4列的水平为2。)。混合水平正交表可以用 Ln(m1 * * k1 m2 * * k2) 表示。一般情况下,我们可以直接确定m和k,n 可以根据水平数和因数计算行数,公式为:n=k1*(m1-1)+k2*(m2-1)+k3*(m3-1)…+ kx*(mx-1) + 1。

如何选取合适的正交表

假如我们确定有3因数2水平,计算n=3*(2-1)+1=4,应该表示为 L4(2 * * 3),那么我们看看有木有和这个正好相等的正交表,如果有,那么把变量值复制进去这个表中,如果没有,按照如下方法选取:

  1. 水平数相等,因数相等时,取行数刚好比自定义正交表略大的。
  2. 水平数相等,因数不相等时,取行数刚好比自定义正交表略大的,因数刚好比自定义正交表略大的。比如:自定义为: L7(3 * * 3), 我们选取为 L9(3 * * 4), 套用之后,最后一列因素去掉。
  3. 水平数不相等时,即:混合正交表。
架构君码字不易,如需转载,请注明出处:https://javajgs.com/archives/165888
0
 

发表评论