软件测试面向对象测试技术优秀PPT.ppt

上传人:知**** 文档编号:97787729 上传时间:2024-07-07 格式:PPT 页数:59 大小:932.50KB
返回 下载 相关 举报
软件测试面向对象测试技术优秀PPT.ppt_第1页
第1页 / 共59页
软件测试面向对象测试技术优秀PPT.ppt_第2页
第2页 / 共59页
点击查看更多>>
资源描述

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

1、第八章第八章 面向对象软件测试面向对象软件测试1一、面向对象测试概述一、面向对象测试概述1.传统的软件开发存在的问题传统的软件开发存在的问题(1)软件重用性差)软件重用性差(2)软件可维护性差)软件可维护性差(3)开发出的软件不易满足用户需求)开发出的软件不易满足用户需求2一、面向对象测试概述一、面向对象测试概述2、面向对象技术、面向对象技术基本概念基本概念(1)对象)对象(2)对象的状态和行为)对象的状态和行为(3)类)类(4)类的结构(类间关系)类的结构(类间关系)(5)消息和方法)消息和方法3一、面向对象测试概述一、面向对象测试概述 我们生活在一个对象的世界里我们生活在一个对象的世界里,

2、每个对象有一定的,每个对象有一定的属性属性,把属性相同的对象进行归纳就形成把属性相同的对象进行归纳就形成类类例如:家具就可以看作类,例如:家具就可以看作类,其主要的属性有价格、尺寸、其主要的属性有价格、尺寸、重量、位置和颜色等重量、位置和颜色等无论我们谈论桌子、椅子还是沙发、衣橱,这些属性总是无论我们谈论桌子、椅子还是沙发、衣橱,这些属性总是可用的,因为它们都是家具而继承了为类定义的所有属性。可用的,因为它们都是家具而继承了为类定义的所有属性。除了属性之外,每个对象可以被一系列不同的方式操纵,它可除了属性之外,每个对象可以被一系列不同的方式操纵,它可以被买卖、移动、修改以被买卖、移动、修改(如

3、漆上不同的颜色如漆上不同的颜色)。这些操作或方法将改变对象的一个或多个属性。这些操作或方法将改变对象的一个或多个属性。类的合法操作可以和对象的定义联系在一起,并且被类的所有类的合法操作可以和对象的定义联系在一起,并且被类的所有实例继承。实例继承。4一、面向对象测试概述一、面向对象测试概述面向对象特征面向对象特征(1)对象唯一性)对象唯一性(2)分类性)分类性(3)继承性)继承性(4)多态性)多态性5一、面向对象测试概述一、面向对象测试概述面向对象要素面向对象要素(1)抽象)抽象(2)封装)封装(3)共享)共享6 面向对象软件开发方法与传统的软件面向对象软件开发方法与传统的软件开发方法的区别:开

4、发方法的区别:(1)调查、分析系统需求,建立一个全面、)调查、分析系统需求,建立一个全面、合理、统一的模型。合理、统一的模型。(2)对象设计。)对象设计。(3)程序实现。)程序实现。7面向对象软件开发过程面向对象软件开发过程 面向对象的开发模型突破了传统的瀑布模型,面向对象的开发模型突破了传统的瀑布模型,面向对象的开发模型突破了传统的瀑布模型,面向对象的开发模型突破了传统的瀑布模型,将开发分为面向对象分析(将开发分为面向对象分析(将开发分为面向对象分析(将开发分为面向对象分析(OOAOOA),面向对象设计),面向对象设计),面向对象设计),面向对象设计(OODOOD),和面向对象编程(),和面

5、向对象编程(),和面向对象编程(),和面向对象编程(OOPOOP)三个阶段。)三个阶段。)三个阶段。)三个阶段。针对这种开发模型,结合传统的测试步骤的划针对这种开发模型,结合传统的测试步骤的划针对这种开发模型,结合传统的测试步骤的划针对这种开发模型,结合传统的测试步骤的划分,我们把面向对象的软件测试分为:分,我们把面向对象的软件测试分为:分,我们把面向对象的软件测试分为:分,我们把面向对象的软件测试分为:面向对象分析的测试面向对象分析的测试面向对象分析的测试面向对象分析的测试,面向对象设计的测试面向对象设计的测试面向对象设计的测试面向对象设计的测试,面向面向面向面向对象编程的测试对象编程的测试

