软件测试第5章面向对象软件的测试

上传人:宝路 文档编号:48725052 上传时间:2018-07-20 格式:PPT 页数:56 大小:5.69MB
返回 下载 相关 举报
软件测试第5章面向对象软件的测试_第1页
第1页 / 共56页
软件测试第5章面向对象软件的测试_第2页
第2页 / 共56页
软件测试第5章面向对象软件的测试_第3页
第3页 / 共56页
软件测试第5章面向对象软件的测试_第4页
第4页 / 共56页
软件测试第5章面向对象软件的测试_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《软件测试第5章面向对象软件的测试》由会员分享,可在线阅读,更多相关《软件测试第5章面向对象软件的测试(56页珍藏版)》请在金锄头文库上搜索。

1、软软 件件 测测 试试 教教 程程第第5 5章章 面向对象软件的测试面向对象软件的测试 教授内容教授内容面向对象的测试概述5.15.1面向对对象的单单元测试测试5.25.2面向对对象的集成测试测试和系统测试统测试5.35.35.1 5.1 面向面向对对对对象的象的测试概测试概测试概测试概 述述1对象对象是一个可操作的实体,是由特定的数据(属性)和操 作封装在一起的整体,对象之间通过消息机制相互发生作用 。对象是测试的最直接目标,对象是否符合需求说明、对象 与对象之间是否能进行协同工作,是我们测试的焦点。程序运行时,每个对象都将历经创建、访问、修改和删除4 个过程,这4个过程称为对象的生命周期。

2、针对对象进行测试 ,应从多方面测试对象的状态是否与其生命周期相符。5.1.1 面向对象的基本概念2类类是具有相同或相似性质的对象的抽象集合。因此,对 象的抽象就是类,类的具体化就是对象,也可以说类的实例 是对象。类通过构造函数来创造新的对象,并对新的对象进 行初始化,因此在对类进行测试时,需要考虑对象初始化过 程是否正确。 3封装封装就是把对象的属性和方法结合成一个整体,尽可能 掩盖其内部的细节。封装后的对象,只能知道输入和输出, 无法了解内部的操作过程,也无法真正了解内部数据的真实 状态。这一特征简化了对对象的使用,同时也给测试带来了 难度。4继承继承是类之间的一种联系,类可以通过派生生成新

3、类, 派生出的新类称为子类。通过继承机制,子类可以继承父类 的特点和功能,同时还可以具有自己独有的特点和功能。这 一特征为缺陷的扩散提供了途径,如果父类带有缺陷,派生 出的子类也会带有缺陷,这会对后面的开发带来隐患。 5多态多态提供了将对象堪称是一种或多种类型的能力。多态 包含几种不同的形式,参数多态、包含多态和过载多态。参 数多态是能够根据一个或多个参数来定义一种类型的能力; 包含多态是同一个类具有不同表现形式的一种现象,这一特 征使得参数具有对象替换的能力。多态性增强了软件的灵活 性和重用性,同时也使得测试的工作量成倍增加。学生姓名 年龄 研究生导师 研究方向 本科生班级 专业 人员姓名

4、年龄 研究生导师 研究方向 职工部门 职务 在职研究生 运输工具轮船车辆飞机卡车轿车继承:多继承:继承层次:6消息消息是对象的操作将要执行的请求,是对象之间产生相 互作用的方式。消息包含一些参数,在程序执行时,参数值 可以由消息的发送者发送给接收者,也可以通过接收者返回 给发送者,因此在测试时,需要考虑在消息处理前和处理后 ,传递的参数能否被修改,对象的状态是否正确。 7接口接口是行为声明的集合,由一些规范构成,这些规范定 义了类的一套完成的公共行为。接口不是孤立的,它与类和 其他接口有一定的关系。因此,在测试时,需要考虑接口包 含的行为与类的行为是否相符。5.1.2 5.1.2 面向面向对对

5、对对象的象的开发开发开发开发 方法方法传统的面向过程的开发方法是以过程为中心, 以算法为驱动,因此,面向过程的编程语言是程序= 算法 + 数据;面向对象的开发方法是以对象为 中心,以消息为驱动,因此,面向对象的编程语言 是程序 = 对象 + 消息。下面将对传统开发方法开 发的软件存在的问题做出讨论 1软件的重用性重用性是指同一事物不经修改或稍加修改就可多次重复 使用的性质。传统的面向过程方法所开发的软件,其重用性 很差,模块与模块之间均是强耦合性,很难拆分和扩展。 2软件的可维护性在软件的开发过程中,软件的可读性、可修改性和可测 试性是软件的重要指标。由于传统的面向过程的开发方法开 发的软件,

