第4章1 黑盒测试之边界值测试_第1页
第4章1 黑盒测试之边界值测试_第2页
第4章1 黑盒测试之边界值测试_第3页
第4章1 黑盒测试之边界值测试_第4页
第4章1 黑盒测试之边界值测试_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第4章 黑 盒 测 试 第4章 黑 盒 测 试 4.1 边界值测试边界值测试 4.2 等价类测试等价类测试 4.3 基于判定表的测试基于判定表的测试 4.4 因果图因果图 4.5 其他黑盒测试方法其他黑盒测试方法 4.6 综合案例综合案例 4.7 本章小结本章小结 常用测试技术常用测试技术 不深入代码细节的测试方不深入代码细节的测试方 法称为法称为黑盒测试。黑盒测试。 软件测试员充当客户来使软件测试员充当客户来使 用。用。 软件 输入输入 输出输出 黑盒测试(黑盒测试(Black box testing)也称功能测试或数据驱动)也称功能测试或数据驱动 测试,它是已知产品所应具有的功能,通过测试

2、来检测测试,它是已知产品所应具有的功能,通过测试来检测 每个功能是否都正常使用。每个功能是否都正常使用。 黑盒测试黑盒测试 戴上眼罩测试软件戴上眼罩测试软件 测试对象测试对象一个黑盒子一个黑盒子 黑盒测试技术概述黑盒测试技术概述 黑盒测试过程黑盒测试过程 例:测试计算器的功能例:测试计算器的功能 黑盒测试的特点黑盒测试的特点 黑盒测试的优缺点黑盒测试的优缺点 黑盒测试的难点黑盒测试的难点 测试内点测试内点 测试外点测试外点 被测试被测试 子域子域 边界值分析法边界值分析法 软件边界与悬崖很类似软件边界与悬崖很类似 4.1 边边界界值值测测试试 任何一个程序都可以看做是一个函数,程序的输入构成

3、函数的定义域,程序的输出构成函数的值域。人们从长期的人们从长期的 测试工作经验得知,大量的错误是发生在定义域或值域测试工作经验得知,大量的错误是发生在定义域或值域(输输 出出)的边界上,而不是在其内部。的边界上,而不是在其内部。对于软件缺陷,有句谚语 形容得很恰当,即“缺陷遗漏在角落里,聚集在边界上缺陷遗漏在角落里,聚集在边界上”。 比如,在做三角形计算时,要输入三角形的三个边长A、 B和C。这三个数值应当满足这三个数值应当满足A0、B0、C0、A+BC、 A+CB、B+CA,才能构成三角形。,才能构成三角形。但如果把六个不等式但如果把六个不等式 中的任何一个大于号中的任何一个大于号“”错写成

4、大于等于号错写成大于等于号“”,那就不,那就不 能构成三角形。能构成三角形。问题常常出现在容易被疏忽的边界附近。类似 的例子还有很多,如计数器常常如计数器常常“少记一次少记一次”;循环条件应该;循环条件应该 是是“”时错误地写成了时错误地写成了“”;数组下标越界;数组下标越界(在C语言中数组 下标是从零开始,可能错误地认为是从1开始,从而使最后一 个元素的下标越界)等。 边界值分析关注的是输入空间的边界,从中标识测试用例。 边界值测试背后的基本原理是错误更可能出现在输入变量的极边界值测试背后的基本原理是错误更可能出现在输入变量的极 值附近。值附近。因此针对各种边界情况设计测试用例,可以查出更多

5、因此针对各种边界情况设计测试用例,可以查出更多 的错误。的错误。 边界值设计原则边界值设计原则 (1 1)如果输入条件规定了值的)如果输入条件规定了值的范围范围,则应取,则应取 刚达到这个范围的边界的值,以及刚刚超刚达到这个范围的边界的值,以及刚刚超 越这个范围边界的值作为测试输入数据。越这个范围边界的值作为测试输入数据。 例如,例如,如果程序的规格说明中规定:如果程序的规格说明中规定:“重重 量在量在1010公斤至公斤至5050公斤范围内的邮件,其邮公斤范围内的邮件,其邮 费计算公式为费计算公式为 ”。作为测试用例,我。作为测试用例,我 们应取们应取1010及及5050,还应取,还应取10.