6、对象编程的测试对象编程的测试;面向对象单元测试面向对象单元测试面向对象单元测试面向对象单元测试,面向对象集成测试面向对象集成测试面向对象集成测试面向对象集成测试,面向对象面向对象面向对象面向对象系统测试系统测试系统测试系统测试。8面向对象测试面向对象测试 在传统的面向过程程序中,对于函数在传统的面向过程程序中,对于函数在传统的面向过程程序中,对于函数在传统的面向过程程序中,对于函数 y=Function(x);y=Function(x);只需要考虑一个函数(只需要考虑一个函数(只需要考虑一个函数(只需要考虑一个函数(Function()Function())的行为特点,)的行为特点,)的行为特

7、点,)的行为特点,在面向对象程序中,你不得不同时考虑基类函数在面向对象程序中,你不得不同时考虑基类函数在面向对象程序中,你不得不同时考虑基类函数在面向对象程序中,你不得不同时考虑基类函数(Base:Function()Base:Function())的行为和继承类函数)的行为和继承类函数)的行为和继承类函数)的行为和继承类函数(Derived:Function()Derived:Function())的行为。)的行为。)的行为。)的行为。面向对象程序的结构不再是传统的功能模块结面向对象程序的结构不再是传统的功能模块结面向对象程序的结构不再是传统的功能模块结面向对象程序的结构不再是传统的功能模块

8、结构,作为一个整体,原有集成测试所要求的逐步将构,作为一个整体,原有集成测试所要求的逐步将构,作为一个整体,原有集成测试所要求的逐步将构,作为一个整体,原有集成测试所要求的逐步将开发的模块搭建在一起进行测试的方法已不可能。开发的模块搭建在一起进行测试的方法已不可能。开发的模块搭建在一起进行测试的方法已不可能。开发的模块搭建在一起进行测试的方法已不可能。9面向对象测试面向对象测试 面向对象软件对每个开发阶段都有不同面向对象软件对每个开发阶段都有不同以往的要求和结果,已经不可能用功能细化以往的要求和结果,已经不可能用功能细化的观点来检测面向对象分析和设计的结果。的观点来检测面向对象分析和设计的结果

9、。针对面向对象软件的开发特点,应该有一种针对面向对象软件的开发特点,应该有一种新的测试模型。新的测试模型。10二、面向对象模型二、面向对象模型OOAOOAOODOODOOPOOPOOA OOA TestTestOOD OOD TestTestOOP TestOOP TestOO UnitOO UnitTestTestOO Integrate TestOO Integrate TestOO System TestOO System TestOOA TestOOA Test:面向对象分析面向对象分析面向对象分析面向对象分析的测试的测试的测试的测试,OOD TestOOD Test:面向对象设计面向

10、对象设计面向对象设计面向对象设计的测试的测试的测试的测试,OOP TestOOP Test:面向对象编程面向对象编程面向对象编程面向对象编程的测试的测试的测试的测试;OO Unit TestOO Unit Test:面向对象面向对象面向对象面向对象单元测试单元测试单元测试单元测试,OO Integrate TestOO Integrate Test:面向面向面向面向对象集成测试对象集成测试对象集成测试对象集成测试,OO System TestOO System Test:面向对面向对面向对面向对象系统测试象系统测试象系统测试象系统测试。11二、面向对象模型二、面向对象模型OOA TestOOA

11、 Test和和和和OOD Test:OOD Test:是对分析和设计结果的测试,是对分析和设计结果的测试,是对分析和设计结果的测试,是对分析和设计结果的测试,主要是对分析设计生成的文档进行,是软件开发前期主要是对分析设计生成的文档进行,是软件开发前期主要是对分析设计生成的文档进行,是软件开发前期主要是对分析设计生成的文档进行,是软件开发前期的关键性测试;的关键性测试;的关键性测试;的关键性测试;OOP Test:OOP Test:主要针对编程风格和程序代码实现进行测试主要针对编程风格和程序代码实现进行测试主要针对编程风格和程序代码实现进行测试主要针对编程风格和程序代码实现进行测试看,其测试内容

12、主要在面向对象单元和面向对象集成看,其测试内容主要在面向对象单元和面向对象集成看,其测试内容主要在面向对象单元和面向对象集成看,其测试内容主要在面向对象单元和面向对象集成测试中体现;测试中体现;测试中体现;测试中体现;OO Unit Test:OO Unit Test:对程序内部具体单一的功能模块的测试。对程序内部具体单一的功能模块的测试。对程序内部具体单一的功能模块的测试。对程序内部具体单一的功能模块的测试。主要是对类的测试。主要是对类的测试。主要是对类的测试。主要是对类的测试。OO Integrate Test:OO Integrate Test:主要对系统内部相互服务进行测主要对系统内部

13、相互服务进行测主要对系统内部相互服务进行测主要对系统内部相互服务进行测试,如方法间的相互作用,类间的消息传递等。试,如方法间的相互作用,类间的消息传递等。试,如方法间的相互作用,类间的消息传递等。试,如方法间的相互作用,类间的消息传递等。OO System Test:OO System Test:是面向对象测试的最后阶段的测试,是面向对象测试的最后阶段的测试,是面向对象测试的最后阶段的测试,是面向对象测试的最后阶段的测试,主要以用户需求为测试标准,借鉴主要以用户需求为测试标准,借鉴主要以用户需求为测试标准,借鉴主要以用户需求为测试标准,借鉴OOAOOA及其测试结果。及其测试结果。及其测试结果。

