第四部分 面向对象方法学-面向对象测试

合集下载

面向对象的实验报告

面向对象的实验报告

一、实验目的1. 理解面向对象编程的基本概念,如类、对象、继承、封装、多态等。

2. 掌握面向对象编程的基本语法和常用操作。

3. 通过实验加深对面向对象编程的理解和应用。

二、实验环境1. 操作系统:Windows 102. 开发工具:Visual Studio 20193. 编程语言:C#三、实验内容1. 定义一个简单的类,并创建对象实例。

2. 在类中定义属性和方法,并演示其使用。

3. 使用继承实现类的扩展。

4. 使用封装保护类的内部数据。

5. 使用多态演示不同对象间的动态类型转换。

四、实验步骤1. 定义一个名为“Person”的类,包含以下属性和方法:- 属性:姓名(Name)、年龄(Age)、性别(Gender)- 方法:打印个人信息(PrintInfo)2. 创建“Person”类的对象实例,并演示属性和方法的使用。

3. 定义一个名为“Student”的类,继承自“Person”类,并添加以下属性和方法: - 属性:学号(StudentID)- 方法:打印学生信息(PrintStudentInfo)4. 创建“Student”类的对象实例,并演示属性和方法的使用。

5. 定义一个名为“Employee”的类,继承自“Person”类,并添加以下属性和方法:- 属性:工号(EmployeeID)、职位(Position)- 方法:打印员工信息(PrintEmployeeInfo)6. 创建“Employee”类的对象实例,并演示属性和方法的使用。

7. 定义一个名为“Manager”的类,继承自“Employee”类,并添加以下属性和方法:- 属性:部门(Department)- 方法:打印经理信息(PrintManagerInfo)8. 创建“Manager”类的对象实例,并演示属性和方法的使用。

9. 使用多态演示不同对象间的动态类型转换。

五、实验结果与分析1. 创建“Person”类和对象实例,并演示属性和方法的使用。

2020年智慧树知道网课《面向对象与UML(山东联盟)》课后章节测试满分答案

2020年智慧树知道网课《面向对象与UML(山东联盟)》课后章节测试满分答案

绪论单元测试1【判断题】(20分)UML是面向对象的软件建模语言,可应用到软件开发全过程。

A.对B.错2【判断题】(20分)面向对象是当今主流的软件开发思想。

()A.对B.错3【多选题】(20分)下列哪些工具可以用来进行UML建模?()A.MicrosoftOfficeVisioB.EnterpriseArchitect(EA)C.RationalRoseD.StarUML4【多选题】(20分)我们要从本课程中学到哪些知识?()A.面向对象的基础知识B.UML软件建模C.面向对象的设计原则D.面向对象编程语言5【多选题】(3分)平时分析问题,总要获取哪些方面的信息?()A.事物之间的关系是什么?B.事物的特征和行为是什么?C.问题中涉及哪些事物?D.事物之间如何协作完成任务?第一章测试1【多选题】(20分)以下对软件建模描述正确的是()A.每个模型可以有多种表达方式,从不同角度来刻画系统。

B.描述同一个系统的多个模型只能相对孤立,不能完全孤立,完全孤立的模型是不完整的C.要正确建模,模型必须准确反映软件系统的真实情况。

D.越庞大复杂的系统,建模的重要性越大。

E.模型是对现实世界的简化,但不能掩盖重要的细节。

2【单选题】(20分)模型的实质是什么?()A.对现实的复杂化B.对现实的简化C.便于交流D.可视化3【单选题】(20分)对软件模型而言,下面说法的是()A.是软件的标准文档B.是软件的中间形态C.是人员交流的媒介D.是软件升级和维护的依据4【单选题】(20分)以下关于模型的说法的是()A.一个好的模型包括那些有广泛影响的主要元素,而忽略那些与给定的抽象水平不相关的次要元素。

B.模型必须是可视化的。

C.通过建模可以帮助人们理解复杂的问题。

D.模型是对现实的简化。

5【单选题】(20分)以下哪一个选项不能当做模型?()A.交通地图B.地球仪C.电路设计图D.灭火器第二章测试1【单选题】(20分)在下面所述中,关于UML的说法不正确的是()A.UML不是过程也不是方法,但允许每一种过程和方法使用它。

面向对象的软件测试技术

面向对象的软件测试技术