6、01,49.99,9.9910.01,49.99,9.99 及及50.0150.01等。等。 (2 2)如果输入条件规定了值的)如果输入条件规定了值的个数个数,则,则 用最大个数、最小个数、比最小个数少一、用最大个数、最小个数、比最小个数少一、 比最大个数多一的数作为测试数据。比最大个数多一的数作为测试数据。 例如,例如,一个输入文件应包括一个输入文件应包括1-2551-255个记录,个记录, 则测试用例可取则测试用例可取1 1和和255255,还应取,还应取0 0及及256256等。等。 ( (3)3)将规则将规则1 1和和2 2应用于应用于输出条件输出条件,即设计测试用,即设计测试用 例使

7、输出值达到边界值及其左右的值。例使输出值达到边界值及其左右的值。 例如,例如,一程序属于情报检索系统,要求每次一程序属于情报检索系统,要求每次”最最 少显示少显示1 1条、最多显示条、最多显示4 4条情报摘要条情报摘要”,这时我们应考,这时我们应考 虑的测试用例包括虑的测试用例包括1 1和和4 4,还应包括,还应包括0 0和和5 5等。等。 再如,再如,一个学生成绩管理系统规定,只能查询一个学生成绩管理系统规定,只能查询95-95- 9898级大学生的各科成绩,可以设计测试用例,使得查级大学生的各科成绩,可以设计测试用例,使得查 询范围内的某一届或四届学生的学生成绩,还需设计询范围内的某一届或

8、四届学生的学生成绩,还需设计 查询查询9494级、级、9999级学生成绩的测试用例(不合理输出等级学生成绩的测试用例(不合理输出等 价类)。价类)。 (4 4)如果程序的规格说明给出的输入域或输出域是)如果程序的规格说明给出的输入域或输出域是有序有序 集合集合(如顺序文件、线性表等),则应选取集合的第一(如顺序文件、线性表等),则应选取集合的第一 个元素和最后一个元素作为测试用例。个元素和最后一个元素作为测试用例。 (5 5)如果程序中使用了一个内部数据结构,则应当选择)如果程序中使用了一个内部数据结构,则应当选择 这个内部数据结构的边界上的值作为测试用例。这个内部数据结构的边界上的值作为测试

9、用例。 例如,例如,如果程序中定义了一个数组,其元素下标的如果程序中定义了一个数组,其元素下标的 下界是下界是0 0,上界是,上界是100100,那么应选择达到这个数组下标边,那么应选择达到这个数组下标边 界的值,如界的值,如0 0与与100100,作为测试用例。,作为测试用例。 (6 6)分析规格说明,找出其他可能的边界条件。)分析规格说明,找出其他可能的边界条件。 常见的边界值常见的边界值 4.1.1 边界条件边界条件 边界条件就是一些特殊情况。边界条件就是一些特殊情况。一般的,在条件一般的,在条件C下,软件下,软件 执行一种操作,对任意小的值执行一种操作,对任意小的值,条件,条件C+或或

10、C-会执行另外的会执行另外的 操作,则操作,则C就是一个边界。就是一个边界。 在多数情况下,边界条件是基于应用程序的功能设计而需在多数情况下,边界条件是基于应用程序的功能设计而需 要考虑的因素,可以从软件的规格说明或常识中得到。要考虑的因素,可以从软件的规格说明或常识中得到。比如程比如程 序要对学生成绩进行处理,要求输入数据的范围是序要对学生成绩进行处理,要求输入数据的范围是0,100, 则很明显输入条件的边界是则很明显输入条件的边界是0和和100。 然而,在测试用例设计过程中,某些边界条件是不需要呈然而,在测试用例设计过程中,某些边界条件是不需要呈 现给用户的,或者说用户是很难注意到的,但同

11、时确实属于检现给用户的,或者说用户是很难注意到的,但同时确实属于检 验范畴内的边界条件,称为内部边界条件或次边界条件。验范畴内的边界条件,称为内部边界条件或次边界条件。 内部边界条件主要有下面几种。内部边界条件主要有下面几种。 1数值的边界值数值的边界值 计算机是基于二进制进行工作的,因此,软件的任何计算机是基于二进制进行工作的,因此,软件的任何 数值运算都有一定的范围限制。数值运算都有一定的范围限制。比如一个字节由比如一个字节由8位组成,位组成, 一个字节所能表达的数值范围是一个字节所能表达的数值范围是0,255。表。表4-1-1列出了计列出了计 算机中常用数值的范围。算机中常用数值的范围。