14、及其测试结果。12二、面向对象模型二、面向对象模型OOA:将问题空间中实现的功能进行抽象,问:将问题空间中实现的功能进行抽象,问题空间中的实例抽象为对象,用对象的结构反题空间中的实例抽象为对象,用对象的结构反映问题空间的复杂关系,用属性和服务表示实映问题空间的复杂关系,用属性和服务表示实例的特殊性和行为例的特殊性和行为OOD:建立类结构或进一步构造类库,实现分:建立类结构或进一步构造类库,实现分析结果对问题空间的抽象。析结果对问题空间的抽象。OOP:软件的计算机实现。:软件的计算机实现。13 三、面向对象分析和设计的测试三、面向对象分析和设计的测试n nOOA TestOOA Test和和和和

15、OOD Test:OOD Test:是对分析和设计结果的测试,是对分析和设计结果的测试,是对分析和设计结果的测试,是对分析和设计结果的测试,主要是对分析设计生成的文档进行,是软件开发前期主要是对分析设计生成的文档进行,是软件开发前期主要是对分析设计生成的文档进行,是软件开发前期主要是对分析设计生成的文档进行,是软件开发前期的关键性测试;的关键性测试;的关键性测试;的关键性测试;n n OOAOOA直接映射问题空间,全面地在问题空间中实现直接映射问题空间,全面地在问题空间中实现直接映射问题空间,全面地在问题空间中实现直接映射问题空间,全面地在问题空间中实现功能的现实抽象化。功能的现实抽象化。功能

16、的现实抽象化。功能的现实抽象化。OOAOOA必须回答:必须回答:必须回答:必须回答:n n(1 1)为完成用户要求,系统应提供哪些功能)为完成用户要求,系统应提供哪些功能)为完成用户要求,系统应提供哪些功能)为完成用户要求,系统应提供哪些功能n n(2 2)系统应由哪些对象构成)系统应由哪些对象构成)系统应由哪些对象构成)系统应由哪些对象构成n n(3 3)每个对象应有哪些属性和服务)每个对象应有哪些属性和服务)每个对象应有哪些属性和服务)每个对象应有哪些属性和服务n n(4 4)对象间应有怎样的联系)对象间应有怎样的联系)对象间应有怎样的联系)对象间应有怎样的联系14三、面向对象分析和设计的

17、测试三、面向对象分析和设计的测试 面向对象设计(面向对象设计(面向对象设计(面向对象设计(OODOOD)采用)采用)采用)采用“造型的观点造型的观点造型的观点造型的观点”,以,以,以,以OOAOOA为基础归纳出类,并建立类结构或进一步构造成类库,实为基础归纳出类,并建立类结构或进一步构造成类库,实为基础归纳出类,并建立类结构或进一步构造成类库,实为基础归纳出类,并建立类结构或进一步构造成类库,实现分析结果对问题空间的抽象。现分析结果对问题空间的抽象。现分析结果对问题空间的抽象。现分析结果对问题空间的抽象。OOD OOD 归纳的类,可以是归纳的类,可以是归纳的类,可以是归纳的类,可以是对象简单的

18、延续,可以是不同对象的相同或相似的服务。对象简单的延续,可以是不同对象的相同或相似的服务。对象简单的延续,可以是不同对象的相同或相似的服务。对象简单的延续,可以是不同对象的相同或相似的服务。由此可见,由此可见,由此可见,由此可见,OODOOD不是在不是在不是在不是在OOAOOA上的另一思维方式的大动干上的另一思维方式的大动干上的另一思维方式的大动干上的另一思维方式的大动干戈,而是戈,而是戈,而是戈,而是OOAOOA的进一步细化和更高层的抽象。的进一步细化和更高层的抽象。的进一步细化和更高层的抽象。的进一步细化和更高层的抽象。面向对象设计(面向对象设计(面向对象设计(面向对象设计(OODOOD)

19、是以)是以)是以)是以OOAOOA归纳出的类为基础,归纳出的类为基础,归纳出的类为基础,归纳出的类为基础,建立类结构甚至进一步构造成类库,实现分析结果对问题建立类结构甚至进一步构造成类库,实现分析结果对问题建立类结构甚至进一步构造成类库,实现分析结果对问题建立类结构甚至进一步构造成类库,实现分析结果对问题空间的抽象。空间的抽象。空间的抽象。空间的抽象。15三、面向对象分析和设计的测试三、面向对象分析和设计的测试对认定的对象的测试对认定的对象的测试 OOA(面向对象分析)中认定的对象是对问题空间中的(面向对象分析)中认定的对象是对问题空间中的结构、其他系统、设备、被记忆的事件、系统涉及的人结构、

