第十二章 面向对象实现_第1页
第十二章 面向对象实现_第2页
第十二章 面向对象实现_第3页
第十二章 面向对象实现_第4页
第十二章 面向对象实现_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第12章 面向对象实现第十二章第十二章 面向对象实现面向对象实现12.1 程序设计语言12.2 程序设计风格12.3 测试策略12.4 设计测试用例概述概述 所谓面向对象实现,主要包括下述两项工作: 把面向对象设计结果翻译成用某种程序设计语言书写的面向对象程序 测试并调试面向对象程序 面向对象程序的质量基本上由面向对象设计的质量决定,但是,所采用的编程语言的特点和程序设计风格也将对程序的可靠性、可重用性和可维护性产生深远影响。 目前,测试仍然是保证软件可靠性的主要措施,对于面向对象的软件来说,情况也是如此: 面向对象测试的目标,也是用尽可能低的测试成本发现尽可能多的软件错误。 但是,面向对象程

2、序中特有的封装、继承和多态等机制,也给面向对象测试带来一些新特点。12.1 12.1 程序设计语言程序设计语言12.1 12.1 程序设计语言程序设计语言12.1.1 面向对象语言的优点 一致的表示方法 可重用性 可维护性12.1.2 面向对象语言的技术特点 支持类与对象概念的机制 实现聚集结构的机制 实现泛化结构的机制 实现属性和服务的机制 类型检查机制 类库 效率 持久保持对象的机制 参数化类的机制 开发环境12.2 12.2 程序设计风格程序设计风格12.1.3 选择面向对象语言的实际因素 将来能否占主导地位 可重用性 类库和开发环境 售后服务 对运行环境的需求 集成已有软件的难易程度1

3、. 提高可重用性为提高软件的可重用性,应该遵守下述准则: 提高方法的内聚 减少方法的规模 保持方法的一致性 把策略与实现分开 全面覆盖输入条件的各种可能组合 尽量不使用全局信息 充分利用继承机制通过调用公用方法实现代码重用12.1 12.1 程序设计风格程序设计风格2. 提高可扩充性 提高可重用性的准则同样也能提高程序的可扩充性。 此外,下述的面向对象程序设计准则也有助于提高程序的可扩充性: 封装类的实现细节 不要用一个方法遍历多条联链 避免使用多分支语句 精心选择和定义公有方法通过因子分解实现代码重用3.提高健壮性 健壮性:在硬件故障、输入的数据无效或操作错误等意外环境下,系统能做出适当响应

4、的程度。 通常需要在健壮性和效率之间做出适当的折衷。为提高健壮性应该遵守下述准则:预防用户的错误操作 检查参数的合法性不要预先设定数据结构的限制条件先测试后优化12.3 12.3 面向对象的测试策略面向对象的测试策略 测试软件的基本策略是,从“小型测试”开始,逐步过渡到“大型测试”,即从单元测试开始,逐步进入集成测试,最后进行确认测试和系统测试。 1. 面向对象的单元测试对于面向对象的软件来说,单元测试的含义发生了很大变化 现在,最小的可测试单元是封装起来的类和对象。 一个类通常包含一组不同的操作,而一个特定的操作也可能存在于一组不同的类中。 因此,测试面向对象的软件时,不能再孤立地测试单个操

5、作,而应该把操作作为类的一部分来测试。12.3 12.3 面向对象的测试策略面向对象的测试策略2. 面向对象的集成测试 因为在面向对象的软件中不存在层次的控制结构,传统的自顶向下和自底向上的集成策略就没有意义了。 此外,由于构成类成分彼此间存在或直接的交互,因此一次集成一个操作到类中(传统的渐增式集成方法),通常是不可能的。面向对象软件的集成测试主要有下述两种策略: 基于线程的测试 基于使用的测试12.3 12.3 面向对象的测试策略面向对象的测试策略3. 面向对象的确认测试 在确认测试或系统测试层次,不再考虑类之间互相连接的细节。 和传统的确认测试一样,面向对象软件的确认测试也集中检查用户可

6、见的动作和用户可识别的输出。 为了导出确认测试用例,测试人员应该认真研究动态模型和描述系统行为的脚本,以确定最可能发现用户交互需求错误的情景。12.4 12.4 设计测试用例设计测试用例 与传统软件测试(由软件的输入处理输出视图或实现模块的算法驱动测试用例的设计)不同,面向对象测试关注于设计适当的操作序列以检查类的状态。4.1 测试类的技术 设计测试用例以测试、单个类的技术,主要有随机测试、划分测试和基于故障的测试等3种。1. 随机测试让类实例随机地执行一些类内定义的操作,以测试类状态。如果应用系统的性质对操作的应用施加了一些限制,则可在最小操作序列的基础上随机增加一些操作,作为测试该类的测试

7、用例。12.4 12.4 设计测试用例设计测试用例2. 划分测试与测试传统软件时采用等价划分方法类似,测试类时采用划分测试方法也可以减少所需要的测试用例的数量。首先,把输入和输出分类,然后设计测试用例以测试划分出的每个类别。划分类别的方法主要有下述3种: 基于状态划分这种方法根据类操作改变类状态的能力来划分类操作,然后设计测试用例,分别测试改变状态的操作和不改变状态的操作。 基于属性划分这种方法根据类操作使用某个关键属性的情况来划分类操作。通常,把类操作划分成使用属性、修改属性、不使用也不修改属性等3类,然后设计测试用例,分别测试每类操作。 基于功能划分这种方法根据类操作完成的功能来划分类操作

8、,然后为每个类别的操作设计测试序列。12.4 12.4 设计测试用例设计测试用例3. 基于故障的测试这种方法与传统的错误推测法类似,也是首先推测软件中可能有的错误,然后设计出最可能发现这些错误的测试用例 为了推测出软件中可能有的错误,应该仔细研究分析模型和设计模型,而且在很大程度上要依靠测试人员的经验和直觉。 如果推测得比较准确,则使用基于故障的测试方法能够用相当低的工作量发现大量错误;反之,如果推测不准,这种方法的效果并不比随机测试技术的效果好。4.2 集成测试技术开始集成面向对象的软件之后,测试用例的设计变得更加复杂。在这个测试阶段,必须对类间协作进行测试。和测试单个类相似,测试类协作可以

9、使用随机测试方法和划分测试方法,以及基于情景的测试和行为测试来完成。12.4 12.4 设计测试用例设计测试用例1. 多类测试 对每个客户类,使用类操作符列表来生成一系列随机测试序列。这些操作符向服务类实例发送消息。 对所生成的每个消息, 确定协作类和在服务器对象中的对应操作符。 对服务器对象中的每个操作符(已经被来自客户对象的消息调用),确定传递的消息。 对每个消息,确定下一层被调用的操作符,并把这些操作符结合进测试序列中。银行系统的类-协作图12.4 12.4 设计测试用例设计测试用例12.4 12.4 设计测试用例设计测试用例2. 从动态模型导出测试用例 类的状态图有助于导出测试该类(及与其协作的那些类

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论