obet o i tdS f r et gT c n lg jc- r n e ot eT si eh oo y e wa n
MaD njn o gu ( s tt o o ue c n ea dT c n l yS a d n nv ri f e h o g ,io 2 5 4 , hn ) I tu f mp t r i c n e h oo ,h n o g U i s y c n l yZb 5 0 9C i n i e C S e g e to T o a
计 算机 光盘 软件 与应用
21 0 0年第 l 2期 Cm u e DS f w r n p l c to s o p t rC o t a eadA p a n i i 软 件 设 计 开发
面向对象的软件测试技术
马 东君
( 东理 工大学计算机 学院 ,山 东淄博 山
2 54 ) 50 9
面 向对 象方法 概述 2 0世纪 6 0年 代后期 出现 的面 向对象 编程语 言 Sm l一 7中 iu a6 首 次引入 了类和对 象 的概念 , 自 2 世 纪 8 0 0年代 中期 起 ,逐步形 成 了面 向对象方 法学 ,现在 ,面 向对 象技 术 已经 成 为最好 的软件 开 发技术 。 面 向对 象方 法是一 种把 面 向对 象 的思想 应用 于软件 开发 过程 中, 指导 开发 活动 的系统方 法 , 简称 O O方法 。 是建立 在 “ 它 对象 ” 概 念基础 上的方法 学 。 象是 由数据 和容许 的操 作组成 的封 装体 , 对 与 客观实 体有 直接对应 关 系 ,一 个对 象类 定义 了具有 相似 性质 的 组对象 。所谓 面 向对 象就 是基 于对 象概念 , 以对象 为 中心, 以 类 和继承 为构造 机制 ,来认 识 、理解 、刻 画客观 世界 和设计 、构 建 相应 的软件系 统 。 二 、面 向对 象技术 的特 点对测 试 的影 响 面 向对 象 的测试在 许 多方面 要借 鉴传统 软件 测试 方法 中可适 用 部分 ,并 且在 软件 开发 的具体 实践 中,也 经常 混合 使用面 向对

第四章_面向对象技术

第四章_面向对象技术

4. 具有良好的可重用性
由于对象所具有的封装性和信息隐蔽,具有很强的 独立性。
4.1.2 面向对象的概念
理解面向对象的基本概念对于学习和掌握面向 对象的开发方法是十分重要的。 对象(Object)
类(Class)
继承(Inheritance) 消息(Information) 多态性(Polymorphism) 永久对象(Persistent object)
4.3 面向对象的分析
面向对象分析OOA(Object-Oriented Analysis)的 目标是完成对所求解问题的分析,确定系统“作什 么”,并建立系统的模型。 基本概念: 问题域(problem domain) — 被开发系统的应用领域。 系统责任(system responsibilities) — 所开发的系统应 具备的职能。 OOA的基本任务 运用面向对象的方法,对问题域和系统责任进行 分析和理解,找出描述它们的类和对象,定义其属 性和操作,及其结构、静态联系和动态联系。
4.3.1 OOA的分析过程
获取用户基本需求 标识类和对象
定义类的结构和层次 表示类(对象)间的关系
为对象行为建模
图4.7 OOA分析过程
4.3.2 OOA模型
基本模型 (类图)
交 对象层 主
互 特征层
图 关系层 详 细 说 明 图4.8 OOA模型与详细说明 基本模型是一个类图(class diagram), 是以直观的方式表达系统最重要的 信息。OOA基本模型的三个层次分 别描述了:系统中应设哪几类对象, 每类对象的内部构成,对象与外部 的关系。
4.4.1 OOD基本任务
1. 系统设计 将分析模型划分为若干子系统,子系统应该具有 良好的接口,子系统内的类相互协作。标识问题本身 的并发性,为子系统分配处理器。

实用软件工程课后题答案

实用软件工程课后题答案

第一章:软件工程的内容与方法本章提示:软件工程的内容与方法这一章,特别重要。

首先,因为你学习了软件工程,最后连它的主要内容及方法都说不清楚,实在对不起自己。

其次,因为这一章是原书最重要的一章,它概括了全书的基本论点与论据,而这些论点与论据是作者对软件工程的新贡献。

下面是本章的习题解答:1.开发文档都有哪些?用图来表示它们之间的关系。

开发文档包括《目标程序》、《源程序》、《详细设计说明书》、《概要设计说明书》、《需求规格说明书》、《用户需求报告》、《软件合同》,它们之间的关系可以如图8-1所示。

图 8-1 开发文档之间的关系2.说明软件工程研究的内容。