20、其他系统、设备、被记忆的事件、系统涉及的人员等实际实例的抽象。对它的测试可以从如下方面考虑:员等实际实例的抽象。对它的测试可以从如下方面考虑:p认定的对象是否全面认定的对象是否全面,其名称应该尽量准确、适用,是,其名称应该尽量准确、适用,是否问题空间中所涉及到的实例都反映在认定的抽象对象否问题空间中所涉及到的实例都反映在认定的抽象对象中。中。p认定的对象是否具有多个属性认定的对象是否具有多个属性。只有一个属性的对象通。只有一个属性的对象通常应看作其他对象的属性而不是抽象为独立的对象常应看作其他对象的属性而不是抽象为独立的对象p对认定为同一对象的实例是否有共同的、区别于其他实对认定为同一对象的实

21、例是否有共同的、区别于其他实例的共同属性,是否提供或需要相同的服务例的共同属性,是否提供或需要相同的服务p如果系统没有必要始终保持对象代表的如果系统没有必要始终保持对象代表的实例信息实例信息,提供,提供或者得到关于它的服务,认定的对象也无必要。或者得到关于它的服务,认定的对象也无必要。16三、面向对象分析和设计的测试三、面向对象分析和设计的测试对认定的结构的测试对认定的结构的测试 认定的结构指的是多种对象的组织方式,用来反映问题空认定的结构指的是多种对象的组织方式,用来反映问题空间中的复杂实例和复杂关系。间中的复杂实例和复杂关系。认定的分类结构测试要认定的分类结构测试要点:点:p处于高层的对象

22、,是否在问题空间中含有不同于下一处于高层的对象,是否在问题空间中含有不同于下一层对象的特殊可能性,即是否能派生出下一层对象。层对象的特殊可能性,即是否能派生出下一层对象。p处于同一低层的对象,是否能抽象出在现实中有意义处于同一低层的对象,是否能抽象出在现实中有意义的更一般的上层对象。的更一般的上层对象。p对所有认定的对象,是否能在问题空间内向上层抽象对所有认定的对象,是否能在问题空间内向上层抽象出在现实中有意义的对象。出在现实中有意义的对象。p高层的对象的特性是否完全体现下层的共性,低层的高层的对象的特性是否完全体现下层的共性,低层的对象是否有高层特性基础上的特殊性。对象是否有高层特性基础上的

23、特殊性。17三、面向对象分析和设计的测试三、面向对象分析和设计的测试对构造的类层次结构的测试对构造的类层次结构的测试 为了能充分发挥面向对象继承共享特性,为了能充分发挥面向对象继承共享特性,OOD(面向对象设计)(面向对象设计)的类层次结构通常基于的类层次结构通常基于OOA中产生的分类结构的原则来组织,中产生的分类结构的原则来组织,着重体现父类和子类间的一般性和特殊性。在当前的问题空间,着重体现父类和子类间的一般性和特殊性。在当前的问题空间,对类层次结构的主要要求是能在解空间构造实现全部功能的结对类层次结构的主要要求是能在解空间构造实现全部功能的结构框架。为此测试要注意如下几个方面:构框架。为

24、此测试要注意如下几个方面:p类层次结构是否涵盖了所有定义的类;类层次结构是否涵盖了所有定义的类;p是否能体现是否能体现OOA中所定义的实例关联、消息关联;中所定义的实例关联、消息关联;p子类是否具有父类没有的新特性;子类是否具有父类没有的新特性;p子类间的共同特性是否完全在父类中得以体现。子类间的共同特性是否完全在父类中得以体现。18五、面向对象编程的测试五、面向对象编程的测试 典型的面向对象程序具有继承、封装和多态的新典型的面向对象程序具有继承、封装和多态的新典型的面向对象程序具有继承、封装和多态的新典型的面向对象程序具有继承、封装和多态的新特性,这使得传统的测试策略必须有所改变。封装是特性

25、,这使得传统的测试策略必须有所改变。封装是特性,这使得传统的测试策略必须有所改变。封装是特性,这使得传统的测试策略必须有所改变。封装是对数据的隐藏,外界只能通过被提供的操作来访问或对数据的隐藏,外界只能通过被提供的操作来访问或对数据的隐藏,外界只能通过被提供的操作来访问或对数据的隐藏,外界只能通过被提供的操作来访问或修改数据,这样降低了数据被任意修改和读写的可能修改数据,这样降低了数据被任意修改和读写的可能修改数据,这样降低了数据被任意修改和读写的可能修改数据,这样降低了数据被任意修改和读写的可能性,降低了传统程序中对数据非法操作的测试。继承性,降低了传统程序中对数据非法操作的测试。继承性,降

