软件测试技术与测试实训教程黎连业王华李龙黎照北京:机械工业出版社2012.05第6讲:黑盒测试技术是软件测试的主要方法之一,黑盒测试的基本概念、方法、工具、操作步骤等内容是必须掌握的,本章重点讨论以下内容:•本章重点讨论以下内容:★黑盒测试的基本概念;★黑盒测试的方法;★黑盒测试工具;★黑盒测试的原则、策略和方法的选择;★黑盒测试的操作步骤。6.1黑盒测试的基本概念6.1.1黑盒测试•黑盒测试(Black-boxTesting)又称为数据驱动测试或基于规范的测试。用这种方法进行测试时,在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,注重于测试软件的功能性需求,测试者在程序接口进行测试,它只检查程序功能是否按照规格说明书的规定正常使用,程序是否能接收输入数据而产生正确的输出信息,并且保持数据库或文件的完整性。依据程序功能的需求规范考虑确定测试用例和推断测试结果的正确性。它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常运行,因此黑盒测试是从用户观点出发的测试。•由于黑盒测试不需要了解程序内部结构,所以许多高层的测试如确认测试、系统测试、验收测试都采用黑盒测试。•黑盒测试有两种结果,即通过测试和失败测试。如果规格说明有误,用黑盒测试方法是发现不了的。黑盒测试主要是为了发现以下几类错误:★是否有不正确或遗漏的功能?★界面是否有错误?★在接口上,输入能否正确地接受?能否输出正确的结果?★是否有数据结构错误或外部数据库访问错误?★性能上是否满足要求?★初始化或终止性错误?•黑盒测试对程序的功能性测试要求:★每个软件特性必须被一个测试用例或一个被认可的异常所覆盖;★用数据类型和数据值的最小集测试;★用一系列真实的数据类型和数据值运行,测试超负荷及其他“最坏情况”的结果;★用假想的数据类型和数据值运行,测试排斥不规则输入的能力;★对影响性能的关键模块,如基本算法、精度、时间、容量等是否正常。6.1.2黑盒测试的优点和缺点1.黑盒测试的优点★有针对性地找问题,并且定位问题更准确;★黑盒测试可以证明产品是否达到用户要求的功能,符合用户的工作要求;★能重复执行相同动作,测试工作中最枯燥的部分可交由机器完成。2.黑盒测试的缺点★要充分了解产品用到的技术,测试人员要有经验;★在测试过程中,很多是手工测试操作;★测试人员要负责大量文档、报表的制订和整理工作。6.1.3黑盒测试技术人员的要求•黑盒测试只关注软件的外部功能和界面表现,不接触到代码,需要测试人员充分了解产品用到的技术,充分了解产品的需求和功能。在测试过程中需要手工操作测试和自动化测试,在大部分时候,自动化测试是无法代替手工测试的,作者觉得黑盒测试对测试人员的技术要求要高,一般测试人员不能代替的。由于新技术的不断出现要作好黑盒测试,除了掌握测试思想,掌握测试用例的书写,熟透测试产品,在软件技术角度要充分了解产品使用的技术,要看很多资料,对这些内容了解得越多,测试思维就越开阔。一个大系统对黑盒测试人员要求是高的,不是一个靠测试流程中的哪一步就可以工作的。•作者还觉得测试专家通常是很好的黑盒测试人员。黑盒测试技术人员的要求:★要掌握测试思想和常规测试流程;★要了解产品的需求和功能;★要掌握测试用例的书写(手工测试和自动化测试);★要求知识广,看的深。6.1.4黑盒测试的技术•由于开发的速度比较快,用户的需求多变而不断的调整应用,要确保用户需求和应用,所以要求对软件要有更严格的测试。由于不断变化的需求将导致应用不同版本的产生,每一个版本都需要对它测试,测试工作头绪多,测试人员难以组织科学、全面的测试用例,从而影响测试的全面性和有效性。测试过程要求大量因素的配合,包括:许多的步骤、测试者、大量测试数据和不同应用的多种版本。而黑盒测试着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试,黑盒测试人员需要测试技术创建一个快速、可重用的测试过程,从而最有效地使用现有测试资料、测试方法和应用测试工具建立测试用例,自动执行测试和产生文档结果。采用黑盒技术设计测试用例的方法有:★等价类划分方法;★边界值分析方法;★错误推测方法;★因果图方法;★判定表驱动分析方法;★正交实验设计方法;★功能图分析方法。采用黑盒技术设计测试用例的方法请参见本章6.2节讨论的内容。6.1.5黑盒测试与白盒测试的比较黑盒测试与白盒测试的比较:1.已知产品的因素•黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现的功能是否符合要求。jdP白盒测试:已知产品的内部工作结构,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。2.检查测试主要的错误•黑盒测试检查的主要错误:★是否有不正确或遗漏的功能?★在接口上,输入是否能正确的接受?能否输出正确的结果?★是否有数据结构错误或外部信息(例如数据文件)访问错误?★功能上是否能够满足要求?★是否有初始化或终止性错误?•白盒测试检查的主要错误:★对程序模块的所有独立的执行路径至少测试一遍。★对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。★在循环的边界和运行的界限内执行循环体。★测试内部数据结构的有效性,等等。3.静态测试方法•静态白盒测试方法:★走查、复审、评审程序源代码、数据字典、系统设计文档、环境设置、软件配置项等。•静态黑盒测试方法:★文档测试,特别是产品需求文档、用户手册、帮助文件等的审查。4.动态测试方法•动态白盒测试方法:★通过驱动程序、桩程序来调用、驱动程序的运行,如进行单元测试、集成测试和部分性能、可靠性、恢复性测试等。•动态黑盒测试方法:★通过数据输入并运行程序来检验输出结果,如功能测试、验收测试和一些性能、兼容性、兼容性、安全性测试等。6.2黑盒测试的方法•因为黑盒测试一种基于证明功能需求和用户最终需求的测试方法,所以在选择测试设计测试方法方面一般有如下几种。★等价类划分法;★边界值分析法;★因果图法;★判定表驱动测试;★场景法;★功能图法;★错误推测法;★正交试验设计法。在实际测试工作中,往往是综合使用各种方法才能有效提高地提高测试效率和测试覆盖率,这就需要认真掌握这些方法的原理,积累更多的测试经验,以有效地提高测试水平和测试的效率。通常在确定测试方法是,应遵循以下原则和策略。6.2.1等价类划分方法1.等价类划分•等价类划分法是把程序的输入域划分成若干部分,然后从每个部分中选取少数代表性数据当作测试用例。等价类划分方法是一种重要的、常用的黑盒测试用例设计方法,用这一方法设计测试用例可以不用考虑程序的内部结构,只以对程序的要求和说明,即需求规格说明书为依据,仔细分析和推敲说明书的各项需求,特别是功能需求,把说明中对输入的要求和输出的要求区别开来并加以分解。★等价类•等价类是指某个输入域的子集合。每一子集合代表每一类,每一类的代表性数据在测试中的作用都是等效于这一类中的其它值,也就是说,测试某等价类的代表值就等于对这一类其它值的测试。如果这一类中的一个例子发现了错误,这一等价类中的其他例子也能发现同样的错误;反之,如果某一类中的一个例子没有发现错误,则这一类中的其他例子也不会查出错误。这就可以用少量代表性的测试数据,取得较好的测试结果。使用这一方法设计测试用例,必须在分析需求规格说明功能说明的基础上找出每个输入条件,然后为每个输入条件划分两个或多个等价类,列出等价类表。等价类可分为有效等价类和无效等价类。★有效等价类•有效等价类是指对于程序的规格说明来说是合理的、有意义的输入数据所构成的集合。在具体项目中,有效等价类可以是一个,也可以是多个。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。★无效等价类•与有效等价类相反,无效等价类是指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。在具体项目中,无效等价类至少应有一个,也可能有多个。•用等价类类设计测试用例时,要同时考虑这两种等价类。因为,软件不仅要能接收合理的数据,也要接收不合理的数据检验。这样的测试才能确保软件具有更高的可靠性。2.划分等价类的原则划分等价类有六条的原则:★在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。★在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类。★在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。★在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。★在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。★在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。3.建立等价类表•在确立了等价类后,可建立等价类表,列出所有划分出的等价类。等价类表的建立如表6-1所示。4.等价类表与测试用例的关系•等价类表与测试用例的关系如表6-2所示。5.设计测试用例等价类表建立•例1:小区物业住宅管理系统日期检查功能的测试用例•有一个小区物业住宅管理系统,要求住户输入以年月表示的日期。假设日期限定在1998年1月~2068年12月,并规定日期由6位数字字符组成,前4位表示年,后2位表示月。现用等价类划分法设计测试用例,日期检查功能的测试用例设计如表6-3所示。6.划分等价类的要求★测试完备合理、避免冗余;★划分输入条件、有效等价类和无效等价类重要的是:集合划分为互不相交的一组子集;★整个集合完备;★子集互不相交,保证一种形式的无冗余性;★同一类中标识(选择)一个测试用例,同一等价类中,往往处理相同,相同处理映射到相同的执行路径。7.设计例1的测试用例•例1的小区物业住宅管理系统日期检查功能的测试用例设计:•覆盖所有的有效等价类在表6-3中列出了3个编号分别为①、②、③;覆盖所有的无效等价类在表6-3中列出了7个编号分别为④、⑤、⑥、⑦、⑧、⑨、⑩,设计一个测试用例,设计的测试用例结果如表6-4所示。6.2.2边界值分析方法1.边界值分析方法简述•边界值分析(BoundaryValueAnalysis,BVA)法是列出单元功能、输入、状态及控制的合法边界值和非法边界值,对数据进行测试,检查用户输入的信息、返回结果以及中间计算结果是否正确。补充等价划分的测试用例设计技术。边界值分析法较简单,仅是用于考察正处于等价划分边界或在边界附近的状态,选择输入和输出等价类的边界,选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。它是对等价类划分方法的补充,不仅重视输入条件边界,而且也从输出域导出测试用例。典型的边界值分析包括IF语句中的判别值、定义域、值域边界、空或畸形输入、末受控状态等。边值分析法是以边界情况的处理作为主要目标专门设计测试用例的方法。2.基于边界值分析方法选择边界值的设计原则•对边界值的设计测试用例,应遵循以下原则:(1)如果输入条件规定了值的范围(或是规定了值的个数),则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据;(2)如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据;(3)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例;(4)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例;(5)分析规格说明,找出其它可能的边界条件。•使用边界值分析方法设计测试用例,首先应确定边界情况。通常输入和输出等价类的边界,就是应着重测试的边界情况。应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。3.常见的边界值•常见的边界值:★屏幕上光标在最左上、最右下位置;★报表的第一行和最后一行;★数组元素的第一个和最后一个;★