软件工程研究的内容包括软件开发方法、软件开发模型、软件支持过程和软件管理过程。

其中软件开发方法的内容又涵盖市场调研、正式立项、需求分析、项目策划、概要设计、详细设计、编程、测试、试运行、产品发布、用户培训、产品复制、销售、实施、系统维护、版本升级。

常用的软件开发模型有瀑布模型、迭代模型、增量模型和原型模型。

软件支持过程由所支持的CASE工具组成,常用的CASE工具有PowerDesigner和Rational Rose。

软件管理过程主要有CMMI、ISO9000、微软企业文化和敏捷文化现象。

3.请读者详细解释软件的定义和程序的定义。

软件的定义:软件 = 程序 + 数据 + 文档。

这里的程序是指程序系统。

这里的数据不仅包括初始化数据、测试数据,而且包括研发数据、运行数据、维护数据,也包括软件企业积累的项目工程数据和项目管理数据中的大量决策原始记录数据。

这里的文档指的是软件开发过程中的分析、设计、实现、测试、维护文档、管理文档。

现在有一种新提法正在引起关注,这种提法是:软件 = 知识 + 程序 + 数据 + 文档。

程序是计算机为完成特定任务而执行的指令的有序集合。

从应用的角度可理解为:面向过程的程序 = 算法 + 数据结构面向对象的程序 = 对象 + 信息面向构件的程序 = 构件 + 构架。

面向对象的软件测试技术综述

面向对象的软件测试技术综述

面向对象的软件测试技术综述随着软件应用范围的不断扩大,软件测试的技术手段也不断进步。

面向对象的软件开发思想逐渐被广泛采用,因此,面向对象的软件测试技术也应运而生。

本文将综述面向对象的软件测试技术。

一、面向对象软件测试的概念面向对象的软件测试是针对采用面向对象开发思想的软件进行的测试。

与传统的结构化软件测试相比,面向对象软件测试更加注重对软件内部各个部分之间的关系的测试,并且更加关注软件的继承、重载、多态等特性的测试。

二、面向对象软件测试的方法1. 黑盒测试方法对于面向对象的软件测试中的黑盒测试方法,测试人员仅考虑输入与输出,而不关心系统内部的具体实现。

黑盒测试方法可以通过参照生成测试用例的过程,来完成对程序的测试覆盖。

2. 白盒测试方法白盒测试方法则针对系统内部的具体实现进行测试。

它主要通过静态和动态两种方式进行测试,其中静态分析主要是通过代码分析或模型检查等方式,而动态分析则通过运行测试用例,观察程序执行流程和变量变化等方式进行测试。

3. 增量式测试方法对于大型的面向对象软件开发,其测试过程可能需要相当长的时间,增量式测试方法就可以有效缩短测试时间。

增量式测试方法是指将整个系统分成几个部分,然后逐渐增加到完整的系统环境。

这不仅能够逐步发现bug,还能够及时修复,并能逐步提高测试用例的质量。

三、面向对象软件测试的技术手段1. 测试驱动开发(TDD)测试驱动开发是一种基于测试驱动的软件开发方法,它强调在实现代码之前,先编写测试程序,以确保所编写的代码能够满足测试需要。

TDD可以提高测试的自动化程度,逐步提高测试用例的品质,并减少未发现的bug出现次数。

2. 自动化测试自动化测试是一种通过编写脚本和使用自动化测试工具来执行测试用例和比较结果的测试方法。

自动化测试可以将部分测试自动化,减轻测试压力,消除人为测试误差,并且提高测试的效率和准确度。

3. 模拟测试人工模拟测试是一种指人员通过编制人工操作流程,在应用程序的界面进行手动测试的方法,而计算机模拟测试是一种通过编写程序模拟系统功能和用户操作的测试方法,在这种测试方法中,测试人员可以对系统进行多次重复测试,大大提高了测试的效率。

java基础编程 第四章 面向对象(下) 案例

案例4-1 super访问父类成员变量一、案例描述1、考核知识点编号:029004003名称:super关键字2、练习目标➢掌握使用super关键字访问父类成员变量的方法3、需求分析子类可以继承父类的非私有成员变量,如果在子类中修改了继承自父类的成员变量的值,再想要访问父类的该成员变量时,可以通过super.成员变量来实现。

为了让初学者熟悉super关键字的用法,本案例将分别设计Fu类及其子类Zi,并在Zi类的方法中使用super关键字访问Fu类的成员变量。

