1 / 20
文档名称:

面向对象软件测试.ppt

格式:ppt   页数:20页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

面向对象软件测试.ppt

上传人:tmm958758 2015/9/20 文件大小:0 KB

下载得到文件列表

面向对象软件测试.ppt

文档介绍

文档介绍:第14讲
面向对象软件测试
结构化测试
自底向上的测试策略,从“小型测试”开始,逐步走向“大型测试”
从单元测试开始,然后逐步进入集成测试,最后是有效性和系统测试
在传统应用中,单元测试集中在最小的可编译程序单位——子程序(如,模块、子例程、进程)
一旦这些单元均被独立测试后,它被集成在程序结构中
这时要进行一系列的回归测试以发现由于模块的接口所带来的错误和新单元加入所导致的副作用
系统被作为一个整体测试以保证发现在需求中的错误
面向对象软件特点
面向对象程序结构不再是传统的功能模块结构
作为一个整体,原有集成测试所要求的逐步将开发的模块搭建在一起进行测试的方法已成为不可能
面向对象软件抛弃了传统的开发模式,对每个开发阶段都有不同以往的要求和结果,已经不可能用功能细化的观点来检测面向对象分析和设计的结果
传统的测试模型对面向对象软件已经不再适用
面向对象测试模型
面向对象的开发模型突破了传统的瀑布模型,将开发分为面向对象分析(OOA),面向对象设计(OOD),和面向对象编程(OOP)三个阶段
针对这种开发模型,结合传统的测试步骤的划分,把面向对象的软件测试分为:
面向对象分析的测试
面向对象设计的测试
面向对象编程的测试
面向对象单元测试
面向对象集成测试
面向对象系统测试
面向对象的回归测试
面向对象分析的测试
面向对象分析(OOA):E-R图和语义网络模型
信息造型中的概念,与面向对象程序设计语言中的重要概念结合在一起而形成的分析方法
最后通常是得到问题空间的图表的形式描述
面向对象分析的测试(续)
OOA直接映射问题空间,全面的将问题空间中实现功能的现实抽象化
将问题空间中的实例抽象为对象,用对象的结构反映问题空间的复杂实例和复杂关系,用属性和操作表示实例的特性和行为
对一个系统而言,与传统分析方法产生的结果相反,行为是相对稳定的,结构是相对不稳定的,这更充分反映了现实的特性
OOA的结果是为后面阶段类的选定和实现,类层次结构的组织和实现提供平台。因此,对OOA的测试,应从以下方面考虑:
对认定的对象的测试
对认定的结构的测试
对认定的主题的测试
对定义的属性和实例关联的测试
对定义的服务和消息关联的测试
面向对象设计的测试
面向对象设计(OOD)采用造型的观点,以OOA为基础归纳出类,并建立类结构或进一步构造成类库,实现分析结果对问题空间的抽象
OOD是OOA的进一步细化和更高层的抽象
OOD确定类和类结构不仅是满足当前需求分析的要求,更重要的是通过重新组合或加以适当的补充,能方便实现功能的重用和扩增,以不断适应用户的要求
对OOD的测试,应从如下三方面考虑:
对认定的类的测试
对构造的类层次结构的测试
对类库的支持的测试
面向对象编程的测试
典型的面向对象程序具有继承、封装和多态的新特性,这使得传统的测试策略必须有所改变
封装是对数据的隐藏,外界只能通过被提供的操作来访问或修改数据,这样降低了数据被任意修改和读写的可能性,降低了传统程序中对数据非法操作的测试
继承是面向对象程序的重要特点,继承使得代码的重用率提高,同时也使错误传播的概率提高
多态使得面向对象程序对外呈现出强大的处理能力,但同时却使得程序内同一函数的行为复杂化,测试时必须考虑不同类型具体执行的代码和产生的行为
面向对象编程的测试(续)
面向对象程序是把功能的实现分布在类中
能正确实现功能的类,通过消息传递来协同实现设计要求的功能
因此,在面向对象编程(OOP)阶段,忽略类功能实现的细则,将测试的目光集中在类功能的实现和相应的面向对象程序风格,主要体现为以下两个方面
数据成员是否满足数据封装的要求
类是否实现了要求的功能
面向对象的单元测试——类测试
传统的单元测试的对象是软件设计的最小单位——模块
单元测试的依据是详细设描述,单元测试应对模块内所有重要的控制路径设计测试用例,以便发现模块内部的错误
单元测试多采用白盒测试技术,系统内多个模块可并行地进行测试
当考虑面向对象软件时,单元的概念发生了变化
封装驱动了类和对象的定义,这意味着每个类和类的实例(对象)包装了属性(数据)和操纵这些数据的操作,而不是个体的模块
最小的可测试单位是封装的类或对象,类包含一组不同的操作,并且某特殊操作可能作为一组不同类的一部分存在
一个对象有它自己的状态和依赖于状态的行为, 对象操作既与对象的状态有关, 但也可能改变对象的状态。
单元测试的意义发生了较大变化,我们不再孤立地测试单个操作,而是将操作作为类的一部分