面向对象的软件测试基础ppt课件

上传人:仙*** 文档编号:179470266 上传时间:2023-01-01 格式:PPT 页数:49 大小:102KB
返回 下载 相关 举报
面向对象的软件测试基础ppt课件_第1页
第1页 / 共49页
面向对象的软件测试基础ppt课件_第2页
第2页 / 共49页
面向对象的软件测试基础ppt课件_第3页
第3页 / 共49页
点击查看更多>>
资源描述
第第10章章 面向对象的软件测试根底面向对象的软件测试根底罗罗 东东 俊俊ZSUJONE126主要内容主要内容10.1从测试视角对待面向对象从测试视角对待面向对象 10.2面向对象测试的层次面向对象测试的层次10.3面向对象测试模型面向对象测试模型 10.4面向对象测试部分的例子面向对象测试部分的例子10.1从测试视角对待面向对象从测试视角对待面向对象10.1.1测试面向对象软件的不同测试面向对象软件的不同10.1.2测试视角测试视角 10.1.3从测试视角的角度对待面向对象的概念从测试视角的角度对待面向对象的概念 10.1.1测试面向对象软件的不同测试面向对象软件的不同 从编程言语看,面向对象编程特点对测试产生了影从编程言语看,面向对象编程特点对测试产生了影响响 封装把数据及对数据的操作封装在一同,限制了对封装把数据及对数据的操作封装在一同,限制了对象属性对外的透明性和外界对它的操作权限,在某象属性对外的透明性和外界对它的操作权限,在某种程度上防止了对数据的非法操作,有效防止了缺种程度上防止了对数据的非法操作,有效防止了缺点的分散;但同时,封装机制也给测试数据的生成、点的分散;但同时,封装机制也给测试数据的生成、测试途径的选取以及测试构造的分析带来了困难。测试途径的选取以及测试构造的分析带来了困难。承继实现了共享父类中定义的数据和操作,同时也承继实现了共享父类中定义的数据和操作,同时也可以定义新的特征,子类是在新的环境中存在,所可以定义新的特征,子类是在新的环境中存在,所以父类的正确性不能保证子类的正确性,承继使代以父类的正确性不能保证子类的正确性,承继使代码的重用率得到了提高,但同时也使缺点的传播几码的重用率得到了提高,但同时也使缺点的传播几率添加率添加 多态和动态绑定添加了系统运转中能够的执行途径,多态和动态绑定添加了系统运转中能够的执行途径,而且给面向对象软件带来了严重的不确定性,给测而且给面向对象软件带来了严重的不确定性,给测试覆盖率的活动带来新的困难。试覆盖率的活动带来新的困难。测试面向对象软件的不同测试面向对象软件的不同 另一方面,面向对象的开发过程以及分析和另一方面,面向对象的开发过程以及分析和设计方法也对测试产生了影响设计方法也对测试产生了影响 分析、设计和编码实现亲密相关,分析模型分析、设计和编码实现亲密相关,分析模型可以映射为设计模型,设计模型又可以映射可以映射为设计模型,设计模型又可以映射为代码。为代码。因此,分析阶段开场测试,提炼以后可用于因此,分析阶段开场测试,提炼以后可用于设计阶段,设计阶段的测试提炼后又可用于设计阶段,设计阶段的测试提炼后又可用于实现阶段的测试。实现阶段的测试。例如例如 在传统的面向过程程序中,对于函数在传统的面向过程程序中,对于函数 y=Function(x),只需,只需思索函数思索函数Function()本身的行为特点本身的行为特点 在面向对象程序中,不得不同时思索基类函数在面向对象程序中,不得不同时思索基类函数Base:Function()的行为和承继类函数的行为和承继类函数Derived:Function()的行为。的行为。通常,传统软件中存在的依赖关系有:变量间的数据依赖;通常,传统软件中存在的依赖关系有:变量间的数据依赖;模块间的调用依赖;变量与其类型间的定义依赖;模块与其模块间的调用依赖;变量与其类型间的定义依赖;模块与其变量间的功能依赖。变量间的功能依赖。而在面向对象软件中,除了存在上述依赖关系外,还存在以而在面向对象软件中,除了存在上述依赖关系外,还存在以下的依赖关系:类与类间的依赖;类与操作间的依赖;类与下的依赖关系:类与类间的依赖;类与操作间的依赖;类与音讯间的依赖;类与变量间的依赖;操作与变量间的依赖;音讯间的依赖;类与变量间的依赖;操作与变量间的依赖;操作与音讯间的依赖;操作与操作间的依赖。操作与音讯间的依赖;操作与操作间的依赖。面向对象软件的测试内容面向对象软件的测试内容 模型测试模型测试 类测试类测试 交互测试交互测试 系统系统/子系统测试子系统测试 发布发布/自我测试自我测试10.1.2 测试视角测试视角 测试人员必需以一种对软件的方方面面都提测试人员必需以一种对软件的方方面面都提出疑问的态度来思索软件,这种方法被称之出疑问的态度来思索软件,这种方法被称之为测试视角。为测试视角。测试视角包含以下几个方面:测试视角包含以下几个方面:质疑:想验证软件的质量。质疑:想验证软件的质量。客观:确保不能凭空想像。客观:确保不能凭空想像。彻底:确保不要脱漏重要的部分。彻底:确保不要脱漏重要的部分。系统:检查是可再现的。系统:检查是可再现的。10.1.3从测试视角的角度对待面向对从测试视角的角度对待面向对象的概念象的概念 对象对象 音讯音讯 接口接口 类类 承继承继 多态多态 对象对象 对象是指包含了一组属性以及对这些属性的对象是指包含了一组属性以及对这些属性的操作的封装体。操作的封装体。对象是软件开发期间测试的直接目的对象是软件开发期间测试的直接目的 在程序运转时,对象被创建、修正、访问或在程序运转时,对象被创建、修正、访问或删除,而在运转期间,对象的行为能否符合删除,而在运转期间,对象的行为能否符合它的规格阐明,该对象与和它相关的对象能它的规格阐明,该对象与和它相关的对象能否协同任务,这两方面都是面向对象软件测否协同任务,这两方面都是面向对象软件测试所关注的焦点。试所关注的焦点。从测试视角的角度关于对象的观念从测试视角的角度关于对象的观念 对象的封装:封装使得已定义的对象容易识别,在对象的封装:封装使得已定义的对象容易识别,在系统中容易传送,也容易支配。系统中容易传送,也容易支配。对象隐藏了信息:这使得对象信息的改动有时很难对象隐藏了信息:这使得对象信息的改动有时很难察看到,也加大了检查测试结果的难度。察看到,也加大了检查测试结果的难度。对象的形状:对象在生命期中总是处于某个形状的,对象的形状:对象在生命期中总是处于某个形状的,对象形状的多变能够会导致不正常的行为。对象形状的多变能够会导致不正常的行为。对象的生命周期:在对象生命周期的不同阶段,要对象的生命周期:在对象生命周期的不同阶段,要从各个方面检测对象的形状能否符合其生命周期。从各个方面检测对象的形状能否符合其生命周期。例如过早地创建一个对象或过早地删除一个对象,例如过早地创建一个对象或过早地删除一个对象,都是呵斥软件缺点的缘由。都是呵斥软件缺点的缘由。音讯音讯 执行对象某个操作的一种恳求。包含操作的称号、实参,当执行对象某个操作的一种恳求。包含操作的称号、实参,当然接纳者也可前往值给发送者。例:然接纳者也可前往值给发送者。例:ss.add(5,6)从测试视角的角度,关于音讯的观念;从测试视角的角度,关于音讯的观念;音讯有发送者:发送者决议何时发送音讯,并且能够做出错音讯有发送者:发送者决议何时发送音讯,并且能够做出错误的决议;误的决议;音讯有接纳者:接纳者能够接纳到非预期的特定音讯,能够音讯有接纳者:接纳者能够接纳到非预期的特定音讯,能够会做出不正确反响。会做出不正确反响。音讯能够包含实参:参数能被接纳者运用或修正,假设传送音讯能够包含实参:参数能被接纳者运用或修正,假设传送的参数是对象,那么对象在音讯处置前和处置后,对象必需的参数是对象,那么对象在音讯处置前和处置后,对象必需处于正确的形状,而且必需实现接纳者所期望的接口。处于正确的形状,而且必需实现接纳者所期望的接口。接口接口 接口是行为声明的集合。接口是行为声明的集合。从测试视角的角度,关于接口的观念:从测试视角的角度,关于接口的观念:接口封装了操作的阐明,假设接口包含的行接口封装了操作的阐明,假设接口包含的行为和类的行为不相符,那么对这一接口的阐为和类的行为不相符,那么对这一接口的阐明就不是令人称心的。明就不是令人称心的。接口不是孤立的,与其它的接口和类有一定接口不是孤立的,与其它的接口和类有一定的关系,一个接口可以指定一个行为的参数的关系,一个接口可以指定一个行为的参数类型,使得实现该接口的类可被当作一个参类型,使得实现该接口的类可被当作一个参数传送。数传送。类类 类是具有一样属性和一样行为的对象的集合。类是具有一样属性和一样行为的对象的集合。类从规范和实现两个方面来描画对象。类从规范和实现两个方面来描画对象。在类规范中,定义了类的每个对象能做什么;在类规范中,定义了类的每个对象能做什么;在类实现中,定义了类的每个对象如何做它在类实现中,定义了类的每个对象如何做它们能做的事情。们能做的事情。类规范类规范 类规范包括对每个操作的语义阐明,包括前类规范包括对每个操作的语义阐明,包括前置条件、后置条件和不变量置条件、后置条件和不变量 前置条件是当操作执行之前应该满足的条件前置条件是当操作执行之前应该满足的条件 后置条件是当操作执行终了之后必需坚持的后置条件是当操作执行终了之后必需坚持的条件条件 不变量描画了在对象的生命周期中必需坚持不变量描画了在对象的生命周期中必需坚持的条件的条件发送者和接纳者之间接口的定义发送者和接纳者之间接口的定义 当对一个操作进展阐明时,可以运用维护性当对一个操作进展阐明时,可以运用维护性方法或约束性方法来定义发送者和接纳者之方法或约束性方法来定义发送者和接纳者之间的接口。间的接口。约束性方法强调前置条件也包含简单的后置约束性方法强调前置条件也包含简单的后置条件,发送者必需保证前置条件得到满足,条件,发送者必需保证前置条件得到满足,接纳者就会呼应在后置条件或类不变量中描接纳者就会呼应在后置条件或类不变量中描画的恳求。画的恳求。维护性方法强调的那么是后置条件,恳求的维护性方法强调的那么是后置条件,恳求的结果形状通常由一些前往值指示,前往值和结果形状通常由一些前往值指示,前往值和每一个能够的结果联络在一同。每一个能够的结果联络在一同。从测试视角的角度关于类规范的观念从测试视角的角度关于类规范的观念 从测试视角的角度,约束性方法简化了类的从测试视角的角度,约束性方法简化了类的测试,但使得交互测试更加复杂,由于必需测试,但使得交互测试更加复杂,由于必需保证任何发送者都能满足前置条件。保证任何发送者都能满足前置条件。维护性方法使得类的测试复杂了维护性方法使得类的测试复杂了(发送者必需发送者必需知道一切能够的结果知道一切能够的结果),交互测试也更复杂,交互测试也更复杂(必必需保证产生了一切能够的输出,并且发送者需保证产生了一切能够的输出,并且发送者可以获得这些输出可以获得这些输出)。类的实现类的实现 类的实现描画了对象如何表现它的属性,如类的实现描画了对象如何表现它的属性,如何执行操作。何执行操作。主要包括实例变量、方法集、构造函数和析主要包括实例变量、方法集、构造函数和析构函数、私有操作集。构函数、私有操作集。类测试是面向对象测试过程中最重要的一个类测试是面向对象测试过程中最重要的一个测试,在类测试过程中要保证测试那些具有测试,在类测试过程中要保证测试那些具有代表性的操作。代表性的操作。从测试视角的角度来研讨类从测试视角的角度来研讨类 1)类的规范中包含用来构造实例的一些操作,这些操作也能够类的规范中包含用来构造实例的一些操作,这些操作也能够导致新实例不正确的初始化。导致新实例不正确的初始化。2)类在定义本人的行为和属性时,也依赖于其他协作的类。例类在定义本人的行为和属性时,也依赖于其他协作的类。例如,类的成员变量能够是其他类的实例,或者类中的方法的如,类的成员变量能够是其他类的实例,或者类中的方法的参数是其他类的实例。假设类定义中运用了包含不正确实现参数是其他类的实例。假设类定义中运用了包含不正确实现的其他类,就会使类发生错误。的其他类,就会使类发生错误。3)类的实现必需满足类本身的阐明,但并不保证阐明的正确性。类的实现必需满足类本身的阐明,但并不保证阐明的正确性。4)类的实现也能够不支持一切要求的操作,或者执行一些错误类的实现也能够不支持一切要求的操作,或者执行一些错误的操作。的操作。5)类需求指定每个操作的前置条件,在发送音讯之前,它也能类需求指定每个操作的前置条件,在发送音讯之前,它也能够不提供检查前置条件的方法。够不提供检查前置条件的方法。承继承继 是类之间的联络,允许新类可以在一个已有的根底是类之间的联络,允许新类可以在一个已有的根底上进展定义。上进展定义。承继实现了共享父类中定义的数据和操作,同时也承继实现了共享父类中定义的数据和操作,同时也可以定义新的特征,子类是在新的环境中存在,所可以定义新的特征,子类是在新的环境中存在,所以父类的正确性不能保证子类的正确性,承继使代以父类的正确性不能保证子类的正确性,承继使代码的重用率得到了提高,但同时也使缺点的传播几码的重用率得到了提高,但同时也使缺点的传播几率添加。率添加。从测试视角的角度,关于承继:从测试视角的角度,关于承继:承继提供了一种机制,潜在的错误解从基类传送到承继提供了一种机制,潜在的错误解从基类传送到其派生类,因此类测试中要尽早消除错误。其派生类,因此类测试中要尽早消除错误。子类承继了父类的阐明和实现,因此可反复运用一子类承继了父类的阐明和实现,因此可反复运用一样的测试方法。样的测试方法。设计模型时,检查能否合理地运用了承继。设计模型时,检查能否合理地运用了承继。运用承继实现代码的复用,能够会添加代码维护的运用承继实现代码的复用,能够会添加代码维护的难度难度 多态多态 多态是指同一个操作作用于不同的对象可以有不同多态是指同一个操作作用于不同的对象可以有不同的解释,产生不同的执行结果。的解释,产生不同的执行结果。与多态亲密相关的一个概念就是动态绑定。与多态亲密相关的一个概念就是动态绑定。动态绑定是指在程序运转过程中,当一个对象发送动态绑定是指在程序运转过程中,当一个对象发送音讯恳求效力时,要根据接纳对象的详细情况将恳音讯恳求效力时,要根据接纳对象的详细情况将恳求的操作与实现的方法进展衔接,即把这种衔接推求的操作与实现的方法进展衔接,即把这种衔接推迟到运转时才进展。迟到运转时才进展。从测试视角的角度来看,关于多态的观念:从测试视角的角度来看,关于多态的观念:1)多态允许经过添加类来扩展系统,而无须修正已多态允许经过添加类来扩展系统,而无须修正已有类。但在扩展中能够出现预料之外的交互关系。有类。但在扩展中能够出现预料之外的交互关系。2)多态允许任何操作都可以包括类型不确定的参数,多态允许任何操作都可以包括类型不确定的参数,这就添加了应该测试的实参的种类。这就添加了应该测试的实参的种类。3)多态允许操作指定动态援用前往的呼应。由于实多态允许操作指定动态援用前往的呼应。由于实践援用的类能够是不正确的,或者不是发送者所期践援用的类能够是不正确的,或者不是发送者所期望的。望的。10.2面向对象测试的层次面向对象测试的层次 面向对象测试通常采用三层方式:面向对象测试通常采用三层方式:面向对象单元测试面向对象单元测试(类测试类测试):针对类中的成员:针对类中的成员函数以及成员函数间的交互进展测试;函数以及成员函数间的交互进展测试;面向对象集成测试:主要对系统内部的相互面向对象集成测试:主要对系统内部的相互效力进展测试,如类间的音讯传送等;效力进展测试,如类间的音讯传送等;面向对象系统测试:基于面向对象集成测试面向对象系统测试:基于面向对象集成测试的最后阶段的测试,主要以用户需求为测试的最后阶段的测试,主要以用户需求为测试规范。规范。10.2.1面向对象的单元测试面向对象的单元测试类测试类测试 类测试普通也采用功能性测试方法和构造性测试方类测试普通也采用功能性测试方法和构造性测试方法法 功能性测试以类的规格阐明为根底,主要检查类能功能性测试以类的规格阐明为根底,主要检查类能否符合其规格阐明的要求。否符合其规格阐明的要求。功能性测试包括两个层次:类的规格阐明和方法的功能性测试包括两个层次:类的规格阐明和方法的规格阐明。规格阐明。构造性测试那么是从程序出发,对类中方法进展测构造性测试那么是从程序出发,对类中方法进展测试,需求思索其中的代码能否正确。试,需求思索其中的代码能否正确。测试分为两层:第一层思索类中各独立方法的代码,测试分为两层:第一层思索类中各独立方法的代码,即方法要做单独测试;第二层思索方法之间的相互即方法要做单独测试;第二层思索方法之间的相互作用,即方法需求进展综合测试。作用,即方法需求进展综合测试。测试类中成员函数须思索的两个问题:测试类中成员函数须思索的两个问题:1)承继的成员函数能否都不需求测试承继的成员函数能否都不需求测试?2)对父类的测试能否能照搬到子类对父类的测试能否能照搬到子类?承继的成员函数能否都不需求测试?承继的成员函数能否都不需求测试?对父类中曾经测试过的成员函数,以下两种情况需对父类中曾经测试过的成员函数,以下两种情况需求在子类中重新测试:求在子类中重新测试:承继的成员函数在子类中做了改动。承继的成员函数在子类中做了改动。成员函数调用了改动过的成员函数的部分。成员函数调用了改动过的成员函数的部分。例:假设父类例:假设父类Base中有中有Inherited()和和Redefined()这两个成员函数,承继父类这两个成员函数,承继父类Base的子类的子类Derived只只对对Redefined()做了改动。那么,做了改动。那么,Derived:Redefined()就需求重新测试;对于就需求重新测试;对于Derived:Inherited(),假设它包含了调用,假设它包含了调用Redefined()的语句的语句(比如:比如:x=x/Redefined(),就需,就需求重新测试,否那么就不需求。求重新测试,否那么就不需求。对父类的测试能否能照搬到子类?对父类的测试能否能照搬到子类?例:假设父类例:假设父类Base中有中有Inherited()和和Redefined()这两个成员函数,承继父类这两个成员函数,承继父类Base的子类的子类Derived只对只对Redefined()做了改做了改动。由于面向对象的承继使得两个函数类似,动。由于面向对象的承继使得两个函数类似,故只需求在对故只需求在对Base:Redefined()的测试要求的测试要求和测试用例上添加对和测试用例上添加对Derived:Redefined()新新的测试要求和增补相应的测试用例。的测试要求和增补相应的测试用例。例如例如 Base:Redefined()含有如下语句:含有如下语句:If(value0)message(less);else if(value=0)message(equal);else message(more);在在Derived:Redefined()中定义为:中定义为:If(value0)message(less);else if(value=0)message(It is equal)elsemessage(more);if(value=88)message(“luck);在原有对父类在原有对父类Base的测试上,对的测试上,对Derived:Redefined()的测的测试只需作如下改动:将试只需作如下改动:将value=0的测试结果期望改动;添加的测试结果期望改动;添加value=88的测试。的测试。基于形状的测试基于形状的测试 基于形状的测试是经过检查对象的形状在执行某个方法后能基于形状的测试是经过检查对象的形状在执行某个方法后能否会转移到预期形状的一种测试技术。否会转移到预期形状的一种测试技术。运用该技术可以检验类中的方法能否能正确地交互。运用该技术可以检验类中的方法能否能正确地交互。基于形状测试的主要步骤如下:基于形状测试的主要步骤如下:1)根据设计文档,或者经过分析对象数据成员的取值情况空根据设计文档,或者经过分析对象数据成员的取值情况空间,得到被测试类的形状转移图。间,得到被测试类的形状转移图。2)给被测试的类参与用于设置和检查对象形状的新方法,导给被测试的类参与用于设置和检查对象形状的新方法,导出对象的逻辑形状。出对象的逻辑形状。3)对于形状转移图中每个形状,确定该形状是哪些方法的合对于形状转移图中每个形状,确定该形状是哪些方法的合法起始形状,即在该形状时对象允许执行哪些操作。法起始形状,即在该形状时对象允许执行哪些操作。4)在每个形状,从类中方法的调用关系图最下层开场,逐一在每个形状,从类中方法的调用关系图最下层开场,逐一测试类中的方法;测试每个方法时,根据对象当前形状确定测试类中的方法;测试每个方法时,根据对象当前形状确定出对方法的执行途径有特殊影响的参数值,将各种能够组协出对方法的执行途径有特殊影响的参数值,将各种能够组协作为参数进展测试。作为参数进展测试。10.2.2 面向对象的集成测试面向对象的集成测试 面向对象的集成测试可以检测出类相互作用面向对象的集成测试可以检测出类相互作用时才会产生的错误。时才会产生的错误。面向对象集成测试通常需求在整个程序编译面向对象集成测试通常需求在整个程序编译完成后进展,并只能做基于黑盒的集成测试。完成后进展,并只能做基于黑盒的集成测试。类之间的相互依赖使面向对象集成测试根本类之间的相互依赖使面向对象集成测试根本无法在编译不完全的程序上对类进展测试无法在编译不完全的程序上对类进展测试 面向对象程序具有动态特性,程序的控制流面向对象程序具有动态特性,程序的控制流往往无法确定往往无法确定 面向对象集成测试步骤面向对象集成测试步骤 面向对象集成测试可以分成两步进展:先进展静态面向对象集成测试可以分成两步进展:先进展静态测试,再进展动态测试。测试,再进展动态测试。静态测试主要针对程序构造进展,检测程序构造能静态测试主要针对程序构造进展,检测程序构造能否符合设计要求。如今常用的一些测试软件都能提否符合设计要求。如今常用的一些测试软件都能提供一种称为供一种称为“可逆性工程的功能,即经过源程序得可逆性工程的功能,即经过源程序得到类关系图和函数功能调用关系图。将到类关系图和函数功能调用关系图。将“可逆性工程可逆性工程得到的结果与面向对象设计得到的结果与面向对象设计(OOD)的结果相比较,的结果相比较,以检测面向对象编码以检测面向对象编码(OOP)能否到达了设计要求。能否到达了设计要求。动态测试那么测试与每个动态语境有关的音讯。设动态测试那么测试与每个动态语境有关的音讯。设计测试用例时,通常需求上述的功能调用关系图、计测试用例时,通常需求上述的功能调用关系图、类关系图或实体关系图为参考,确定不需求被反复类关系图或实体关系图为参考,确定不需求被反复测试的部分,从而优化测试用例,使得执行的测试测试的部分,从而优化测试用例,使得执行的测试可以到达一定覆盖规范。可以到达一定覆盖规范。10.2.3 面向对象的系统测试面向对象的系统测试 系统测试应该尽量搭建与用户实践运用环境系统测试应该尽量搭建与用户实践运用环境一样的测试平台一样的测试平台 详细测试的内容包括:功能测试、强度测试、详细测试的内容包括:功能测试、强度测试、性能测试、平安测试、恢复测试、可用性测性能测试、平安测试、恢复测试、可用性测试、安装御载测试等。试、安装御载测试等。10.3面向对象测试模型面向对象测试模型 面向对象的软件开发模型将开发过程定义为面向对象的软件开发模型将开发过程定义为面向对象分析面向对象分析(OOA)、面向对象设计、面向对象设计(OOD)和面向对象编程和面向对象编程(OOP)三个阶段。针对这种三个阶段。针对这种开发模型,应该建立一种新的测试模型。开发模型,应该建立一种新的测试模型。10.3.1面向对象分析的测试面向对象分析的测试(OOA Test)面向对象分析面向对象分析(OOA)直接映射问题空间,全面地将直接映射问题空间,全面地将问题空间中实现功能的实例笼统为对象,用对象的问题空间中实现功能的实例笼统为对象,用对象的构造反映问题空间的复杂实例和复杂关系,用属性构造反映问题空间的复杂实例和复杂关系,用属性和效力表示实例的特性和行为。和效力表示实例的特性和行为。对对OOA阶段的测试划分为五个方面:阶段的测试划分为五个方面:1.对认定的对象的测试对认定的对象的测试 2.对认定的构造的测试对认定的构造的测试 3.对认定的主题的测试对认定的主题的测试 4.对定义的属性和实例关联的测试对定义的属性和实例关联的测试 5.对定义的效力和音讯关联的测试对定义的效力和音讯关联的测试对认定的对象的测试对认定的对象的测试 对认定的对象进展测试时,主要测试五个方面:对认定的对象进展测试时,主要测试五个方面:测试认定的对象能否全面,能否问题空间中一切涉及到的测试认定的对象能否全面,能否问题空间中一切涉及到的实例都反映在认定的笼统对象中。实例都反映在认定的笼统对象中。测试认定的对象能否具有多个属性,只需一个属性的对象测试认定的对象能否具有多个属性,只需一个属性的对象通常应看成其他对象的属性,而不是笼统为独立的对象。通常应看成其他对象的属性,而不是笼统为独立的对象。测试被认定为同一对象的实例能否有共同的、区别于其他测试被认定为同一对象的实例能否有共同的、区别于其他实例的共同属性。实例的共同属性。测试被认定为同一对象的实例能否提供或需求一样的效力测试被认定为同一对象的实例能否提供或需求一样的效力 假设效力随着不同的实例而变化,认定的对象就需求分解或假设效力随着不同的实例而变化,认定的对象就需求分解或利用承继性来分类表示。利用承继性来分类表示。假设系统没有必要一直坚持对象代表的实例的信息,提供或假设系统没有必要一直坚持对象代表的实例的信息,提供或者得到关于它的效力,认定的对象也无必要。者得到关于它的效力,认定的对象也无必要。认定的对象的称号应该尽量准确、适用。认定的对象的称号应该尽量准确、适用。对认定的构造的测试对认定的构造的测试 认定的构造指的是多种对象的组织方式,用认定的构造指的是多种对象的组织方式,用来反映问题空间中的复杂实例和复杂关系。来反映问题空间中的复杂实例和复杂关系。认定的构造分为两种:分类构造和组装构造认定的构造分为两种:分类构造和组装构造 分类构造表达了问题空间中实例的普通与特分类构造表达了问题空间中实例的普通与特殊的关系殊的关系 组装构造表达了问题空间中实例整体与部分组装构造表达了问题空间中实例整体与部分的关系。的关系。对认定的分类构造的测试对认定的分类构造的测试 对认定的分类构造的测试可从以下方面进展测试:对认定的分类构造的测试可从以下方面进展测试:1)对于构造中的一种对象,尤其是处于高层的对象,对于构造中的一种对象,尤其是处于高层的对象,能否在问题空间中含有不同于下一层对象的特殊能能否在问题空间中含有不同于下一层对象的特殊能够性,即能否能派生出下一层对象。够性,即能否能派生出下一层对象。2)对于构造中的一种对象,尤其是处于同一低层的对于构造中的一种对象,尤其是处于同一低层的对象,能否能笼统出在现实中有意义的更普通的上对象,能否能笼统出在现实中有意义的更普通的上层对象。层对象。3)对一切认定的对象,能否能在问题空间内向上层对一切认定的对象,能否能在问题空间内向上层笼统出在现实中有意义的对象。笼统出在现实中有意义的对象。4)高层的对象的特性能否完全表达下层的共性。高层的对象的特性能否完全表达下层的共性。5)低层的对象能否有高层特性根底上的特殊性。低层的对象能否有高层特性根底上的特殊性。对认定的组装构造的测试对认定的组装构造的测试 对认定的组装构造的测试可以从以下方面进对认定的组装构造的测试可以从以下方面进展测试:展测试:1)整体整体(对象对象)和部件和部件(对象对象)的组装关系能否符的组装关系能否符合现实的关系。合现实的关系。2)整体整体(对象对象)的部件的部件(对象对象)能否在思索的问题能否在思索的问题空间中有实践运用。空间中有实践运用。3)整体整体(对象对象)中能否脱漏了反映在问题空间中中能否脱漏了反映在问题空间中有用的部件有用的部件(对象对象)。4)部件部件(对象对象)能否可以在问题空间中组装新的能否可以在问题空间中组装新的有现实意义的整体有现实意义的整体(对象对象)。对认定的主题的测试对认定的主题的测试 主题是在对象和构造的根底上更高一层的笼统,是主题是在对象和构造的根底上更高一层的笼统,是为了提供为了提供OOA分析结果的可见性,好像文章对各部分析结果的可见性,好像文章对各部分内容的概要。分内容的概要。对主题层的测试应该思索以下方面:对主题层的测试应该思索以下方面:1)贯彻贯彻George Miller的的“7+2原那么,假设主题个原那么,假设主题个数超越数超越7个,就要求对有较亲密属性和效力的主题进个,就要求对有较亲密属性和效力的主题进展归并。展归并。2)主题所反映的一组对象和构造能否具有一样和相主题所反映的一组对象和构造能否具有一样和相近的属性和效力。近的属性和效力。3)认定的主题能否是对象和构造更高层的笼统,能认定的主题能否是对象和构造更高层的笼统,能否便于了解否便于了解OOA结果的概貌结果的概貌(尤其是对非技术人员的尤其是对非技术人员的OOA结果读者结果读者)。4)主题间的音讯联络主题间的音讯联络(笼统笼统)能否代表了主题所反映的能否代表了主题所反映的对象和构造之间的一切关联。对象和构造之间的一切关联。对定义的属性和实例关联的测试对定义的属性和实例关联的测试 属性是用来描画对象或构造所反映的实例的特性。而实例关属性是用来描画对象或构造所反映的实例的特性。而实例关联是反映实例集合间的映射关系。联是反映实例集合间的映射关系。对属性和实例关联的测试从如下方面思索:对属性和实例关联的测试从如下方面思索:1)定义的属性能否对相应的对象和分类构造的每个现实实例定义的属性能否对相应的对象和分类构造的每个现实实例都适用。都适用。2)定义的属性在现实世界能否与这种实例关系亲密。定义的属性在现实世界能否与这种实例关系亲密。3)定义的属性在问题空间能否与这种实例关系亲密。定义的属性在问题空间能否与这种实例关系亲密。4)定义的属性能否可以不依赖于其他属性被独立了解。定义的属性能否可以不依赖于其他属性被独立了解。5)定义的属性在分类构造中的位置能否恰当,低层对象的共定义的属性在分类构造中的位置能否恰当,低层对象的共有属性能否在上层对象属性表达。有属性能否在上层对象属性表达。6)在问题空间中每个对象的属性能否认义完好。在问题空间中每个对象的属性能否认义完好。7)定义的实例关联能否符合现实。定义的实例关联能否符合现实。8)在问题空间中实例关联能否认义完好,特别需求留意一对在问题空间中实例关联能否认义完好,特别需求留意一对多和多对多的实例关联。多和多对多的实例关联。对定义的效力和音讯关联的测试对定义的效力和音讯关联的测试 定义的效力,就是定义的每一种对象和构造在问题定义的效力,就是定义的每一种对象和构造在问题空间所要求的行为。由于问题空间中实例间必要的空间所要求的行为。由于问题空间中实例间必要的通讯,在通讯,在OOA中相应地需求定义音讯关联。中相应地需求定义音讯关联。对定义的效力和音讯关联的测试从以下方面进展:对定义的效力和音讯关联的测试从以下方面进展:1)对象和构造在问题空间的不同形状能否认义了相对象和构造在问题空间的不同形状能否认义了相应的效力。应的效力。2)对象或构造所需求的效力能否都定义了相应的音对象或构造所需求的效力能否都定义了相应的音讯关联。讯关联。3)定义的音讯关联所指引的效力提供能否正确。定义的音讯关联所指引的效力提供能否正确。4)沿着音讯关联执行的线程能否合理,能否符合现沿着音讯关联执行的线程能否合理,能否符合现实过程。实过程。5)定义的效力能否反复,能否认义了可以得到的效定义的效力能否反复,能否认义了可以得到的效力。力。10.3.2面向对象设计的测试面向对象设计的测试(OOD Test)OOD是以是以OOA为根底归纳出类,并建立类构为根底归纳出类,并建立类构造或进一步构呵斥类库,实现分析结果对问造或进一步构呵斥类库,实现分析结果对问题空间的笼统。题空间的笼统。OOD的测试是针对系统设计结果的测试的测试是针对系统设计结果的测试 对对OOD的测试可从如下的测试可从如下3方面思索:方面思索:对认定的类的测试对认定的类的测试 对构造的类层次构造的测试对构造的类层次构造的测试 对类库支持的测试对类库支持的测试对认定的类的测试对认定的类的测试 能否涵盖了能否涵盖了OOA中一切认定的对象;中一切认定的对象;能否能表达能否能表达OOA中定义的属性;中定义的属性;能否能实现能否能实现OOA中定义韵效力;中定义韵效力;能否对应着一个含义明确的数据笼统;能否对应着一个含义明确的数据笼统;能否尽能够少的依赖其他类;能否尽能够少的依赖其他类;类中的方法能否实现单个功能。类中的方法能否实现单个功能。对构造的类层次构造的测试对构造的类层次构造的测试 类层次构造能否涵盖了一切定义的类;类层次构造能否涵盖了一切定义的类;能否能表达能否能表达OOA中定义的实例关联;中定义的实例关联;能否能实现能否能实现OOA中定义的音讯关联;中定义的音讯关联;子类能否具有父类没有的新特性;子类能否具有父类没有的新特性;子类间的共同特性能否完全在父类中得以表子类间的共同特性能否完全在父类中得以表达。达。对类库支持的测试对类库支持的测试 对类库的支持虽然也属于类层次构造的组织对类库的支持虽然也属于类层次构造的组织问题,但其强调的重点是再次软件开发的重问题,但其强调的重点是再次软件开发的重用。用。测试时关注三个方面:测试时关注三个方面:首先,一组子类中关于某种含义一样或根本首先,一组子类中关于某种含义一样或根本一样的操作,能否有一样的接口一样的操作,能否有一样的接口(包括名字和包括名字和参数表参数表)。其次,类中方法功能能否较单纯,相应的代其次,类中方法功能能否较单纯,相应的代码行能否较少。码行能否较少。再次,类的层次构造能否是深度大,宽度小。再次,类的层次构造能否是深度大,宽度小。10.3.3面向对象编程的测试面向对象编程的测试(OOP Test)在对在对OOP测试时,重点集中在类功能的实现测试时,重点集中在类功能的实现和相应的面向对象程序架构和相应的面向对象程序架构 主要表达为以下两个方面:主要表达为以下两个方面:1)数据成员能否满足数据封装的要求。数据成员能否满足数据封装的要求。根本原那么是数据成员能否被外界根本原那么是数据成员能否被外界(数据成员数据成员所属的类或子类以外的调用所属的类或子类以外的调用)直接调用。直接调用。2)类能否实现了要求的功能。类能否实现了要求的功能。测试类的功能,不能仅满足于代码能无错运测试类的功能,不能仅满足于代码能无错运转或被测试的类能提供的功能正确,应以所转或被测试的类能提供的功能正确,应以所做的做的OOD结果为根据,检测类提供的功能能结果为根据,检测类提供的功能能否满足了设计的要求,能否有缺陷。否满足了设计的要求,能否有缺陷。小结小结 OOA Test和和OOD Test是对分析结果和设计是对分析结果和设计结果的测试,主要是对分析设计产生的文档结果的测试,主要是对分析设计产生的文档进展测试,是软件开发前期的关键性测试。进展测试,是软件开发前期的关键性测试。OOP Test主要针对编程风格和程序代码实现主要针对编程风格和程序代码实现进展测试,主要的测试内容在面向对象单元进展测试,主要的测试内容在面向对象单元测试和面向对象集成测试中表达。测试和面向对象集成测试中表达。10.4面向对象测试部分的例子面向对象测试部分的例子 Brickles游戏是一个交互式游戏,在游戏是一个交互式游戏,在Microsoft Windows环境下运转。游戏的区域是由两堵墙壁、环境下运转。游戏的区域是由两堵墙壁、天花板和地板围成的一个矩形。在游戏区域中有一天花板和地板围成的一个矩形。在游戏区域中有一组砖块组成的组砖块组成的“砖堆。游戏玩家控制一块程度挪动砖堆。游戏玩家控制一块程度挪动的滑板,让一个冰球经过反射击打砖堆上的砖块。的滑板,让一个冰球经过反射击打砖堆上的砖块。冰球碰到砖块时,砖块就会破碎。冰球在墙壁、天冰球碰到砖块时,砖块就会破碎。冰球在墙壁、天花板、砖头和程度滑板之间反射腾跃,当冰球碰到花板、砖头和程度滑板之间反射腾跃,当冰球碰到地板时会被没收,不再跳起。游戏开场时,游戏玩地板时会被没收,不再跳起。游戏开场时,游戏玩家有家有3个冰球,假设一切砖块都被打碎了,游戏玩家个冰球,假设一切砖块都被打碎了,游戏玩家胜利。假设胜利。假设3个冰球用完了,而砖块还没有全部被打个冰球用完了,而砖块还没有全部被打碎,那么玩家就输掉了游戏。碎,那么玩家就输掉了游戏。Brickles游戏的初始形状游戏的初始形状 本章总结本章总结 讨论了:讨论了:10.1从测试视角对待面向对象从测试视角对待面向对象 10.2面向对象测试的层次面向对象测试的层次 10.3面向对象测试模型面向对象测试模型 10.4面向对象测试部分的例子面向对象测试部分的例子习题习题1.测试面向对象软件和传统软件有何不同测试面向对象软件和传统软件有何不同?2.什么是测试视角什么是测试视角?从测试视角如何对待面向对从测试视角如何对待面向对象的根本概念象的根本概念?3.面向对象软件的测试模型是什么面向对象软件的测试模型是什么?4.面向对象软件测试的层次是怎样的面向对象软件测试的层次是怎样的?
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!