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