第9章面向对象的软件测试.pptx

上传人:可****阿 文档编号:69828685 上传时间:2023-01-09 格式:PPTX 页数:134 大小:773.75KB
返回 下载 相关 举报
第9章面向对象的软件测试.pptx_第1页
第1页 / 共134页
第9章面向对象的软件测试.pptx_第2页
第2页 / 共134页
点击查看更多>>
资源描述

《第9章面向对象的软件测试.pptx》由会员分享,可在线阅读,更多相关《第9章面向对象的软件测试.pptx(134页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、软件测试基础教程(第二版)软件测试基础教程(第二版)杜文洁 王占军 主编中国水利水电出版社9.1 面向对象软件测试的基本概念 9.2 面向对象测试的内容与范围 9.3 面向对象软件测试技术与方法9.4 面向对象软件测试用例设计9.5 面向对象测试基本步骤9.6 面向对象测试工具Junit习题第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试第第9章章 面向对象的软件测试面向对象的软件测试9.1 面向对象软件测试的基本概念面向对象软件测试的基本概念面向对象方法(Object-Oriented Method)是一种把面向对象的思想应用于软件开发过程中

2、,指导开发活动的系统方法,是建立在“对象”概念基础上的方法学。面向对象方法作为一种新型的独具优越性的新方法正在逐渐代替被广泛使用的面向过程开发方法,被看成是解决软件危机的新兴技术。面向对象技术产生更好的系统结构,更规范的编程风格,极大的优化了数据使用的安全性,提高了程序代码的重用,一些人就此认为面向对象技术开发出的程序无需进行测试。第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.1 面向对象软件测试的基本概念面向对象软件测试的基本概念9.1.1 面向对象软件设计的基本概念9.1.2 面向对象软件开发过程及其特点9.1.3 向对象软件测试的基

3、本概念第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.1.1 面向对象软件设计的基本概念面向对象软件设计的基本概念1对象对象是要研究的任何事物。从一本书到一家图书馆,单的整数到整数列庞大的数据库、极其复杂的自动化工厂、航天飞机都可看作对象,它不仅能表示有形的实体,也能表示无形的(抽象的)规则、计划或事件。对象由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成一独立整体。从程序设计者来看,对象是一个程序模块,从用户来看,对象为他们提供所希望的行为。在对内的操作通常称为方法。2类类是对象的模板。即类是对一组有相同数据和相同操作的对

4、象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为。类是在对象之上的抽象,对象则是类的具体化,是类的实例。类可有其子类,也可有其它类,形成类层次结构。3消息消息是对象之间进行通信的一种规格说明。一般它由三部分组成:接收消息的对象、消息名及实际变元。第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.1.1 面向对象软件设计的基本概念面向对象软件设计的基本概念4封装性封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象

5、能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。5继承性继承性是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现。一个类直接继职其它类的全部描述,同时可修改和扩充。6多态性对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,如是,同一消息即可调用不同的方法。例如:Print消息被

6、发送给一图或表时调用的打印方法与将同样的Print消息发送给一正文文件而调用的打印方法会完全不同。多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。在OOPL中可通过在派生类中重定义基类函数(定义为重载函数或虚函数)来实现多态性。第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.1.2 面向对象软件开发过程及其特点面向对象软件开发过程及其特点面向对象的开发方法的基本思想认为,客观世界是由各种各样

7、的对象组成的,每种对象都有各自的内部状态和运动规律,不同的对象之间的相互作用和联系就构成了各种不同的系统。故面向对象软件开发的工作过程为:1调查、分析系统需求,建立一个全面、合理、统一的模型。2在繁杂的问题域中抽象地识别出对象以及其行为、结构、属性、方法3对象设计即对分析的结果作进一步地抽象、归类、整理,并最终以范式的形式将它们确定下来。4程序实现即用面向对象的程序设计语言将上一步整理的范式直接映射(直接用程序语言来取代)为应用程序软件。第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.1.2 面向对象软件开发过程及其特点面向对象软件开发过程

8、及其特点面向对象开发的特点是遵循以下三项原则:1抽象原则(abstraction)指为了某一分析目的而集中精力研究对象的某一性质,它可以忽略其它与此目的无关的部分2封装原则(encapsulation)即信息隐藏指在确定系统的某一部分内容时,应考虑到其它部分的信息及联系都在这一部分的内部进行,外部各部分之间的信息联系应尽可能的少。3继承原则(inheritance)指能直接获得已有的性质和特征而不必重复定义它们。第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.1.3 向对象软件测试的基本概念向对象软件测试的基本概念1.什么是面向对象的软件测

9、试面向对象程序的结构不再是传统的功能模块结构,作为一个整体,原有集成测试所要求的逐步将开发的模块搭建在一起进行测试的方法已成为不可能。而且,面向对象软件抛弃了传统的开发模式,对每个开发阶段都有不同以往的要求和结果,已经不可能用功能细化的观点来检测面向对象分析和设计的结果。因此,传统的测试模型对面向对象软件已经不再适用。针对面向对象软件的开发特点,应该有一种新的测试模型。第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.1.3 向对象软件测试的基本概念向对象软件测试的基本概念2面向对象测试与传统测试的区别传统测试模式与面向对象的测试模式的最主要

10、的区别在于,面向对象的测试更关注对象而不是完成输入/输出的单一功能,这样的话测试可以在分析与设计阶段就先行介入,便得测试更好的配合软件生产过程并为之服务。与传统测试模式相比,面向对象测试的优点在于:更早地定义出测试用例;早期介入可以降低成本;尽早的编写系统测试用例以便于开发人员与测试人员对系统需求的理解保持一致;面向对象的测试模式更注重于软件的实质。具体有如下不同:(1)测试的对象不同:传统软件测试的对象是面向过程的软件,一般用结构化方法构建;面向对象测试的对象是面向对象软件,采用面向对象的概念和原则,用面向对象的方法构建。(2)测试的基本单位不同:前者是模块;面向对象测试的基本单元是类和对象

11、。(3)测试的方法和策略不同:传统软件测试采用白盒测试,黑盒测试,路径覆盖等方法;面向对象测试不仅吸纳了传统测试方法,也采用各种类测试等方法,而且集成测试和系统测试的方法和策略也很不相同。第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.1.3 向对象软件测试的基本概念向对象软件测试的基本概念3面向对象测试模型(Object-Orient Test Model)现代的软件开发工程是将整个软件开发过程明确的划分为几个阶段,将复杂问题具体按阶段加以解决。这样,在软件的整个开发过程中,可以对每一阶段提出若干明确的监控点,作为各阶段目标实现的检验标准

12、,从而提高开发过程的可见度和保证开发过程的正确性。实践证明软件的质量不仅是体现在程序的正确性上,它和编码以前所做的需求分析,软件设计也密切相关。这时,对错误的纠正往往不能通过可能会诱发更多错误的简单的修修补补,而必须追溯到软件开发的最初阶段。因此,为了保证软件的质量,应该着眼于整个软件生存期,特别是着眼于编码以前的各开发阶段的工作。于是,软件测试的概念和实施范围必须扩充,应该包括在整个开发各阶段的复查、评估和检测。由此,广义的软件测试实际是由确认、验证、测试三个方面组成。第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.1.3 向对象软件测试

13、的基本概念向对象软件测试的基本概念 确认:是评估将要开发的软件产品是否是正确无误、可行和有价值的。比如,将要开发的软件是否会满足用户提出的要求,是否能在将来的实际使用环境中正确稳定的运行,是否存在隐患等。这里包含了对用户需求满足程度的评价。确认意味着确保一个待开发软件是正确无误的,是对软件开发构想的检测。验证:是检测软件开发的每个阶段、每个步骤的结果是否正确无误,是否与软件开发各阶段的要求或期望的结果相一致。验证意味着确保软件是会正确无误的实现软件的需求,开发过程是沿着正确的方向在进行。测试:与狭隘的测试概念统一。通常是经过单元测试、集成测试、系统测试三个环节。在整个软件生存期,确认、验证、测

14、试分别有其侧重的阶段。确认主要体现在计划阶段、需求分析阶段、也会出现在测试阶段;验证主要体现在设计阶段和编码阶段;测试主要体现在编码阶段和测试阶段。事实上,确认、验证、测试是相辅相成的。确认无疑会产生验证和测试的标准,而验证和测试通常又会帮助完成一些确认,特别是在系统测试阶段。第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.1.3 向对象软件测试的基本概念向对象软件测试的基本概念和传统测试模型类似,面向对象软件的测试遵循在软件开发各过程中不间断测试的思想,使开发阶段的测试与编码完成后的一系列测试融为一体。在开发的每一阶段进行不同级别、不同类

15、型的测试,从而形成一条完整的测试链。根据面向对象的开发模型,结合传统的测试步骤的划分,形成了一种整个软件开发过程中不断进行测试的测试模型,使开发阶段的测试与编码完成后的单元测试、集成测试、系统测试成为一个整体。面向对象的开发模型突破了传统的瀑布模型,将开发分为面向对象分析(OOA),面向对象设计(OOD),和面向对象编程(OOP)三个阶段。分析阶段产生整个问题空间的抽象描述,在此基础上,进一步归纳出适用于面向对象编程语言的类和类结构,最后形成代码。由于面向对象的特点,采用这种开发模型能有效的将分析设计的文本或图表代码化,不断适应用户需求的变动。针对这种开发模型,结合传统的测试步骤的划分,本文建

16、议一种整个软件开发过程中不断测试的测试模型,使开发阶段的测试与编码完成后的单元测试、集成测试、系统测试成为一个整体。测试模型如下图所示:第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.1.3 向对象软件测试的基本概念向对象软件测试的基本概念 图9-1 面向对象测试结构图0 面向对象编程 OOA Test:面向对象分析的测试 OOD Test:面向对象设计的测试 OOP Test:面向对象编程的测试 OO Unit Test:面向对象单元测试 OO Integrate Test:面向对象集成测试 OO System Test:面向对象系统测试

17、 第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.1.3 向对象软件测试的基本概念向对象软件测试的基本概念在面向对象软件测试中,OOA(面向对象分析)全面地将问题空间中实现的功能进行现实抽象化,将问题空间中的实例抽象为对象,用对象的结构反映问题空间的复杂关系,用属性和服务表示实例的特殊性和行为。OOA的结果是为后面阶段类的选定和实现、类层次结构的组织和实现提供平台。其测试重点在于完整性和冗余性,包括对认定对象的测试、对认定结构的测试、对认定主题的测试、对定义的属性和实例关联的测试,对定义的服务和消息关联的测试。OOD(面向对象设计)建立类结

18、构或进一步构造类库,实现分析结果对问题空间的抽象。OOD确定类和类结构不仅能够满足当前需求分析的要求,更主要的是通过重新组合或加以适当的补充,方便实现功能的重用和扩增。包括测试认定的类、测试类层次结构(类的泛化继承和关联)和测试类库。OOP(面向对象实施)是软件的计算机实现,根据面向对象软件的特性,可以忽略类功能实现的细节,将测试集中在类功能的实现和相应的面向对象程序风格即数据成员的封装性测试和类的功能性测试上。如果程序是用C+等面向对象语言实现,主要就是对类成员函数的测试。第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.1.3 向对象软件

19、测试的基本概念向对象软件测试的基本概念面向对象单元测试是进行面向对象集成测试的基础。面向对象集成测试主要对系统内部的相互服务进行测试,如成员函数间的相互作用,类间的消息传递等。面向对象集成测试不但要基于面向对象单元测试,更要参见OOD或OOD Test结果。面向对象系统测试是基于面向对象集成测试的最后阶段的测试,主要以用户需求为测试标准,需要借鉴OOA或OOA Test结果。第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.2 面向对象测试的内容与范围面向对象测试的内容与范围 面向对象软件测试各阶段的测试构成一个相互作用的整体,但其测试的主体

20、、方向和方法各有不同,本文接下来将从面向对象分析的测试,面向对象设计的测试,面向对象编程的测试,面向对象单元测试,面向对象集成测试,面向对象系统测试六个方面分别介绍对面向对象软件的测试。第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.2 面向对象测试的内容与范围面向对象测试的内容与范围9.2.1 面向对象分析的测试(OOA Test)9.2.2 面向对象设计的测试(OOD Test)9.2.3 面向对象编程的测试(OOP Test)9.2.4 面向对象的单元测试(OO Unit Test)9.2.5 面向对象的集成测试(OO Integra

21、te Test)9.2.6 面向对象的系统测试(OO System Test)9.2.7 面向对象的其他测试 第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.2.1 面向对象分析的测试面向对象分析的测试(OOA Test)传统的面向过程分析是一个功能分解的过程,是把一个系统看成可以分解的功能的集合。这种传统的功能分解分析法的着眼点在于一个系统需要什么样的信息处理方法和过程,以过程的抽象来对待系统的需要。而面向对象分析(OOA)是把E-R图和语义网络模型,即信息造型中的概念,与面向对象程序设计语言中的重要概念结合在一起而形成的分析方法,最后通

22、常是得到问题空间的图表的形式描述。OOA直接映射问题空间,全面的将问题空间中实现功能的现实抽象化。将问题空间中的实例抽象为对象(不同于C+中的对象概念),用对象的结构反映问题空间的复杂实例和复杂关系,用属性和服务表示实例的特性和行为。对一个系统而言,与传统分析方法产生的结果相反,行为是相对稳定的,结构是相对不稳定的,这更充分反映了现实的特性。OOA的结果是为后面阶段类的选定和实现,类层次结构的组织和实现提供平台。因此,OOA对问题空间分析抽象的不完整,最终会影响软件的功能实现,导致软件开发后期大量可避免的修补工作;而一些冗余的对象或结构会影响类的选定、程序的整体结构或增加程序员不必要的工作量。

23、因此,本文对OOA的测试重点在其完整性和冗余性。第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.2.1 面向对象分析的测试面向对象分析的测试(OOA Test)尽管OOA的测试是一个不可分割的系统过程,为叙述的方便,对OOA阶段的测试划分为以下五个方面:对确定类和对象的范围的测试 对确定结构范围的测试 对确定主题范围的测试 对确定属性和实例关联的测试 对确定服务和消息关联的测试 第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.2.1 面向对象分析的测试面向对象分析的测试(OOA Test

24、)1对确定类和对象的范围的测试确定类与对象就是在实际问题的分析中高度地抽象和封装能反映问题域和系统任务的特征的类和对象。对它的测试可以从如下方面考虑:抽象的对象是否全面,是否是现实问题空间中所有涉及到的实例都反映在认定的抽象对象中。抽象出的对象是否具有多个属性。只有一个属性的对象通常应看成其他对象的属性,而不是抽象为独立的对象。对抽象为同一对象的实例是否有共同的,区别于其他实例的共同属性。对抽象为同一对象的实例是否提供或需要相同的服务,如果服务随着不同的实例而变化,认定的对象就需要分解或利用继承性来分类表示。(5)抽象的对象的名称应该尽量准确,适用。第九章第九章第九章第九章 面向对象的软件测试

25、面向对象的软件测试面向对象的软件测试面向对象的软件测试9.2.1 面向对象分析的测试面向对象分析的测试(OOA Test)如何在众多调查资料中进行分析并确定类与对象呢?解决这一问题的方法一般包含如下几个方面:(1)基础素材。系统调查的所有图表、文件、说明以及分析人员的经验、学识都是OOA分析的基础素材。(2)潜在的对象。在对基础素材的分析中,哪种内容是潜在的,并且有可能被抽象地封装成对象与类呢?一般说来下列因素都是潜在的对象:结构、业务、系统、实体、应记忆的事件等。(3)确定对象。初步分析选定对象以后,就通过一个对象和其它对象之间关系的角度来进行检验,并最后确定它。(4)图形表示。用图形化方法

26、表示确定的对象和类。第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.2.1 面向对象分析的测试面向对象分析的测试(OOA Test)2对确定结构范围的测试结构表示问题空间的复杂程度。标识结构的目的是便于管理问题域模型。在OOA中,结构是指泛化特化结构和整体部分结构两部分的总和。(1)确定泛化特化结构(分类结构)泛化特化结构有助于刻画出问题空间的类成员层次。继承的概念是泛化特化结构的一个重要组成部分。继承提供了一个用于标识和表示公共属性与服务的显式方法。在一个泛化特化结构内,继承使共享属性或共享服务、增加属性或增加服务成为可能。定义泛化特化结

27、构时,要分析在问题空间和系统责任的范围内,通用类是否表达了专用类的共性,专用类是否表示了个性。图9-2给出的是泛化特化结构。其中,“发表的文章”和“接受的文章”是特殊化类,“文章”是一般化类。特殊化类是一般化类的派生类,一般化类是特殊化类的基类。分类结构具有继承性,一般化类和对象的属性和服务一旦被识别,即可在特殊化类和对象中使用。文章发表的文章接受的文章第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.2.1 面向对象分析的测试面向对象分析的测试(OOA Test)文章发表的文章接受的文章图9-2 泛化特化结构图第九章第九章第九章第九章 面向

28、对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.2.1 面向对象分析的测试面向对象分析的测试(OOA Test)(2)确定整体部分结构(组装结构)整体部分结构表示一个对象怎样作为别的对象的一部分,和对象怎样组成更大的对象,与我们在系统工程中划分子系统结构的思路基本一致。图9-3说明报社是由采访组、编辑室和印刷厂等几个部门组成,同时也指出,一个报社只有一个编辑室,一个印刷厂,但可以有一至多个采访组。第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.2.1 面向对象分析的测试面向对象分析的测试(OOA Test)11报社采

29、访组编辑室印刷厂 11 1,m1 图9-3整体部分结构分类结构体现了问题空间中实例的一般与特殊的关系,组装结构体现了问题空间中实例整体与局部的关系。第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.2.1 面向对象分析的测试面向对象分析的测试(OOA Test)(3)从如下方面对认定的分类结构的测试。自上而下的派生关系:对于结构中的一种对象,尤其是处于高层的对象,是否能派生出下一层对象。自底向上的抽象关系:对于结构中的一种对象,尤其是处于同一底层的对象,是否能抽象出在现实中有意义的更一般的上层对象。(4)从如下方面对认定的组装结构的测试。整体

30、(对象)和部件(对象)的组装关系是否符合现实的关系。整体(对象)的部件(对象)是否在考虑的问题空间中有实际应用。整体(对象)中是否遗漏了反映在问题空间中有用的部件(对象)。部件(对象)是否能够在问题空间中组装新的有现实意义的整体(对象)。第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.2.1 面向对象分析的测试面向对象分析的测试(OOA Test)3对确定主题范围的测试在OOA中主题是一种指导研究和处理大型复杂模型的机制。它有助于分解系统,区别结构,避免过多的信息量同时出现所带来的麻烦。主题的确定可以帮助人们从一个更高的层次上来观察和表达系

31、统的总体模型。主题如同文章对各部分内容的概要。对主题层的测试应该考虑以下方面:(1)贯彻George Miller 的7+2原则。即如果主题个数超过7个,就要求对有较密切属性和服务的主题进行归并。(2)主题所反映的一组对象和结构是否具有相同和相近的属性和服务。(3)认定的主题是否是对象和结构更高层的抽象,是否便于理解OOA结果的概貌(尤其是对非技术人员的OOA 结果读者)。(4)主题间的消息联系(抽象)是否代表了主题所反映的对象和结构之间的所有关联。在测试中,首先应该考虑:为每一个结构相应地增设一个主题;为每一个对象相应地增设一个主题。如果主题的个数过多,则需进一步精炼主题。根据需要,可以把紧

32、耦合的主题合在一起抽象一个更高层次的模型概念供读者理解。然后,列出主题及主题层上各主题之间的消息连接。最后,对主题进行编号,在层次图上列出主题以指导读者从一个主题到另一个主题。每一层都组织成按主题划分的图。第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.2.1 面向对象分析的测试面向对象分析的测试(OOA Test)4对确定属性和实例关联的测试在OOA中属性被用来定义反映问题域的特点的任务。定义属性是通过确认信息和关系来完成的,它们和每个实例有关。对属性和实例关联的测试从如下方面考虑:(1)定义的属性是否对相应的对象和分类结构的每个现实实例

33、都适用。(2)定义的属性在现实世界是否与这种实例关系密切。(3)定义的属性在问题空间是否与这种实例关系密切。(4)定义的属性是否能够不依赖于其他属性被独立理解。(5)定义的属性在分类结构中的位置是否恰当,低层对象的共有属性是否在上层对象属性体现。(6)在问题空间中每个对象的属性是否定义完整。(7)定义的实例关联是否符合现实。(8)在问题空间中实例关联是否定义完整,特别需要注意一对多和多对多的实例关联。具体方法如下:第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.2.1 面向对象分析的测试面向对象分析的测试(OOA Test)确定属性的范围首

34、先要确定划分给每一个对象的属性,明确某个属性究竟描述哪个对象,要保证最大稳定性和模型的一致性,其次,确定属性的层次,通用属性应放在结构的高层,特殊属性放在低层。如果一个属性适用于大多数的特殊分类,可将其放在通用的地方,然后在不需要的地方把它覆盖(即用“X”等记号指出不需要继承该属性),如果发现某个属性的值有时有意义,有时却不适用,则应考虑分类结构,根据发现的属性,还可以进一步修订对象。实例连接实例连接是一个问题域的映射模型,该模型反映了某个对象对其它对象的需求。通过实例连接可以加强属性对类与状态的描述能力。实例连接有一对一(1:1)、一对多(1:M)和多对多(M:M)三种,分别表示一个实例可对

35、应一个或多个实例,这种性质叫多重性。例如,一个车主拥有一辆汽车,则车主到汽车的实例连接是1:1的;一个车主拥有多辆汽车,则是1:M的。实例连接的表示方法非常简单,只需在原类和对象的基础上用直线相连接,并在直线的两端用数字标志出它们之间的上下限关系即可。例如在车辆和执照事故管理系统中,可以将车辆拥有者和法律事件两个类&对象实例连接如图9-4形式。第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.2.1 面向对象分析的测试面向对象分析的测试(OOA Test)1,mm,1owner persontelephone legal eventregis

36、tration date 图9-4 车辆拥有者和法律事件的实例连接详细说明属性和实例连接的约束 用名字和描述说明属性,属性可分成四类;描述性的、定义性的、永远可导出的和偶而可导出的。实例连接的约束是指多重性与参与性。第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.2.1 面向对象分析的测试面向对象分析的测试(OOA Test)5对确定服务和消息关联的测试对象收到消息后所能执行的操作称为它可提供的服务。它描述了系统需要执行的处理和功能。定义服务的目的在于定义对象的行为和对象之间的通信(消息连接)。事实上,两个对象之间可能存在着由于通信需要而形

37、成的关系,即为消息连接。消息连接表示从一个对象发送消息到另一个对象,由那个对象完成某些处理。确定服务的具体解决方法主要包括四个基本步骤:在分析中识别对象状态;识别所要求的服务;识别消息连接和指定服务。(1)识别对象状态 在系统运行过程中,对象从被创建到释放要经历多种不同的状态。对象的状态是由属性的值来决定和表示的。一个对象状态是属性值的标识符,它反映了对象行为的改变。识别对象状态的方法一般通过检查每一个属性的所有可能取值,确定系统的职责是否针对这些可能的值会有不同的行为;检查在相同或类似的问题论域中以前的分析结果,看是否有可直接复用的对象状态;利用状态迁移图描述状态及其变化。第九章第九章第九章

38、第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.2.1 面向对象分析的测试面向对象分析的测试(OOA Test)(2)识别所要求的服务 必要的服务可分为两大类:简单的服务和复杂的服务。简单的服务是每一个类或对象都应具备这样的服务,在分析模型中,这些服务不必画出,如建立和初始化一个新对象,释放或删除一个对象等。复杂的服务分为两种:计算服务和监控服务,必须在分析模型中显式地给出,计算服务是利用对象的属性值计算,以实现某种功能;监控服务主要处理对外部系统的输入/输出,外部设备的控制和数据的存取。为了标识必要的服务,需要注意检查每一个对象的所有状态,确定此对象在不同

39、的状态值下要负责执行哪些计算、要做哪些监控,以便能够弄清外部系统或设备的状态将如何改变,对这些改变应当做什么响应;检查在相同或类似的问题论域中以前的分析结果,看是否有可直接复用的服务。第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.2.1 面向对象分析的测试面向对象分析的测试(OOA Test)(3)识别消息连接 消息连接是指从一个对象向另一个对象发送消息,并且使得某一处理功能,所需的处理是在发送对象的方法中指定的,并且在接收对象的方法中详细定义了的。识别消息连接的方法及策略是检查在相同或类似的问题论域中以前分析的结果,看是否有可复用的消息

40、连接。对于每一个对象,查询该对象需要哪些对象的服务,从该对象画一箭头到那个对象;查询哪个对象需要该对象的服务,从那个对象画一箭头到该对象;循消息连接找到下一个对象,重复以上步骤直至检查完全部对象。当一个对象将一个消息传送给另一个对象时,另一个对象又可传送一个消息给另一个对象,如此下去就可得到一条执行线索。检查所有的执行线索,确定哪些是关键执行线索,以检查模型的完备性。(4)定义服务 在确定了对象的状态、所要执行的内容和消息后,具体如何执行操作呢?OOA提供了模板式的方法描述方式。这是一种类似程序框图的工具。它主要用定义方法和定义例示来实现。如图9-5所示。第九章第九章第九章第九章 面向对象的软

41、件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.2.1 面向对象分析的测试面向对象分析的测试(OOA Test)Specification attribute 条件 (if,precondition,trigger,terminate)external input external output 正文块 additional constraints (context)notes method(name&method chart)循环 (while,do,repeat,trrgger/terminate)traceability codes applicable store co

42、des 连接 time requirements (connection)图9-5 定义方法和定义例示图9-5 定义方法和定义例示 (b)(a)第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.2.1 面向对象分析的测试面向对象分析的测试(OOA Test)对定义的服务和消息关联的测试从如下方面进行:对象和结构在问题空间的不同状态是否定义了相应的服务。对象或结构所需要的服务是否都定义了相应的消息关联。定义的消息关联所指引的服务提供是否正确。沿着消息关联执行的线程是否合理,是否符合现实过程。定义的服务是否重复,是否定义了能够得到的服务。第九章第

43、九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.2.2 面向对象设计的测试面向对象设计的测试(OOD Test)面向对象设计(OOD)是以OOA为基础归纳出的类为基础,建立类结构甚至进一步构造成类库,实现了分析结果对问题空间的抽象。OOD 归纳的类,可以是对象简单的延续,也可以是不同对象的相同或相似的服务。OOD确定类和类结构不仅是满足当前需求分析的要求,更重要的是通过重新组合或加以适当的补充或删减,能方便实现功能的重用和扩增,以不断适应用户的要求。OOD的基本目标是改进设计、增进软件生产效率、提高软件质量以及加强可维护性。如果模型的质量很高对项目

44、来说就很有价值,但是如果模型有错误,那么它对项目的危害就无可估量。以下面向对象设计模型是由Coad和Yourdon提出的。该模型由四个部分和五个层次组成。如下图9-6所示。第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.2.2 面向对象设计的测试面向对象设计的测试(OOD Test)数据管理部件主题层结构层操作层服务层人机交互部件 数据管理部件 任务管理部件 类与对象层 图9-6 OOD系统模型其四个组成部分是问题空间部件(Problem Domain Component,简称PDC)、人机交互部件(Human Interaction Co

45、mponent,简称HIC)、任务管理部件(Task Management Component,简称TMC)和数据管理部件(Data Management Component,简称DMC)。五个层次是主题层、类与对象层、结构层、属性层和服务层,这五个层次分别对应Coad的面向对象分析方法中的确定对象、确定结构、定义主题、定义属性、确定服务等行动。第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.2.2 面向对象设计的测试面向对象设计的测试(OOD Test)所以,对OOD的测试,建议从如下方面考虑:确定测试的问题域。人机交互部分设计的测试对认

46、定的类的测试。对构造的类层次结构的测试。对类库的支持的测试。对测试结果以及对模型的测试覆盖率(基于某中标准)进行评估。第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.2.2 面向对象设计的测试面向对象设计的测试(OOD Test)1确定测试的问题域在面向对象设计中,面向对象分析(OOA)的结果恰好符合面向对象设计(OOD)的问题空间部分,因此,OOA的结果就是OOD部分模型中的一个完整部分。但是,为了解决一些特定设计所需要考虑的实际变化,可能要对OOA结果进行一些改进和增补。主要是根据需求的变化,对OOA产生模型中的某些类与对象、结构、属性

47、、操作进行组合与分解。要考虑对时间与空间的折衷、内存管理、开发人员的变更、以及类的调整等。另外,根据OOD的附加原则,增加必要的类、属性和关系。(1)复用设计根据问题解决的需要,把从类库或其他来源得到的既存类增加到问题解决方案中去。既存类可以是用面向对象程序语言编写出来的,也可以是用其他语言编写出来的可用程序。要求标明既存类中不需要的属性和操作,把无用的部分维持到最小限度。并且增加从既存类到应用类之间的泛化特化的关系。进一步地,把应用中因继承既存类而成为多余的属性和操作标出。还要修改应用类的结构和连接,必要时把它们变成可复用的既存类。第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测

48、试面向对象的软件测试面向对象的软件测试9.2.2 面向对象设计的测试面向对象设计的测试(OOD Test)(2)把问题论域相关的类关联起来在设计时,从类库中引进一个根类,做为包容类,把所有与问题论域有关的类关联到一起,建立类的层次。把同一问题论域的一些类集合起来,存于类库中。(3)加入一般化类以建立类间协议有时,某些特殊类要求一组类似的服务。在这种情况下,应加入一个一般化的类,定义为所有这些特殊类共用的一组服务名,这些服务都是虚函数。在特殊类中定义其实现。(4)调整继承支持级别在OOA阶段建立的对象模型中可能包括有多继承关系,但实现时使用的程序设计语言可能只有单继承,甚至没有继承机制,这样就需

49、对分析的结果进行修改。可通过对把特殊类的对象看做是一个一般类对象所扮演的角色,通过实例连接把多继承的层次结构转换为单继承的层次结构;把多继承的层次结构平铺,成为单继承的层次结构等方法。第九章第九章第九章第九章 面向对象的软件测试面向对象的软件测试面向对象的软件测试面向对象的软件测试9.2.2 面向对象设计的测试面向对象设计的测试(OOD Test)(5)改进性能提高执行效率和速度是系统设计的主要指标之一。有时,必须改变问题论域的结构以提高效率。如果类之间经常需要传送大量消息,可合并相关的类以减少消息传递引起的速度损失。增加某些属性到原来的类中,或增加低层的类,以保存暂时结果,避免每次都要重复计

50、算造成速度损失。(6)加入较低层的构件在做面向对象分析时,分析员往往专注于较高层的类和对象,避免考虑太多低层的实现细节。但在做面向对象设计时,设计师在找出高层的类和对象时,必须考虑到底需要用到哪些较低层的类和对象。针对上述问题域的定义,制定如下测试策略:首先制订检查的范围和深度。范围将通过描述材料的实体或一系列详细的用例来定义。对小的项目来说,范围可以是整个模型。深度将通过指定需要测试的模型(MUT)的某种UML(统一建模语言)图的集合层次中的级别来定义。然后为每一个评价标准开发测试用例,标准在应用时使用基本模型的内容作为输入。这种从用户用例模型出发的方式对许多模型的测试用例来说是一个很好的出

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

当前位置:首页 > 应用文书 > 工作计划

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