黑盒测试方法
可以使规格说明更具体一些,包括对month、day和 year的无效输入值的响应定义,还可以对无效逻辑 组合进行定义。例如对任意年的2月30日的响应。 如果con1、con2或con3中任何一个条件失效,则 nextdate都会产生一个输出,指明相应的变量超出 了取值范围。例如,“month值不再1-12范围内”, 显然,存在大量的无效day-month-year组合, nextdate函数将这些组合合并为一个输出“无效输 入日期”。 在nextdate函数中有两种复杂性来源:一是所讨 论输入域的复杂性,一是确定闰年的规则。
这个问题可以分为3个不同的部分:
(1)输入数据部分,用来处理输入数据的有
效性。 (2)销售额计算部分。 (3)雇佣金计算部分。
等价类划分测试
等价类划分是一种典型的黑盒测试方法,该
方法完全不考虑程序的内部结构,只根据对 软件的要求和说明,即需求规格说明,把程 序输入域划分成若干个部分,然后从每个部 分中选取少数有代表性的数据作为测试输入。 使用等价类划分方法设计测试用例,必须在 分析需求规格说明的基础上划分等价类。
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;
4、用其他模块的接口是否正确,检查实参类
型是否正确、实参个数是否正确,返回值是 否正确,是否会误解返回值所表达的意思。 如果被调用模块出现异常或错误,程序是否 添加了适当的出错处理代码。 5、是否设置了适当的出错处理,以便在程序 出错时,能对出错部分进行重做安排,保证 其逻辑的正确性。 6、表达式、语句是否正确,是否含有二义性。 对于容易产生歧义的表达式或运算符优先级 可以蚕蛹()运算以避免二义性。
(二)白盒测试(基于程序的测试)
白盒测试要求对被测程序的结构特性做到一
定程度的覆盖,或说是“基于覆盖的测试”。 测试机人员可以严格定义要测试的确切内容, 明确提出要达到测试覆盖率,以减少测试的 盲目性,引导测试人员朝着提高测试覆盖率 的方向努力,从而找到那些被忽略的程序故 障。
在软件测试过程中,一般而言在单元测试时 大都采用白盒测试,而在确认测试或系统测 试中大都采用黑盒测试。
如果输入值不满足这些条件中的任何一个,程序给 出相应的信息。例如:“边c的取值不允许取值范围 内”等。如果a、b和c满足con1、 con2 和con3则 输出下列4种情况之一: (1)不满足4、5和6中的一个,则程序输出为“非 三角形”。 (2)如果三条边相等,则程序输出为“等边三角 形”。 (3)如果恰好两边相等,则程序输出为“等腰三 角形”。 (4)如果三条边都不相等,则程序输出为“一般 三角形”。 显然,这4种情况相互排斥。
7、常量或全局变量使用是否正确 8、标识符的定义是否规范、一致,变量命名
是否能够见名知意,简介、规范和容易记忆。 9、程序风格的一致性、规范性,但吗是否符 合行业规范,是否所有模块的代码风格一致、 规范、工整。 10、代码是否可以优化,算法效率是否最高。 11、代码是否清晰、简介和容易理解。 12、模块内部注释是否完整,是否正确地反 映代码的功能。错误的注释比没有注释更糟。
黑盒测试和白盒测试
怎么样对程序进行测试呢?测试任何产品都
有两种方法:如果已经知道了产品应该具有 的功能,可以通过测试来检验是否每个功能 都能正常使用;如果知道产品内部工作过程, 可以通过测试来检验产品内部动作是否按照 规格说明书的规定正常进行。前一个方法称 为黑盒测试,后一个方法称为白盒测试。
如果测试数据全都从同一个等价类选取,除去其中 一个测试数据对发现软件故障有意义外,使用其他 的测试数据进行测试都是徒劳,它们对测试工作的 进展没有意义,不如把测试时间花在其他等价类元 素的测试中。 例如:三角形问题中,如果选择三元组(2,2,2) 作为测试输入,可以判定这是一个等边三角形。若 再以三元组(100,100,100)或(5,5,5)作 为测试输入,与测试用例(2,2,2)一样的方式 进行,它们具有等价的测试效果。因此,这些测试 用例是冗余的。使用等价类划分测试的目的是既希 望进行完备的测试,同时又希望避免冗。
静态测试与动态测试
原则上讲,软件测试方法可以分为两大类:
静态测试和动态测试方法。 静态测试是指不利用计算机运行被测程序, 而是通过其他手段达到检测的目的。 动态测试是指通常意义上的测试——通过运 行和使用被测程序,发现软件故障,以达到 检测的目的。
模拟这两种测试的最好方法是研究以下汽车的检 查过程。踩油门、看车漆、打开前盖检查都属于静 态测试技术。 发动汽车就、听听发动机的声音、上 路行驶属于动态测试技术。 经验表明:使用人工静态测试可以发现大约 30%-70%的逻辑设计和编码错误。但,代码中仍会 有大量隐藏的故障无法通过静态测试发现,因此必 须通过动态测试进行详细的分析。
三角形问题:输入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条边构成的三角形类型:等边三 角形、等腰三角形、一般三角形或非三角形。
1、模块测试
模块测试的目的是保证每个模块作为一个 单元能正确运行,使用模块测试通常又称 为单元测试。在这个测试步骤中所发现的 往往是编码和详细设计的错误。 2、子系统测试 子系统测试是把经过单元测试的模块放在 一起形成一个子系统来测试。模块相互间 的协调和通信是这个测试过程中的主要问 题,因此这个步骤着重测试模块的接口。
每访问一个镇之后,销售商都给密苏里州步
枪制造商发封电报,说明那个镇出售的枪机、 枪托和枪管数量。当销售商发出售出枪机的 个数为“-1”时表明一个月结束,这样步枪制 造商就知道当月的销售情况,并计算销售商 的雇佣金如下:销售额不到(含)1000美元 的部分为10%,1000(不含)-1800(含) 美元的部分为15%,超过1800美元的部分为 20%。雇佣金程序生成按月份的销售报告, 汇总售出的枪机、枪托和枪管总数,销售商 的总销售额以及雇佣金。
(2)无效等价类 无效等价类是指对软件规格说明而言,是不合理或 无意义的输入数据所构成的集合。 利用无效等价类,可以检查软件功能和性能的实 现是否有不符合规格说明要求的地方。对于具体的 问题,无效等价类至少应有一个,也可能有多个。 以下给出几条确定等价类的原则: (1)按区间划分 如果规格说明规定了输入条件的取值范围或值的 数量,则可以确定一个有效等价类和两个无效等价 类。例如:如果软件规格说明要求输入的是1-12月 中的一个月,则1-12定义了一个有效等价类和两个 无效等价类(月<1和月>12)。
静态测试阶段进行以下一些检测活动:
1、算法的逻辑正确性,确定算法是否实现了
所有功能。 2、模块街头的正确性,确定形参的个数、数 据类型,顺序是否正确,确定返回值类型以 及返回值的正确性。 3、输入参数是否有合法性检查。如果没有, 则应该确定该参数是否的确不需要合法性检 查,否则应加上参数的合法性检查。经验表 明,缺少参数合法性检查的代码是造成软件 系统不稳定的主要原因之一。
5、平行运行 关系重大的软件产品在验收之后往往并不立即投 入生产性运行,而是要再经过一段平行运行时间 的考验。 所谓平行运行就是同时运行新开发出来的系统 和将被它取代的旧系统,以便比较新旧关系的处 理结果。 其具体目的是:1、可以在准生产环境中运行新 系统而不冒风险2、用户能有一段熟悉新系统的时 间3、可以验证用户指南和使用手册之类的文档4、 能以准生产模式对新系统进行全负荷测试,可以 用测试结果验证性能指标。
传统的等价类划分测试的实现分两步进行,一是确 定等价类,二是确定测试用例。 1、划分等价类 软件不能只接收有效地,合理的数据,还应经受意 外的考验,即接受无效的或不合理的数据,这样获 得的软件才能具有较高的可靠性。因此,在考虑等 价类时,应注意区别两种不同的情况。 (1)有效等价类 有效等价类是指对软件规格说明而言,是有意义 的,合理的输入数据所构成的集合。 利用有效等价类,可以检验程序是否实现了规格说明 预先的功能和性能。在具体问题中,有效等价类可 以是一个,也可以是多个。
对软件测试而言,黑盒测试法把程序看成一 个黑盒子,完全不考虑程序的内部结构和处 理过程。 黑盒测试又称为功能测试。 与黑盒测试相反,白盒测试法的前提时可以 把程序看成装在一个透明的盒子里,也就完 全了解程序的结构和处理过程。这种方法按 照 程序的内部的逻辑测试程序,检验程序中 的每条通路是否能按预定要求正确工作。白 盒测试又称为结构测试。
3个被测程序
我们将采用3个例子来说明各种单元测试方法。一 个是三角形问题;一个是逻辑比较复杂的nextdate 函数;一个是具有代表性的雇佣金问题。 一、三角形问题 三角形问题:输入3个整数a、b和c分别作为三角形 的三条边,通过程序判断由这三条边构成的三角形 类型是:等边三角形、等腰三角形、一般三角形或 非三角形。