[关闭]
@MRsunhuimin 2023-07-26T05:13:57.000000Z 字数 6058 阅读 298

黑盒测试方法

测试


https://blog.csdn.net/weixin_42914706/article/details/117609959

1. 等价类划分法

    主张:最常用的黑盒测试方法,主张以尽可能少的用例测试用例覆盖尽可能多的数据;

    等价类:将这些输入数据按照需求进行分类,划分成若干个子集,这些子集就是等价类

    正确划分等价类能极大程度较少测试用例的数量;测试会更准确有效;

1.1 :等价类划分概述

    等价类划分

    1)有效等价类:有效值的集合,符合程序要求、合理且有意义的输入数据

    2)无效等价类:无效值的集合

1.2 设计测试用例

    确定等价类后,需要建立等价类表列出所有的划分出等价类,用以设计测试用例;

    基于等价类划分测试用例的设计步骤:

    1)确定测试对象,保证非测试对象的正确性

    2)为每个等价类规定一个唯一的编号

    3)设计有效等价类的测试用例,尽可能多的覆盖尚未被覆盖的有效等价类,直到测试用例覆盖所有的有效等价类

    4)设计无效等价类,使其覆盖所有的无效等价类

1.3 等价类划分demo

    某余额提现等价类划分
    分析:
    快速提款:限额10000元,普通到账:最大余额

    1)选择快速提现
    有效等价类:0<提取金额《=余额
    第n次提取:0<提取金额+前几次《=余额
    无效等价类:余额 <= 0或 大于余额

    2)普通提现
    有效等价类:0<提取金额《=余额
    无效等价类:余额 <= 0或 大于余额

余额提现功能等价类表

功能 有效等价类 编号 无效等价类 编号
选择快速提现 0<提取金额《=余额 1 余额 <= 0 2
大于余额 3
选择快速提现 0<提取金额+前几次《=余额 4 余额 <= 0 5
大于余额 6
选择普通提现 0<提取金额《=余额 7 余额 <= 0 8
大于余额 9

根据等价类表设计测试用例-余额5000元
test case

用例序号 功能 金额 覆盖有效等价类编号
001 快速到账1次 1000元 1
002 快速到账3次 1000元 4
003 快速到账 -1000元 2
004 快速到账1次 6000元 3
005 快速到账3次 -4000元 5
006 快速到账3次 4000元 6
007 选择普通提现 4000元 7
008 选择普通提现 -4000元 8
009 选择普通提现 6000元 9

2. 边界值分析法

    由于程序开发多处于边界处理容易出错,所以边界值分析法能够有效找出缺陷

2.1 边界值分析法概述

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

2.2 边界值分析法demo

    某余额提现边界值分析
    分析:
    1)快速提取:
    第一次提取:提取金额边界值为-1、0、1、9999、10000、10001、5000
    第N次取:已经提取2000,边界值为-1、0、1、7999、8000、8001、5000

    2)普通提取
    第一次提取:提取边界值-1、0、1、49999、50000、50001、20000

余额宝提现边界值分析测试用例

测试用例 功能 金额 被测边界 预期输出
001 快速到账 -1 0 无法提现
002 快速到账 0 0 无法提现
003 快速到账 1 0 提现1元
004 快速到账 9999 10000 提现9999元
005 快速到账 10000 10000 提现10000元
006 快速到账 10001 10000 无法提现
007 快速到账 5000 提现5000元
008 快速到账N -1 0 无法提现
009 快速到账N 0 0 无法提现
010 快速到账N 1 0 提现1元
011 快速到账N 7999 8000 提现7999元
012 快速到账N 8000 8000 提现8000元
013 快速到账N 8001 8000 无法提现
014 快速到账 5000 提现5000元
015 普通到账 -1 0 无法提现
016 普通到账 0 0 无法提现
017 普通到账 1 0 提现1元
018 普通到账 49999 50000 提现49999元
019 普通到账 50000 50000 提现50000元
020 普通到账 50001 50000 无法提现
021 普通到账 20000 提现20000元

3. 因果图方法

    等价类与边界值主要侧重于输入条件,却没有考虑这些之间的关系,如,组合、约束

    因果图描述多个输入之间制约关系,因果图(Cuase-effect Graph)是一种描述输入条件的组合及每种组合对应的输出的图形化工具。在因果图的基础上可以设计测试用例。

3.1 因果图设计方法

https://img-blog.csdnimg.cn/20210606205224472.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjkxNDcwNg==,size_16,color_FFFFFF,t_70

    a) 恒等。若原因出现,则结果出现;若原因不出现,则结果不出现。

    b) 非。若原因出现,则结果不出现;若原因不出现,则结果出现。

    c) 或。若几个原因中有一个出现,则结果出现;若几个原因均不出现,则结果不出现

    d) 与。若几个原因都出现,结果才出现;若几个原因中有一个不出现,则结果不出现。

    为了表示因果图中的约束条件,可用一些符号在因果图中加以标识。

