《面向对象的软件测试.pptx》由会员分享,可在线阅读,更多相关《面向对象的软件测试.pptx(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 面向过程的开发方法对过程进行抽象,采用“自顶向下,逐步求精”的思路对要实现的功能模块进行逐层分解,从而简化问题的实现。面向过程方法的不足之处:软件重用性差 安全性差 软件稳定性和可维护性差第1页/共38页2 面向对象的开发方法的基本思想认为,客观世界是由各种各样的对象组成的,每种对象都有各自的内部状态和运动规律,不同的对象之间的相互作用和联系就构成了各种不同的系统。面向对象开发方法的优点:软件重用性高、安全性高软件可维护性高、容易扩展适用于大型、复杂项目第2页/共38页3 尽管面向对象开发方法提供了一系列可使人们以更高的效率开发出高质量的软件的机制,但最终软件的质量如何,还与开发过程中技术
2、实施的具体情况有关,与开发人员的水平有关,故需要严格测试。第3页/共38页41.为什么要使用面向对象的软件测试u面向对象软件部件的重用率高,并且继承、封装、多态等机制的使用给面向对象软件带来了新的出错可能性,测试的侧重点应针对这些机制的使用,对软件进行测试。u面向对象程序的结构作为一个整体,原有集成测试所要求的逐步将开发的模块搭建在一起进行测试的方法已成为不可能。第4页/共38页5u面向对象软件对每个开发阶段都有不同以往的要求和结果,已经不可能用功能细化的观点来检测面向对象分析和设计的结果。因此,传统的测试模型对面向对象软件已经不再适用。针对面向对象软件的开发特点,应该有一种新的测试模型。第5
3、页/共38页6 面向对象软件测试是根据面向对象的软件开发过程,结合面向对象的特点提出的。它包括:分析与设计模型测试技术类测试技术(单元测试)对象交互测试技术(集成测试)类层次结构测试技术(集成测试)面向对象系统测试技术 第6页/共38页72面向对象测试与传统测试的区别传统测试传统测试传统测试传统测试面向对象测试面向对象测试面向对象测试面向对象测试对象不同对象不同对象不同对象不同面向面向面向面向过程过程过程过程的软的软的软的软件,用件,用件,用件,用结构化结构化结构化结构化方法方法方法方法构建构建构建构建面向面向面向面向对象对象对象对象软件,采用软件,采用软件,采用软件,采用面面面面向对象的概念
4、和原则向对象的概念和原则向对象的概念和原则向对象的概念和原则,用用用用面向对象的方法面向对象的方法面向对象的方法面向对象的方法构建构建构建构建基本单位不同基本单位不同基本单位不同基本单位不同模块模块模块模块类和对象类和对象类和对象类和对象方法和策略不同方法和策略不同方法和策略不同方法和策略不同白盒、黑盒、白盒、黑盒、白盒、黑盒、白盒、黑盒、路径覆盖等路径覆盖等路径覆盖等路径覆盖等类测试、对象交互测试、类测试、对象交互测试、类测试、对象交互测试、类测试、对象交互测试、类层次结构测试等类层次结构测试等类层次结构测试等类层次结构测试等第7页/共38页83面向对象测试模型(Object-Orient
5、Test Model)面向对象的开发模型:面向对象分析(OOA)面向对象设计(OOD)面向对象编程(OOP)分析阶段产生整个问题空间的抽象描述,在此基础上,进一步归纳出适用于面向对象编程语言的类和类结构,最后形成代码。第8页/共38页9 针对这种开发模型,结合传统的测试步骤的划分,可将面向对象软件的测试分为:面向对象分析的测试OOA Test面向对象设计的测试OOD Test面向对象编程的测试OOP Test面向对象单元测试OO Unit Test面向对象集成测试OO Integrate Test面向对象系统测试OO System Test第9页/共38页10测试重点在于测试重点在于完整性完整
6、性和和冗余性冗余性,包括对,包括对认定对象认定对象的测试、的测试、对对认定结构认定结构的测试、对的测试、对认定主题认定主题的测试、对的测试、对定义的属性和定义的属性和实例关联实例关联的测试,对的测试,对定义的服务和消息关联定义的服务和消息关联的测试。的测试。包括测试包括测试认定的类认定的类、测试、测试类层次结构类层次结构(类的泛化继(类的泛化继承和关联)和测试承和关联)和测试类库类库。集中在集中在类功能的实现类功能的实现和相应的面向对象和相应的面向对象程序风格程序风格即即数据成员的封装性测试数据成员的封装性测试和和类的功能性类的功能性测试上。测试上。OO Unit TestOO Unit Te
7、st是是进行面向对象集成测试进行面向对象集成测试的的基础基础。OO Integrate TestOO Integrate Test主要对主要对系统内部的相互服务系统内部的相互服务进行进行测试,如测试,如成员函数间的相互作用成员函数间的相互作用,类间的消息传递类间的消息传递等。面向对象集成测试不但要等。面向对象集成测试不但要基于面向对象单元测基于面向对象单元测试试,更要,更要参见参见OODOOD或或OOD TestOOD Test结果结果。OO System TestOO System Test是基于面向对象是基于面向对象集成测试的最后阶集成测试的最后阶段段的测试,主要的测试,主要以用户需求为测
8、试标准以用户需求为测试标准,需要借鉴需要借鉴OOAOOA或或OOA TestOOA Test结果。结果。第10页/共38页11 由于面向对象软件与面向过程软件完全不同的思维方式和开发模式,使得面向对象软件的测试的视角从模块转变到了类。由于面向对象的开发往往用到原型开发方法,是一种演化式的开发过程,因而软件测试的H模型对面向对象软件是适用的。第11页/共38页128.1 面向对象软件测试的基本概念8.2 面向对象测试的内容与范围8.3 面向对象软件测试技术与方法8.4 面向对象软件测试用例设计8.5 面向对象测试的基本步骤8.6 面向对象测试工具JUnit小结第12页/共38页13 面向对象分析
9、的测试、面向对象设计的测试、面向对象编程的测试、面向对象单元测试、面向对象集成测试、面向对象系统测试的具体内容自学。(教材P150)第13页/共38页148.1 面向对象软件测试的基本概念8.2 面向对象测试的内容与范围8.3 面向对象软件测试技术与方法8.4 面向对象软件测试用例设计8.5 面向对象测试的基本步骤8.6 面向对象测试工具JUnit小结第14页/共38页15 面向对象软件开发的方法越来越受到人们的重视,应用越来越广,但面向对象软件的测试技术却仍处于初级阶段。虽然传统测试的方法有部分可用于面向对象的测试中,但照搬传统的测试方法并不适宜。面向对象软件测试技术与方法包括:分析和设计模
10、型测试技术类测试技术类层次结构测试技术对象交互测试技术第15页/共38页168.3.1 分析和设计模型测试技术 UML(统一建模语言)在面向对象技术开发中广泛应用,构建模型能帮助开发者理解正在解决的问题、管理正在开发的系统的复杂性、对具体的实现起指导作用。分析与设计模型的测试主要是对分析与设计模型进行测试,找出模型中的错误,其采用的方法是指导性审查。第16页/共38页178.3.2 类测试技术 面向对象软件产品的基本组成单位是类,从宏观上来看,面向对象软件是各个类之间的相互作用。因此面向对象程序测试的重心是类及类以上的各个层次。类测试的重点是类内方法间的交互和其对象的各个状态,它由与验证类的实
11、现是否和该类的说明完全一致的相关联的活动组成。类测试的对象主要是指能独立完成一定功能的原始类。类的测试用例主要是由方法序列集和相应的成员变量的取值所组成。第17页/共38页18类测试中需要考虑的因素 内容、人员、时间、程度、方法1.类测试的内容 类测试的目的主要是确保一个类的代码能够完全满足类的说明所描述的要求。在运行了各种类的测试后,如果代码的覆盖率不完整,这可能意味着该类包含了额外的文档支持的行为,需要增加更多的测试用例来进行测试。第18页/共38页192.类测试的时间 类测试的开始时间一般在完全说明这个类,并且准备对其编码后不久,就开发一个测试计划。类测试可以在开发过程中的不同位置进行,
12、应该在软件的其它部分使用该类之前执行类的测试。每当一个类的实现发生变化时,就应该执行回归测试。第19页/共38页203.类测试的测试人员 类测试通常由类的开发人员测试,但最好要求另一个类的开发人员编写测试计划,并且允许对代码进行对立检查。4.类测试的程度用以下两个点衡量测试的充分性:测试了多少类实现了多少类第20页/共38页215.类测试的标准 面向对象程序是把功能的实现分布在类中。能正确实现功能的类,通过消息传递来协同实现设计要求的功能。因此,类测试主要体现为以下两个方面:数据成员是否满足数据封装的要求类是否实现了要求的功能 第21页/共38页226.类测试的方法代码检查n优点:同行走查,往
13、往能查出5060以上的比较明显的错误n不足:易受人为因素影响,代码检查在回归测试方面明显需要更多的工作量,常常和原始测试差不多第22页/共38页23执行测试用例n优点:克服了代码检查的不足n缺点:确定测试用例和开发测试驱动程序需要很大的工作量。在某些情况下,构造一个测试驱动程序的工作量比开发这个类的还多,此时就应该评估在使用了这个类的系统之外测试这个类所花的代价和带来的收益。第23页/共38页248.3.3 类层次结构测试技术 类的层次结构测试就是用来测试类的继承关系的技术,主要是用来测试层次关系的一系列类(包括父类和子类)。测试的方法:用于测试子类的分层增量测试用于测试父类的抽象类测试第24
14、页/共38页258.3.4 对象交互测试技术 对象交互测试的重点是确保对象的消息传送能够正确进行。执行方式:使用嵌入到应用程序中的交互对象在独立的测试工具提供环境中,通过使得该环境中的对象相互交互而执行第25页/共38页268.1 面向对象软件测试的基本概念8.2 面向对象测试的内容与范围8.3 面向对象软件测试技术与方法8.4 面向对象软件测试用例设计8.5 面向对象测试的基本步骤8.6 面向对象测试工具JUnit小结第26页/共38页27 相比于传统的结构化程序测试,通过软件的IPO视图或者单个模块的算法细节来设计测试用例的方式,面向对象测试侧重于设计适当的操作序列来检查类的状态。第27页
15、/共38页28 要对类进行测试,就必须先确定和构建类的测试用例。类的描述方法有OCL(对象约束语言)、自然语言、状态图等方法,可以根据类说明的描述方法构建类的测试用例。根据类说明确定测试用例根据类的状态转换图来构建类的测试用例第28页/共38页298.1 面向对象软件测试的基本概念8.2 面向对象测试的内容与范围8.3 面向对象软件测试技术与方法8.4 面向对象软件测试用例设计8.5 面向对象测试的基本步骤8.6 面向对象测试工具JUnit小结第29页/共38页308.5.1 单元测试 面向对象的单元是类。一 个类可以包含许多不同的操作,一个特殊的操作可以出现在许多不同的类中。所以在面向对象的
16、单元测试中,一个操作功能只能作为一个类的一部分,类中有多个操作(功能),就要进行多个操作的测试。制定测试计划制定测试计划单元测试单元测试组装测试组装测试确认测试确认测试第30页/共38页318.5.2 组装测试面向对象软件的组装测试有两种不同的策略:1基于线程测试 把合作对应一个输入或事件的类集合组装起来,也就是用响应系统的一个输入或一个事件的请求来组装类的集合。对每个线程都要分别进行组装和测试。第31页/共38页322基于使用测试 按分层来组装系统,先进行独立类的测试。在独立类测试之后,下一个类的层次叫从属类。从属类用独立类进行测试。这种从属类层的顺序测试直到整个系统被构造完成。第32页/共
17、38页338.5.3 确认测试 确认测试在系统层进行测试,要考虑类间的联系细节,主要集中在用户可见活动和用户可识别的系统输出上,使用传统软件的黑盒子测试方法,大多使用基于脚本的测试。第33页/共38页348.1 面向对象软件测试的基本概念8.2 面向对象测试的内容与范围8.3 面向对象软件测试技术与方法8.4 面向对象软件测试用例设计8.5 面向对象测试的基本步骤8.6 面向对象测试工具JUnit小结第34页/共38页35 用于测试由Java语言编写的面向对象程序,开源工具。第35页/共38页368.1 面向对象软件测试的基本概念8.2 面向对象测试的内容与范围8.3 面向对象软件测试技术与方法8.4 面向对象软件测试用例设计8.5 面向对象测试的基本步骤8.6 面向对象测试工具JUnit小结第36页/共38页37小结 面向对象软件测试是面向对象软件开发中不可缺少的一环,是保证面向对象软件质量和可靠性的关键技术之一。本章针对面向对象技术新特性在测试中所引发的问题,讲述了面向对象的测试模型和方法,描述了面向对象软件测试的方法和策略。第37页/共38页38感谢您的观看!第38页/共38页
限制150内