软件测试期末考试复习(三)黑盒测试

3、黑盒测试

黑盒测试方法有很多种,下面只讲解了黑盒测试方法中的一部分。在对软件进行测试时,需要针对软件的具体情况选择合适的测试方法。在实际测试过程中一般不能只选择一种测试方法对软件进行测试,因此需要掌握黑盒测试的综合策略。

(1)首先进行等价类划分。

(2)在任何情况下都必须使用边界值分析法。

(3)可使用错误推测法追加测试用例。

(4)对照程序逻辑,检查已设计的测试用例的逻辑覆盖程度,若没有达到要求的覆盖标准,应当再补充足够的测试用例。

(5)若程序的功能说明中含有输入条件的组合情况,则一开始就可选因果图法和判定表驱动法。

(6)对于参数配置类软件,需要使用正交实验法选择较少的组合方式达到最佳效果。

(7)状态迁徙图法也是很好的测试用例设计方法,可通过不同时期条件的有效性设计不同的测试数据。

(8)对于业务清晰的系统,可利用场景法贯穿整个业务流程,同时综合使用各种测试方法。

1、等价类划分法

1、等价类划分概述

等价类划分是将程序的输入域划分为若干个互不相交的部分,即等价类,然后从每个等价类中选取少数代表性数据来设计测试用例。

2、划分等价类的步骤

1、划分等价类和列出等价类表

有效等价类:符合程序规格说明书,合理的、有意义的输入数据集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。

无效等价类:与有效等价类定义相反。

2、等价类确定的原则

(1) 在输入条件规定了取值范围或值的个数的情况下,可确立 1 个有效等价类和 2 个无效等价类。

(2) 在输入条件规定了输入值的集合或规定了“必须如何”的条件的情况下,可确立 1 个有效等价类和 1 个无效等价类。

(3) 在输入条件是一个布尔值的情况下,可确立 1 个有效等价类和 1 个无效等价。

(4) 在规定了输入数据的一组值(假定n个)且程序将对每个输入值分别处理的情况下,可确立n个有效等价类和1个无效等价类。

(5) 在规定了输入数据必须遵守的规则的情况下,可确立1个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。

(6) 如果确知已划分的等价类中各元素在程序处理中的方式不同,则应将该等价类再进一步划分为更小的等价类。

3、等价类划分表

在确立了等价类之后,接下来建立等价类表,将所有划分出的等价类列出来,如下表所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oQEsooi3-1620530173777)(软件测试基础.assets/image-20210509100904851.png)]

4、确定测试用例

根据等价类表,确定测试用例。具体步骤如下。
(1) 为每个等价类编号(唯一编号)。

(2) 设计编写新测试用例,使此用例尽可能多地覆盖尚未覆盖的有效等价类,重复这一步骤,直到所有有效等价类均被测试用例覆盖。

(3) 设计编写新测试用例,使此用例只覆盖一个无效等价类,重复这一步骤,直到所有无效等价类均被覆盖。

5、举个栗子

1、根据上述内容,列出等价类表,如下表所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cMFrFUPt-1620530173779)(软件测试基础.assets/image-20210509101309324.png)]

2、设计测试用例 : 输入顺序为[A,B,C],如下表所示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bWDCxnxt-1620530173780)(软件测试基础.assets/image-20210509101414598.png)]

2、边界值划分法

许多错误往往出现在输入输出数据范围的边界上,因此针对输入输出数据范围的边界来设计测试用例,可检测出更多的错误,这就是黑盒测试中的边界值分析法。

例如,上述小节中的三角形判断案例,其中需要输入 3 个数值(A、B、C)作为三角形的三条边长,3个数值应当满足 A>0、B>0、C>0 且 A+B>C、A+C>B、B+C>A 才能构成三角形。 若把上述不等式中的任何一个“>”错写成“≥”,则不能构成三角形。许多错误容易出现在被疏忽的边界上,此处的边界是就输入等价类和输出等价类而言的,稍高于其边界值及稍低于其边界值的一些特定情况。

