黑盒测试方法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3个被测程序
我们将采用3个例子来说明各种单元测试方法。一 个是三角形问题;一个是逻辑比较复杂的nextdate 函数;一个是具有代表性的雇佣金问题。 一、三角形问题 三角形问题:输入3个整数a、b和c分别作为三角形 的三条边,通过程序判断由这三条边构成的三角形 类型是:源自文库边三角形、等腰三角形、一般三角形或 非三角形。
如果测试数据全都从同一个等价类选取,除去其中 一个测试数据对发现软件故障有意义外,使用其他 的测试数据进行测试都是徒劳,它们对测试工作的 进展没有意义,不如把测试时间花在其他等价类元 素的测试中。 例如:三角形问题中,如果选择三元组(2,2,2) 作为测试输入,可以判定这是一个等边三角形。若 再以三元组(100,100,100)或(5,5,5)作 为测试输入,与测试用例(2,2,2)一样的方式 进行,它们具有等价的测试效果。因此,这些测试 用例是冗余的。使用等价类划分测试的目的是既希 望进行完备的测试,同时又希望避免冗。
静态测试阶段进行以下一些检测活动:
1、算法的逻辑正确性,确定算法是否实现了
所有功能。 2、模块街头的正确性,确定形参的个数、数 据类型,顺序是否正确,确定返回值类型以 及返回值的正确性。 3、输入参数是否有合法性检查。如果没有, 则应该确定该参数是否的确不需要合法性检 查,否则应加上参数的合法性检查。经验表 明,缺少参数合法性检查的代码是造成软件 系统不稳定的主要原因之一。
(二)白盒测试(基于程序的测试)
白盒测试要求对被测程序的结构特性做到一
定程度的覆盖,或说是“基于覆盖的测试”。 测试机人员可以严格定义要测试的确切内容, 明确提出要达到测试覆盖率,以减少测试的 盲目性,引导测试人员朝着提高测试覆盖率 的方向努力,从而找到那些被忽略的程序故 障。

在软件测试过程中,一般而言在单元测试时 大都采用白盒测试,而在确认测试或系统测 试中大都采用黑盒测试。
可以使规格说明更具体一些,包括对month、day和 year的无效输入值的响应定义,还可以对无效逻辑 组合进行定义。例如对任意年的2月30日的响应。 如果con1、con2或con3中任何一个条件失效,则 nextdate都会产生一个输出,指明相应的变量超出 了取值范围。例如,“month值不再1-12范围内”, 显然,存在大量的无效day-month-year组合, nextdate函数将这些组合合并为一个输出“无效输 入日期”。 在nextdate函数中有两种复杂性来源:一是所讨 论输入域的复杂性,一是确定闰年的规则。
静态测试与动态测试
原则上讲,软件测试方法可以分为两大类:
静态测试和动态测试方法。 静态测试是指不利用计算机运行被测程序, 而是通过其他手段达到检测的目的。 动态测试是指通常意义上的测试——通过运 行和使用被测程序,发现软件故障,以达到 检测的目的。
模拟这两种测试的最好方法是研究以下汽车的检 查过程。踩油门、看车漆、打开前盖检查都属于静 态测试技术。 发动汽车就、听听发动机的声音、上 路行驶属于动态测试技术。 经验表明:使用人工静态测试可以发现大约 30%-70%的逻辑设计和编码错误。但,代码中仍会 有大量隐藏的故障无法通过静态测试发现,因此必 须通过动态测试进行详细的分析。
4、用其他模块的接口是否正确,检查实参类
型是否正确、实参个数是否正确,返回值是 否正确,是否会误解返回值所表达的意思。 如果被调用模块出现异常或错误,程序是否 添加了适当的出错处理代码。 5、是否设置了适当的出错处理,以便在程序 出错时,能对出错部分进行重做安排,保证 其逻辑的正确性。 6、表达式、语句是否正确,是否含有二义性。 对于容易产生歧义的表达式或运算符优先级 可以蚕蛹()运算以避免二义性。