26、低了传统程序中对数据非法操作的测试。继承性,降低了传统程序中对数据非法操作的测试。继承是面向对象程序的重要特点,继承使得代码的重用率是面向对象程序的重要特点,继承使得代码的重用率是面向对象程序的重要特点,继承使得代码的重用率是面向对象程序的重要特点,继承使得代码的重用率提高,同时也使错误传播的概率提高。提高,同时也使错误传播的概率提高。提高,同时也使错误传播的概率提高。提高,同时也使错误传播的概率提高。19五、面向对象编程的测试五、面向对象编程的测试 继承使得传统测试遇见了这样一个难题:对继承继承使得传统测试遇见了这样一个难题:对继承继承使得传统测试遇见了这样一个难题:对继承继承使得传统测试遇

27、见了这样一个难题:对继承的代码究竟应该怎样测试?多态使得面向对象程序对的代码究竟应该怎样测试?多态使得面向对象程序对的代码究竟应该怎样测试?多态使得面向对象程序对的代码究竟应该怎样测试?多态使得面向对象程序对外呈现出强大的处理能力,但同时却使得程序内外呈现出强大的处理能力,但同时却使得程序内外呈现出强大的处理能力,但同时却使得程序内外呈现出强大的处理能力,但同时却使得程序内“同同同同一一一一”函数的行为复杂化,测试时不得不考虑不同类型函数的行为复杂化,测试时不得不考虑不同类型函数的行为复杂化,测试时不得不考虑不同类型函数的行为复杂化,测试时不得不考虑不同类型具体执行的代码和产生的行为。具体执行

28、的代码和产生的行为。具体执行的代码和产生的行为。具体执行的代码和产生的行为。20 面向对象程序是把功能的实现分布在类中。能面向对象程序是把功能的实现分布在类中。能面向对象程序是把功能的实现分布在类中。能面向对象程序是把功能的实现分布在类中。能正确实现功能的类,通过消息传递来协同实现设计正确实现功能的类,通过消息传递来协同实现设计正确实现功能的类,通过消息传递来协同实现设计正确实现功能的类,通过消息传递来协同实现设计要求的功能。正是这种面向对象程序风格,将出现要求的功能。正是这种面向对象程序风格,将出现要求的功能。正是这种面向对象程序风格,将出现要求的功能。正是这种面向对象程序风格,将出现的错误

29、能精确的确定在某一具体的类。因此,在面的错误能精确的确定在某一具体的类。因此,在面的错误能精确的确定在某一具体的类。因此,在面的错误能精确的确定在某一具体的类。因此,在面向对象编程(向对象编程(向对象编程(向对象编程(OOPOOP)阶段,忽略类功能实现的细则,)阶段,忽略类功能实现的细则,)阶段,忽略类功能实现的细则,)阶段,忽略类功能实现的细则,将测试的目光集中在类功能的实现和相应的面向对将测试的目光集中在类功能的实现和相应的面向对将测试的目光集中在类功能的实现和相应的面向对将测试的目光集中在类功能的实现和相应的面向对象程序风格,主要体现为以下两个方面(假设编程象程序风格,主要体现为以下两个

30、方面(假设编程象程序风格,主要体现为以下两个方面(假设编程象程序风格,主要体现为以下两个方面(假设编程使用使用使用使用C+C+语言):语言):语言):语言):数据成员是否满足数据封装的要求数据成员是否满足数据封装的要求数据成员是否满足数据封装的要求数据成员是否满足数据封装的要求 类是否实现了要求的功能类是否实现了要求的功能类是否实现了要求的功能类是否实现了要求的功能 21六六、面向对象的单元测试、面向对象的单元测试 传统的单元测试是针对程序的函数、过程或完成传统的单元测试是针对程序的函数、过程或完成传统的单元测试是针对程序的函数、过程或完成传统的单元测试是针对程序的函数、过程或完成某一定功能的

31、程序块。沿用单元测试的概念,实际测某一定功能的程序块。沿用单元测试的概念,实际测某一定功能的程序块。沿用单元测试的概念,实际测某一定功能的程序块。沿用单元测试的概念,实际测试类成员函数。一些传统的测试方法在面向对象的单试类成员函数。一些传统的测试方法在面向对象的单试类成员函数。一些传统的测试方法在面向对象的单试类成员函数。一些传统的测试方法在面向对象的单元测试中都可以使用。如等价类划分法,因果图法,元测试中都可以使用。如等价类划分法,因果图法,元测试中都可以使用。如等价类划分法,因果图法,元测试中都可以使用。如等价类划分法,因果图法,边值分析法,逻辑覆盖法,路径分析法,等等,单元边值分析法,逻

