第9章-面向对象软件测试优秀PPT.ppt
IT Education&Training面对对象软件测试软件外包教研室IT Education&Training第9章 面对对象软件测试9.1 面对对象测试的问题9.2 类测试9.3 面对对象的集成测试9.4 GUI测试9.5 面对对象的系统测试 yangshneusoft IT Education&Training9.1 面对对象测试的问题面对对象技术开发出的程序无需进行测试?面对对象程序的结构不再是传统的功能模块结构,作为一个整体,原有集成测试所要求的逐步将开发的模块搭建在一起进行测试的方法已成为不行能。yangshneusoft IT Education&Training9.1 面对对象测试的问题面对对象软件测试的单元是什么?面对对象软件的特征对测试的影响封装继承多态迭代的软件开发过程yangshneusoft IT Education&Training9.1 面对对象测试的问题面对对象软件测试是依据面对对象的软件开发过程结合面对对象的特点提出的。它包括:分析与设计模型测试技术类测试技术(单元测试)对象交互测试技术(集成测试)类层次结构测试技术(集成测试)面对对象系统测试技术 yangshneusoft IT Education&Training面对对象测试模型面对对象测试模型 面对对象的开发模型突破了传统的瀑布模型,将开发分为面对对象分析(OOA),面对对象设计(OOD),和面对对象编程(OOP)三个阶段。分析阶段产生整个问题空间的抽象描述,在此基础上,进一步归纳出适用于面对对象编程语言的类和类结构,最终形成代码。yangshneusoft IT Education&Training面对对象测试模型面对对象测试模型 OOA Test:面对对象分析的测试 OOD Test:面对对象设计的测试OOP Test:面对对象编程的测试 OO Unit Test:面对对象单元测试OO Integrate Test:面对对象集成测试OO System Test:面对对象系统测试yangshneusoft IT Education&Training迭代的模型yangshneusoft IT Education&Training第9章 面对对象软件测试9.1 面对对象测试的问题9.2 类测试9.3 面对对象的集成测试9.4 GUI测试9.5 面对对象的系统测试 yangshneusoft IT Education&Training9.2 类测试测试面对对象软件产品的基本组成单位是类,从宏观上来看,面对对象软件是各个类之间的相互作用。在面对对象系统中,系统的基本构造模块是封装了的数据和方法的类和对象,而不再是一个个能完成特定功能的功能模块。每个对象有自己的生存周期,有自己的状态。消息是对象之间相互恳求或协作的途径,是外界运用对象方法及获得对象状态的惟一方式。对象的功能是在消息的触发下,由对象所属类中定义的方法与相关对象的合作共同完成。且在不同状态下对消息的响应可能完全不同。工作过程中对象的状态可能被变更,产生新的状态。对象中的数据和方法是一个有机的整体,测试过程中不能仅仅检查输入数据产生的输出结果是否与预期的吻合,还要考虑对象的状态,且在不同状态下对消息的响应可能完全不同。工作过程中对象的状态可能被变更,产生新的状态。对象中的数据和方法是一个有机的整体,测试过程中不能仅仅检查输入数据产生的输出结果是否与预期的吻合,还要考虑对象的状态。yangshneusoft IT Education&Training9.2 类测试测试类测试是由那些与验证类的实现是否和该类的说明完全一样的相关联的活动组成的。类测试的对象主要是指能独立完成确定功能的原始类。假如类的实现正确,那么类的每一个实例的行为也应当是正确的。类测试我们考虑下面一些内容:类测试的内容类测试的人员类测试的时间类测试的程度类测试的方法yangshneusoft IT Education&Training9.2 类测试测试类测试的内容类测试的目的主要是确保一个类的代码能够完全满足类的说明所描述的要求。对一个类进行测试以确保它只做规定的事情,对此给与关注的多少,取决于供应额外的行为的类相关联的风险在运行了各种类的测试后,假如代码的覆盖率不完整,这可能意味着该类包含了额外的文档支持的行为须要增加更多的测试用例来进行测试(后面将给出两个测试标准的考虑)yangshneusoft IT Education&Training9.2 类测试测试类测试的时间类测试的起先时间一般在完全说明这个类,并且准备对其编码后不久,就开发一个测试支配至少是确定测试用例的某种形式。假如开发人员还负责该类的测试,那么尤其应当如此。因为确定早期测试用例有利于开发人员理解类说明,也有助于获得独立代码检查的反馈。类测试可以在开发过程中的不同位置进行。在递增的反复开发过程中,一个类的说明和实现在一个工程的进程中可能会发生变更,所以因该在软件的其它部分运用该类之前执行类的测试。每当一个类的实现发生变更时,就应当执行回来测试。假如变更是因发觉代码中的缺陷(bug)而引起的,那么就必需执行测试支配的检查,而且必需增加或变更测试用例以测试在将来的测试期间可能出现的那些缺陷。yangshneusoft IT Education&Training9.2 类测试测试类测试的测试人员 类测试通常由他的开发人员测试,让开发人员起到测试人员的作用,就可使得必需理解类说明的人员数量减至最少。而且便利运用基于执行的测试方法,因为他们对代码极其的熟悉。由同一个开发者来测试,也有确定的缺点:开发人员对类说明的任何错误理解,都会影响到测试。因此,最好要求另一个类的开发人员编写测试支配,并且允许对代码进行对立检查。这样就可以避开这些潜在的问题了。yangshneusoft IT Education&Training9.2 类测试测试类测试的程度建立覆盖率标准可以依据已经测试了多少类和实现了多少类说明来衡量测试的充分性。对于类的测试,通常须要将这两者都考虑到,希望测试到操作和状态转换的各种组合状况。一个对象能维持自己的状态,而状态一般来说也会影响操作的含义。但要穷举全部组合式不行能的,而且是没必要的。因此,就因该结合风险分析进行选择配对系列的组合,以致达到运用最重要的测试用例并抽取部分不太重要的测试用例。yangshneusoft IT Education&Training9.2 类测试测试 类测试的标准:面对对象程序是把功能的实现分布在类中。能正的确现功能的类,通过消息传递来协同实现设计要求的功能。正是这种面对对象程序风格,将出现的错误能精确的确定在某一具体的类。因此,在面对对象编程(OOP)阶段,忽视类功能实现的细则,将测试的目光集中在类功能的实现和相应的面对对象程序风格,主要体现为以下两个方面(假设编程运用C+语言):数据成员是否满足数据封装的要求 类是否实现了要求的功能 yangshneusoft IT Education&Training9.2 类测试测试 1 数据成员是否满足数据封装的要求 数据封装是数据和数据有关的操作的集合。检查数据成员是否满足数据封装的要求,基本原则是数据成员是否被外界(数据成员所属的类或子类以外的调用)干脆调用。更直观的说,当改编数据成员的结构时,是否影响了类的对外接口,是否会导致相应外界必需改动。值得留意,有时强制的类型转换会破坏数据的封装特性。yangshneusoft IT Education&Training9.2 类测试测试 例如:class Hidenprivate:int a=1;char*p=hiden;class Visiblepublic:int b=2;char*s=visible;.Hiden pp;Visible*qq=(Visible*)&pp;在上面的程序段中,pp的数据成员可以通过qq被随意访问。yangshneusoft IT Education&Training9.2 类测试测试 2 类是否实现了要求的功能类所实现的功能,都是通过类的成员函数执行。在测试类的功能实现时,应当首先保证类成员函数的正确性。单独的看待类的成员函数,与面对过程程序中的函数或过程没有本质的区分,几乎全部传统的单元测试中所运用的方法,都可在面对对象的单元测试中运用。yangshneusoft IT Education&Training9.2 类测试测试n 类函数成员的正确行为只是类能够实现要求的功能的基础,类成员函数间的作用和类之间的服务调用是单元测试无法确定的。因此,须要进行面对对象的集成测试。n测试类的功能,不能仅满足于代码能无错运行或被测试类能供应的功能无错,应当以所做的OOD结果为依据,检测类供应的功能是否满足设计的要求,是否有缺陷。必要时(如通过OOD结仍不清晰明确的地方)还应当参照OOA的结果,以之为最终标准。yangshneusoft IT Education&Training9.2 类测试测试传统的单元测试是针对程序的函数、过程或完成某确定功能的程序块。沿用单元测试的概念,实际测试类成员函数。一些传统的测试方法在面对对象的单元测试中都可以运用。如等价类划分法,因果图法,边值分析法,逻辑覆盖法,路径分析法,等等,单元测试一般建议由程序员完成。yangshneusoft IT Education&Training9.2 类测试测试用于单元级测试进行的测试分析(提出相应的测试要求)和测试用例(选择适当的输入,达到测试要求),规模和难度等均远小于后面将介绍的对整个系统的测试分析和测试用例,而且强调对语句应当有100%的执行代码覆盖率。在设计测试用例选择输入数据时,可以基于以下两个假设:1.假如函数(程序)对某一类输入中的一个数据正确执行,对同类中的其他输入也能正确执行。2.假如函数(程序)对某一困难度的输入正确执行,对更高困难度的输入也能正确执行。yangshneusoft IT Education&Training9.2 类测试测试例如须要选择字符串作为输入时,基于本假设,就无须计较于字符串的长度。除非字符串的长度是要求固定的,如IP地址字符串。在面对对象程序中,类成员函数通常都很小,功能单一,函数的间调用频繁,简洁出现一些不宜发觉的错误。yangshneusoft IT Education&Training9.2 类测试测试例如:if(-1=write(fid,buffer,amount)error_out();该语句没有全面检查write()的返回值,无意中断然假设了只有数据被完全写入和没有写入两种状况。当测试也忽视了数据部分写入的状况,就给程序遗留了隐患。按程序的设计,运用函数strrchr()查找最终的匹配字符,但误程序中写成了函数strchr(),使程序功能实现时查找的是第一个匹配字符。程序中将if(strncmp(str1,str2,strlen(str1)误写成了if(strncmp(str1,str2,strlen(str2)。假如测试用例中运用的数据str1和str2长度一样,就无法检测出。yangshneusoft IT Education&Training9.2 类测试测试继承的测试问题面对对象编程的特性使得对成员函数的测试,又不完全等同于传统的函数或过程测试。尤其是继承特性和多态特性,使子类继承或过载的父类成员函数出现了传统测试中未遇见的问题。Brian Marick 给出了二方面的考虑:继承的成员函数是否都不须要测试?对父类的测试是否能照搬到子类?yangshneusoft IT Education&Training9.2 类测试测试1.继承的成员函数是否都不须要测试?对父类中已经测试过的成员函数,两种状况须要在子类中重新测试:a)继承的成员函数在子类中做了改动;b)成员函数调用了改动过的成员函数的部分。例如:假设父类Bass有两个成员函数:Inherited()和Redefined(),子类Derived只对Redefined()做了改动。Derived:Redefined()明显须要重新测试。对于Derived:Inherited(),假如它有调用Redefined()的语句(如:x=x/Redefined(),就须要重新测试,反之,无此必要。yangshneusoft IT Education&Training9.2 类测试测试2.对父类的测试是否能照搬到子类?援用上面的假设,Base:Redefined()和Derived:Redefined()已经是不同的成员函数,它们有不同的服务说明和执行。对此,照理应当对 Derived:Redefined()重新测试分析,设计测试用例。但由于面对对象的继承使得两个函数有相像,故只需在 Base:Redefined()的测试要求和测试用例上添加对Derived:Redfined()新的测试要求和增补相应的测试用例。yangshneusoft IT Education&Training9.2 类测试测试例如:Base:Redefined()含有如下语句If(value0)message(less);else if(value=0)message(equal);else message(more);Derived:Redfined()中定义为If(value0)message(less);else if(value=0)message(It is equal);elsemessage(more);if(value=88)message(luck);在原有的测试上,对Derived:Redfined()的测试只需做如下改动:将value=0的测试结果期望改动;增加value=88的测试。yangshneusoft IT Education&Training9.2 类测试测试具体说类测试的方法有两种代码检查执行测试用例 代码检查优点:同行走查,往往能查出5060以上的比较明显的错误不足:代码检查易受人为因素影响,代码检查在回来测试方面明显须要更多的工作量,常常和原始测试差不多yangshneusoft IT Education&Training9.2 类测试测试基于执行测试用例的方法优点:克服了代码检查的不足缺点:确定测试用例和开发测试驱动程序也须要很大的工作量。在某些状况下,构造一个测试驱动程序的工作量比开发这个类的还多,此时就应当评估在运用了这个类的系统之外测试测试这个类所花的代价和带来的收益。yangshneusoft IT Education&Training9.2 类测试测试构建测试用例:要对类进行测试,就必需先确定和构建类的测试用例。类的描述方法有OCL,自然语言,和状态图等方法,可以依据类说明的描述方法构件类的测试用例。依据类说明(用OCL表示)确定测试用例依据类的状态转换图来构建类的测试用例yangshneusoft IT Education&Training9.2 类测试测试依据类的说明确定测试用例 用OCL表示的类的说明中描述了类的每一个限定条件条件。在OCL条件下分析每个逻辑关系,从而得到由这个条件的结构所对应的测试用例。这种确定类的测试用例的方法叫做依据前置条件和后置条件构建测试用例。其总体思想是:为全部可能出现的组合状况确定测试用例需求。在这些可能出现的组合状况下,可满足前置条件,也能够到达后置条件。依据这些需求,创建测试用例;创建拥有特定输入值(常见值和特殊值)的测试用例;确定它们的正确输出预期输出值。yangshneusoft IT Education&Training9.2 类测试测试例如A、B、C代表用OCL表示的组件,前置条件和后置条件列表如下(下页):yangshneusoft IT Education&Training9.2 类测试测试yangshneusoft IT Education&Training9.2 类测试测试yangshneusoft IT Education&Training9.2 类测试测试依据前置条件和后置条件创建测试用例的基本步骤如下:1 确定在表1中与前置条件形成相匹配的各个项目所指定的一系列前置条件的影响。2 确定在表2中与后置条件形成相匹配的各个项目所指定的一系列前置条件的影响。3 依据影响到列表中各个项目的全部可能的组合状况从而构造测试用例需求。一种简洁的方法就是:用第一个列表中的每一个输入约束来代替其次个列表中每一个前置条件。4 解除表中生成的全部无意义的条件。yangshneusoft IT Education&Training9.2 类测试测试依据状态转换图构建测试用例 状态转换图以图例的形式说明白与一个类的实例相关联的行为。状态转换图可用来补充编写的类说明或者构成完整的类说明。状态图中的每一个转换都描述了一个或多个测试用例需求。因而,可以通过在转换的每一端选择有代表性的值和边界来满足这些需求。假如转换是受爱护的,那么也应当为这些爱护条件选择边界。状态的边界值取决于状态相关属性值的范围,可以依据属性值来定义每一个状态。yangshneusoft IT Education&Training9.2 类测试测试两种构建测试用例方法的比较和依据前置条件和后置条件创建类的测试用例相比,依据状态转换图创建类的测试用例有特别大的优势。在类的状态图中,类相关联的行为特别的明显和直观,测试用例的需求干脆来自于状态转换,因而很简洁确定测试用例的需求。不过基于状态图的方法也有其不利的方面。如要完全理解怎样依据属性值来定义状态;事务是如何在一个给定的状态内影响特定值等。这都很难仅从简洁的状态图中确定。因此,在运用基于状态转换图进行测试时,务必在生成的测试用例时检查每个状态转换的边界值和预期值。yangshneusoft IT Education&Training第9章 面对对象软件测试9.1 面对对象测试的问题9.2 类测试9.3 面对对象的集成测试9.4 GUI测试9.5 面对对象的系统测试 yangshneusoft IT Education&Training9.3 面对对象的集成测试面对对象设计(OOD)接受造型的观点,以OOA为基础归纳出类,并建立类结构或进一步构造成类库,实现分析结果对问题空间的抽象。OOD 归纳的类,可以是对象简洁的持续,可以是不同对象的相同或相像的服务。由此可见,OOD不是在OOA上的另一思维方式的大动干戈,而是OOA的进一步细化和更高层的抽象。yangshneusoft IT Education&Training9.3 面对对象的集成测试,OOD与OOA 的界限通常是难以严格区分的。OOD确定类和类结构不仅是满足当前需求分析的要求,更重要的是通过重新组合或加以适当的补充,能便利实现功能的重用和扩增,以不断适应用户的要求。因此,对OOD的测试,针对功能的实现和重用以及对OOA结果的拓展,从如下三方面考虑:对认定的类的测试 对构造的类层次结构的测试 对类库的支持的测试yangshneusoft IT Education&Training9.3 面对对象的集成测试1 对认定的类的测试OOD认定的类可以是OOA中认定的对象,也可以是对象所须要的服务的抽象,对象所具有的属性的抽象。认定的类原则上应当尽量基础性,这样才便于维护和重用。测试认定的类:1.1 是否含盖了OOA中全部认定的对象。1.2 是否能体现OOA中定义的属性。1.3 是否能实现OOA中定义的服务。1.4 是否对应着一个含义明确的数据抽象。1.5 是否尽可能少的依靠其他类。1.6 类中的方法(C+:类的成员函数)是否单用途。yangshneusoft IT Education&Training9.3 面对对象的集成测试2 对构造的类层次结构的测试为能充分发挥面对对象的继承共享特性,OOD的类层次结构,通常基于OOA中产生的分类结构的原则来组织,着重体现父类和子类间一般性和特殊性。两者概念上的差异。在当前的问题空间,对类层次结构的主要要求是能在解空间构造实现全部功能的结构框架。为此,测试如下方面:2.1 类层次结构是否含盖了全部定义的类。2.2 是否能体现OOA中所定义的实例关联。2.3 是否能实现OOA中所定义的消息关联。2.4 子类是否具有父类没有的新特性。2.5 子类间的共同特性是否完全在父类中得以体现。yangshneusoft IT Education&Training9.3 面对对象的集成测试3 对类库支持的测试对类库的支持虽然也属于类层次结构的组织问题,但其强调的重点是再次软件开发的重用。由于它并不干脆影响当前软件的开发和功能实现,因此,将其单独提出来测试,也可作为对高质量类层次结构的评估。测试点如下:3.1 一组子类中关于某种含义相同或基本相同的操作,是否有相同的接口(包括名字和参数表)。3.2 类中方法(C+:类的成员函数)功能是否较单纯,相应的代码行是否较少。3.3 类的层次结构是否是深度大,宽度小。yangshneusoft IT Education&Training9.3 面对对象的集成测试传统的集成测试,是由底向上通过集成完成的功能模块进行测试,一般可以在部分程序编译完成的状况下进行。对于面对对象程序,相互调用的功能是散布在程序的不同类中,类通过消息相互作用申请和供应服务。类的行为与它的状态亲密相关,状态不仅仅是体现在类数据成员的值,或许还包括其他类中的状态信息。由此可见,类相互依靠极其紧密,根本无法在编译不完全的程序上对类进行测试。面对对象的集成测试通常须要在整个程序编译完成后进行。面对对象程序具有动态特性,程序的限制流往往无法确定,因此也只能对整个编译后的程序做基于黑盒子的集成测试。yangshneusoft IT Education&Training9.3 面对对象的集成测试面对对象的集成测试能够检测出相对独立的单元测试无法检测出的那些类相互作用时才会产生的错误。基于单元测试对成员函数行为正确性的保证,集成测试只关注于系统的结构和内部的相互作用。面对对象的集成测试可以分成两步进行:先进行静态测试,再进行动态测试。yangshneusoft IT Education&Training9.3 面对对象的集成测试静态测试主要针对程序的结构进行,检测程序结构是否符合设计要求。现在流行的一些测试软件都能供应一种称为“可逆性工程”的功能,即通过原程序得到类关系图和函数功能调用关系图。yangshneusoft IT Education&Training9.3 面对对象的集成测试动态测试设计测试用例时,通常须要上述的功能调用结构图、类关系图或者实体关系图为参考,确定不须要被重复测试的部分,从而优化测试用例,削减测试工作量,使得进行的测试能够达到确定覆盖标准。测试所要达到的覆盖标准可以是:达到类全部的服务要求或服务供应的确定覆盖率;依据类间传递的消息,达到对全部执行线程的确定覆盖率;达到类的全部状态的确定覆盖率等。同时也可以考虑运用现有的一些测试工具 来得到程序代码执行的覆盖率。yangshneusoft IT Education&Training9.3 面对对象的集成测试具体设计测试用例,参考下列步骤:1.先选定检测的类,参考OOD分析结果,细致出类的状态和相应的行为,类或成员函数间传递的消息,输入或输出的界定等。2.确定覆盖标准。3.利用结构关系图确定待测类的全部关联。4.依据程序中类的对象构造测试用例,确认运用什么输入激发类的状态、运用类的服务和期望产生什么行为等。yangshneusoft IT Education&Training七七 面对对象的集成测试面对对象的集成测试注:设计测试用例时,不但要设计确认类功能满足的输入,还应当有意识的设计一些被禁止的例子,确认类是否有不合法的行为产生,如发送与类状态不相适应的消息,要求不相适应的服务等。依据具体状况,动态的集成测试,有时也可以通过系统测试完成。yangshneusoft IT Education&Training第9章 面对对象软件测试9.1 面对对象测试的问题9.2 类测试9.3 面对对象的集成测试9.4 GUI测试9.5 面对对象的系统测试 yangshneusoft IT Education&Training9.4 GUI测试图形用户界面(GUI)对软件测试提出了好玩的挑战,因为 GUI 开发环境有可复用的构件,开发用户界面更加省时而且更加精确。同时,GUI 的困难性也增加了,从而加大了设计和执行测试用例的难度。一般有很多自动化的GUI测试工具,如:jemmy,JFCunit等。yangshneusoft IT Education&Training9.4 GUI测试因为现在 GUI 设计和实现有了越来越多的类似,所以也就产生了一系列的测试标准。可依据标准进行GUI测试。窗口的测试标准菜单的测试标准数据项的测试标准yangshneusoft IT Education&Training9.4 GUI测试窗口:窗口是否基于相关的输入和菜单吩咐适当地打开?窗口能否变更大小、移动和滚动?窗口中的数据内容能否用鼠标、功能键、方向键和键盘访问?当被覆盖并重新调用后,窗口能否正确地再生?须要时能否运用全部窗口相关的功能?全部窗口相关的功能是可操作的吗?是否有相关的下拉式菜单、工具条、滚动条、对话框、按钮、图标和其他限制可为窗口运用,并适当地显示?显示多个窗口时,窗口的名称是否被适当地表示?活动窗口是否被适当地加亮?假如运用多任务,是否全部的窗口被实时更新?多次或不正确按鼠标是否会导致无法预料的副作用?窗口的声音和颜色提示和窗口的操作依次是否符合需求?窗口是否正确地被关闭?yangshneusoft IT Education&Training9.4 GUI测试菜单和鼠标操作:菜单条是否显示在合适的语境中?应用程序的菜单条是否显示系统相关的特性(如时钟显示)?下拉式操作能正确工作吗?菜单、调色板和工具条是否工作正确?是否适当地列出了全部的菜单功能和下拉式子功能?是否可以通过鼠标访问全部的菜单功能?文本字体、大小和格式是否正确?是否能够用其他的文本吩咐激活每个菜单功能?菜单功能是否随当前的窗口操作加亮或变灰?菜单功能是否正确执行?菜单功能的名字是否具有自说明性?菜单项是否有帮助,是否语境相关?在整个交互式语境中,是否可以识别鼠标操作?假如要求多次点击鼠标,是否能够在语境中正确识别?光标、处理指示器和识别指针是否随操作恰当地变更?yangshneusoft IT Education&Training9.4 GUI测试数据项:字母数字数据项是否能够正确回显,并输入到系统中?图形模式的数据项(如滚动条)是否正常工作?是否能够识别非法数据?数据输入消息是否可理解?数据项的默认值是否须要,是否正确?yangshneusoft IT Education&Training9.4 GUI测试测试例子:SATM客户可以选择三种交易中的随意一种:存款、取款和查询余额。这些交易可以在信用帐户和储蓄帐户上完成。yangshneusoft IT Education&Training9.4 GUI测试测试覆盖要求全部原子系统功能全部端口输入全部端口输出yangshneusoft IT Education&Training第9章 面对对象软件测试9.1 面对对象测试的问题9.2 类测试9.3 面对对象的集成测试9.4 GUI测试9.5 面对对象的系统测试 yangshneusoft IT Education&Training9.5 面对对象的系统测试面对对象分析(OOA)是“把E-R图和语义网络模型,即信息造型中的概念,与面对对象程序设计语言中的重要概念结合在一起而形成的分析方法”,最终通常是得到问题空间的图表的形式描述。通常是UML的描述 yangshneusoft IT Education&Training9.5 面对对象的系统测试OOA对问题空间分析抽象的不完整,最终会影响软件的功能实现,导致软件开发后期大量可避开的修补工作;而一些冗余的对象或结构会影响类的选定、程序的整体结构或增加程序员不必要的工作量。yangshneusoft IT Education&Training9.5 面对对象的系统测试对OOA阶段的测试划分为以下五个方面:对认定的对象的测试 对认定的结构的测试 对认定的主题的测试 对定义的属性和实例关联的测试 对定义的服务和消息关联的测试yangshneusoft IT Education&Training9.5 面对对象的系统测试OOA干脆映射问题空间,全面的将问题空间中实现功能的现实抽象化。将问题空间中的实例抽象为对象(不同于C+中的对象概念),用对象的结构反映问题空间的困难实例和困难关系,用属性和服务表示实例的特性和行为。对一个系统而言,与传统分析方法产生的结果相反,行为是相对稳定的,结构是相对不稳定的,这更充分反映了现实的特性。OOA的结果是为后面阶段类的选定和实现,类层次结构的组织和实现供应平台 yangshneusoft IT Education&Training9.5 面对对象的系统测试1 对认定的对象的测试:OOA中认定的对象是对问题空间中的结构,其他系统,设备,被记忆的事务,系统涉及的人员等实际实例的抽象。对它的测试可以从如下方面考虑:1.1 认定的对象是否全面,是否问题空间中全部涉及到的实例都反映在认定的抽象对象中。1.2 认定的对象是否具有多个属性。只有一个属性的对象通常应看成其他对象的属性,而不是抽象为独立的对象。1.3 对认定为同一对象的实例是否有共同的,区分于其他实例的共同属性。1.4 对认定为同一对象的实例是否供应或须要相同的服务,假如服务随着不同的实例而变更,认定的对象就须要分解或利用继承性来分类表示。1.5 假如系统没有必要始终保持对象代表的实例的信息,供应或者得到关于它的服务,认定的对象也无必要。1.6 认定的对象的名称应当尽量精确,适用。yangshneusoft IT Education&Training9.5 面对对象的系统测试2 对认定的结构的测试认定的结构指的是多种对象的组织方式,用来反映问题空间中的困难实例和困难关系。认定的结构分为两种:分类结构和组装结构。分类结构体现了问题空间中实例的一般与特殊的关系,组装结构体现了问题空间中实例整体与局部的关系。yangshneusoft IT Education&Training9.5 面对对象的系统测试2.1 对认定的分类结构的测试可从如下方面着手:2.1.1 对于结构中的一种对象,尤其是处于高层的对象,是否在问题空间中含有不同于下一层对象的特殊可能性,即是否能派生出下一层对象。2.1.2 对于结构中的一种对象,尤其是处于同一低层的对象,是否能抽象出在现实中有意义的更一般的上层对象。2.1.3 对全部认定的对象,是否能在问题空间内向上层抽象出在现实中有意义的对象2.1.4 高层的对象的特性是否完全体现下层的共性2.1.5 低层的对象是否有高层特性基础上的特殊性yangshneusoft IT Education&Training9.5 面对对象的系统测试2.2 对认定的组装结构的测试从如下方面入手:2.2.1 整体(对象)和部件(对象)的组装关系是否符合现实的关系。2.2.2 整体(对象)的部件(对象)是否在考虑的问题空间中有实际应用。2.2.3 整体(对象)中是否遗漏了反映在问题空间中有用的部件(对象)。2.2.4 部件(对象)是否能够在问题空间中组装新的有现实意义的整体(对象)。yangshneusoft IT Education&Training9.5 面对对象的系统测试3 对认定的主题的测试主题是在对象和结构的基础上更高一层的抽象,是为了供应OOA分析结果的可见性,犹如文章对各部分内容的概要。对主题层的测试应当考虑以下方面:3.1 贯彻George Miller 的“7+2”原则,假如主题个数超过7个,就要求对有较亲密属性和服务的主题进行归并。3.2 主题所反映的一组对象和结构是否具有相同和相近的属性和服务。3.3 认定的主题是否是对象和结构更高层的抽象,是否便于理解OOA结果的概貌(尤其是对非技术人员的OOA 结果读者)。3.4 主题间的消息联系(抽象)是否代表了主题所反映的对象和结构之间的全部关联。yangshneusoft IT Education&Training9.5 面对对象的系统测试4 对定义的属性和实例关联的测试属性是用来描述对象或结构所反映的实例的特性。而实例关联是反映实例集合间的映射关系。对属性和实例关联的测试从如下方面考虑:4.1 定义的属性是否对相应的对象和分类结构的每个现实实例都适用。4.2 定义的属性在现实世界是否与这种实例关系亲密。4.3 定义的属性在问题空间是否与这种实例关系亲密。4.4 定义的属性是否能够不依靠于其他属性被独立理解。4.5 定义的属性在分类结构中的位置是否恰当,低层对象的共有属性是否在上层对象属性体现。4.6 在问题空间中每个对象的属性是否定义完整。4.7 定义的实例关联是否符合现实。4.9 在问题空间中实例关联是否定义完整,特殊须要留意1-多和多-多的实例关联。yangshneusoft IT Education&Training9.5 面对对象的系统测试5 对定义的服务和消息关联的测试定义的服务,就是定义的每一种对象和结构在问题空间所要求的行为。由于问题空中实例间必要的通信,在OOA 中相应须要定义消息关联。对定义的服务和消息关联的测试从如下方面进行:5.1 对象和结构在问题空间的不同状态是否定义了相应的服务。5.2 对象或结构所须要的服务是否都定义了相应的消息关联。5.3 定义的消息关联所指引的服务供应是否正确。5.4 沿着消息关联执行的线程是否合理,是否符合现实过程。5.5 定义的服务是否重复,是否定义了能够得到的服务。yangshneusoft IT Education&Training9.5 面对对象的系统测试通过单元测试和集成测试,仅能保证软件开发的功能得以实现。但不能确认在实际运行时,它是否满足用户的须要,是否大量存在实际运用条件下会被诱发产生错误的隐患。为此,对完成开发的软件必需经过规范的系统测试。开发完成的软件仅仅是实际投入运用系统的一个组成部分,须要测试它与系统其他部安排套运行的表现,以保证在系统各部分协调工作的环境下也能正常工作。yangshneusoft IT Education&Training9.5 面对对象的系统测试系统测试应当尽量搭建与用户实际运用环境相同的测试平台,应当保证被测系统的完整性,对临时没有的系统设备部件,也应有相应的模拟手段。系统测试时,应当参考OOA分析的结果,对应描述的对象、属性和各种服务,检测软件是否能够完全再现问题空间。系统测试不仅是检测软件的整体行为表现,从另一个侧面看,也是对软件开发设计的再确认。yangshneusoft IT Education&Training9.5 面对对象的系统测试具体测试内容包括:功能测试:测试是否满足开发要求,是否能够供应设计所描述的功能,是否用户的需求都得到满足。功能测试是系统测试最常用和必需的测试,通常还会以正式的软件说明书为测试标准。强度测试:测试系统的实力最高实际限度,即软件在一些超负荷的状况,功能实现状况。如要求软件某一行为的大量重复、输入大量的数据或大数值数据、对数据库大量困难的查询等。yangshneusoft IT Education&Training9.5 面对对象的系统测试 性能测试:测试软件的运行性能。这种测试常常与强度测试结合进行,须要事先对被测软件提出性能指标,如传输连接的最长时限、传输的错误率、计算的精度、记录的精度、响应的时限和复原时限等。平安测试:验证安装在系统内的爱护机构的确能够对系统进行爱护,使之不受各种特别的干扰。平安测试时须要设计一些测试用例试图突破系统的平安保密措施,检验系统是否有平安保密的漏洞。yangshneusoft IT Education&Training9.5 面对对象的系统测试 复原测试:接受人工的干扰使软件出错,中断运用,检测系统的复原实力,特殊是通讯系统。复原