您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 设计及方案 > 第5章面向对象软件的测试.
软件测试教程第5章面向对象软件的测试Yourcompanyslogan教授内容面向对象的测试概述5.1面向对象的单元测试5.2面向对象的集成测试和系统测试5.35.1面向对象的测试概述Yourcompanyslogan1.对象对象是一个可操作的实体,是由保存对象属性的特定的数据和操作这些数据的操作封装在一起构成的整体。对象是一个基本的可计算的实体,对象之间通过消息机制相互发生作用。对象是测试的最直接目标,对象是否符合需求说明、对象与对象之间是否能进行协同工作,是我们测试的焦点。程序运行时,每个对象都将历经创建、访问、修改和删除4个过程,这4个过程称为对象的生命周期。针对对象进行测试,应从多方面测试对象的状态是否与其生命周期相符。5.1.1面向对象的基本概念Yourcompanyslogan2.类类是具有相同或相似性质的对象抽象的集合。因此,对象的抽象就是类,类的具体化就是对象,也可以说类的实例是对象。类通过构造函数来创造新的对象,并对新的对象进行初始化,因此在对类进行测试时,需要考虑对象初始化过程是否正确。3.封装封装就是把对象的属性和方法结合成一个整体,尽可能掩盖其内部的细节。封装后的对象,只能知道输入和输出,无法了解内部的操作过程,也无法真正了解内部数据的真实状态。这一特征简化了对对象的使用,同时也给测试带来了难度。4.继承继承是类之间的一种联系,类可以通过派生生成新类,派生出的新类称为子类。通过继承机制,子类可以继承父类的特点和功能,同时还可以具有自己独有的特点和功能。这一特征为缺陷的扩散提供了途径,如果父类带有缺陷,派生出的子类也会带有缺陷,这会对后面的开发带来隐患。Yourcompanyslogan5.多态多态提供了将对象堪称是一种或多种类型的能力。多态包含几种不同的形式,参数多态、包含多态和过载多态。参数多态是能够根据一个或多个参数来定义一种类型的能力;包含多态是同一个类具有不同表现形式的一种现象,这一特征使得参数具有对象替换的能力。多态性增强了软件的灵活性和重用性,同时也使得测试的工作量成倍增加。6.消息消息是对象的操作将要执行的请求,是对象之间产生相互作用的方式。消息包含一些参数,在程序执行时,参数值可以由消息的发送者发送给接收者,也可以通过接收者返回给发送者,因此在测试时,需要考虑在消息处理前和处理后,传递的参数能否被修改,对象的状态是否正确。7.接口接口是行为声明的集合,由一些规范构成,这些规范定义了类的一套完成的公共行为。接口不是孤立的,它与类和其他接口有一定的关系。因此,在测试时,需要考虑接口包含的行为与类的行为是否相符。Yourcompanyslogan5.1.2面向对象的开发方法传统的面向过程的开发方法是以过程为中心,以算法为驱动,因此,面向过程的编程语言是程序=算法+数据;面向对象的开发方法是以对象为中心,以消息为驱动,因此,面向对象的编程语言是程序=对象+消息。下面将对传统开发方法开发的软件存在的问题做出讨论Yourcompanyslogan1.软件的重用性重用性是指同一事物不经修改或稍加修改就可多次重复使用的性质。软件的重用可以很大程度上缩短软件的开发周期,减少软件开发人员的工作量,因此,软件的重用性是软件工程追求的目标之一。在这一方面,传统的面向过程的开发方法开发的软件,其重用性很差,模块与模块之间均是强耦合性,很难拆分和扩展。2.软件的可维护性在软件的开发过程中,软件的可读性、可修改性和可测试性是软件的重要指标。由于传统的面向过程的开发方法开发的软件,各功能模块均是强耦合性,如果修改了其中一个模块的算法或参数,会导致其他的模块功能瘫痪,也就是说传统方法开发出来的软件可修改性很差,这就直接导致了软件的维护费用和成本很高。Yourcompanyslogan3.软件的稳定性软件的稳定性主要表现在是否能满足客户的需求上,如果能满足客户的需求,软件的结构就不需要更改,软件就比较稳定;反之,如果不能满足客户的需求,软件的结构就需要发生较大的变化,软件就不稳定。而传统的开发方法是基于过程来设计的,客户的需求则是针对功能的,一旦功能的需求发生了变化,对传统方法的设计就是灾难性的。造成这些问题的原因,还是由于软件传统开发方法自身的缺陷,因而才导致了面向对象开发方法的出现和广泛使用。目前,面向对象开发方法的研究已日趋成熟,包括了:Booch法、Coad法和OMT法。同时在1995~1997年,软件工程领域取得了前所未有的进展,就是UML统一建模语言的出现。该语言统一了Booch法、Coad法和OMT法的表示方法,进而建立了被大众接受的标准建模语言。Yourcompanyslogan面向对象的软件开发可分为面向对象的分析(ObjectOrientedAnalysis,OOA)、面向对象的设计(ObjectOrientedDesign,OOD)和面向对象的编程(ObjectOrientedProgamming,OOP)三部分,后面将对这些模型、分析和设计进行讨论。Yourcompanyslogan1.面向对象的分析面向对象的分析(ObjectOrientedAnalysis,OOA),是采用面向对象思路进行需求分析建模的工程。也就是以需求分析为基础,来选择对象和类的过程。分析的步骤包括以下几点。(1)获取功能需求这一步骤的主要工作是确定系统软件的参与者(actor),这些参与者代表了使用该系统软件的不同角色。然后根据参与者,确定系统软件所需要的主要功能。(2)根据功能和参与者确定系统的类和对象在面向对象的开发中,系统功能的实现都是通过对对象的操作来完成的,而对象是通过类实例化以后得到的,因此,在获得功能需求以后,首先要考虑的就是需要定义哪些类,才能满足系统的功能需求5.1.3面向对象的分析和设计Yourcompanyslogan(3)确定类的结构层次、属性和方法每个类都具有自己的独有的属性和方法,正是这些属性和方法帮助我们实现系统的功能(4)建造对象模型在一个系统的开发中,涉及的类和对象很多,建立对象模型就是为这些对象建立联系,包括关系模型和行为模型。关系模型描述的是类与类之间的静态联系,有关联、泛化、依赖、实现等;行为模型描述的是类与类之间的动态联系,指明系统如何响应外部的事件或激励。总的来说,面向对象分析的关键是识别出系统功能中的对象,并分析它们之间的关系,最终建立起简洁、精确、可理解的正确模型。Yourcompanyslogan面向对象分析的主要原则如下。(1)抽象这一原则包括过程抽象和数据抽象,其中数据抽象是OOA的核心原则。它强调把数据(属性)和操作(服务)结合为一个不可分的整体(对象)。(2)封装这一原则的要求是尽可能地隐蔽对象的内部细节。(3)继承这一原则的要求是在每个由一般类和特殊类形成的一般—特殊结构中,把一般类的对象实例和所有特殊类的对象实例都共同具有的属性和服务,一次性地再一般类中进行定义。(4)分类这一原则的要求是把具有相同属性和服务的对象划分为一类,用类作为这些对象的抽象描述。(5)聚合这一原则的要求是把一个复杂事物堪称若干比较简单的事物的组成体,从而简化对复杂事物的描述。Yourcompanyslogan(6)关联这一原则的要求是将各个对象联系起来(7)消息通信这一原则的要求是对象之间只能通过消息进行通信,而不允许在对象之外直接地存取对象内部的属性。(8)粒度控制这一原则的要求是在考虑系统全局时,注意其大的组成部分,暂时不详察每一部分的具体细节,而后在考虑某部分的细节的时候,暂时撇开其余的部分。(9)行为分析这一原则的要求分析出由大量的事物所构成的问题域中各行为的依赖、交织情况。Yourcompanyslogan2.面向对象的设计面向对象的设计(ObjectOrientedDesign,OOD),是根据OOA中确定的类和对象,设计软件系统,以作为OOP的基础。整个设计过程分为系统设计和对象设计。系统设计过程包括:(1)系统分解该步骤是对面向对象分析所得出的需求模型进行补充或修改的过程。(2)确定并发性并发性是指对象之间不存在交互,或者它们同时接受事件,那么我们称这些对象是并发的。分析模型、现实世界及硬件中不少对象均是并发的,因此该步骤就是要确定哪些对象是并发性的。Yourcompanyslogan(3)设计人机交互子系统该步骤是对系统的人机子系统进行详细设计,以确定人机交互的细节,其中包括指定窗口和报表的形式、设计命令层次等项内容。设计人机交互界面的准则是:一致性、减少操作步骤、及时反馈信息、提供撤销命令、无须记忆、易学和富有吸引力。这也是我们软件测试中需要测试的一部分。(4)设计任务管理子系统常见的任务有事件驱动型任务、时钟驱动型任务、优先任务、关键任务和协调任务等,该步骤就是要确定各类任务并把任务分配给相应的硬件或软件去执行。Yourcompanyslogan(5)设计数据管理子系统数据管理子系统是系统存储或检索对象的基本设施,它包括选择:①数据存储管理模式数据存储管理模式有三种:文件管理系统、关系数据库管理系统和面向对象数据管理系统。每个管理模式都有不同的特点和适用范围。选择哪种数据管理存储管理模式,是这一步的要求。②设计数据管理子系统该步骤是设计数据的格式和相应的服务。设计数据格式包括定义类的属性表,以及定义所需要的文件和数据库;设计相应的服务是指设计存储数据的方式。Yourcompanyslogan面向对象的设计,其核心就是对类的设计。该如何设计类,应该遵循相应的设计原则:(1)单一职责原则一个类只能负责一个职责,其他的职责由其他的类完成,每个类通过协调完成工作。(2)开闭原则在面向对象的开发中,要求软件的实体(类、模块、函数)应该是可扩展而不可修改的。这样设计时可保证软件的可重用性、可维护性以及灵活性。(3)替换原则子类应该能够替换父类,也就是说,一个类必须具备另一个类相应的属性和方法,这两个类才能定义为子类和父类的关系。Yourcompanyslogan(4)依赖倒置原则细节依赖于接口,而接口不能依赖于细节,也就是说,具体的实现类应该依赖于抽象接口类,抽象接口类不依赖于具体实现类。(5)接口分离原则采用多个与特定客户类有关的接口比采用一个通用的涵盖多个业务方法的接口要好。也就是说,在对接口设计的时候,不能对某一接口设计过多的业务,而应该遵循单一职责原则,利用继承特性来设计接口。Yourcompanyslogan模型是对实体的特征和变化规律的一种表示或抽象,即把对象实体通过适当的过滤,用适当的表现规则描绘出的模仿品。在面向对象的开发中,面向对象有三种常用模型,对象模型、动态模型和功能模型。5.1.4面向对象模型Yourcompanyslogan1.对象模型对象模型表示了静态的、结构化的系统数据性质,描述了系统的静态结构,它是从客观世界实体的对象关系角度来描述,表现了对象的相互关系。在该模型中包括以下几个方面的元素。(1)对象和类对象建模的目的就是描述对象和类,因此在该模型中,需要对对象的属性、操作和方法进行建模。属性是对象的数值;操作是类中对象所使用的一种功能或变换;方法是类的操作的实现步骤。Yourcompanyslogan(2)关联和链在面向对象的设计中,为了遵循单一职责原则,一个完成软件会包含很多的类,关联正是建立类之间联系的手段,而链则是建立对象之间联系的手段。因此关联是链的抽象,链是关联的实例。关联具有多重性,可以描述为“一对多”或“多对一”。(3)类的层次结构在类的层次结构中,包含两种关系、聚集关系和一般关系。聚集是一种“整体-部分”关系。在这种关系中,有整体类和部分类之分。聚集最重要的性质是传递性,也具有逆对称性。一般化关系是在保留对象差异的同时共享对象相似性的一种高度抽象方式。它是“一般—具体”的关系。一般化类称为父类,具体类又能称为子类,各子类继承了父类的性质,而各子类的一些共同性质和操作又归纳到父类中。Yourcompanyslogan2.动态模型动态模型是与时间和变化有关的系统性质。该模型描述了系统的控制结构,它表示了瞬间的、行为化的
本文标题:第5章面向对象软件的测试.
链接地址:https://www.777doc.com/doc-2110711 .html