32、辑覆盖法,路径分析法,等等,单元边值分析法,逻辑覆盖法,路径分析法,等等,单元边值分析法,逻辑覆盖法,路径分析法,等等,单元测试一般建议由程序员完成。测试一般建议由程序员完成。测试一般建议由程序员完成。测试一般建议由程序员完成。22六六、面向对象的单元测试、面向对象的单元测试n n面向对象的单元测试的对象是软件设计的最小单位面向对象的单元测试的对象是软件设计的最小单位面向对象的单元测试的对象是软件设计的最小单位面向对象的单元测试的对象是软件设计的最小单位类。类。类。类。n n单元测试的依据是详细设计,单元测试应对类中所有重单元测试的依据是详细设计,单元测试应对类中所有重单元测试的依据是详细设计

33、,单元测试应对类中所有重单元测试的依据是详细设计,单元测试应对类中所有重要的属性和方法设计测试用例,以发现类内部的错误。要的属性和方法设计测试用例,以发现类内部的错误。要的属性和方法设计测试用例,以发现类内部的错误。要的属性和方法设计测试用例,以发现类内部的错误。n n单元测试多采用白盒测试技术,系统内多个类都可以并单元测试多采用白盒测试技术,系统内多个类都可以并单元测试多采用白盒测试技术,系统内多个类都可以并单元测试多采用白盒测试技术,系统内多个类都可以并行进行测试。沿用单元测试概念,实际测试类成员函数。行进行测试。沿用单元测试概念,实际测试类成员函数。行进行测试。沿用单元测试概念,实际测试

34、类成员函数。行进行测试。沿用单元测试概念,实际测试类成员函数。一些传统的测试方法在面向对象的单元测试中都可以使一些传统的测试方法在面向对象的单元测试中都可以使一些传统的测试方法在面向对象的单元测试中都可以使一些传统的测试方法在面向对象的单元测试中都可以使用,如等价类划分、边界值分析、因果图、逻辑覆盖、用,如等价类划分、边界值分析、因果图、逻辑覆盖、用,如等价类划分、边界值分析、因果图、逻辑覆盖、用,如等价类划分、边界值分析、因果图、逻辑覆盖、路径分析法等。路径分析法等。路径分析法等。路径分析法等。231 1、单元测试的内容、单元测试的内容 面向对象的单元就是类,单元测试实际测面向对象的单元就是

35、类,单元测试实际测试的就是对类的测试。类测试的目的主要确保试的就是对类的测试。类测试的目的主要确保一个类的代码能够完全满足类的说明所描述的一个类的代码能够完全满足类的说明所描述的要求。要求。242 2、单元测试开始的时间、单元测试开始的时间 单元测试开始的时间一般在完全说明了这单元测试开始的时间一般在完全说明了这个类,并且准备对其编码后不久。单元测试开个类,并且准备对其编码后不久。单元测试开始时要制定一个测试计划。始时要制定一个测试计划。在反复迭代的过程中,类的实现和说明在在反复迭代的过程中,类的实现和说明在进程中可能会发生变化,所以应该在软件的其进程中可能会发生变化,所以应该在软件的其他部件

36、使用该类之前对类进行测试,同时还有他部件使用该类之前对类进行测试,同时还有必要执行回归测试。必要执行回归测试。253 3、单元测试的人员、单元测试的人员 由另一个类的开发人员编写测试计划,由由另一个类的开发人员编写测试计划,由该类的开发人员完成测试,避免对类说明的错该类的开发人员完成测试,避免对类说明的错误理解误理解264 4、单元测试方法、单元测试方法 单元测试的方法有单元测试的方法有代码检查代码检查和和执行测试用执行测试用例例。在某些情况下,用代码检查代替基于执行。在某些情况下,用代码检查代替基于执行的测试方法是可行的,但是,代码检查也存在的测试方法是可行的,但是,代码检查也存在以下两个不

37、利之处:以下两个不利之处:n n代码检查容易受人为因素影响代码检查容易受人为因素影响n n代码检查在回归测试方面明显需要更多的工作代码检查在回归测试方面明显需要更多的工作量量27 类测试按顺序分为以下三部分:类测试按顺序分为以下三部分:类测试按顺序分为以下三部分:类测试按顺序分为以下三部分:n n基于属性的测试基于属性的测试基于属性的测试基于属性的测试:类中所有属性的设置和访问的测试。:类中所有属性的设置和访问的测试。:类中所有属性的设置和访问的测试。:类中所有属性的设置和访问的测试。n n基于服务的测试基于服务的测试基于服务的测试基于服务的测试:测试类中的每个方法。:测试类中的每个方法。:测