传统的等价类划分测试的实现分两步进行,一是确 定等价类,二是确定测试用例。 1、划分等价类 软件不能只接收有效地,合理的数据,还应经受意 外的考验,即接受无效的或不合理的数据,这样获 得的软件才能具有较高的可靠性。因此,在考虑等 价类时,应注意区别两种不同的情况。 (1)有效等价类 有效等价类是指对软件规格说明而言,是有意义 的,合理的输入数据所构成的集合。 利用有效等价类,可以检验程序是否实现了规格说明 预先的功能和性能。在具体问题中,有效等价类可 以是一个,也可以是多个。
对软件测试而言,黑盒测试法把程序看成一 个黑盒子,完全不考虑程序的内部结构和处 理过程。 黑盒测试又称为功能测试。 与黑盒测试相反,白盒测试法的前提时可以 把程序看成装在一个透明的盒子里,也就完 全了解程序的结构和处理过程。这种方法按 照 程序的内部的逻辑测试程序,检验程序中 的每条通路是否能按预定要求正确工作。白 盒测试又称为结构测试。
软件测试的步骤
除非是测试一个小程序,否则一开始就要把
整个系统作为一个单独的实体来测试是不现 实的。与开发过程类似,测试过程也必须分 步骤进行,每个步骤在逻辑上是前一个步骤 的进行。 大型软件系统通常由若干个子系统组成,每 个子系统又由许多模块组成。因此,大型软 件系统的测试基本上由以下几个步骤组成:
等价类划分把程序的输入域划分成若干个互
不相交的子集,称之为等价类。 所谓等价类是指输入域的某个子集合,所有 等价类的并便是整个输入域,这对于测试有 两个非常重要的意义:完备性和无冗余性。 由于等价类由等价关系决定,因此等价类中 的元素有一些共同的特点:如果用等价类中 的一个元素作为测试数据进行测试不能发现 软件中的故障,那么使用等价类中的其他元 素进行测试也不可能发现故障。

黑盒测试和白盒测试
怎么样对程序进行测试呢?测试任何产品都
有两种方法:如果已经知道了产品应该具有 的功能,可以通过测试来检验是否每个功能 都能正常使用;如果知道产品内部工作过程, 可以通过测试来检验产品内部动作是否按照 规格说明书的规定正常进行。前一个方法称 为黑盒测试,后一个方法称为白盒测试。

三角形问题:输入3个整数a、b和c分别作为三角形 的三条边,要求a、b和c必须满足以下条件 Con1 1<=a<=100; Con2 1<=b<=100; Con3 1<=c<=100; Con4 a<b+c; Con5 b<a+c; Con 6 c<a+b; 程序的输出由这3条边构成的三角形类型:等边三 角形、等腰三角形、一般三角形或非三角形。

(2)无效等价类 无效等价类是指对软件规格说明而言,是不合理或 无意义的输入数据所构成的集合。 利用无效等价类,可以检查软件功能和性能的实 现是否有不符合规格说明要求的地方。对于具体的 问题,无效等价类至少应有一个,也可能有多个。 以下给出几条确定等价类的原则: (1)按区间划分 如果规格说明规定了输入条件的取值范围或值的 数量,则可以确定一个有效等价类和两个无效等价 类。例如:如果软件规格说明要求输入的是1-12月 中的一个月,则1-12定义了一个有效等价类和两个 无效等价类(月<1和月>12)。
静态黑盒测试和静态白盒测试
检查软件规格说明属于静态黑盒测试。检查
代码则属于静态白盒测试。它们都是在不执 行程序的条件下有条理地仔细审查软件设计、 体系结构和代码,从而找出软件故障的过程。
黑盒测试
黑盒测试是从软件的外部对软件实施测试,
也常形容为闭着眼睛测试。在接下来的学习 中将介绍几种常用的黑盒测试方法,其中包 括等价类划分、边界值分析、决策表测试等。
1、模块测试
模块测试的目的是保证每个模块作为一个 单元能正确运行,使用模块测试通常又称 为单元测试。在这个测试步骤中所发现的 往往是编码和详细设计的错误。 2、子系统测试 子系统测试是把经过单元测试的模块放在 一起形成一个子系统来测试。模块相互间 的协调和通信是这个测试过程中的主要问 题,因此这个步骤着重测试模块的接口。

