第9章面向对象的软件测试.pptx
《第9章面向对象的软件测试.pptx》由会员分享,可在线阅读,更多相关《第9章面向对象的软件测试.pptx(134页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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)图形表示。用图形化方法
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 软件 测试
限制150内