软件质量保证与测试PPT课件第10章黑盒测试.ppt
1,第10章黑盒测试,2,内容提要,10.1黑盒测试的基本概念10.2等价类划分划分等价类划分等价类的方法设计测试用例:10.3边界值分析法10.3.1 边界条件10.3.2次边界条件10.3.3其他一些边界条件10.3.4边界值的选择方法,3,内容提要,10.4因果图法10.4.1因果图设计方法10.4.2因果图测试用例10.5功能图法10.5.1功能图设计方法10.5.2功能图法生成测试用例10.6黑盒测试方法的比较与选择10.7黑盒测试工具介绍10.7.1WinRunner介绍10.7.2 LoadRunner的使用10.7.3.QuickTest Pro的使用10.9小结,4,10.1黑盒测试的基本概念,黑盒测试试图发现以下类型的错误:功能错误或遗漏;界面错误;数据结构或外部数据库访问错误;性能错误;初始化和终止错误。,5,10.2等价类划分,等价类划分法是一种黒盒测试的技术,不考虑程序的内部结构,是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。,6,划分等价类,等价类划分可有两种不同的情况:有效等价类和无效等价类。有效等价类:是指对于程序的规格说明来说是合理的,有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。无效等价类:与有效等价类的定义恰巧相反,不符合需求规格说明书。,7,划分等价类的方法,下面给出六条确定等价类的原则。在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类。在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。,8,等价类表示例,9,设计测试用例,先根据输入条件确定有效等价类和无效等价类,然后从划分出的等价类中按以下三个原则设计测试用例。每一个等价类规定一个唯一的编号。设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步。直到所有的有效等价类都被覆盖为止。设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。,10,三角形(等价类划分),11,三角形测试用例(等价类划分),12,10.3边界值分析法,10.3.1 边界条件我们可以想象一下,如果在悬崖峭壁边可以自信地安全行走,平地就不在话下了。如果软件在能力达到极限时能够运行,那么在正常情况下一般也就不会有什么问题。边界条件是特殊情况,因为编程从根本上说不怀疑边界有问题。奇怪的是,程序在处理大量中间数值时都是对的,但是可能在边界处出现错误。,13,10.3.2次边界条件,14,10.3.3其他一些边界条件,另一种看起来很明显的软件缺陷来源是当软件要求输入时(比如在文本框中),不是没有输入正确的信息,而是根本没有输入任何内容,只按了Enter键。这种情况在产品说明书中常常被忽视,程序员也可能经常遗忘,但是在实际使用中却时有发生。程序员总会习惯性地认为用户要么输入信息,不管是看起来合法的或非法的信息,要么就会选择Cancel键放弃输入,如果没有对空值进行好的处理的话,恐怕程序员自己都不知道程序会引向何方。正确的软件通常应该将输入内容默认为合法边界内的最小值,或者合法区间内的某个合理值,否则,返回错误提示信息。因为这些值通常在软件中进行特殊处理,所以不要把它们与合法情况和非法情况混在一起,而要建立单独的等价区间。,15,10.3.4边界值的选择方法,对边界值设计测试用例,应遵循以下几条原则:如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少1、比最大个数多1的数作为测试数据。根据规格说明的每个输出条件,使用前面的原则。根据规格说明的每个输出条件,应用前面的原则。如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构边界上的值作为测试用例。分析规格说明,找出其他可能的边界条件。,16,10.4因果图法,10.4.1因果图设计方法利用因果图导出测试用例需要经过以下几个步骤:分析程序规格说明的描述中,哪些是原因,哪些是结果。原因常常是输入条件或是输入条件的等价类,而结果是输出条件。分析程序规格说明的描述中语义的内容,并将其表示成连接各个原因与各个结果的“因果图”。标明约束条件。由于语法或环境的限制,有些原因和结果的组合情况是不可能出现的。为表明这些特定的情况,在因果图上使用若干个标准的符号标明约束条件。把因果图转换成判定表。为判定表中每一列表示的情况设计测试用例。,17,因果图的基本图形符号,恒等:若原因出现,则结果出现;若原因不出现,则结果也不出现。非():若原因出现,则结果不出现;若原因不出现,则结果出现。或():若几个原因中有1个出现,则结果出现;若几个原因都不出现,则结果不出现。与():若几个原因都出现,结果才出现。若其中有1个原因不出现,则结果不出现。,18,因果图的约束符号,E(互斥):表示a、b两个原因不会同时成立,两个中最多有一个可能成立。I(包含):表示a、b、c这3个原因中至少有一个必须成立。O(惟一):表示a和b当中必须有一个,且仅有一个成立。R(要求):表示当a出现时,b必须也出现。a出现时不可能b不出现。M(屏蔽):表示当a是1时,b必须是0。而当a为0时,b的值不定。,19,10.4.2因果图测试用例,20,因果图,21,决策表,22,乘法器测试用例(等价类划分),23,10.5功能图法,一个程序的功能说明通常由动态说明和静态说明组成。动态说明描述了输入数据的次序或转移的次序。静态说明描述了输入条件与输出条件之间的对应关系。对于较复杂的程序,由于存在大量的组合情况,因此,仅用静态说明组成的规格说明对于测试来说往往是不够的,必须用动态说明来补充功能说明。,24,10.5.1功能图设计方法,功能图方法是用功能图形象地表示程序的功能说明,并机械地生成功能图的测试用例。功能图模型由状态迁移图和逻辑功能模型构成。状态迁移图用于表示输入数据序列以及相应的输出数据。在状态迁移图中,由输入数据和当前状态决定输出数据和后续状态。逻辑功能模型用于表示在状态中输入条件和输出条件之间的对应关系。逻辑功能模型只适合于描述静态说明,输出数据仅由输入数据决定。测试用例则是由测试中经过的一系列状态和在每个状态中必须依靠输入/输出数据满足的一对条件组成。功能图方法实际上是一种黑盒、白盒混合用例设计方法。,25,功能图,26,判定表,27,10.5.2功能图法生成测试用例,从功能图生成测试用例的过程如下。生成局部测试用例:在每个状态中,从因果图生成局部测试用例。局部测试库由原因值(输入数据)组合与对应的结果值(输出数据或状态)构成。测试路径生成:利用上面的规则生成从初始状态到最后状态的测试路径。测试用例合成:合成测试路径与功能图中每个状态的局部测试用例。结果是视状态到最后状态的一个状态序列,以及每个状态中输入数据与对应输出数据组合。测试用例的合成算法:采用条件构造树。,28,10.6黑盒测试方法的比较与选择,以下是各种测试方法选择的综合策略,可供读者在实际应用过程中参考。首先进行等价类划分,包括输入条件和输出条件的等价划分,将无限测试变成有限测试,这是减少工作量和提高测试效率最有效的方法。在任何情况下都必须使用边界值分析方法。经验表明,用这种方法设计出的测试用例发现程序错误的能力最强。可以用错误推测法追加一些测试用例,这需要依靠测试工程师的智慧和经验。对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度。如果没有达到要求的覆盖标准,应当再补充足够的测试用例。如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法和判定表驱动法。对于参数配置类的软件,要用正交试验法选择较少的组合方式达到最佳效果。功能图法也是很好的测试用例设计方法,我们可以通过不同时期条件的有效性设计不同的测试数据。对于业务流清晰的系统,可以利用场景法贯穿整个测试案例过程,在案例中综合使用各种测试方法。,29,10.7黑盒测试工具介绍,10.7.1WinRunner介绍,30,WinRunner使用,31,10.7.2 LoadRunner的使用,32,LoadRunner使用简介,33,LoadRunner使用简介,34,10.7.3.QuickTest Pro的使用,35,10.9小结,本章主要讲解了等价类划分法,边界值分析法,因果图法,功能图分析法,综合的案例分析,同时对黒盒测试的几种方法进行的比较,最后介绍了常用的几种黒盒测试的工具。本章的实践性较强,希望举一反三,将这些测试技术和平时的软件开发和测试工作结合起来。,