5、平行运行 关系重大的软件产品在验收之后往往并不立即投 入生产性运行,而是要再经过一段平行运行时间 的考验。 所谓平行运行就是同时运行新开发出来的系统 和将被它取代的旧系统,以便比较新旧关系的处 理结果。 其具体目的是:1、可以在准生产环境中运行新 系统而不冒风险2、用户能有一段熟悉新系统的时 间3、可以验证用户指南和使用手册之类的文档4、 能以准生产模式对新系统进行全负荷测试,可以 用测试结果验证性能指标。
这个问题可以分为3个不同的部分:
(1)输入数据部分,用来处理输入数据的有
效性。 (2)销售额计算部分。 (3)雇佣金计算部分。
等价类划分测试
等价类划分是一种典型的黑盒测试方法,该
方法完全不考虑程序的内部结构,只根据对 软件的要求和说明,即需求规格说明,把程 序输入域划分成若干个部分,然后从每个部 分中选取少数有代表性的数据作为测试输入。 使用等价类划分方法设计测试用例,必须在 分析需求规格说明的基础上划分等价类。
7、常量或全局变量使用是否正确 8、标识符的定义是否规范、一致,变量命名
是否能够见名知意,简介、规范和容易记忆。 9、程序风格的一致性、规范性,但吗是否符 合行业规范,是否所有模块的代码风格一致、 规范、工整。 10、代码是否可以优化,算法效率是否最高。 11、代码是否清晰、简介和容易理解。 12、模块内部注释是否完整,是否正确地反 映代码的功能。错误的注释比没有注释更糟。

(一)黑盒测试(基于规格说明的测试) 黑盒测试是一类重要的软件测试方法,它根
据规格说明设计测试用例,不涉及程序的内 部结构。因此,黑盒测试有两个显著的优点: 1、黑盒测试与软件具体实现无关,使用如果 软件实现发生了变化,测试用来依然可以使 用。 2、设计黑盒测试用来可以和软件实现同时进 行,因此可以压缩项目总的开发时间。

3、系统测试 系统测试是把测试的子系统装配成一个完整的系 统来测试。在这个过程中不仅应该发现设计和编 码的错误,还应该验证系统确实能提供需求说明 书中指定的功能,而且系统的动态特性也符合预 定要求。 4、验收测试 验收测试就是把软件系统作为单一的实体进行测 试,测试内容与系统测试基本类似,但是它是在 用户积极参与下进行的,而且可能主要使用实际 数据进行测试。 该测试的目的:验证系统确实能满足用户的需要, 在这个测试步骤中发现的往往是系统需求说明书 中的错误。

二、nextdate函数
Nextdate函数是一个有3个变量month、day
和year的函数。输出为输入日期后一天的日 期。例如,如果输入为1998年5月3日,则 nextdate函数输出为1998年5月4日.要求输入 变量month、day和year都是整数,并满足以 下条件: Con1 1<=month<=12; Con2 1<=day<=31; Con3 1912<=year<=2050;

三、雇佣金问题
雇佣金问题是一个典型的商务计算例子,包
含了计算和决策,因此引出了许多有意思的 测试问题。 前亚利桑那州境内的一位步枪销售商销售 密苏里州制造的步枪枪机、枪托和枪管。步 枪枪机每只卖45美元,枪托每只卖30美元, 枪管每只卖25美元。销售商每月至少要售出 一支完整的步枪,制造商的生产限额可提供 大多数销售商一个月内销售70只枪机,80只 枪托和90只枪管。

如果输入值不满足这些条件中的任何一个,程序给 出相应的信息。例如:“边c的取值不允许取值范围 内”等。如果a、b和c满足con1、 con2 和con3则 输出下列4种情况之一: (1)不满足4、5和6中的一个,则程序输出为“非 三角形”。 (2)如果三条边相等,则程序输出为“等边三角 形”。 (3)如果恰好两边相等,则程序输出为“等腰三 角形”。 (4)如果三条边都不相等,则程序输出为“一般 三角形”。 显然,这4种情况相互排斥。
每访问一个镇之后,销售商都给密苏里州步
枪制造商发封电报,说明那个镇出售的枪机、 枪托和枪管数量。当销售商发出售出枪机的 个数为“-1”时表明一个月结束,这样步枪制 造商就知道当月的销售情况,并计算销售商 的雇佣金如下:销售额不到(含)1000美元 的部分为10%,1000(不含)-1800(含) 美元的部分为15%,超过1800美元的部分为 20%。雇佣金程序生成按月份的销售报告, 汇总售出的枪机、枪托和枪管总数,销售商 的总销售额以及雇佣金。
相关文档
最新文档