《面向对象测试优秀PPT.ppt》由会员分享,可在线阅读,更多相关《面向对象测试优秀PPT.ppt(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、面向对象测试第一页,本课件共有17页第第2323章章 面向对象测试面向对象测试23.1 23.1 扩大测试的视角扩大测试的视角23.2 23.2 测试测试OOAOOA和和OODOOD模型模型23.2.1 OOA23.2.1 OOA和和OODOOD模型的正确性模型的正确性23.2.2 OOA23.2.2 OOA和和OODOOD模型的一致性模型的一致性23.3 23.3 面向对象的测试策略面向对象的测试策略23.3.123.3.1在在OOOO语境中的单元测试语境中的单元测试23.3.223.3.2在在OOOO语境中的集成测试语境中的集成测试23.3.323.3.3在在OOOO语境中的确认测试语境中
2、的确认测试 第二页,本课件共有17页第第23章章面向对象测试面向对象测试 23.4 OO 23.4 OO软件的测试案例设计软件的测试案例设计 23.5 23.5 在类级别可用的测试方法在类级别可用的测试方法 23.6 23.6 类间测试案例实际类间测试案例实际 23.7 23.7 小结小结第三页,本课件共有17页23.1 23.1 扩大测试的死角扩大测试的死角所有面向对象模型应该被测试,以保证在所有面向对象模型应该被测试,以保证在模型的语法、语义和语用语境内的正确性模型的语法、语义和语用语境内的正确性、完整性和一致性。、完整性和一致性。第四页,本课件共有17页23.2 23.2 测试测试OOA
3、OOA和和OODOOD模型模型OOAOOA和和OODOOD模型的模型的语法正确性语法正确性基于符号的正确使用基于符号的正确使用来判断,而且每个模型被评审以保证正确的建模来判断,而且每个模型被评审以保证正确的建模约定被保持。其约定被保持。其语义正确性语义正确性必须基于模型对现实必须基于模型对现实世界问题域的符合度而判断。其世界问题域的符合度而判断。其一致性一致性判断可通判断可通过过“考虑模型中实体间的关系。一个不一致的模考虑模型中实体间的关系。一个不一致的模型在其中某一部分的表示不会在模型的其他部分型在其中某一部分的表示不会在模型的其他部分正确地反应正确地反应”。评估一致性时,应检查每个类及。评
4、估一致性时,应检查每个类及其和其他类的连接。其和其他类的连接。CRCCRC模型和对象模型和对象-关系图可用关系图可用来支持该活动。来支持该活动。第五页,本课件共有17页评估类模型的步骤如下:评估类模型的步骤如下:1.1.再次考察再次考察CRCCRC模型和对象模型和对象-关系模型;关系模型;2.2.检查每个检查每个CRCCRC索引卡片的描述以确定是否某委托的责索引卡片的描述以确定是否某委托的责任是协作者的定义的一部分;任是协作者的定义的一部分;3.3.反转该连接以保证每个被请求服务的协作者正在接收反转该连接以保证每个被请求服务的协作者正在接收来自某合理源的请求;来自某合理源的请求;4.4.使用在
5、第使用在第3 3步检查的反转连接,确定是否其他的类可步检查的反转连接,确定是否其他的类可能被需要或是否责任合适地在类间分组;能被需要或是否责任合适地在类间分组;5.5.确定是否广泛请求的责任可能被组合为单个的责任;确定是否广泛请求的责任可能被组合为单个的责任;6.6.步骤步骤1 1到到5 5被迭代地应用到每个类,并贯穿被迭代地应用到每个类,并贯穿OOAOOA模型的模型的每次演化。每次演化。第六页,本课件共有17页23.3 23.3 面向对象测试策略面向对象测试策略OOOO语境中的语境中的单元测试单元测试:对对对对OOOOOOOO软件的类测试等价于传统软件的单元测试,它关软件的类测试等价于传统软
6、件的单元测试,它关软件的类测试等价于传统软件的单元测试,它关软件的类测试等价于传统软件的单元测试,它关注模块的算法细节和模块接口间流动的数据,它是由注模块的算法细节和模块接口间流动的数据,它是由注模块的算法细节和模块接口间流动的数据,它是由注模块的算法细节和模块接口间流动的数据,它是由封装在类中的操作和类的状态行为驱动的。封装在类中的操作和类的状态行为驱动的。OOOOOOOO语境中的语境中的语境中的语境中的集成测试集成测试的两种策略:的两种策略:的两种策略:的两种策略:n n基于线程的测试基于线程的测试基于线程的测试基于线程的测试,集成响应系统的一个输入或事件所,集成响应系统的一个输入或事件所
7、需的一组类,每个线程被个体地集成和测试;需的一组类,每个线程被个体地集成和测试;n n基于使用的测试基于使用的测试,通过测试几乎不使用服务器类的类,通过测试几乎不使用服务器类的类(独立类独立类)来开始系统的构造,独立类被测试后,一层)来开始系统的构造,独立类被测试后,一层)来开始系统的构造,独立类被测试后,一层)来开始系统的构造,独立类被测试后,一层类(类(类(类(依赖类依赖类)使用独立类被测试。)使用独立类被测试。)使用独立类被测试。)使用独立类被测试。第七页,本课件共有17页23.3面向对象的测试策略面向对象的测试策略OOOO语境中的语境中的确认测试确认测试:OOOO软件的确认关注于用户可
8、见的动作和用户可识别的软件的确认关注于用户可见的动作和用户可识别的系统输出。传统的黑盒测试可用于驱动确认测试,测系统输出。传统的黑盒测试可用于驱动确认测试,测试案例可从创建作为试案例可从创建作为试案例可从创建作为试案例可从创建作为OOAOOAOOAOOA的一部分的对象的一部分的对象的一部分的对象的一部分的对象-行为模型和行为模型和行为模型和行为模型和事件流图导出。事件流图导出。事件流图导出。事件流图导出。第八页,本课件共有17页23.4 OO23.4 OO软件的测试案例设计软件的测试案例设计对对对对OOOO测试案例设计的整体方法:测试案例设计的整体方法:测试案例设计的整体方法:测试案例设计的整
9、体方法:1.1.每个测试案例应被唯一标识,并被显式地和将被每个测试案例应被唯一标识,并被显式地和将被测试的类相关联;测试的类相关联;2.2.测试的目的应被陈述;测试的目的应被陈述;3.3.对每个测试应开发一组测试步骤,应包含:对每个测试应开发一组测试步骤,应包含:对每个测试应开发一组测试步骤,应包含:对每个测试应开发一组测试步骤,应包含:a.a.将被测试的对象的一组特定状态;将被测试的对象的一组特定状态;将被测试的对象的一组特定状态;将被测试的对象的一组特定状态;b.b.将被作为测试的结果使用的一组消息和操作;将被作为测试的结果使用的一组消息和操作;c.c.当对象被测试时可能产生的一组异常;当
10、对象被测试时可能产生的一组异常;当对象被测试时可能产生的一组异常;当对象被测试时可能产生的一组异常;d.d.一组外部条件一组外部条件e.e.将辅助理解或实现测试的补充信息。将辅助理解或实现测试的补充信息。第九页,本课件共有17页23.4.1 OO23.4.1 OO概念的测试案例设计的含义概念的测试案例设计的含义封装使得一些信息在某种程度上难于获得,继承封装使得一些信息在某种程度上难于获得,继承也造成了对测试的障碍,多继承进一步使测试复也造成了对测试的障碍,多继承进一步使测试复杂化。杂化。23.4.2 23.4.2 传统测试案例设计方法的可用性传统测试案例设计方法的可用性白盒测试可用于为类定义的
11、操作的测试。黑盒测白盒测试可用于为类定义的操作的测试。黑盒测试对试对OOOO系统也是合适的。系统也是合适的。use-caseuse-case可以为黑盒测可以为黑盒测试及基于状态的测试的设计提供有用的输入试及基于状态的测试的设计提供有用的输入 。第十页,本课件共有17页23.4.3 23.4.3 基于故障的测试基于故障的测试基于故障的测试的目标是设计最有可能发现似乎可基于故障的测试的目标是设计最有可能发现似乎可基于故障的测试的目标是设计最有可能发现似乎可基于故障的测试的目标是设计最有可能发现似乎可能的故障的测试。其初步计划是从分析模型开始。能的故障的测试。其初步计划是从分析模型开始。集成测试在消
12、息连接中查找似乎可能的故障:非期集成测试在消息连接中查找似乎可能的故障:非期望的结果、错误的操作望的结果、错误的操作/消息使用、不正确的调用。消息使用、不正确的调用。且必须检查操作(函数)的行为。集成测试适用于且必须检查操作(函数)的行为。集成测试适用于且必须检查操作(函数)的行为。集成测试适用于且必须检查操作(函数)的行为。集成测试适用于属性以及操作,它试图在客户对象而不是服务器对属性以及操作,它试图在客户对象而不是服务器对属性以及操作,它试图在客户对象而不是服务器对属性以及操作,它试图在客户对象而不是服务器对象中发现错误,即其关注点是确定是否错误存在于象中发现错误,即其关注点是确定是否错误
13、存在于象中发现错误,即其关注点是确定是否错误存在于象中发现错误,即其关注点是确定是否错误存在于调用代码中。调用代码中。调用代码中。调用代码中。第十一页,本课件共有17页23.4.4 OO23.4.4 OO程序设计对测试的影响程序设计对测试的影响OOPOOP可能以几种方式对测试产生影响:可能以几种方式对测试产生影响:n某些类型的故障变得不太某些类型的故障变得不太“似乎可能似乎可能”(不值得不值得去测试去测试)。n某些类型的故障变得更加某些类型的故障变得更加“似乎可能似乎可能”(值得进值得进行测试行测试)。n某些新的故障类型出现。某些新的故障类型出现。第十二页,本课件共有17页23.4.5 23.
14、4.5 测试案例和类层次测试案例和类层次23.4.6 23.4.6 基于场景的测试设计基于场景的测试设计 基于场景的测试关心用户做什么,而不是产品做什么。它意味基于场景的测试关心用户做什么,而不是产品做什么。它意味基于场景的测试关心用户做什么,而不是产品做什么。它意味基于场景的测试关心用户做什么,而不是产品做什么。它意味着捕获用户必须完成的任务,然后在测试时应用它们或它们着捕获用户必须完成的任务,然后在测试时应用它们或它们着捕获用户必须完成的任务,然后在测试时应用它们或它们着捕获用户必须完成的任务,然后在测试时应用它们或它们的变体。它往往在单个测试中处理多个子系统。的变体。它往往在单个测试中处
15、理多个子系统。的变体。它往往在单个测试中处理多个子系统。的变体。它往往在单个测试中处理多个子系统。第十三页,本课件共有17页23.4.7 23.4.7 测试表层结构和深层结构测试表层结构和深层结构 表层结构表层结构指指指指OOOOOOOO程序的外部可观察的结构。测试基于程序的外部可观察的结构。测试基于程序的外部可观察的结构。测试基于程序的外部可观察的结构。测试基于用户任务进行。用户任务进行。用户任务进行。用户任务进行。深层结构深层结构指指OOOO程序的内部技术细节。程序的内部技术细节。对其测试用以检查作为对其测试用以检查作为OOOO系统的子系统和对象设计系统的子系统和对象设计的一部分被建立的依
16、赖、行为和通信机制。的一部分被建立的依赖、行为和通信机制。分析和分析和设计模型是其测试的基础。设计模型是其测试的基础。第十四页,本课件共有17页对对OO类的随机测试类的随机测试在类级别的划分测试在类级别的划分测试在类级别的划分测试在类级别的划分测试 划分测试可以减少测试类所需的测试案例的数量,划分测试可以减少测试类所需的测试案例的数量,输入和输出被分类,设计测试案例来处理每个类别。划输入和输出被分类,设计测试案例来处理每个类别。划输入和输出被分类,设计测试案例来处理每个类别。划输入和输出被分类,设计测试案例来处理每个类别。划分类别的方法:分类别的方法:分类别的方法:分类别的方法:n n基于状态
17、的划分基于状态的划分:基于类操作改变类状态能力来对类操:基于类操作改变类状态能力来对类操 作分类;作分类;n n基于属性的划分基于属性的划分:基于它们使用的属性来对类操作分类;:基于它们使用的属性来对类操作分类;:基于它们使用的属性来对类操作分类;:基于它们使用的属性来对类操作分类;n n基于类别的划分基于类别的划分基于类别的划分基于类别的划分:基于各自完成的类属函数来对类操作:基于各自完成的类属函数来对类操作:基于各自完成的类属函数来对类操作:基于各自完成的类属函数来对类操作 分类。分类。23.5 23.5 在类级别可用的测试方法在类级别可用的测试方法第十五页,本课件共有17页23.6 23
18、.6 类间测试案例设计类间测试案例设计类协作测试可通过应用随机和划分方法以及基于场景类协作测试可通过应用随机和划分方法以及基于场景的测试和行为测试来完成。的测试和行为测试来完成。生成生成多个类随机测试多个类随机测试案例的步骤:案例的步骤:1.1.对对每每个个客客户户类类,使使用用类类操操作作列列表表来来生生成成一一系系列列随随机机测测试试序序列列,操作将发送消息给其他服务器类;操作将发送消息给其他服务器类;2.2.对对生生成成的的每每个个消消息息,确确定定在在服服务务器器对对象象中中的的协协作作者者类类和和对对应应的操作;的操作;3.3.对服务器对象中的每个操作,确定它发送的消息;对服务器对象
19、中的每个操作,确定它发送的消息;4.4.对对每每个个消消息息,确确定定下下一一层层被被调调用用的的操操作作并并结结合合这这些些操操作作到测试序列中。到测试序列中。类的类的STDSTD可用于帮助导出测试类的动态行为的测试序列可用于帮助导出测试类的动态行为的测试序列第十六页,本课件共有17页23.7 23.7 小小结结和传统软件测试相比,和传统软件测试相比,OOOO测试的视角扩大到包括分析测试的视角扩大到包括分析和设计模型的评审,焦点从过程构件移向了类。和设计模型的评审,焦点从过程构件移向了类。OOPOOPOOPOOP完成后,可对每个类进行单元测试,方法有:基于故完成后,可对每个类进行单元测试,方
20、法有:基于故完成后,可对每个类进行单元测试,方法有:基于故完成后,可对每个类进行单元测试,方法有:基于故障的测试、随机测试和划分测试。集成测试可使用基于线障的测试、随机测试和划分测试。集成测试可使用基于线障的测试、随机测试和划分测试。集成测试可使用基于线障的测试、随机测试和划分测试。集成测试可使用基于线程或基于使用的策略来完成。基于场景的测试主宰了程或基于使用的策略来完成。基于场景的测试主宰了程或基于使用的策略来完成。基于场景的测试主宰了程或基于使用的策略来完成。基于场景的测试主宰了OOOOOOOO系系系系统的确认,通过使用统的确认,通过使用统的确认,通过使用统的确认,通过使用use-caseuse-caseuse-caseuse-case作为确认测试的主要驱动。作为确认测试的主要驱动。作为确认测试的主要驱动。作为确认测试的主要驱动。第十七页,本课件共有17页