1、第第3章章 黑盒测试技术黑盒测试技术3.1 黑盒测试的优点和缺点黑盒测试的优点和缺点3.1.1 黑盒测试的优点黑盒测试的优点 黑盒测试主要有如下几个优点:(1)有针对性地寻找问题,并且定位问题更准确。(2)黑盒测试可以证明产品是否达到用户要求的功能,符合用户的工作要求。(3)能重复执行相同的动作,测试工作中最枯燥的部分可交由机器完成。3.1.2 黑盒测试的缺点黑盒测试的缺点 黑盒测试主要有如下几个缺点:(1)需要充分了解产品用到的技术,测试人员需要具有较多经验。(2)在测试过程中很多是手工测试操作。(3)测试人员要负责大量文档、报表的编制和整理工作。3.2 黑盒测试的方法黑盒测试的方法 3.2
2、.1 等价类划分法等价类划分法1等价类划分法简述等价类划分法简述等价类划分法是一种黑盒测试技术,它不考虑程序的内部结构,只根据软件的需求说明来对输入的范围进行细分,然后再从分出的每一个区域内选取一个有代表性的测试数据。如果等价类分得好,这个代表性的测试数据的作用就等价于其区域内的其他取值。等价类又可分为有效等价类和无效等价类。有效等价类:是指符合需求规格说明书,合理地输入数据集合。无效等价类:是指不符合需求规格说明书,无意义地输入数据集合。在利用等价类设计测试用例时,要同时考虑这两种等价类,因为软件不仅要能够接受合理的数据,也要接受不合理的数据进行检验。这样的测试才能确保软件具有更高的可靠性。
3、2划分等价类的原则划分等价类的原则划分等价类的原则如下:(1)在输入条件规定了取值范围或值的个数的情况下,可确立一个有效等价类和两个无效等价类。(2)在输入条件规定了输入值的集合或规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类。(3)在输入条件是一个布尔变量的情况下,可确定一个有效等价类和一个无效等价类。(4)在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。(5)在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。(6)在确定已划分的等价类
4、中各元素在程序处理中的方式不同的情况下,应再将该等价类进一步地划分为更小的等价类3划分等价类的要求划分等价类的要求 划分等价类的要求如下:测试完备合理,避免冗余。划分输入条件、有效等价类和无效等价类时最重要的是将集合划分为互不相交的一组子集。整个集合完备。子集互不相交,保证一种形式的无冗余性。同一类中标识(选择)一个测试用例,在同一等价类中,往往处理相同,相同处理映射到“相同的执行路径”。4等价类表的建立等价类表的建立 等价类表建立后,从划分出的等价类中按以下步骤确定测试用例。为每一个等价类规定一个唯一的编号。设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步,直到所有
5、的有效等价类都被覆盖为止。设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。5测试用例等价类表的建立测试用例等价类表的建立【例3-1】建立小区物业住宅管理系统“日期检查功能”的测试用例等价类表。有一个小区物业住宅管理系统,要求住户输入以年月表示的日期。假设日期限定在1988年1月2068年12月,并规定日期由6位数字组成,前4位表示年,后2位表示月。现用等价类划分法设计测试用例,“日期检查功能”的测试用例等价类表如表3-2所示。输入等价类输入等价类 有效等价类有效等价类无效等价类无效等价类日期类型及长度6位数字有非数字字符;小于6位数字;
6、多于6位数字年份范围在19882068之间小于1989;大于2068月份范围在0112之间等于00;大于12表3-2 “日期检查功能”的测试用例等价类6测试用例的设计测试用例的设计【例3-2】【例3-1】的小区物业住宅管理系统“日期检查功能”的测试用例设计。覆盖所有的有效等价类,在表中列出了3个编号,分别为;覆盖所有的无效等价类,在表中列出了7个编号,分别为、,设计一个测试用例,设计的测试用例结果如表3-3所示表3-3 设计的测试用例结果测试数据测试数据期望结果期望结果覆盖的有效覆盖的有效/无效无效等价类等价类200611有效输入、099901有效输入、205901有效输入、9954¥9无效输
7、入20097无效输入20120607无效输入198901无效输入200401无效输入200400无效输入200422无效输入3.2.2 边界值分析法边界值分析法1边界值分析方法简述边界值分析方法简述 边界值分析法用于列出单元功能、输入、状态及控制的合法边界值和非法边界值,对数据进行测试,检查用户输入的信息、返回结果以及中间计算结果是否正确,补充等价划分的测试用例设计技术。边界值分析法比较简单,仅用于考察正处于等价划分边界或在边界附近的状态,选择输入和输出等价类的边界,选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。它是对等价类划分方法的补充
8、,不仅重视输入条件边界,而且也从输出域中导出测试用例。典型的边界值分析包括IF语句中的判别值、定义域、值域边界、空或畸形输入等。边界值分析法是以边界情况的处理作为主要目标专门设计测试用例的方法。2选择边界值的设计原则选择边界值的设计原则 对边界值设计测试用例,应遵循以下原则:如果输入条件规定了值的范围(或是规定了值的个数),则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少一、比最大个数多一的数作为测试数据。如果程序的规定说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试
9、用例。如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。分析规格说明,找出其他可能的边界条件。v3常见的边界值常见的边界值 常见的边界值如下:屏幕上光标在最左上、最右下位置。报表的第一行和最后一行。数组元素的第一个和最后一个。循环的第0次、第1次、第2次最后一次 测试所包含的边界检验有几种类型:数字、字符、位置、大小、方位、尺寸、空间等。3.2.3 因果图法因果图法1因果图方法简述因果图方法简述因果图法是一种适合于描述对于多种条件的组合、相应产生多个动作的形式的方法,利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合
10、情况,等价类划分方法和边界值分析方法都着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了,要检查输入条件的组合不是一件容易的事情,即使将所有输入条件划分成等价类,它们之间的组合情况也相当多,因此必须考虑采用一种适合于描述多种条件的组合,相应产生多个动作的形式来设计测试用例,这就需要采用因果图。采用因果图法能帮助我们按照一定的步骤选择一组高效的测试用例,同时,还能指出程序规范描述中存在的问题。因果图法最终生成的是判定表,适合于检查程序输入条件的各种组合情况。2因果图的关系符号和约束
11、因果图的关系符号和约束 1)关系符号 恒等。“恒等”关系符号如图3-1所示。图3-1 “恒等”关系符号非。“非”关系符号如图3-2所示。图3-2 “非”关系符号图或。“或”关系符号如图3-3所示。图3-3 “或”关系符号图与。“与”关系符号如图3-4所示 图3-4 “与”关系符号图 2)约束 图3-5 E约束符号图I约束符号 图3-6 I约束符号图O约束符号 图3-7 O约束符号图R约束符号图3-8 R约束符号图M约束符号图3-9 M约束符号图3利用因果图导出测试用例的基本步骤利用因果图导出测试用例的基本步骤 利用因果图导出测试用例的基本步骤如下:(1)分析程序规范、规格说明描述中哪些是原因,
12、哪些是结果,原因常常是输入条件或是输入条件的等价类;结果是输出条件,并给每个原因和结果赋予一个标识符。(2)分析程序规范、规格说明描述中语义的内容,找出原因和结果之间、原因和原因之间的关系,根据这些关系画出因果图。(3)在因果图上用一些记号表明约束或限制条件。(4)把因果图转换为判定表。(5)把判定表的每一列拿出来作为依据,设计测试用例。4案例分析案例分析某些软件规格说明书包含这样的要求:第一列字符必须是A和B,第二列字符必须是一个数字,在此情况下进行文件的修改,如果第一列字符不是A或B,则给出信息L;如果第二列字符不是数字,则给出信息M。根据提议列出如下原因。原因1:第一列字符是A。原因2:
13、第一列字符是B。原因3:第二列字符是一数字。结果如下结果21:修改文件。结果22:给出信息L。结果23:给出信息M。表3-4 因果关系编号编号原因原因编号编号结果结果1第一列字符是A21修改文件2第一列字符是B22给出信息L3第二列字符是一数字23给出信息M11中间原因图3-10 对应的因果关系3.2.4 决策表法决策表法1决策表法简述决策表法简述 决策表又称判定表,是分析和表达多逻辑条件下执行不同操作情况的工具,能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用决策表设计的测试用例称为决策表驱动分析方法。在一些数据处理问题中,某些操作的实施依赖于多个逻辑条件的组合,即
14、针对不同逻辑条件的组合值,分别执行不同的操作。决策表很适合于处理这类问题。2决策表的组成决策表的组成 策表通常由4个部分组成,如表3-6所示。条件桩条件桩条件项条件项动作桩动作项3规则合并规则合并 规则合并是指由两条或多条规则合并为一条规则。合并条件如图3-11所示。左端:1、1,合并为右端:1。左端:、0,合并为右端:。左端:0、0,合并为右端:0。左端:1、0,合并为右端:1。左端:0、1,合并为右端:1。无关条件项“”可包含其他条件项取值,具有相同动作的规则可合并。规则合并如图3-11所示,其中,“”表示与取值无关。3规则合并规则合并图3-11 规则合并3.2.5 场景设计法场景设计法
15、场景用来描述流经用例的路径,从用例开始到结束遍历这条路径上所有的基本流和备选流,如图3-12所示,图中经过用例的每条路径都用基本流和备选流来表示,直黑线表示基本流,是经过用例的最简单路径;备选流用不同的色彩表示,一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中(如备选流1和3);也可能起源于领一个备选流(如备选流2),或者终止用例而不再重新加入到某个流(如备选流2和4)。图3-12 场景法的基本流和备选流3.2.6 功能图分析法功能图分析法1功能图分析法简述功能图分析法简述功能图分析方法是用功能图FD形式化地表示程序的功能说明,由状态迁移图和布尔函数组成,状态迁移图用状态
16、和迁移来描述,一个状态指出数据输入的位置(或时间),而迁移则指出、说明状态的改变,同时要依靠判定表或因果图表示的逻辑功能,并机械地生成功能图的测试用例。功能图模型由状态迁移图和逻辑功能模型构成:状态迁移图用于表示输入数据序列以及相应的输出数据,在状态迁移图中,由输入数据和当前状态决定输出数据和后续状态。逻辑功能模型用于表示在状态中输入条件和输出条件之间的对应关系,逻辑功能模型只适合于描述静态说明,输出数据仅由输入数据决定。功能图分析方法中需要用到逻辑覆盖和路径测试的概念及方法,这部分内容属于白盒测试方法的范畴,这里不再赘述。3.2.7 正交试验法正交试验法正交试验方法是依据Galois理论,从
17、大量的(实验)数据(测试例)中挑选适量的、有代表性点(例),从而合理地安排实验(测试)的一种科学实验设计方法。正交试验方法是使用已经创建的正交表格来安排试验并运行数据分析的一种方法,目的是用最少的测试用例达到最高的测试覆盖率。利用正交试验设计测试用例的步骤。提取功能说明,构造因子状态表:把影响试验指标的条件称为因子,而影响试验因子的条件称为因子的状态,利用正交试验方法来合计测试用例时,首先要根据被测试软件的规格说明书找出影响其功能实现的操作对象和外部因素,把它们当做因子,而把各个因子的取值当做状态,对软件需求规格说明中的功能要求进行划分,把整体的概要性的功能要求进行层层分解与展开,分解成具体的
18、具有相对独立性的基本的功能要求,这样就可以把被测试软件中所有的因子都确定下来,并为确定各因子的权值提供参考依据,确定因子与状态是设计测试用例的关键,因此要求尽可能全面。正确地确定取值,以确保测试用例的设计完整、有效。加权筛选,生成因素分析表:对因子与状态的选择可按其重要程度分别加权,可根据各个因子及状态的作用大小、出现频率的大小、测试的需要确定权值的大小。利用正交表构造测试数据集。3.2.8 错误推测法错误推测法 错误推测方法的基本思想是:利用直觉和经验猜测出出错的可能类型,列举出程序中所有可能的错误和容易发生错误的情况,基本思想是列举出可能犯的错误或错误易发情况的清单,然后依据清单来编写测试
19、用例,并且在阅读规格说明时联系程序员可能做的假设来确定测试用例。这种方法在很大程度上是凭经验进行的,即凭借人们对过去所做测试工作结果的分析,对所揭示的缺陷的规律性做直觉的推测来发现缺陷。3.3 黑盒测试的工具黑盒测试的工具3.3.1 QACenter介绍介绍 QACenter是Compuware公司研发的一款自动化的黑盒测试工具,它能帮助测试人员创建一个快速、可重用的测试过程。这些测试工具自动帮助管理测试过程,快速分析和调试程序,包括针对回归、强度、单元、并发、集成、移植、容量和负载建立测试用例,自动执行测试和产生文档结果。3.3.2 QuickTest Professional介绍介绍 QT
20、P是QuickTest Professional的简称,是MI公司继WinRunner之后开发的一款功能测试工具。它能够测试Windows标准应用程序、各种Web对象、ActiveX控件、Visual Basic应用程序等。同时它也会将应用程序的所有操作都记录下来,并且可以在录制完毕之后,对脚本进行编辑整理使其功能更加的强大。3.3.3 LoadRunner介绍介绍LoadRunner是一种预测系统行为和性能的工业标准级负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,并且能够对整个企业架构进行测试。通过使用LoadRunner,企业能最大限度地缩短测试时间,
21、优化性能和加速应用系统的发布周期。目前企业的网络应用环境都必须支持大量用户,网络体系架构中含各类应用环境且由不同供应商提供软件和硬件产品。难以预知的用户负载和愈来愈复杂的应用环境使公司时时担心会发生用户响应速度过慢、系统崩溃等问题。这些都不可避免地导致公司收益的损失。而LoadRunner能让企业保护自己的收入来源,无需购置额外硬件并最大限度地利用现有的IT资源,并确保终端用户在应用系统的各个环节中对其测试应用的质量、可靠性和可扩展性都有良好的评价。LoadRunner是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能。3.3.4 TestDirector介绍介绍 Te
22、stDirector是Mercury Interactive公司推出的基于Web的测试管理工具,无论是通过Internet还是通过Intranet都可以以基于Web的方式来访问TestDirector。TestDirector是B/S结构的软件,只需要在服务器端安装软件,所有的客户端就可以通过浏览器来访问TestDirector,方便测试人员的团队合作和沟通交流。3.4 本章小结本章小结黑盒测试是一种忽略软件内部工作过程和结构的功能测试。进行黑盒测试时,测试人员只需知道合法输入和预期输出,而无需知道程序实际如何得到期望输出的。这种测试方式表明测试数据选择和测试结构解释都属于软件的功能属性。黑盒测试的基本思想是需要跟踪那些测试已经被执行以及这些测试的输出,避免重复测试。黑盒测试有助于识别功能规格说明中有歧义和矛盾的内容。而本章所描述的黑盒测试方法并非在任何情况下都需要使用,也不需要全部用上。当我们拿到一个系统准备开始测试时,应该从分析业务、分析系统本身的功能和特性入手,灵活运用各种方法。本章所述的这几个软件测试工具是当今市场上很流行的黑盒测试工具。它们在国内很多公司得到了广泛的应用,同时它们也是衡量一名性能测试工程师能力的重要指标。而且它们都有各自独具的特色。