https://img-blog.csdnimg.cn/20210606205539174.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjkxNDcwNg==,size_16,color_FFFFFF,t_70

    从原因方面考虑主要有4种约束条件:

    a) E(互斥、排他)。a、b两个原因不会同时出现,最多只有一个出现。

    b) I(包含、或)。a、b、c三个原因至少有一个出现。

    c) O(唯一)。a、b两个原因必须有一个出现,且仅有一个出现。

    d) R(需求)。a出现时b必定出现。

    从结果方面考虑主要有1种约束条件:

    a) M(屏蔽)。a出现时,b必定不出现;a不出现时,b则不确定。

3.2 利用因果图设计测试用例应遵循的步骤

    1)分析程序的规格说明书中哪些事原因,哪些是结果。所谓原因,是指输入条件或输入条件的等价类,而结果是指输出条件。给每一个原因和结果赋一个标识符。

    2)分析程序规格说明书中的语义,确定原因与原因,原因与结果之间的关系,画出因果图。

    3)由于语法环境的限制,一些原因与原因之间,原因与结果之间的组合不能出现。对于这些特殊情况,在因果图中用一些记号标明约束或限制条件。

    4)将因果图转化为判定表。

    5)根据判定表的每一列设计测试用例。

4. 决策表方法(判定表)

    实际测试中如果输入条件过多,在加上输入输出之间作用关系,因果图比较负责,往往使用决策表代替因果图法;利用决策表可以设计出完整的测试用例集合;

4.1 决策表概述

    我们通过简单例子来分析下决策表

分析:

    1)图书阅读提示:是否疲惫、是否对内容感兴趣、对书中内容是否感到迷惑

    2)阅读指南建议:回到第一章阅读、继续读下去、跳到下一章、停止阅读并休息
类别 内容 1 2 3 4 5 6 7 8
问题 是否疲惫 Y Y Y Y N N N N
问题 是否对内容感兴趣 Y Y N N N Y Y N
问题 对书中内容是否感到迷惑 Y N N Y Y Y N N
建议 回到第一章阅读 v
建议 继续读下去 v
建议 跳到下一章 v v
建议 停止阅读并休息 v v v v
    决策表通常有4部分组成:

    1)条件桩:列出问题的所有条件,除了某些问题对条件的先后次序有要求之外,通常决策表中所列条件先后次序都无关紧要。

    2)条件项:条件桩所有可能取值

    3)动作桩:动作桩就是问题可能采取的操作,这些操作一般没有先后次序之分,

    4)动作项:指出条件项的各组取值情况下应采取值情况。

上述:疲惫内容是动作桩,y等是条件项,动作桩:跳到下一章等,动作项:具体操作,v
上述1、2两个,分别是YYY\YYN但结果都是一致的,说明对书中内容是否感兴趣对结果判断不影响,因此称为此项为无关条件项;

简化后的图书指南决策表-5个用例

类别 内容 1 2 3 4 5
问题 是否疲惫 Y N N N N
问题 是否对内容感兴趣 N N Y Y N
问题 对书中内容是否感到迷惑 Y Y Y N N
建议 回到第一章阅读 v
建议 继续读下去 v
建议 跳到下一章 v v
建议 停止阅读并休息 v

4.2 决策表demo

工资发放决策表

    酬薪制度如下:年薪与月薪

    员工定位:错误定位与严重错误
    年薪制员工,普通错误2%,严重错误扣款4%,
    月薪制员工,普通错误4%,严重错误扣款8%,

    分析:
    条件桩:月薪-年薪、普通错误-严重错误

    条件项:M-Y、N-S

    动作桩:口框比例

    动作项:2%、4%、6%、8%、12%
类别 内容 1 2 3 4 5 6 7 8
reason 年薪、月薪 Y Y Y Y M M M M
reason 普通错误 N Y N Y N Y N Y
reason 严重错误 N N Y Y N N Y Y
result 未扣款 V V
result 2% V
result 4% V V
result 6% V
result 4%
result 8% V V
    无需要合并的地方,即整理成用例为

员工工资测试用例

测试用例 薪资制度 薪资 错误程度 扣款
001 年薪 20000
002 年薪 25000 普通
003 年薪 30000 严重
004 年薪 35000 普通+严重
005 月薪 8000
006 月薪 10000 普通
007 月薪 15000 严重
008 月薪 20000 普通+严重

5. 正交实验设计法

    在软件测试中,软件往往很复杂。很难从软件的规格说明中得出一一对应的输入与输出关系,基本无法划分出等价类,使用因果图也比较庞大复杂。