38、试类中的每个方法。:测试类中的每个方法。n n基于状态的测试基于状态的测试基于状态的测试基于状态的测试:除了类的每个操作要进行测试,类:除了类的每个操作要进行测试,类:除了类的每个操作要进行测试,类:除了类的每个操作要进行测试,类的行为也要进行测试,所有能引起状态变化的事件都的行为也要进行测试,所有能引起状态变化的事件都的行为也要进行测试,所有能引起状态变化的事件都的行为也要进行测试,所有能引起状态变化的事件都要模拟到。类的行为通常可用状态图来描述,在利用要模拟到。类的行为通常可用状态图来描述,在利用要模拟到。类的行为通常可用状态图来描述,在利用要模拟到。类的行为通常可用状态图来描述,在利用状

39、态图进行类测试时,可考虑覆盖所有状态、状态迁状态图进行类测试时,可考虑覆盖所有状态、状态迁状态图进行类测试时,可考虑覆盖所有状态、状态迁状态图进行类测试时,可考虑覆盖所有状态、状态迁移等覆盖标准,也可考虑从初始状态到终止状态的所移等覆盖标准,也可考虑从初始状态到终止状态的所移等覆盖标准,也可考虑从初始状态到终止状态的所移等覆盖标准,也可考虑从初始状态到终止状态的所有迁移路径的覆盖。有迁移路径的覆盖。有迁移路径的覆盖。有迁移路径的覆盖。285 5、方法的测试、方法的测试 在测试类的功能实现时,应该首先保证类成员在测试类的功能实现时,应该首先保证类成员在测试类的功能实现时,应该首先保证类成员在测试

40、类的功能实现时,应该首先保证类成员函数的正确性。函数的正确性。函数的正确性。函数的正确性。测试时主要考虑封装在类中的一个方法对数据测试时主要考虑封装在类中的一个方法对数据测试时主要考虑封装在类中的一个方法对数据测试时主要考虑封装在类中的一个方法对数据进行的操作,可以采用传统的模块测试方法,通过进行的操作,可以采用传统的模块测试方法,通过进行的操作,可以采用传统的模块测试方法,通过进行的操作,可以采用传统的模块测试方法,通过向所在对象发消息来执行,它的执行与状态有关。向所在对象发消息来执行,它的执行与状态有关。向所在对象发消息来执行,它的执行与状态有关。向所在对象发消息来执行,它的执行与状态有关

41、。传统的针对模块的设计测试用例的技术,如等传统的针对模块的设计测试用例的技术,如等传统的针对模块的设计测试用例的技术,如等传统的针对模块的设计测试用例的技术,如等价划分、边界值分析、因果图、逻辑覆盖、路径覆价划分、边界值分析、因果图、逻辑覆盖、路径覆价划分、边界值分析、因果图、逻辑覆盖、路径覆价划分、边界值分析、因果图、逻辑覆盖、路径覆盖等方法,仍然可以作为测试类中每个方法的主要盖等方法,仍然可以作为测试类中每个方法的主要盖等方法,仍然可以作为测试类中每个方法的主要盖等方法,仍然可以作为测试类中每个方法的主要技术。技术。技术。技术。29 在面向对象的系统中的方法,是通过消息在面向对象的系统中的

42、方法,是通过消息来驱动执行的,要测试类中的方法,必须用一来驱动执行的,要测试类中的方法,必须用一个个驱动程序驱动程序对被测方法发送一条消息以驱动其对被测方法发送一条消息以驱动其执行,如果被测模块或方法中调用了其他模块执行,如果被测模块或方法中调用了其他模块或方法,则需要设计一个模拟被调子程序功能或方法,则需要设计一个模拟被调子程序功能的的存根程序存根程序,驱动程序、存根程序及被测模块,驱动程序、存根程序及被测模块或方法组成一个独立的可执行单元。或方法组成一个独立的可执行单元。30 在面向对象软件中,在保证单个方法功能正确在面向对象软件中,在保证单个方法功能正确在面向对象软件中,在保证单个方法功

43、能正确在面向对象软件中,在保证单个方法功能正确的基础上,还应该处理好测试方法之间的协助关系。的基础上,还应该处理好测试方法之间的协助关系。的基础上,还应该处理好测试方法之间的协助关系。的基础上,还应该处理好测试方法之间的协助关系。为了提高方法的重用性,设计方法的一个准则为了提高方法的重用性,设计方法的一个准则为了提高方法的重用性,设计方法的一个准则为了提高方法的重用性,设计方法的一个准则是提高方法的内聚,即在一个方法中只完成单个功是提高方法的内聚,即在一个方法中只完成单个功是提高方法的内聚,即在一个方法中只完成单个功是提高方法的内聚,即在一个方法中只完成单个功能。能。能。能。对于继承过来的方法

