- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章面向对象测试概要
Computer Architecture and Structure 第七章 面向对象测试 面向对象影响测试 面向对象测试模型 面向对象分析测试 面向对象设计测试 面向对象单元测试 面向对象集成测试 面向对象系统测试 面向对象影响测试 对象、类作为构成面向对象程序的基本元素,封装了数据及作用在数据上的操作,父类中定义共享的公共特征,子类继承父类所有特征外,并引入新的特征,使得类和类之间通过继承组成有向无圈图结构。面向对象技术都封装、继承、多态和动态绑定等特性一方面提高了软件开发效率,保证了软件都质量,但另一方面也给软件测试提出了新的问题,增加了测试的难度和复杂性。 封装性影响测试 面向对象软件中,对象行为是被动的,在接受到相关外部信息后才被激活,对象的状态可能发生变化而进入新的状态。由于信息隐蔽与封装机制,类的内部属性和状态对外界是不可见的,只能通过类自身的方法获得,这给类测试时测试用例执行是否处于预期状态的判断带来困难。 继承性影响测试 在面向对象程序中,继承由扩展、覆盖和特例化三种基本机制实现。其中扩展是子类包含父类的特征;覆盖是子类的方法与父类的方法有相同的名字和消息参数,但其实现的方法不同;特例化是子类中特有的方法和实例变量。继承有利于代码的复用,但同时也使错误传播概率提高。 多态性影响测试 多态性是将多种不同的特殊行为进行抽象的一种能力,对于同样的消息被不同类型的对象接收时导致完全不同的行为,使得面向对象程序对外呈现出强大的处理能力,但同时却使得程序内“同一”函数的行为复杂化,多态促成了子类型替换。一方面,子类型替换使对象的状态难以确定。如果一个对象包含了A类型的对象变量,则A类型的所有子类型的对象也允许赋给该变量。程序运行过程中,该变量可能引用不同类型的对象,其结构不断变化。另一方面,子类型替换使得向父类对象发送的消息也允许向子类对象发送。 面向对象测试模型 OOA Test是面向对象分析测试;OOD Test指面向对象设计测试,OOA Test和OOD Test 主要对分析设计文档进行,是软件开发前期的关键性测试。OOP Test是面向对象编程测试,主要针对编程风格和程序代码进行测试。OO Unit Test是指面向对象单元测试,对程序单元的功能模块测试;OO Integrate Test是指面向对象集成测试,主要对系统单元模块之间的相互服务进行测试,如成员函数间的相互作用,类之间的消息传递等;OO System Test是指面向对象系统测试,主要以系统的需求规格说明为测试标准。 面向对象分析测试 面向对象分析测试分为五个方面 对认定的对象的测试 对认定的结构的测试 对认定的主题的测试 对定义的属性和实例关联的测试 对定义的服务和消息关联的测试。 对象测试 认定的对象是否全面,是否问题空间中所有的实例都反映在认定的抽象对象中。 认定的对象是否具有多个属性。将只有唯一一个属性的对象作为其他对象的属性处理,而不是抽象为独立的对象。 对认定为同一对象的实例是否有共同的,区别于其他实例的共同属性。 对认定为同一对象的实例是否提供相同的服务,如果服务随着不同的实例而变化,认定的对象就需要分解或利用继承性来分类表示。 系统没有必要始终保持对象代表的实例信息,提供或者得到关于它的服务,认定的对象也无必要。 认定的对象的名称应该尽量准确,适用。 结构测试 结构是多种对象的组织方式,用来反映问题空间中的复杂实例和复杂关系。认定的结构分为两种:分类结构和组装结构。其中,分类结构体现了问题空间中实例的一般与特殊关系,组装结构体现了问题空间中实例整体与局部的关系。 主题测试 贯彻George Miller 的“7+2”原则,如果主题个数超过7个,就要对相关密切的主题进行归并。 主题所反映的一组对象和结构是否具有相同和相近的属性和服务。 认定的主题是否是对象和结构更高层的抽象,是否便于理解OOA。 主题间的消息联系是否代表了主题所反映的对象和结构之间的所有关联。 属性和实例关联测试 定义的属性是否对相应的对象和分类结构的每个实例都适用。 定义的属性在现实世界是否与这种实例关系密切。 定义的属性在问题空间是否与这种实例关系密切。 定义的属性是否能够不依赖于其他属性被独立理解 定义的属性在分类结构中的位置是否恰当,低层对象的共有属性是否在上层对象属性体现。 在问题空间中每个对象的属性是否定义完整。 定义的实例关联是否符合现实。 在问题空间中实例关联是否定义完整,特别需要注意一对多和多对多的实例关联。 服务和消息关联测试 对象和结构在问题空间的不同状态是否定义了相应的服务。 对象或结构
文档评论(0)