12、 2字符的边界值字符的边界值 在计算机软件中,字符也是很重要的表示元素。其中在计算机软件中,字符也是很重要的表示元素。其中 ASCII和和Unicode是常见的编码方式。表是常见的编码方式。表4-1-2中列出了一些中列出了一些 常用字符对应的常用字符对应的ASCII码值。如果要测试文本输入或文本转码值。如果要测试文本输入或文本转 换的软件,在定义数据区间包含哪些值时,就可以参考换的软件,在定义数据区间包含哪些值时,就可以参考 ASCII码表,找出隐含的边界条件。码表,找出隐含的边界条件。 3其他边界条件其他边界条件 有一些边界条件容易被人忽略,有一些边界条件容易被人忽略,比如在文本框中不是比如

13、在文本框中不是 没有输入正确的信息,而是根本就没有输入任何内容,然没有输入正确的信息,而是根本就没有输入任何内容,然 后就按后就按“确认确认”按钮。按钮。这种情况常常被遗忘或忽视了,但这种情况常常被遗忘或忽视了,但 在实际使用中却时常发生。在实际使用中却时常发生。因此在测试时还需要考虑程序因此在测试时还需要考虑程序 对默认值、空白、空值、零值、无输入等情况的反应。对默认值、空白、空值、零值、无输入等情况的反应。 在进行边界值测试时,如何确定边界条件的取值呢?在进行边界值测试时,如何确定边界条件的取值呢? 一般情况下,确定边界值应遵循以下几条原则:一般情况下,确定边界值应遵循以下几条原则: (1

14、) 如果输入条件规定了值的范围,则应取刚达到这个如果输入条件规定了值的范围,则应取刚达到这个 范围的边界的值,以及刚刚超越这个范围边界的值作为测范围的边界的值,以及刚刚超越这个范围边界的值作为测 试输入数据。试输入数据。 (2) 如果输入条件规定了值的个数,则用最大个数、最如果输入条件规定了值的个数,则用最大个数、最 小个数、比最小个数少一、比最大个数多一的数作为测试小个数、比最小个数少一、比最大个数多一的数作为测试 数据。数据。 (3) 如果程序的规格说明给出的输入域或输出域是有序如果程序的规格说明给出的输入域或输出域是有序 集合,则应选取集合的第一个元素和最后一个元素作为测集合,则应选取集

15、合的第一个元素和最后一个元素作为测 试数据。试数据。 (4) 如果程序中使用了一个内部数据结构,则应当选择如果程序中使用了一个内部数据结构,则应当选择 这个内部数据结构的边界上的值作为测试数据。这个内部数据结构的边界上的值作为测试数据。 (5) 分析规格说明,找出其他可能的边界条件。分析规格说明,找出其他可能的边界条件。 4.1.2 边界值分析边界值分析 为便于理解,以下讨论涉及两个输入变量为便于理解,以下讨论涉及两个输入变量x1和和x2的函的函 数数F。假设。假设x1和和x2分别在下列范围内取值:分别在下列范围内取值:ax1b;cx2d。 函数函数F的输入空间如图的输入空间如图4-1-1所示

16、。矩形阴影中的任何一所示。矩形阴影中的任何一 点都是函数点都是函数F的有效输入。的有效输入。 图图4-1-1 两个变量函数的输入域两个变量函数的输入域 边界值分析的基本思想是使用输入变量的最小值、略边界值分析的基本思想是使用输入变量的最小值、略 大于最小值、正常值、略小于最大值和最大值设计测试用大于最小值、正常值、略小于最大值和最大值设计测试用 例。例。通常我们用通常我们用min、min+、nom、max-和和max来表示。来表示。 当一个函数或程序有两个及两个以上的输入变量时,当一个函数或程序有两个及两个以上的输入变量时, 就需要考虑如何组合各变量的取值。就需要考虑如何组合各变量的取值。我们

17、可根据可靠性理我们可根据可靠性理 论中的单缺陷假设和多缺陷假设来考虑。论中的单缺陷假设和多缺陷假设来考虑。 单缺陷假设,即被测对象只要在某个输入条件的某单缺陷假设,即被测对象只要在某个输入条件的某 个边界出错,则在任何包含改输入条件的某个边界的情况个边界出错,则在任何包含改输入条件的某个边界的情况 下一定会出错,那么测试时仅覆盖输入条件的单个边界点下一定会出错,那么测试时仅覆盖输入条件的单个边界点 即可,无需测试多个输入条件取边界测试数据的情况。因即可,无需测试多个输入条件取边界测试数据的情况。因 此,单缺陷假设的策略是在任何一个测试用例中,有且只此,单缺陷假设的策略是在任何一个测试用例中,有

