面向对象软件测试

上传人:qt****68 文档编号:52261401 上传时间:2018-08-19 格式:PPT 页数:20 大小:238KB
返回 下载 相关 举报
面向对象软件测试_第1页
第1页 / 共20页
面向对象软件测试_第2页
第2页 / 共20页
面向对象软件测试_第3页
第3页 / 共20页
面向对象软件测试_第4页
第4页 / 共20页
面向对象软件测试_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《面向对象软件测试》由会员分享,可在线阅读,更多相关《面向对象软件测试(20页珍藏版)》请在金锄头文库上搜索。

1、1/20第14讲 面向对象软件测试2/20结构化测试自底向上的测试策略,从“小型测试”开始,逐步走 向“大型测试”l从单元测试开始,然后逐步进入集成测试,最后是有效性 和系统测试l在传统应用中,单元测试集中在最小的可编译程序单位 子程序(如,模块、子例程、进程)l一旦这些单元均被独立测试后,它被集成在程序结构中l这时要进行一系列的回归测试以发现由于模块的接口所带 来的错误和新单元加入所导致的副作用l系统被作为一个整体测试以保证发现在需求中的错误3/20面向对象软件特点面向对象程序结构不再是传统的功能模块结构l作为一个整体,原有集成测试所要求的逐步将开发 的模块搭建在一起进行测试的方法已成为不可

2、能l面向对象软件抛弃了传统的开发模式,对每个开发 阶段都有不同以往的要求和结果,已经不可能用功 能细化的观点来检测面向对象分析和设计的结果l传统的测试模型对面向对象软件已经不再适用4/20面向对象测试模型面向对象的开发模型突破了传统的瀑布模型,将开发分为面 向对象分析(OOA),面向对象设计(OOD),和面向对象编 程(OOP)三个阶段针对这种开发模型,结合传统的测试步骤的划分,把面向对 象的软件测试分为:l面向对象分析的测试l面向对象设计的测试l面向对象编程的测试l面向对象单元测试l面向对象集成测试l面向对象系统测试l面向对象的回归测试5/20面向对象分析的测试 面向对象分析(OOA):E-

3、R图和语义网络模型l信息造型中的概念,与面向对象程序设计语言中 的重要概念结合在一起而形成的分析方法l最后通常是得到问题空间的图表的形式描述6/20面向对象分析的测试(续)OOA直接映射问题空间,全面的将问题空间中实现功能的现实抽 象化l将问题空间中的实例抽象为对象,用对象的结构反映问题空间的复杂实 例和复杂关系,用属性和操作表示实例的特性和行为l对一个系统而言,与传统分析方法产生的结果相反,行为是相对稳定的 ,结构是相对不稳定的,这更充分反映了现实的特性lOOA的结果是为后面阶段类的选定和实现,类层次结构的组织和实现提 供平台。因此,对OOA的测试,应从以下方面考虑:l对认定的对象的测试l对

4、认定的结构的测试l对认定的主题的测试l对定义的属性和实例关联的测试l对定义的服务和消息关联的测试7/20面向对象设计的测试 面向对象设计(OOD)采用造型的观点,以OOA为基 础归纳出类,并建立类结构或进一步构造成类库,实 现分析结果对问题空间的抽象lOOD是OOA的进一步细化和更高层的抽象lOOD确定类和类结构不仅是满足当前需求分析的要求,更 重要的是通过重新组合或加以适当的补充,能方便实现功能 的重用和扩增,以不断适应用户的要求l对OOD的测试,应从如下三方面考虑:l对认定的类的测试l对构造的类层次结构的测试l对类库的支持的测试8/20面向对象编程的测试 典型的面向对象程序具有继承、封装和

5、多态的新特性 ,这使得传统的测试策略必须有所改变l封装是对数据的隐藏,外界只能通过被提供的操作来访问或 修改数据,这样降低了数据被任意修改和读写的可能性,降 低了传统程序中对数据非法操作的测试l继承是面向对象程序的重要特点,继承使得代码的重用率提 高,同时也使错误传播的概率提高l多态使得面向对象程序对外呈现出强大的处理能力,但同时 却使得程序内同一函数的行为复杂化,测试时必须考虑不同 类型具体执行的代码和产生的行为9/20面向对象编程的测试(续)面向对象程序是把功能的实现分布在类中l能正确实现功能的类,通过消息传递来协同实现设 计要求的功能因此,在面向对象编程(OOP)阶段,忽略类功 能实现的

6、细则,将测试的目光集中在类功能的 实现和相应的面向对象程序风格,主要体现为 以下两个方面l数据成员是否满足数据封装的要求l类是否实现了要求的功能10/20面向对象的单元测试类测试传统的单元测试的对象是软件设计的最小单位模块l单元测试的依据是详细设描述,单元测试应对模块内所有重要的控制路 径设计测试用例,以便发现模块内部的错误l单元测试多采用白盒测试技术,系统内多个模块可并行地进行测试当考虑面向对象软件时,单元的概念发生了变化l封装驱动了类和对象的定义,这意味着每个类和类的实例(对象)包装了 属性(数据)和操纵这些数据的操作,而不是个体的模块l最小的可测试单位是封装的类或对象,类包含一组不同的操

7、作,并且某 特殊操作可能作为一组不同类的一部分存在l一个对象有它自己的状态和依赖于状态的行为, 对象操作既与对象的状 态有关, 但也可能改变对象的状态。 l单元测试的意义发生了较大变化,我们不再孤立地测试单个操作,而是 将操作作为类的一部分11/20面向对象的单元测试类测试(续)类的测试按顺序分为三个部分: 1.基于服务的测试: 测试类中的每一个方法; 2.基于状态的测试: 考察类的实例在其生命周期各 个状态下的情况;3.基于响应状态的测试: 从类和对象的责任出发, 以外界向对象发送特定的消息序列的方法来测试 对象的各个响应状态 12/20面向对象的集成测试传统的集成测试,有两种方式通过集成完