5.1 正交试验设计概述

    正交表是一种特制的表格,一般用Ln(mk)表示,L代表是正交表,n代表试验次数或正交表的行数,k代表最多可安排影响指标因素的个数或正交表的列数,m表示每个因素水平数,且有n=k*(m-1)+1。

    正交试验法就是安排多因素试验、寻求最优水平组合的一种高效率的试验设计方法。

    1)关键因素

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

    2)正交试验设计法设计用例时,按照以下步骤

    a:分析软件规格说明书等到影响软件功能的因子,确定因子可以有哪些取值,即确定因子状态。

    例如:影响软件运行的因素有DB与操作系统,DB分为Mysql、MongoDB、Oracle,操作系统有windows、Linux、MAC,即因子状态分别为3个;

因子-状态表

因子 状态
操作系统 window linux mac
数据库 mysql MongoDB Oracle
    b:加权筛选,简化因子-状态表
    实际软件测试中软件的因子或者因子状态会有很多,每个因子对其的状态作用也不大,因此需要根据因子-状态的的重要程度进行加权筛选,选出重要的因子-状态,简化表格。

    c:构建正交表,设计测试用例

https://img-blog.csdnimg.cn/20210607230721459.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjkxNDcwNg==,size_16,color_FFFFFF,t_70

5.2 正交表表示形式

)

    L:表示正交表

    n:正交表的行数,正交表每行可以设计一个测试用例,因此n也代表测试用例个数

    c:表示正交实验的因子数目,即正交表的列数,因此正交表是一个n行c列的表格;

    t:为水平数,表示每个因子能够取得的最大值,即因子有多少个状态;

例如:L4(2^3)正交表
)

行、列 1 2 3
1 1 1 1
2 1 0 0
3 0 1 0
4 0 0 1

以上因子为:用户名、密码、验证码,状态分别为0、1 与实际2^3 = 8少了4个用例。

5.3 正交法demo

    社交软件WEB页面运行环境正交试验设计

    分析:

    服务器:IIS、apache、jetty

    操作系统:window7\window10\linux

    插件:无、小程序、app插件

    浏览器:IE11、chrome、FiresFox

    分析因子c=4,水平数t=3 即为下图正交表

)

列号 1 2 3 4
实验号
1 1 1 1 1
2 1 2 2 2
3 1 3 3 3
4 2 1 2 3
5 2 2 3 1
6 2 3 1 2
7 3 1 3 2
8 3 2 1 3
9 3 3 2 1
    即将因子状态带入表格如下图:

app页面运行环境测试用例

行、列 服务器 操作系统 插件 浏览器
1 IIS window7 IE11 IE11
2 IIS window10 chrome chrome
3 IIS linux app插件 FiresFox
4 apache window7 chrome FiresFox
5 apache window10 app插件 IE11
6 apache linux IE11 chrome
7 jetty window7 app插件 chrome
8 jetty window10 IE11 FiresFox
9 jetty linux chrome IE11
加粗样式

6. 错误推测法

    错误推测法凭借的是测试人员的 直觉和经验 来推测系统中可能出现的各种缺陷。

    常常是列举出系统中所有【可能的缺陷和容易发生缺陷的特殊情况】,并根据它们来设计测试用例。

    例如:查询功能

    A、无条件查询

    B、是否支持模糊查询

    C、查询的关键字之间是否可用连接符

    D、输入正确的查询条件以前加上空格,看是否能正确地查出相应的数据

    E、若查询结果为空,是否给与相应提示

7. 场景法

    软件的工作流程往往对应着现实生活的场景。应该从更高些的视角来把握系统的业务流程,了解功能模块

    在熟悉流程的基础上才能讨论局部细节的测试设计。 场景法的核心是事件流和场景。

    1)场景法的示意图

https://img-blog.csdnimg.cn/20210607235807532.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjkxNDcwNg==,size_16,color_FFFFFF,t_70

    在这个图中,有一个基本流和四个备选流。从基本流开始,再将基本流和备选流结合起来,可以确定以下用例场景:

    场景 1 基本流

    场景 2 基本流 备选流 1

    场景 3 基本流 备选流 1 备选流 2

    场景 4 基本流 备选流 3

    场景 5 基本流 备选流 3 备选流 1

    场景 6 基本流 备选流 3 备选流 1 备选流 2

    场景 7 基本流 备选流 4

    场景 8 基本流 备选流 3 备选流 4

    从上面的实例我们就可以了解“场景”=“基本流”+“备选流”

    基本流:采用直黑线表示,是经过用例的最简单的路径(无任何差错,程序从开始直接执行到结束)

    备选流:采用不同颜色表示,一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中,也可以起源于另一个备选流,或终止用例,不在加入到基本流中;(实际上是各种“非主流”的情况)

下面是场景法的基本设计步骤

    1. 根据说明,描述出程序的基本流及各项备选流 

    2. 根据基本流和各项备选流生成不同的场景 

    3. 对每一个场景生成相应的测试用例 

    4. 对生成的所有测试用例重新复审,去掉多余的测试用例,测试用例确定后,对每一个测试用例确定测试数据值
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注