18、且只 能有一个输入条件的取值为边界邻域内的测试数据,其他能有一个输入条件的取值为边界邻域内的测试数据,其他 输入条件应取正常值输入条件应取正常值(一般为相邻边界点之间的中值一般为相邻边界点之间的中值)。 单缺陷假设是指单缺陷假设是指“失效极少是由两个或两个以上的缺陷失效极少是由两个或两个以上的缺陷 同时发生引起的同时发生引起的”。依据单缺陷假设来设计测试用例,只依据单缺陷假设来设计测试用例,只 让一个变量取边界值,其余变量取正常值。让一个变量取边界值,其余变量取正常值。多缺陷假设是多缺陷假设是 指指“失效是由两个或两个以上缺陷同时作用引起的失效是由两个或两个以上缺陷同时作用引起的”。因因 此依

19、据多缺陷假设来设计测试用例,要求在选取测试用例此依据多缺陷假设来设计测试用例,要求在选取测试用例 时同时让多个变量取边界值。时同时让多个变量取边界值。 在边界值分析中,用到了单缺陷假设,即选取测试用在边界值分析中,用到了单缺陷假设,即选取测试用 例时仅仅使得一个变量取极值,其他变量均取正常值。例时仅仅使得一个变量取极值,其他变量均取正常值。对对 于有两个输入变量的程序于有两个输入变量的程序P,其边界值分析的测试用例如下:,其边界值分析的测试用例如下: , , 对于有两个输入变量的程序对于有两个输入变量的程序P,其边界值分析的测试用,其边界值分析的测试用 例在图中的位置如图例在图中的位置如图4-

20、1-2所示。所示。 图图4-1-2 两个变量函数的边界值分析两个变量函数的边界值分析 例如,有一个二元函数例如,有一个二元函数f(x,y),要求输入变量,要求输入变量x,y分分 别满足:别满足:x1,12,y1,31。采用边界值分析法设计采用边界值分析法设计 测试用例,可以选择下面一组测试数据:测试用例,可以选择下面一组测试数据: , , 。 对于一个含有对于一个含有n个输入变量的程序,使除一个以外的所个输入变量的程序,使除一个以外的所 有变量取正常值,剩余的一个变量依次取最小值、略大于有变量取正常值,剩余的一个变量依次取最小值、略大于 最小值、正常值、略小于最大值和最大值,并对每个变量最小值

21、、正常值、略小于最大值和最大值,并对每个变量 重复进行。因此,重复进行。因此,对于有对于有n个输入变量的程序,边界值分析个输入变量的程序,边界值分析 会产生会产生4n+1个测试用例。个测试用例。 例如,有一个三元函数例如,有一个三元函数f(x, y, z),其中,其中x0,100, y1,12,z1,31,对该函数采用边界值分析法设计对该函数采用边界值分析法设计 的测试用例的测试用例将会得到将会得到13个测试用例,个测试用例,根据边界分析的原理,根据边界分析的原理, 可得到下列测试数据:可得到下列测试数据: , 。 举例:三角形问题举例:三角形问题 边界值分析优缺点边界值分析优缺点 4.1.3

22、 健壮性边界测试健壮性边界测试 健壮性是指在异常情况下,软件还能正常运行的能力。健壮性是指在异常情况下,软件还能正常运行的能力。健壮健壮 性可衡量软件对于规范要求以外的输入情况的处理能力。性可衡量软件对于规范要求以外的输入情况的处理能力。所谓健所谓健 壮的系统,是指对于规范要求以外的输入能够判断出这个输入不壮的系统,是指对于规范要求以外的输入能够判断出这个输入不 符合规范要求,并能有合理的处理方式的系统。符合规范要求,并能有合理的处理方式的系统。软件设计的健壮软件设计的健壮 与否直接反映了分析设计和编码人员的水平。与否直接反映了分析设计和编码人员的水平。 健壮性边界测试是边界值分析的一种简单扩

23、展。健壮性边界测试是边界值分析的一种简单扩展。在使用该方在使用该方 法设计测试用例时,既要考虑有效输入,又要考虑无效的输入。法设计测试用例时,既要考虑有效输入,又要考虑无效的输入。 除了按照边界值分析方法选取的五个取值除了按照边界值分析方法选取的五个取值(min、min+、nom、 max-、max)外,外,还要选取略小于最小值还要选取略小于最小值(min-)和略大于最大值和略大于最大值 (max+)的取值,的取值,以观察输入变量超过边界时程序会有什么表现。以观察输入变量超过边界时程序会有什么表现。 对于有两个变量的程序对于有两个变量的程序P,其健壮性测试的测试用例如图,其健壮性测试的测试用例

