版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本章内容7.1面向对象测试概述7.2面向对象分析测试7.3面向对象设计测试7.4面向对象单元测试7.5面向对象的集成测试沈阳师范大学软件学院1本节内容7.1面向对象测试的概述7.1.1传统的软件开发存在的问题7.1.2面向对象技术7.1.3面向对象软件开发和测试沈阳师范大学软件学院27.1.1传统的软件开发存在的问题7.1.1传统的软件开发存在的问题(1)软件重用性差(2)软件可维护性差(3)开发出的软件不易满足用户需求沈阳师范大学软件学院37.1.2面向对象技术7.1.2.1基本概念(1)对象(2)对象的状态和行为(3)类(4)类的结构(类间关系)(5)消息和方法沈阳师范大学软件学院47.1.2面向对象技术7.1.2.2面向对象特征封装继承多态沈阳师范大学软件学院57.1.2面向对象技术7.1.2.3面向对象软件开发方法与传统的软件开发方法的区别:(1)调查、分析系统需求,建立一个全面、合理、统一的模型。(2)对象设计。(3)程序实现。沈阳师范大学软件学院67.1.3面向对象软件开发和测试技术7.1.3面向对象软件开发和测试:
面向对象的开发模型突破了传统的瀑布模型,将开发分为面向对象分析(OOA),面向对象设计(OOD),和面向对象编程(OOP)三个阶段。针对这种开发模型,结合传统的测试步骤的划分,我们把面向对象的软件测试分为:面向对象分析的测试,面向对象设计的测试,面向对象编程的测试,面向对象单元测试,面向对象集成测试,面向对象系统测试。沈阳师范大学软件学院77.1.3面向对象软件开发和测试技术7.1.3面向对象软件开发和测试:在传统的面向过程程序中,对于函数 y=Function(x);
只需要考虑一个函数(Function())的行为特点,在面向对象程序中,你不得不同时考虑基类函数(Base::Function())的行为和继承类函数(Derived::Function())的行为。面向对象程序的结构不再是传统的功能模块结构,作为一个整体,原有集成测试所要求的逐步将开发的模块搭建在一起进行测试的方法已不可能。沈阳师范大学软件学院87.1.3面向对象软件开发和测试技术7.1.3面向对象软件开发和测试:面向对象软件测试是根据面向对象的软件开发过程结合面向对象的特点提出的。它包括分析与设计模型测试技术、类测试技术、对象交互测试技术、类层次结构测试技术、面向对象系统测试技术5大部分。沈阳师范大学软件学院97.1.3面向对象软件开发和测试技术7.1.3面向对象软件开发和测试:面向对象软件对每个开发阶段都有不同以往的要求和结果,已经不可能用功能细化的观点来检测面向对象分析和设计的结果。针对面向对象软件的开发特点,应该有一种新的测试模型。沈阳师范大学软件学院107.1.3面向对象软件开发和测试技术7.1.3面向对象软件开发和测试:面向对象软件对每个开发阶段都有不同以往的要求和结果,已经不可能用功能细化的观点来检测面向对象分析和设计的结果。针对面向对象软件的开发特点,应该有一种新的测试模型。沈阳师范大学软件学院11本节内容7.2面向对象分析测试7.2.1面向对象模型7.2.2对类和对象范围的测试7.2.3对结构范围的测试7.2.4对结构范围的测试7.2.5对主题的测试7.2.6对定义的属性和实例关联的测试7.2.7对定义的服务和消息关联的测试沈阳师范大学软件学院127.2.1面向对象模型7.2.1面向对象模型沈阳师范大学软件学院13OOAOODOOPOOATestOODTestOOPTestOOUnitTestOOIntegrateTestOOSystemTest7.2.1面向对象模型7.2.1面向对象模型OOA:将问题空间中实现的功能进行抽象,问题空间中的实例抽象为对象,用对象的结构反映问题空间的复杂关系,用属性和服务表示实例的特殊性和行为OOD:建立类结构或进一步构造类库,实现分析结果对问题空间的抽象。OOP:软件的计算机实现。沈阳师范大学软件学院147.2.1面向对象模型7.2.1面向对象模型OOA:将问题空间中实现的功能进行抽象,问题空间中的实例抽象为对象,用对象的结构反映问题空间的复杂关系,用属性和服务表示实例的特殊性和行为OOD:建立类结构或进一步构造类库,实现分析结果对问题空间的抽象。OOP:软件的计算机实现。沈阳师范大学软件学院157.2.2对类和对象范围的测试7.2.2对类和对象范围的测试OOA直接映射问题空间,全面地在问题空间中实现功能的现实抽象化。OOA必须回答:(1)为完成用户要求,系统应提供哪些功能(2)系统应由哪些对象构成(3)每个对象应有哪些属性和服务(4)对象间应有怎样的联系沈阳师范大学软件学院167.2.2对类和对象范围的测试7.2.2对类和对象范围的测试OOA中认定的对象是对问题空间中的结构,其他系统,设备,被记忆的事件,系统涉及的人员等实际实例的抽象。对它的测试可以从如下方面考虑:(1)抽象的对象是否全面,是否问题空间中所有涉及到的实例都反映在认定的抽象对象中。(2)认定的对象是否具有多个属性。只有一个属性的对象通常应看成其他对象的属性,而不是抽象为独立的对象。沈阳师范大学软件学院177.2.2对类和对象范围的测试7.2.2对类和对象范围的测试
(3)对认定为同一对象的实例是否有共同的,区别于其他实例的共同属性。(4)对认定为同一对象的实例是否提供或需要相同的服务,如果服务随着不同的实例而变化,认定的对象就需要分解或利用继承性来分类表示。(5)认定的对象的名称应该尽量准确,适用。OA中认定的对象是对问题空间中的结构,其他系统,设备,被记忆的事件,系统涉及的人员等实际实例的抽象。对它的测试可以从如下方面考虑:沈阳师范大学软件学院187.2.2对类和对象范围的测试7.2.2对类和对象范围的测试如何在众多调查资料中进行确定类与对象呢?解决这一问题的方法一般包含以下几个方面(1)基础素材(2)潜在的对象(3)确定对象(4)图形表示,用图形化描述类和对象沈阳师范大学软件学院197.2.3对结构范围的测试7.2.3对结构范围的测试结构表示问题空间的复杂程度。标识结构的目的在于管理问题域模型。在OOA中,结构是指泛化—特化结构(isa)和整体—部分结构(hasa)两部分的总和。沈阳师范大学软件学院207.2.3对结构范围的测试7.2.3对结构范围的测试1、确定泛化—特化结构(分类结构)对于结构中的一种对象,尤其是处于高层的对象,是否在问题空间中含有不同于下一层对象的特殊性可能,即是否能派生出下一层对象对于结构中的一种对象,尤其是处于同一低层的对象,是否能抽象出现实中有有意义的更一般的上层对象对所有认定的对象,是否能在问题空间内向上层抽象出在现实中有意义的对象高层的对象的特性是否完全体现下层的共性低层的对象是否有高层特性基础上的特殊性沈阳师范大学软件学院217.2.3对结构范围的测试7.2.3对结构范围的测试2、确定整体—部分结构(组装结构)整体(对象)和部分(对象)的组装关系是否符合现实的关系整体(对象)和部分(对象)是否在考虑的问题空间中的有实际应用整体(对象)是否遗漏了反映在问题空间中有用的部件部分(对象)是否能够在问题空间中组装新的有现实意义的整体(对象)沈阳师范大学软件学院227.2.4对主题的测试7.2.4对主题的测试
主题是一种知道研究和处理大型复杂模型的机制。有助于分解系统,区分结构,避免过多的信息量同时出现所带来的麻烦。主题的确定可以帮助人们从一个更高的层次上观察和表达系统的总体模型。主题如同文章对个部分内容的概要。沈阳师范大学软件学院237.2.4对主题的测试7.2.4对主题的测试对主题层的测试应该考虑以下方面:依据GeorgeMiler的“7+2”原则,如果主题个数超过7个,就要求对有较密切属性和服务的主题进行归并。主题所反映的一组对象和结构是否具有相同和相近的属性和服务。认定的主题是否是对象和结构更高层的抽象,是否便于理解OOA结果的概括。主题间的消息联系(抽象)是否代表了主题所反映的对象和结构之间的所有关联。沈阳师范大学软件学院247.2.5对定义的属性和实例关联的测试7.2.5对定义的属性和实例关联的测试属性是用来描述对象或结构所反映的实例的特性。而实例关联是反映实例集合间的映射关系。对属性和实例关联的测试从如下方面考虑:定义的属性是否对相应的对象和分类结构的每个现实实例都适用。定义的属性在现实世界是否与这种实例关系密切。定义的属性在问题空间是否与这种实例关系密切。定义的属性是否能够不依赖于其他属性被独立理解。定义的属性在分类结构中的位置是否恰当,低层对象的共有属性是否在上层对象属性体现。在问题空间中每个对象的属性是否定义完整。定义的实例关联是否符合现实。在问题空间中实例关联是否定义完整,特别需要注意1-多和多-多的实例关联。沈阳师范大学软件学院257.2.5对定义的属性和实例关联的测试7.2.5对定义的属性和实例关联的测试具体步骤如下:1、确定属性的范围2、实例连接3、详细说明属性和实例连接的约束沈阳师范大学软件学院267.2.5对定义的服务和消息关联的测试7.2.5对定义的服务和消息关联的测试对象接到消息后所执行的操作称为为它提供的服务。描述了系统需要执行的处理和功能。定义服务的目的在于定义对象的行为和对象间的通信(消息连接)。事实上,两个对象之间可能存在着由于通信需要而形成的关系,即消息连接。消息连接表示从一个对象发送消息到另一个对象,由那个对象完成某些处理。沈阳师范大学软件学院277.2.5对定义的服务和消息关联的测试7.2.5对定义的服务和消息关联的测试
确定服务的具体解决方法包括四个基本步骤:1、识别对象状态2、识别所要请求的服务3、识别消息连接4、定义服务沈阳师范大学软件学院287.2.5对定义的服务和消息关联的测试7.2.5对定义的服务和消息关联的测试对定义的服务和消息关联的测试从以下方面进行:对象和结构在问题空间的不同状态是否定义了相应的服务。对象或结构所需要的服务是否都定义了相应的消息关联。定义的消息关联所指引的服务提供是否正确。沿着消息关联执行的线程是否合理,是否符合现实过程。定义的服务是否重复,是否定义了能够得到的服务。沈阳师范大学软件学院297.2.5对定义的服务和消息关联的测试7.2.5对定义的服务和消息关联的测试对定义的服务和消息关联的测试从以下方面进行:对象和结构在问题空间的不同状态是否定义了相应的服务。对象或结构所需要的服务是否都定义了相应的消息关联。定义的消息关联所指引的服务提供是否正确。沿着消息关联执行的线程是否合理,是否符合现实过程。定义的服务是否重复,是否定义了能够得到的服务。沈阳师范大学软件学院30本节内容7.3面向对象设计的测试7.3.1面向对象设计概述7.3.2确定测试的问题域7.3.3人机交互部件设计的测试沈阳师范大学软件学院317.3.1面向对象设计概述7.3.1面向对象设计概述面向对象设计(OOD)采用“造型的观点”,以OOA为基础归纳出类,并建立类结构或进一步构造成类库,实现分析结果对问题空间的抽象。OOD归纳的类,可以是对象简单的延续,可以是不同对象的相同或相似的服务。由此可见,OOD不是在OOA上的另一思维方式的大动干戈,而是OOA的进一步细化和更高层的抽象。面向对象设计(OOD)是以OOA归纳出的类为基础,建立类结构甚至进一步构造成类库,实现分析结果对问题空间的抽象。沈阳师范大学软件学院327.3.1面向对象设计概述7.3.1面向对象设计概述
OOD设计模型有四个部分和五个层次组成:问题空间部件PDC人机交互部件HIC任务管理部件TMC数据管理部件DMC沈阳师范大学软件学院337.3.1面向对象设计概述7.3.1面向对象设计概述五个层次为主题层、类与对象层、结构层、属性层和服务层。这五个层次分别面向对象分析方法中的定义主题、确定对象、确定结构、定义属性、确定服务等行动。沈阳师范大学软件学院34问题空间部件人机交互部件任务管理部件数据管理部件主题层类与对象层结构层属性层服务层问题空间部件人机交互部件任务管理部件数据管理部件结构层7.3.1面向对象设计概述7.3.1面向对象设计概述从以下方面对OOD进行测试:确定测试的问题域人机交互部分设计的测试对认定的类的测试对构造的类层次结构的测试对类库支持的测试对测试结果及对模型的测试覆盖率进行评估沈阳师范大学软件学院357.3.2确定测试的问题域7.3.2确定测试的问题域在面向对象设计中,面向对象分析(OOA)的结果恰好符合面向对象设计的问题空间部分,因此OOA的结果就是OOD部分模型的一个完整部分。为了解决一些特定设计所需要考虑的实际变化,要对OOA的结果进行一些改进和增补。根据需求的变化,对OOA产生的模型中的某些类与对象、结构、属性、操作进行组合与分解。根据OOD的附加原则,增加必要的类、属性和关系。沈阳师范大学软件学院367.3.2确定测试的问题域7.3.2确定测试的问题域1、复用设计
2、把问题域相关的类关联起来
3、加入一般化类以建立类间协议
4、调整继承支持级别
5、改进性嫩
6、加入较低层的构件沈阳师范大学软件学院377.3.3人机交互部件设计的测试7.3.3人机交互部件设计的测试OOA阶段给出所需的属性和操作,同时必须根据需求把交互的细节加入到用户界面的设计中,包括有效的人机交互所必须的实际显示和输入。人机交互部件的测试策略由以下几个方面构成:用户分类;描述人及任务脚本;设计命令层;设计详细的交互;继续做原型;设计HIC类;根据图形用户界面进行设计;沈阳师范大学软件学院38本节内容7.4面向对象的单元测试7.4.1面向对象单元测试的内容7.4.2单元测试开始的时间7.4.3单元测试的人员7.4.4单元测试方法7.4.5方法的测试7.4.6测试程度沈阳师范大学软件学院397.4.1面向对象单元测试的内容7.4.1面向对象单元测试的内容
面向对象的单元测试的对象是软件设计的最小单位—类。单元测试的依据是详细设计,单元测试应对类中所有重要的属性和方法设计测试用例,以发现类内部的错误。单元测试多采用白盒测试技术,系统内多个类快可以并行进行测试。沿用单元测试概念,实际测试类成员函数。一些传统的测试方法在面向对象的单元测试中都可以使用,如等价类划分、边界值分析、因果图、逻辑覆盖、路径分析法等。沈阳师范大学软件学院407.4.1面向对象单元测试的内容7.4.1面向对象单元测试的内容
面向对象的单元就是类,单元测试实际测试的就是对类的测试。类测试的目的主要确保一个类的代码能够完全满足类的说明所描述的要求。沈阳师范大学软件学院417.4.1面向对象单元测试的内容7.4.1面向对象单元测试的内容
面向对象的单元就是类,单元测试实际测试的就是对类的测试。类测试的目的主要确保一个类的代码能够完全满足类的说明所描述的要求。沈阳师范大学软件学院427.4.2单元测试开始的时间7.4.2单元测试开始的时间
单元测试开始的时间一般在完全说明了这个类,并且准备对其编码后不久。单元测试开始时要制定一个测试计划。在反复迭代的过程中,类的实现和说明在进程中可能会发生变化,所以应该在软件的其他部件使用该类之前对类进行测试,同时还有必要执行回归测试。沈阳师范大学软件学院437.4.3单元测试的人员7.4.3单元测试的人员
由另一个类的开发人员编写测试计划,由该类的开发人员完成测试,避免对类说明的错误理解沈阳师范大学软件学院447.4.4单元测试方法7.4.4单元测试方法
单元测试的方法有代码检查和执行测试用例。在某些情况下,用代码检查代替基于执行的测试方法是可行的,但是,代码检查也存在以下两个不利之处:代码检查容易受人为因素影响代码检查在回归测试方面明显需要更多的工作量沈阳师范大学软件学院457.4.4单元测试方法7.4.4单元测试方法类测试按顺序分为以下三部分:基于服务的测试:测试类中的每个方法。基于状态的测试:测试类的实例在其生命周期各个状态下的情况。基于响应状态的测试:从类和对象的责任出发,以外界向对象发送特定消息序列的方法来测试对象的各个响应状态。沈阳师范大学软件学院467.4.5方法的测试7.4.5方法的测试在测试类的功能实现时,应该首先保证类成员函数的正确性。测试时主要考虑封装在类中的一个方法对数据进行的操作,可以采用传统的模块测试方法,通过向所在对象发消息来执行,它的执行与状态有关。传统的针对模块的设计测试用例的技术,如等价划分、边界值分析、因果图、逻辑覆盖、路径覆盖等方法,仍然可以作为测试类中每个方法的主要技术。沈阳师范大学软件学院477.4.5方法的测试7.4.5方法的测试在面向对象的系统中的方法,是通过消息来驱动执行的,要测试类中的方法,必须用一个驱动程序对被测方法发送一条消息以驱动其执行,如果被测模块或方法中调用了其他模块或方法,则需要设计一个模拟被调子程序功能的存根程序,驱动程序、存根程序及被测模块或方法组成一个独立的可执行单元。沈阳师范大学软件学院487.4.5方法的测试7.4.5方法的测试在面向对象软件中,在保证单个方法功能正确的基础上,还应该处理好测试方法之间的协助关系。为了提高方法的重用性,设计方法的一个准则是提高方法的内聚,即在一个方法中只完成单个功能。对于继承过来的方法,也要加以测试。运行测试用例的时候,必须提供能够实例化的桩类,以及起驱动器作用的“主程序”类,来提供和分析测试用例。。沈阳师范大学软件学院497.4.6测试程度7.4.6测试程度可以根据已经测试了多少类的实现和多少类的说明来衡量测试的充分性。通常需要将这两者都考虑到,希望测试到操作和状态转换的各种组合情况。一个对象能维持自己的状态,而状态一般来说也会影响操作的含义。沈阳师范大学软件学院50本节内容7.5面向对象的集成测试7.5.1面向对象集成测试的内容7.5.2基于类间协作关系的横向测试7.5.3基于类间继承关系的纵向测试沈阳师范大学软件学院517.5.1面向对象集成测试的内容7.5.1面向对象集成测试的内容传统的集成测试,是由底向上通过集成完成的功能模块进行测试,一般可以在部分程序编译完成的情况下进行。对于面向对象程序,相互调用的功能是散布在程序的不同类中,类通过消息相互作用申请和提供服务。类的行为与它的状态密切相关,状态不仅仅是体现在类数据成员的值,也许还包括其他类中的状态信息。由此可见,类相互依赖极其紧密,根本无法在编译不完全的程序上对类进行测试。面向对象的集成测试通常需要在整个程序编译完成后进行。面向对象程序具有动态特性,程序的控制流往往无法确定,因此也只能对整个编译后的程序做基于黑盒的集成测试。沈阳师范大学软件学院527.5.1面向对象集成测试的内容7.5.1面向对象集成测试的内容把一组相互有影响的类看作一个整体称为类簇。类簇的测试主要依据系统中相关类的层次关系,检查类之间相互作用的正确性,即检查各相关类之间消息连接的合法性、子类的继承性与父类的一致性、动态绑定执行的正确性、类簇协同完成系统功能的正确性等。其测试有两种不同策略:基于类间协作关系的横向测试和基于类间继承关系的纵向测试。沈阳师范大学软件学院537.5.2基于类间协作关系的横向测试7.5.2基于类间协作关系的横向测试由系统的一个输入事件为激励,对其触发的一组类进行测试,执行相应的操作/消息处理路径,最后终止于某一输出时间。应用回归测试对以测试过的类集再重新执行一次,以保证加入新类时不会产生意外的结果沈阳师范大学软件学院547.5.3基于类间继承关系的纵向测试7.5.3基于类间继承关系的纵向测试首先通过测试独立的类来开始构造系统,在独立类测试完成后,进行下一层继承独立类的类的测试,这个依赖类层次的测试序列一直循环执行到构造完整个系统为止。集成测试在面向对象系统中属于应用生命周期的一个阶段,可在两个层次上进行:对一个新类进行测试,并测试在定义中所涉及的那些类的集成。将各部件集合在一起组成完整的系统进行测试。沈阳师范大学软件学院557.5.3基于类间继承关系的纵向测试7.5.3基于类间继承关系的纵向测试
面向对象的集成测试能够检测出相对独立的单元测试无法检测出的那些类相互作用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 快销品合同范本
- 工伤减员协议书
- 证券申购协议书
- 英国退房协议书
- 限合伙退股协议书
- 农业开发合同协议
- 小麦代储协议书
- 薪酬方案协议书
- 徐峥对赌协议书
- 自装安全协议书
- 调车服务合同范本
- 2026年计算机四级(Linux工程师实务)考试题及答案
- 2025年新《中国传统文化》考试复习题(附答案)
- 行车搬迁改造协议书
- 辽宁省辽西重点高中2025-2026学年高一上学期11月期中考试数学试题(原卷版)
- 甘肃省庆阳市七区2024-2025学年高一上学期期末联考语文试题
- 人教版小升初考试数学试卷(含解析)重庆市渝北区鲁能巴蜀小学2025年
- 2025年福建省综合评标专家库考试题库(二)
- 2024苏州大学辅导员招聘笔试真题及答案
- 《海南自由贸易港建设总体方案》解读
- 仓库安全管理台账模板
评论
0/150
提交评论