44、,也要加以测试。对于继承过来的方法,也要加以测试。对于继承过来的方法,也要加以测试。对于继承过来的方法,也要加以测试。运行测试用例的时候,必须提供能够实例化的运行测试用例的时候,必须提供能够实例化的运行测试用例的时候,必须提供能够实例化的运行测试用例的时候,必须提供能够实例化的桩类,以及起驱动器作用的桩类,以及起驱动器作用的桩类,以及起驱动器作用的桩类,以及起驱动器作用的“主程序主程序主程序主程序”类,来提供类,来提供类,来提供类,来提供和分析测试用例。和分析测试用例。和分析测试用例。和分析测试用例。316 6、测试程度、测试程度 可以根据已经测试了多少类的实现和多可以根据已经测试了多少类的实

45、现和多少类的说明来衡量测试的充分性。通常需要少类的说明来衡量测试的充分性。通常需要将这两者都考虑到,希望测试到操作和状态将这两者都考虑到,希望测试到操作和状态转换的各种组合情况。一个对象能维持自己转换的各种组合情况。一个对象能维持自己的状态,而状态一般来说也会影响操作的含的状态,而状态一般来说也会影响操作的含义。义。32类层次的分割测试类层次的分割测试 这种测试可以减少用完全相同的方式检查类测试这种测试可以减少用完全相同的方式检查类测试这种测试可以减少用完全相同的方式检查类测试这种测试可以减少用完全相同的方式检查类测试用例的数目。这很像传统软件测试中的等价类划分测用例的数目。这很像传统软件测试

46、中的等价类划分测用例的数目。这很像传统软件测试中的等价类划分测用例的数目。这很像传统软件测试中的等价类划分测试。分割测试又可分三种:试。分割测试又可分三种:试。分割测试又可分三种:试。分割测试又可分三种:n n基于状态的分割,按类操作是否改变类的状态来分割基于状态的分割,按类操作是否改变类的状态来分割基于状态的分割,按类操作是否改变类的状态来分割基于状态的分割,按类操作是否改变类的状态来分割(归类);(归类);(归类);(归类);n n基于属性的分割,按类操作所用到的属性来分割(归基于属性的分割,按类操作所用到的属性来分割(归基于属性的分割,按类操作所用到的属性来分割(归基于属性的分割,按类操

47、作所用到的属性来分割(归类);类);类);类);n n基于类型的分割,按完成的功能分割(归类)。基于类型的分割,按完成的功能分割(归类)。基于类型的分割,按完成的功能分割(归类)。基于类型的分割,按完成的功能分割(归类)。33举例举例n n一个银行类一个银行类一个银行类一个银行类AccountAccount:n n属性:属性:属性:属性:balancebalance(账户余额)和(账户余额)和(账户余额)和(账户余额)和creditLimitcreditLimit(透支额)(透支额)(透支额)(透支额)n n其操作有:其操作有:其操作有:其操作有:qqopenopen()打开账户、()打开账户

48、、()打开账户、()打开账户、qqsetupsetup()建立、()建立、()建立、()建立、qqdepositdeposit()存款、()存款、()存款、()存款、qqwithdrawwithdraw()取钱、()取钱、()取钱、()取钱、qqbalancebalance()查询余额、()查询余额、()查询余额、()查询余额、qqsummarizesummarize()操作清单、()操作清单、()操作清单、()操作清单、qqcreaditLimitcreaditLimit()透支限额()透支限额()透支限额()透支限额qqcloseclose()关闭账户()关闭账户()关闭账户()关闭账户3

49、4举例举例n n基于状态划分就是根据它们基于状态划分就是根据它们基于状态划分就是根据它们基于状态划分就是根据它们改变类状态改变类状态改变类状态改变类状态的能力的能力的能力的能力对类操作进行划分。对类操作进行划分。对类操作进行划分。对类操作进行划分。qq考虑考虑考虑考虑AccountAccount类,状态操作包括类,状态操作包括类,状态操作包括类,状态操作包括depositdeposit()、()、()、()、withdrawwithdraw(),非状态操作包括(),非状态操作包括(),非状态操作包括(),非状态操作包括balancebalance()、()、()、()、summarizesum

50、marize()、()、()、()、creaditLimitcreaditLimit()。()。()。()。qq将给不状态的操作和不改变状态的操作分别进行测将给不状态的操作和不改变状态的操作分别进行测将给不状态的操作和不改变状态的操作分别进行测将给不状态的操作和不改变状态的操作分别进行测试。因此:试。因此:试。因此:试。因此:qq测试用例测试用例测试用例测试用例a a:opensetupdepositdepositwithdrawwiopensetupdepositdepositwithdrawwithdrawclosethdrawcloseqq测试用例测试用例测试用例测试用例b b:open

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

当前位置:首页 > 技术资料 > 其他杂项

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

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