1、边界条件

软件在能力发挥到极限的情况下能够正常运行,那么在普通情况下运行一般也就不会存在问题;正如人在悬崖峭壁边可以安全行走,那么在平地一般也能安全行走。

2、次边界条件

普通边界条件一般在产品说明书中有明确定义,或者在使用软件的过程中能够得知,因此较为容易确定。而有些边界条件在软件内部,软件使用者基本无法得知,但软件测试人员必须考虑。此类边界条件称为次边界条件或者内部边界条件。

寻找次边界并不要求软件测试人员具有编码人员那样的阅读源代码的能力,但要求对软件的工作方式大体了解。例如,2的幂和ASCII表。

1、2的幂。

计算机和软件是以二进制数进行计数的,用位(bit)表示0和1,一个字节(byte)由8位组成,一个字由两个字节(16位)组成等。软件中常用二进制存储单位和对应的转换关系如下表所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D0dQ2RD2-1620530173782)(软件测试基础.assets/image-20210509101922657.png)]

上表中的范围或值是作为边界条件的重要数据,上述范围或值一般不会在需求文档中指 明,它们通常在软件内部使用,在软件有缺陷的情况下可能会显示。

2、ASCII 表

ASCII 表是另一个常见的次边界条件。ASCII 值表的部分内容如下表所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y9pR6by7-1620530173784)(软件测试基础.assets/image-20210509102018115.png)]

上表并不是ASCII值的连续表。其中09对应的ASCII值是4857,斜杠字符(/)在 数字0的前面,而冒号字符(:)在数字9的后面,大写字母A~Z对应的ASCII值是 6590**,**小写字母对应的ASCII值是97122,上述均代表次边界条件。

若被测试软件的功能是进行文本输入或文本转换,在定义数据区间包含数值时,应参考ASCII表。

例如,若测试的文本框只接受用户输入字符AZ和az,在非法区间应包含ASCII表中的@、[和{ 字符,因为这些字符是字符AZ和az的前后字符。

3、 其他边界条件。

用户在输入框中输入登录信息或填写其他信息时,可能并没有输入数据,即直接回车,产品说明书一般会将这类情况忽略,而这在现实生活中却是时常发生的。完善的软件通常会将输 入内容默认为合法边界内的最小值或合法边界内的某个合理值,当没有值时直接返回提示信息,如“此信息不能为空”等。

3、边界值的选择方法

边界值分析是对等价类划分的一种补充,它不是在等价类中选择任意元素进行测试,而是选择等价类的边界元素作为测试数据进行测试。

使用边界值分析法设计测试用例应遵循的原则如下。

(1) 若输入条件规定了值的范围,则应选取刚达到此范围的边界值,以及恰好超过此范围边界的值作为测试数据。

(2) 若输入条件规定了值的个数,则应选取最大个数、最小个数、比最大个数多1、比最小个数少1的值作为测试数据。

(3) 若程序规格说明书给出的输入或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试数据。

(4) 若程序使用了一个内部数据结构,则应选取此内部数据结构边界上的值作为测试数据。

(5) 分析规格说明书,找出其他可能的边界条件。

3、因果图法

1、因果图的基本符号

上图中左边节点表示原因,右边节点表示结果。恒等、非、或、与的含义如下。

(1) 恒等:若 a=1,则 b=1;若 a=0,则 b=0。
(2) 非:若 a=1,则 b=0,若 a=0,则 b=1。
(3) 或:若 a=1 或 b=1 或 c=1,则 d=1;若 a= b= c=0,则 d=0。
(4) 与:若 a= b= c=1,则 d=1;若 a=0 且 b=0 且 c=0,则 d=0。

2、 因果图的约束条件

因果图中某些原因与原因之间、原因与结果之间的组合情况由于语法或环境限制不可能同时出现。为表明这些特殊情况,在因果图上用一些记号代表约束或限制条件。因果图的约束条件如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ut4nXeHM-1620530173785)(软件测试基础.assets/image-20210509102634277.png)]

