hw软件测试(周)9.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Unit 4 面向对象测试 4.1 预备知识 (1) 对象 ?对象是现实世界中存在的一个事物。对象可以是物理的,如一张桌子,也可以是抽象的,如一个开发项目或一个计划。 在面向对象开发中,对象就是模块,它是把数据结构和操作这些数据的方法紧密地结合在一起而构成的模块。 (2) 类和实例 ???? 具有相同特征和行为的所有对象构成一个类,属于某个类的对象称为该类的实例(Instance)。 类抽象地描述了属于该类的全部对象的属性(用数据结构表示)和操作(也称为服务或方法,在C++中即成员函数)。可将类看作一个抽象数据类型(Abstract Data Type,简称ADT)的实现。 (3) 继承 ?????  继承是子类(也称派生类)自动共享其父类和祖先类属性和操作(即共性部分)的机制。子类在继承共性部分的基础上,还可有增加或修改自身特有的属性和操作。 ?????  子类只继承一个父类的属性和操作,称为单重继承;子类若继承了多个父类的属性和操作,则称为多重继承。 继承是面向对象开发方法独有的机制。继承机制的好处是: 使共有的属性和操作能够共享,避免了类中的重复定义,增加了代码的可重用性。 由于代码重用性高,因而缩短了代码的总长度,使程序简短、结构清晰、易于理解。 对于具有继承关系的父类和多个子类的相同部分的修改,只需在父类中进行即可。 (4) 消息 ???? ?两个对象之间的通信单元称为消息,它是要求接收消息的对象执行类中定义的某操作的规格说明。消息机制类似于面向过程开发中的函数调用。 (5) 封装 ???封装(Encapsulation)也可理解为信息隐藏。对象是封装的最基本单位,类定义将其说明(用户可见的外部接口)与实现(用户不可见的内部实现)显式地分开,其内部实现按其具体定义的作用域提供保护。 封装机制具有如下优点: 简化了对对象的使用。外部程序仅通过接口访问对象,而不必知道对象内部的具体实现。 为软件模块的安全性提供了强有力的保障,因为对象内部数据结构是不能被外界访问的。 减小了类之间的相互依赖性,使程序结构更为紧凑、清晰,提高了软件部件的重用性,且使得对软件的修改、测试、维护等工作更易于进行。 (6) 抽象 抽象有两方面的意义: 尽管问题域中的事物是复杂的,但是分析人员并不需要了解和描述它们的一切,只需要分析研究其中与系统目标有关的事物及其本质性特征。 通过舍弃个体事物在细节上的差异,抽取其共同特征而得到一批事物的抽象概念。   (7) 多态性 ? ???一个操作在不同的类中可有不同的实现方式,这称为多态性(Polymophism)。因而属于不同类的对象,收到同一消息可以产生不同的结果。 ????? 多态性增强了软件的灵活性、重用性和可维护性。 面向对象软件测试的重要性 尽管面向对象开发方法提供了一系列可使人们以更高的效率开发出高质量的软件的机制,但最终软件的质量如何,还与开发过程中技术实施的具体情况有关,与开发人员的水平有关,故需要严格测试。 面向对象软件部件的重用率高,若不尽早进行严格的测试,错误的繁衍将给后期测试活动及软件维护带来极大的麻烦。 继承、封装、多态等机制的使用给面向对象软件带来了新的出错可能性,使得测试的侧重点发生了较大的变化。也就是说应重点针对这些机制的使用对软件进行测试。   分别从3个方面论述面向对象软件的特点及其对软件测试的影响。 1.面向对象程序执行的动态性 2.封装、继承和多态 3.演化、迭代的开发模式 面向对象程序执行的动态性 传统程序的执行路径是在程序开发时定义的,程序执行的过程是主动的,其程序流程可以用一个控制流图从头到尾地表示; 面向对象程序中方法的执行通常不是主动的,程序的执行路径是在运行过程中动态地确定的。 封装对测试的影响 封装把数据及对数据的操作封装在一起,限制了对象属性对外的透明性和外界对它的操作权限,在某种程度上避免了对数据的非法操作,有效防止了故障的扩散。 但同时,封装机制也给测试数据的生成、测试路径的选取以及测试结构的分析带来了困难。 继承对测试的影响 继承实现了共享父类中定义的数据和操作,同时也可定义新的特征。子类是在新的环境中存在,所以父类的正确性不能保证子类的正确性。 使代码的重用率得到了提高 也使故障的传播几率增加 多态对测试的影响 多态是指类中具有相似功能的不同函数用同一个名称来实现,从而可以使用相同的调用方式来调用这些具有不同功能的同名函数。 传统软件测试中经常使用静态分析技术对代码进行分析;面向对象软件中,由于动态绑定和多态性的存在所带来的不确定性,给测试覆盖率的满足增大了难度。 OO 测试的视角 不同层次的模

文档评论(0)

***** + 关注
实名认证
文档贡献者

本账号下所有文档分享可拿50%收益 欢迎分享

1亿VIP精品文档

相关文档