24、如图4-1-3所所 示。示。 图图4-1-3 两个变量函数的健壮性测试用例两个变量函数的健壮性测试用例 对于一个含有对于一个含有n个输入变量的程序,个输入变量的程序,进行健壮性边界测进行健壮性边界测 试时试时,使除一个以外的所有变量取正常值,使剩余的那个使除一个以外的所有变量取正常值,使剩余的那个 变量依次取略小于最小值、最小值、略大于最小值、正常变量依次取略小于最小值、最小值、略大于最小值、正常 值、略小于最大值、最大值和略大于最大值,并对每个变值、略小于最大值、最大值和略大于最大值,并对每个变 量重复进行。量重复进行。因此其健壮性测试会产生因此其健壮性测试会产生6n+1个测试用例。个测试用

25、例。 例如,有一个二元函数例如,有一个二元函数f(x,y),要求输入变量,要求输入变量x,y分分 别满足:别满足:x0,100,y1000,3000,对其进行健壮性对其进行健壮性 测试,测试,则需要设计则需要设计13个测试用例。根据健壮性测试的原理,个测试用例。根据健壮性测试的原理, 可以得到下面一组测试数据:可以得到下面一组测试数据:, , , ,。 健壮性测试最关心的是预期的输出,而不是输入。健壮性测试最关心的是预期的输出,而不是输入。健健 壮性测试的最大价值在于观察处理异常情况,它是检测软壮性测试的最大价值在于观察处理异常情况,它是检测软 件系统容错性的重要手段。件系统容错性的重要手段。

26、 4.1.5 案例案例 1三角形问题三角形问题 输入三个整数输入三个整数a、b、c,分别作为三角形的三条边,通,分别作为三角形的三条边,通 过程序判断这三条边是否能构成三角形。如果能构成三角过程序判断这三条边是否能构成三角形。如果能构成三角 形,则判断三角形的类型形,则判断三角形的类型(等边三角形、等腰三角形、一般等边三角形、等腰三角形、一般 三角形三角形)。要求输入三个整数。要求输入三个整数a、b、c,必须满足以下条件:,必须满足以下条件: 1a100;1b100;1c100。请用边界值分析法设计测试请用边界值分析法设计测试 用例。用例。 用边界值分析法设计测试用例,按照下列步骤进行:用边界

27、值分析法设计测试用例,按照下列步骤进行: 1) 分析各变量取值分析各变量取值 边界值分析的基本思想是使用输入变量的最小值、略边界值分析的基本思想是使用输入变量的最小值、略 大于最小值、正常值、略小于最大值和最大值设计测试用大于最小值、正常值、略小于最大值和最大值设计测试用 例。例。因此因此a、b、c的边界取值是:的边界取值是:1、2、50、99、100。 2) 测试用例数测试用例数 有有n个变量的程序,其边界值分析会产生个变量的程序,其边界值分析会产生4n+1个测试用个测试用 例。例。这里有这里有3个变量,因此会产生个变量,因此会产生13个测试用例。个测试用例。 3) 设计测试用例设计测试用例

28、 用边界值分析法设计测试用例就是使一个变量取边界用边界值分析法设计测试用例就是使一个变量取边界 值值(分别取最小值、略大于最小值、正常值、略小于最大值分别取最小值、略大于最小值、正常值、略小于最大值 和最大值和最大值),其余变量取正常值,然后对每个变量重复进行。,其余变量取正常值,然后对每个变量重复进行。 本例用边界值分析法设计的测试用例见表本例用边界值分析法设计的测试用例见表4-1-3。 2NextDate函数函数 程序有三个输入变量程序有三个输入变量month、day、year(month、day和和 year均为整数值,并且满足条件:均为整数值,并且满足条件:1month12、1day31, 1900year2050),分别作为输入日期的月份、日、年份,分别作为输入日期的月份、日、年份, 通过程序可以输出该输入日期在日历上下一天的日期。例通过程序可以输出该输入日期在日历上下一天的日期。例 如,输入为如,输入为2005年年11月月29日,则该程序的输出为日,则该程序的输出为2005年年11月月 30日。日。请用健壮性测试法设计测试用例。请用健壮性测试法设计测试用例。 用健壮性测试法设计测试用例,按照下列步骤进行:用健壮性测试法设计测试用例,按照下列步骤进行: 1) 分析各变量的取值分析各变量的取值 健壮性测试时,各变量分

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论