8、成的 功能模块进行测1.自顶向下集成:自顶向下集成是构造程序结构 的一种增量式方式,它从主控模块开始,按照软件 的控制层次结构,以深度优先或广度优先的策略, 逐步把各个模块集成在一起2.自底向上集成:自底向上测试是从“原子”模块( 即软件结构最低层的模块)开始组装测试13/20面向对象的集成测试(续)因为面向对象软件没有层次的控制结构,传统的自顶向下和 自底向上集成策略就没有意义此外,一次集成一个操作到类中(传统的增量集成方法)经常是 不可能的,这是由于“构成类的成分的直接和间接的交互”对OO软件的集成测试有两种不同策略1.基于线程的测试,集成对回应系统的一个输入或事件所需的一组类 ,每个线程

9、被集成并分别测试,应用回归测试以保证没有产生副作用2.基于使用的测试,通过测试那些几乎不使用服务器类的类(称为独立 类)而开始构造系统,在独立类测试完成后,下一层的使用独立类的类 ,称为依赖类,被测试。这个依赖类层次的测试序列一直持续到构造 完整个系统14/20面向对象的系统测试通过单元测试和集成测试,仅能保证软件开发的功能得以实现 。但不能确认在实际运行时,它是否满足用户的需要。为此, 对完成开发的软件必须经过规范的系统测试系统测试应尽量搭建与用户实际使用环境相同的测试平台,应 该保证被测系统的完整性,对临时没有的系统设备部件,也应 有相应的模拟手段系统测试时,应该参考OOA分析的结果,对应

10、描述的对象、属性 和各种服务,检测软件是否能够完全再现问题空间系统测试不仅是检测软件的整体行为表现,从另一个侧面看, 也是对软件开发设计的再确认15/20面向对象的系统测试(续)类簇(是一组相互合作的类)l类簇测试主要考察一组协同操作的类之间的相互作用, 是 系统集成测试的一个子阶段l在单个类分别进行测试后, 根据系统中类的层次关系图, 将相互有影响的类作为一个整体, 检查各相关类之间消息 连接的合法性、子类的继承性与父类的一致性、动态绑定 执行的正确性、类簇协同完成系统功能的正确性等l测试用例可由多种方案结合生成l如根据类的继承关系图来纵向检查类, 根据对象之间方法的相互作 用来横向检查类的

11、关系图16/20面向对象的系统测试(续)系统测试: l系统测试是对所有类和主程序构成的整个系统进行整体测试 , 以验证软件系统的正确性和性能指标等满足需求规格说明 书和任务书所指定的要求l它与传统的系统测试一样, 包括功能测试、性能测试、余量 测试等, 可套用传统的系统测试方法l测试用例可从对象行为模型和作为面向对象分析的事件流 图中导出17/20面向对象软件回归测试面向对象软件中的回归测试不再作为测试的一个独立的阶段, 而是以增量方式进行的l对象系统中的交互, 既发生在类内的方法间又发生在多个类之间l类A与类B的交互是通过:(1) B的实例变量作为参数传给类A 的某方法这时, 类B的改变必然

12、导致对类A 的方法的回归测试, 如果类A的方法又与其它 方法发生交互, 这些方法及其类必须都进行回归测试(2) 类A的实例是类B表示的一部分这时,B的所有对类A中变量进行引用的方法必须进行回归测试在这两种情况下, 测试依赖集可用来确定情况(1) 中所有与方法A的 交互集; 对象的数据依赖集可用来确定情况(1)和(2)中所有必须重新测试的 类和方法l对面向对象软件的修改主要有: 不修改对象属性, 只对方法进行修改l该对象以及系统中所有与该对象发生交互的对象都要进行完全新的测试。通 常, 这种测试代价是很高的 修改对象属性 18/20面向对象软件测试总结面向对象测试的整体目标以最小的工作量发现最多

13、的错误和传统软件测试 的目标是一致的,但是OO测试的策略和战术有很大不同测试的视角扩大到包括复审分析和设计模型,此外,测试的焦点从过程构件(模块) 移向了类不论是传统的测试方法还是面向对象的测试方法,都应该遵循下列的原则: 1.应当把“尽早和不断地测试”作为开发者的座右铭2.程序员应该避免检查自己的程序,测试工作应由独立的专业的软件测试机构来完成3.设计测试用例时,应该考虑到合法的输入和不合法的输入,以及各种边界条件,特殊情 况下要制造极端状态和意外状态,比如网络异常中断、电源断电等情况4.一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大关系5.对测试错误结果一定要有一个确

14、认的过程。一般有A测试出来的错误,一定要有一个B来 确认,严重的错误可以召开评审会进行讨论和分析6.制定严格的测试计划,并把测试时间安排得尽量宽松,不要希望在极短的时间内完成一 个高水平的测试7.回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多错误出现的现象并 不少见8.妥善保存一切测试过程文档,意义是不言而喻的,测试的重现性往往要靠测试文档19/20面向对象的度量方法Chidamber和Kemerer(C&K)提出了六个新的基于理论概念的OO度量:l每个类的加权方法数l继承的深度l孩子的个数l对象类之间的耦合l类的响应l方法之间的聚合缺乏 用于使用面向对象编程语言开发的软件。概括一下,有关的度量有:l每个类的加权方法数l继承树的深度l孩子数l每个类的响应l消息传递偶合l数据抽象偶合l方法数 20/20作业1.面向对象测试要考虑那些属性?2.怎样进行面向对象测试?

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

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号