4、设计思路(实现原理)1)编写一个Fu类,在类中定义无参构造和一个初始值为20的num成员变量。

2)Zi类继承Fu类,在子类中对num值进行了修改,同时在子类中定义无参构造和一个无返回值的method()方法,method()方法中使用super关键字调用了Fu类的num成员变量。

3)定义测试类Example03。

二、案例实现1、编写Fu类及其子类Zi,在Zi类中使用super关键字调用Fu类成员变量,代码如下class Fu {Fu() {}int num = 20;}class Zi extends Fu {Zi() {}int num = 30;// 修改num的值void method() {System.out.println("method");// super关键字调用父类成员变量System.out.println("Fu类中num值为:" + super.num);System.out.println("Zi类中num值为:" + num);}}2、定义测试类Example03,代码如下:class Example03{public static void main(String[] args) {Zi z = new Zi();z.method();}}运行结果如图4-3所示。

面向对象测试技术详解

面向对象测试技术详解面向对象测试技术是软件测试中的一种重要方法,它基于面向对象的编程思想,通过对软件系统的对象进行测试,来保证系统的质量和可靠性。

本文将详细介绍面向对象测试技术的原理和方法,以及在实际项目中的应用。

一、面向对象测试技术概述面向对象测试技术是一种针对面向对象软件的测试方法,在传统测试技术的基础上进行了扩展和优化。

它以对象为单位进行测试,通过模拟对象的行为和交互,来验证软件系统的功能和性能。

面向对象测试技术主要包括以下几个方面:1. 单元测试:针对软件系统的最小单元进行测试,即类或对象的方法和属性。

通过构造合适的测试用例,来验证单元的正确性和稳定性。

2. 集成测试:将各个单元进行组合和协作,测试它们之间的接口和交互。

目的是检测集成后的系统是否符合预期的功能和性能要求。

3. 系统测试:对整个软件系统进行测试,验证系统在不同环境下的稳定性和可用性。

主要关注系统的功能、性能、兼容性等方面。

4. 验收测试:由用户或客户进行的测试,用来验证软件系统是否满足用户需求和要求。

二、面向对象测试技术的原理面向对象测试技术的原理主要包括以下几个方面:1. 继承和多态:通过继承和多态的特性,可以构造多个对象,并且使用相同的测试用例进行测试。

这样可以提高测试效率和覆盖率,减少测试工作的重复性。

2. 封装和封装测试:封装是面向对象编程的基本原则之一,也适用于测试。

通过封装测试的方式,可以隐藏对象的内部实现细节,只暴露出外部接口和行为。

这样可以保持测试的独立性和可维护性。

3. 测试驱动开发:测试驱动开发是一种先写测试用例,再写代码的开发方式。

它可以帮助开发人员更早地发现和解决问题,提高软件的质量和稳定性。

三、面向对象测试技术的方法面向对象测试技术有多种方法,下面介绍几种常用的方法:1. 白盒测试:白盒测试是一种基于代码分析的测试方法,通过查看代码的内部结构和逻辑,来设计和执行测试用例。

它主要关注程序的覆盖度和执行路径,以发现潜在的错误和缺陷。

面向对象方法学


小结
传统的生命周期方法学的缺点 面向对象方法的四个要点 面向对象方法的主要优点 面向对象的基本要素 面向对象的分析

面向对象方法中问题空间和解空间的映 射关系
面向对象方法尽可能模拟客观世界,它把数据以及在 这些数据上的操作所构成的统一体称为"对象". 对象是进行处理的主体.
必须发消息请求对象执行它的某些操作,处理它的私有数 据,而不能从外界直接对它的私有数据进行操作.
这样,软件开发者可以根据问题空间的结构,定义或 选取解空间对象,然后用一系列离散的解空间对象的 集合组成软件系统.
软件危机
原因
早期的软件开发工作主要花费在编程实现阶段,采用的是 个体的小作坊开发模式. 随着计算机应用领域的不断扩大和应用层次的不断加深, 使得:软件的规模不断扩大,软件的复杂度不断提高
表现:早期的软件开发模式难以驾驭软件开发过 程,出现了"软件危机":
软件生产率急剧下降,供不应求 程序的正确性难以保证 开发出的软件难以维护.
系统很多代码是和用户界面相关的,而面向对象方 法是处理这种用户界面的系统一种优于传统面向过 程的方法;
OOA是在信息模型(实体关系图和语义数据模 型)和面向对象程序设计语言两者的最好概念 上建立的.
来自信息模型:属性,关系,结构和代表问题空间 事物的若干实例的对象表示. 来自面向对象程序设计语言:属性和服务的封装, 分类,继承.
面向对象方法的主要优点
较易开发大型软件产品
可以将大系统分解成相互独立的小产品来处理 可以降低成本,提高质量
可维护性好
面向对象的软件稳定性比较好. 面向对象的软件比较容易修改. 面向对象的软件比较容易理解. 易于测试和调试.
面向对象的基本要素

面向对象的测试方法

面向对象的测试方法随着软件开发的不断进步,面向对象的编程方式已经成为了主流。

在面向对象的开发过程中,测试是保证软件质量的重要环节。

本文将介绍面向对象的测试方法以及其应用。

一、什么是面向对象的测试方法面向对象的测试方法是指在面向对象的软件开发过程中,通过对类、对象和其关系进行测试,以验证软件的正确性、健壮性和性能。

面向对象的测试方法主要关注软件的功能、封装、继承、多态等特性。

二、面向对象的测试方法的特点1. 继承性:面向对象的测试方法可以通过继承关系对代码进行复用,减少测试用例的编写工作量。

2. 多态性:面向对象的测试方法可以通过多态性对不同类的对象进行统一的测试,增加代码的灵活性和可扩展性。

3. 封装性:面向对象的测试方法可以对类的封装性进行测试,保证类的内部状态和行为的正确性。

三、面向对象的测试方法的应用在面向对象的开发过程中,可以采用以下测试方法来进行测试:1. 单元测试:针对单个类或方法进行测试,验证其功能的正确性。

2. 集成测试:将多个类或模块进行组合,测试它们之间的接口和交互是否正常。

3. 系统测试:对整个系统进行测试,验证其满足用户需求和预期功能。

4. 性能测试:测试系统的性能指标,包括响应时间、并发能力等。

5. 回归测试:通过重新执行既有的测试用例,来验证软件的修改是否对原有功能产生了负面影响。

四、面向对象的测试方法的实施步骤面向对象的测试方法的实施步骤如下:1. 确定测试目标和范围,明确要测试的类和对象。

2. 编写测试用例,包括输入数据和期望输出结果。

3. 进行单元测试,验证每个类和方法的功能是否符合预期。

4. 进行集成测试,验证多个类和模块之间的交互是否正常。

5. 进行系统测试,确保整个系统满足用户需求和预期功能。

6. 进行性能测试,测试系统的性能指标是否符合要求。

7. 进行回归测试,验证修改是否对原有功能产生了负面影响。

8. 收集测试结果,分析和整理测试数据,生成测试报告。

五、面向对象的测试方法的优势和不足面向对象的测试方法有以下优势:1. 提高代码的可复用性和可维护性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

面向对象测试
5
面向对象测试
6
孙昌爱 北京科技大学 2011-2012
1
面向对象系统测试是基于面向对象集成测试的最 后阶段的测试,主要以用户需求为测试标准,也 需要借鉴OOA或OOA 测试结果。
12.2 开发前期的面向对象测试
面向对象的系统开发经历三个阶段 面向对象分析(OOA) 面向对象设计(OOD) 面向对象编程(OOP) 开发前期的测试工作主要是静态测试。通过各种 评审和质量分析活动,完成必须的测试工作,及 时检测和克服各种缺陷。
面向对象测试
7
面向对象测试
8
ห้องสมุดไป่ตู้
12.2.1 面向对象分析的测试
传统的面向过程分析是一个功能分解的过程,是把 一个系统看成可以分解的功能的集合。这种传统的 功能分解分析法的着眼点在于一个系统需要什么样 的信息处理方法和过程,以过程的抽象来对待系统 的需要。 面向对象分析(OOA)是“把E-R图和语义网络模 型,即信息模型中的概念,与面向对象程序设计语 言中的重要概念结合在一起而形成的分析方法”,最 后得到问题领域的可视化的形式描述。
16
3. 对认定的主题的测试 主题是在对象和结构的基础上更高一层的抽 象,是为了提供OOA分析结果的可见性,如 同文章对各部分内容的概要。 对主题的测试应该考虑以下方面: a) 贯彻George Miller 的“7+2”原则,如果主 题个数超过 7 个,就要求对有较密切属性 和服务的主题进行归并。
b) 主题所反映的一组类和结构是否具有相同 和相近的属性和服务。 c) 认定的主题是否是类和结构更高层的抽 象,是否便于理解OOA结果的概貌(尤其 是对非技术人员的OOA 结果读者)。 d) 主题间的消息连接(抽象)是否代表了主 题所反映的类和结构之间的所有关联。
面向对象测试
17
面向对象测试
18
孙昌爱 北京科技大学 2011-2012
面向对象单元测试是对程序内部具体单一的功能 模块的测试,主要就是对类成员函数的测试。 面向对象集成测试主要对系统内部的相互服务进 行测试,如成员函数间的相互作用,类间的消息 传递等。 面向对象单元测试是进行面向对象集成测试的基 础;面向对象集成测试不但要基于面向对象单元 测试,更要参见OOD或OOD 测试结果。
面向对象测试 20
5. 对定义的服务和消息关联的测试 定义服务就是定义每一个类和结构在问题领 域中的行为。由于问题领域中的实例之间需 要通信,在OOA中就需要定义消息的连接。 对服务和消息连接的测试应考虑以下几方面:
a) 类和结构在问题领域中的实例具有不同的 状态,是否为状态转换定义了相应的服务。 b) 类或结构所需要的服务是否都定义了相应 的消息连接。 c) 定义的消息连接所调用的服务是否正确。 d) 沿着消息连接所执行的线索(消息的调用 序列)是否合理,是否符合实际。 e) 定义的服务是否有重复,是否定义了能够 得到的服务。
25
面向对象测试
26
a) 类层次结构中是否涵盖了所有定义的类。 b) 是否能体现OOA中所定义的实例连接。 c) 是否能实现OOA中所定义的消息连接。 d) 子类是否具有父类没有的新特性。 e) 子类之间的共同特性是否完全在父类中得 以体现。
3. 对类库支持的测试 对类库的支持虽然也属于类层次结构的组织问 题,但其强调的重点是软件的复用。由于它并不 直接影响当前软件的开发和功能实现,可以将其 单独提出来测试。 可从以下几个方面入手: a) 一组子类中有关某种含义相同或基本相同的操 作,是否有相同的接口(包括名字和参数表)。 b) 类中方法(C++称为类的成员函数)的功能是 否比较单一,相应的代码行是否较少(建议不 超过100行)。 c) 类的层次结构是否是深度大,宽度小。
面向对象测试 29
多态令面向对象程序对外表现出强大的处理能 力,但同时却使得程序内“同一”函数的行为复 杂化,测试时必须考虑不同类型的同名操作具 体的实现代码和产生的行为。 面向对象程序是把功能的实现分布在类中。与某种 设计功能相关的一组对象,通过对象提供的服务和 对象之间的消息传递,共同协作来实现这个功能。 这种面向对象程序风格,可将出现的错误精确定位 在某一个具体的对象。
面向对象测试
10
根据Coad和Yourdon方法所提出的OOA实现步 骤,对OOA阶段的测试划分为以下五个方面: 对认定的类的测试 对认定的结构的测试 对认定的主题的测试 对定义的属性和实例连接的测试 对定义的服务和消息连接的测试
1. 对认定的类的测试 OOA中认定的类是对问题领域中的结构,其 他相关系统,设备,被记忆的事件,系统涉 及的人员等实际对象的抽象。对它的测试可 以从如下方面考虑: a) 认定的类是否全面,是否问题领域中所有 涉及到的对象都反映在认定的类中。 b) 认定的类是否具有多个属性。只有一个属 性的类通常应看成其他类的属性,而不是 抽象为独立的类。
面向对象测试 9
OOA的结果是为后续阶段中类的选定和实现,类层 层次结构的组织和实现提供平台。 OOA对问题领域分析抽象的不完整,最终会影响软 件的功能实现,导致软件开发后期大量可避免的修 补工作;而一些冗余的对象或结构会影响类的选定、 程序的整体结构或增加程序员不必要的工作量。因 此,OOA测试的重点在其完整性和冗余性。
2. 对构造的类层次结构的测试 为能充分发挥面向对象的继承共享特性, OOD的类层次结构,通常基于OOA中产生的 泛化结构的原则来组织,着重体现父类和子 类之间一般性和特殊性关系。 在当前的问题领域,对类层次结构的主要要 求是能在解空间构造实现全部功能的结构框 架。为此应做如下几个方面的检查:
面向对象测试
面向对象测试 15
2) 对复合结构的测试从如下方面入手: a) 整体类和局部类的复合(聚合)关系是否 符合现实的关系。 b) 整体类的局部类是否在问题领域中有实际 应用。 c) 整体类中是否遗漏了在问题领域中有用的 局部类。 d) 局部类是否能够在问题领域中组合出新的 有现实意义的整体类。
面向对象测试
面向对象测试 28
面向对象测试
27
12.2.3 面向对象编程的测试
典型的面向对象程序具有继承、封装和多态等新特 性,这使得传统的测试策略必须有所改变。 封装是对数据的隐藏,外界只能通过接口提供 的操作来访问或修改数据,这就降低了直接接 触数据的可能性,妨碍了对非法数据操作的测 试。 继承提高了代码的复用率,同时也提高了错误 传播的概率。继承向测试提出了这样一个难题: 对继承的代码究竟如何测试?
面向对象测试 3
面向对象测试模型
OO System Test OO Integration Test OO Unit Test OOA Test OOA OOD Test OOD OOP Test OOP
面向对象测试
4
OOA 测试和OOD 测试 是对分析结果和设计结果 的测试,主要是对分析设计产生的文本进行,是软 件开发前期的关键性测试。 OOP 测试主要针对编程风格和程序代码实现进行 测试,其主要的测试内容在面向对象单元测试和面 向对象集成测试中体现。
面向对象测试 30
孙昌爱 北京科技大学 2011-2012
5
1. 数据成员是否满足数据封装的要求?
在面向对象编程(OOP)阶段,重点测试类功能 的实现和相应的面向对象程序风格上。 检查数据成员是否满足数据封装的要求,就是检 查其数据成员是否能被外界(数据成员所属的类 或子类以外的调用)直接调用。更直观的说,当 改变数据成员的结构时,看其是否影响了类的对 外接口,是否会导致相应外界必须改动。 值得注意,有时强制的类型转换会破坏数据的封 装特性。例如:
OOD确定类和类结构是想通过重新组合或加以 适当的补充,可方便地实现功能的复用和扩充。 OOD的测试可从如下三方面考虑: 对认定的类的测试 对构造的类层次结构的测试 对类库的支持的测试
面向对象测试
23
面向对象测试
24
孙昌爱 北京科技大学 2011-2012
4
1. 对认定的类的测试 认定的类的测试应考虑以下几个方面: a) 是否涵盖了OOA中所有认定的对象。 b) 是否能体现OOA中定义的属性。 c) 是否能实现OOA中定义的服务。 d) 是否对应着一个含义明确的数据抽象。 e) 是否尽可能少地依赖其他类。 f) 类中的方法(C++称为类的成员函数)是 否只有单一用途。
软件工程 第四部分 面向对象方法学 面向对象的测试
12.1 面向对象测试的概念 12.2 开发前期的面向对象测试 12.3 开发后期的面向对象测试 12.4 分布式系统的测试
12.1 面向对象测试的概念
面向对象系统的测试与传统的软件系统的测试之 间存在很大差别: 1)对象作为一个单独的构件一般比一个功能模块 大。 2)由对象到子系统的集成通常是松散耦合的,没 有一个明显的“顶层”。 3)如果对象被复用,测试者无权进入构件内部来 分析其代码。
1 面向对象测试 2
面向对象测试
面向对象的开发模型将系统开发分为面向对象分 析(OOA),面向对象设计(OOD)和面向对 象编程(OOP)三个阶段。 分析阶段产生整个问题领域的抽象描述,在此基 础上,进一步归纳出适用于面向对象编程语言的 类和类结构,最后形成代码。 针对这种开发模型,结合传统测试步骤的划分, 本着在整个开发过程中不断测试的原则,应将开 发阶段的测试与编码完成后的单元测试、集成测 试、系统测试用一个测试模型描述。
面向对象测试
21
面向对象测试
22
12.2.2 面向对象设计的测试
面向对象设计(OOD)从“建模的观点”出发,基 于OOA模型归纳出类,并建立类的层次结构或进 一步构造成类库,实现分析结果对问题领域的抽 象。 OOD归纳出的类,可以是OOA类的简单延续,也 可以是基于设计要求新建立或从已有类演化的类。 因此,OOD是OOA的进一步细化和更高层的抽 象,OOD与OOA 的界限通常是难以严格区分的。
相关文档
最新文档