其中互斥、包含、唯一、要求是对原因的约束,屏蔽是对结果的约束,其含义如下。

(1) 互斥:表示不能同时为 1,即 a、b、c 中至多有一个为 1。
(2) 包含:表示不能同时为 0,即 a、b、c 中至少有一个为 1。
(3) 唯一:表示 a、b、c 中有且仅有一个为 1。
(4) 要求:表示若 a=1,则 b 必须为 1,即不可能 a=1 且 b=0。
(5) 屏蔽:表示若 a=1,则 b 必须为 0。

3、因果图法的特点

(1) 考虑输入条件的组合关系。

(2) 考虑输出条件对输入条件的信赖关系,即因果关系。

(3) 测试用例发现错误的效率高。

(4) 可检查出功能说明书中的某些不一致或遗漏。

(5) 适合于检查程序输入条件和各种组合情况。

4、因果图法的基本步骤

1. 分割功能说明书

对于规模较大的程序,可将其划分为若干个部分,然后分别对每个部分使用因果图法。例如,测试编译程序时,可将每个语句作为一个部分。

2. 判断出“原因”和“结果”,并加以编号

原因是指输入条件或输入条件的等价类,结果是指输出条件或输出条件的等价类。每个原因或结果都对应因果图中的一个节点。当原因或结果成立(或出现)时,相应的节点取值为1,否则为0。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-61ykeXx3-1620530173786)(软件测试基础.assets/image-20210509103119075.png)]

原因:
投入1元硬币;
投入5角硬币;
按下“可乐”按钮;
按下“绿茶”按钮。

结果:
退还5角钱;
送出“可乐”饮料;
送出“绿茶”饮料;

3、 根据功能说明书中原因和结果之间的关系画出因果图

因果图中原因在左,结果在右,自上而下排列,并根据功能说明书中原因和结果之间的关系,使用基本符号进行连接,还可在因果图中引入一些中间节点。

根据原因和结果,绘制出相对应的因果图,如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RSgR8tAp-1620530173786)(软件测试基础.assets/image-20210509103320980.png)]

接下来对上述因果图进行完善,添加必要的约束条件。

例如,原因1和原因2不能同时发生,即1元硬币和5角硬币不能同时被投入到自动售货机内;

原因3和原因4也不能同时发生,因为程序的功能说明书规定,在投入硬币后,只能按下“可乐”或“绿茶”按钮。

完善后的因果图如下所示。
在这里插入图片描述

4、根据因果图绘制判定表

绘制判定表的方法较为简单,将所有原因作为输入条件,每一项原因(输入条件)安排为一行,所有输入条件直接列出(真值为1,假值为0),将每种条件组合安排为一列,并将各个条件的取值情况分别添加到判定表的对应单元格中。

例如,若因果图中的原因有4项,则判定表中的输入条件共有4行,而列为2的四次方=16列。输入条件的取值确定完成之后,可根据判定表轻松地推算出各种结果的组合,即输出。判定表也包含中间节点的状态取值。

上述描述考虑了所有条件的组合情况,如果输入条件较多,条件组合的数量会较为庞大,从而导致绘制出的判定表列数过多,过于复杂。

而在实际情况下,条件与条件之间可能会存在约束,许多条件的组合是无效的,因此根据因果图绘制判定表时,可有意识地排除无效的条件组合,从而大幅减少判定表的列数。

例如,根据添加完约束所示的因果图,可绘制判定表如下所示

在这里插入图片描述

4、判定表驱动法

5、正交实验法

6、场景法

7、状态迁徙图法

8、错误推测法

猜你喜欢

转载自blog.csdn.net/weixin_46195957/article/details/116562384