6、各功能模块均是强耦合性,如果修改了其中一个 模块的算法或参数,会导致其他的模块功能瘫痪,也就是说 传统方法开发出来的软件可修改性很差,这就直接导致了软 件的维护费用和成本很高。3软件的稳定性软件的稳定性主要表现在是否能满足客户的需求上,如 果能满足客户的需求,软件的结构就不需要更改,软件就比 较稳定;反之,如果不能满足客户的需求,软件的结构就需 要发生较大的变化,软件就不稳定。而传统的开发方法是基 于过程来设计的,客户的需求则是针对功能的,一旦功能的 需求发生了变化,对传统方法的设计就是灾难性的。面向对象的软件开发可分为面向对象的分析 (Object Oriented Analysis,OOA

7、)、面 向对象的设计(Object Oriented Design,OOD)和面向对象的编程(Object Oriented Progamming,OOP)三部分,后 面将对这些分析和设计、模型进行讨论。1面向对象的分析面向对象的分析是采用面向对象思路进行需求分析建 模的工程,也就是以需求分析为基础,来选择对象和类的过 程。分析的步骤包括以下几点: (1)获取功能需求 (2)根据功能需求确定系统的类和对象 (3)确定类的结构层次、属性和方法 (4)建造对象模型:为对象建立联系总的来说,面向对象分析的关键是识别出系统功能中的 对象,并分析它们之间的关系,最终建立起简洁、精确、可 理解的正确模型。

8、5.1.3 5.1.3 面向对象的分析和设计面向对象的分析和设计面向对象分析的主要原则如下:(1)抽象:数据抽象(2)封装(3)继承:共同具有的属性和服务(4)分类:用类作为对象的抽象描述。(5)聚合(6)关联:将各个对象联系起来(7)消息通信:对象之间只能通过消息进行通信(8)粒度控制(9)行为分析:各行为的依赖、交织情况。2面向对象的设计面向对象的设计(Object Oriented Design,OOD),是根 据OOA中确定的类和对象,设计软件系统,以作为OOP的 基础。整个设计过程分为系统设计和对象设计。 系统设计过程包括: (1)系统分解:需求模型的补充或修改 (2)确定并发性:确

9、定哪些对象是并发的(3)设计人机交互子系统:准则 (4)设计任务管理子系统:要确定各类任务并把任务分配给 相应的硬件或软件去执行。 (5)设计数据管理子系统面向对象的设计,其核心就是对类的设计。该如何设计 类,应该遵循相应的设计原则: (1)单一职责原则 (2)开闭原则 (3)替换原则 (4)依赖倒置原则 (5)接口分离原则模型是对实体的特征和变化规律的一种表示或抽象, 有三种常用模型,对象模型、动态模型和功能模型:功能 模型指出发生了什么,动态模型确定什么时候发生,而对 象模型确定发生的客体。 1对象模型对象模型表示静态的、结构化的系统数据性质,描述 系统的静态结构,表现对象的相互关系。在该

10、模型中包括 以下几个方面的元素: (1)对象和类 (2)关联和链:关联是链的抽象,链是关联的实例。 (3)类的层次结构:聚集是一种“整体部分”关系;一 般是“一般具体”的关系。5.1.4 5.1.4 面向对象模型面向对象模型图 描绘教材结构的聚集树图 一家公司的对象模型图 与上图对应的ER图2动态模型动态模型是与时间和变化有关的系统性质。该模型描 述系统的控制结构,表示瞬间的、行为化的系统控制。 该模型描述的系统属性是触发事件、事件序列、状态、 事件与状态的组织。该模型包括以下几个方面的元素: (1)事件:指定时刻发生的某件事。 (2)状态:是对象属性值的抽象,指明对象对输入事件 的响应。 (

11、3)状态图:反映状态与事件的关系。3功能模型功能模型表明如何从输入值得到输出值,由多张数据流 图组成。数据流图表示从源对象到目标对象的数据值的流向 ,包含以下几个元素: (1)处理:用来改变数据值 (2)数据流:将对象的输出与处理、处理与对象的输入、 处理与处理联系起来。 (3)动作对象:通过生成或者使用数据值来驱动数据流图 。 (4)数据存储对象:它用来存储数据用户读入 输入账目完成 服务现金卡卡号及密码产生 输出这三种模型分别从三个不同的方面对所要开发的系统 进行了描述,功能模型指明了系统应该“做什么”;动态模 型明确规定了什么时候(即在何种状态下)接受了什么事 件的触发;对象模型则定义了

12、做事情的实体。因此在面向 对象方法学中,对象模型是最基本最重要的,它为其他两 种模型奠定了基础。我们依靠对象模型完成三种模型的集 成。 面向对象程序的基本构成单元是类,所以面向对象的测 试就是对类的测试。从面向对象的结构层次出发,可将面向 对象测试分为三个层次:类测试、集成测试和系统测试 。 (1)类测试类测试 策略类测试类测试 主要进进行结构测试结构测试 和功能测试测试 ,包括三个个部分: 基于服务务的测试测试 基于状态状态 的测试测试 基于响应状态响应状态 的测试测试5.1.5 面向对对象软软件的测试测试 策略(2)集成测试策略 将在类测试中通过的单个类,以一定的规则组装起来,进行 整体功

13、能的测试。集成测试步骤应包含以下内容: 按照设计阶段的说明画出对象图; 开发端口输入事件所驱动的类; 开发与主类直接相关的类; 将与主类直接相关联的类集成; 对新集成的模块进行测试; 从未集成的模块中选一个新类作为下一步的集成类。 (3)系统集成策略:以软件的实际功能需求为依据,对整 个软件系统进行全方面测试。5.1.6 5.1.6 面向对象的测试模型面向对象的测试模型面向对象的软件测试分为:面向对象分析的测试(OOAT)、面向 对象设计的测试(OODT)、面向对象编程的测试(OOPT)。(1)面向对象分析的测试面向对象分析阶段的主要工作是需求分析和对类、对象 和对结构的设计,在确定需求分析以

14、后,会形成面向对象 的分析文档,因此,该阶段的测试主要是针对文档的测试 ,其考虑的方面包括: 对认定的对象的测试; 对认定的结构的测试; 对认定的主题的测试; 对定义的属性和实例关联的测试; 对定义的服务和消息关联的测试。(2)面向对象设计的测试面向对象设计阶段的主要工作是对面向对象分析阶段归纳 出的类和结构进行详细的设计,从而构造成类库,实现分析 结果对问题空间的抽象。由此可见,面向对象设计是对面向 对象分析的进一步细化和更高层的抽象。在设计完成以后, 同样会形成面向对象的设计文档。因此,该阶段的测试同样 是针对文档的测试,其考虑的方面包括: 对认定的类的测试; 对构造的类层次结构的测试;

15、对类库的支持的测试。(3)面向对象编程的测试面向对象程序是通过对类的操作来实现软件功能的。更 确切地说,是能正确实现功能的类,通过消息传递来协同 实现设计要求。因此,在面向对象编程的测试中,需要我 们忽略类功能实现的细则,将测试的目光集中在类功能的 实现和相应的面向对象程序风格上,其考虑的方面包括: 数据成员是否满足数据封装的要求; 类是否实现了要求的功能。5.25.2面向对象的单元测试面向对象的单元测试5.2.1 基于服务的类测试技术基于服务的类测试主要考察封装在类中的一个方法对数 据进行的操作。它可以采用传统的黑白盒测试方法,如:基 路径法、插桩法、边界值法、排错法、等价类法等。但为克 服

16、软件测试的盲目性和局限性,保证测试的质量,提高软件 的可靠性,我们提出采用Kung提出的块分支图法。 1基于服务的类测试策略Class 类名 结果类型 服务(参数1,参数2,参数3,参数4,参数n)if(条件1)return 结果1;if(条件2)return 结果2;.else if(条件n)return 结果n;elsereturn 结果n+1; 2测试实例一设计一个类Rectangle,要求如下:(1)类中的私有变量存放Rectangle的长和宽,并且 设置它们的默认值为1;(2)通过成员函数设置其长和宽,并确保长和宽都在 (0,50)范围之内;(3)求周长Perimeter。class Rectangle public:Rectangle(float w=1, float h=1) Set(w,h); void Set(float w, float h)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号