面向对象软件的测试

上传人:san****019 文档编号:20624962 上传时间:2021-04-05 格式:PPT 页数:26 大小:315.10KB
返回 下载 相关 举报
面向对象软件的测试_第1页
第1页 / 共26页
面向对象软件的测试_第2页
第2页 / 共26页
面向对象软件的测试_第3页
第3页 / 共26页
点击查看更多>>
资源描述
软件测试方法和技术 面向对象软件的测试 回顾 验收测试的过程和主要内容 产品规格说明书的验证 用户界面和可用性测试 兼容性测试 可安装性和可恢复性测试 文档测试 验收测试报告和用户验收测试 面向对象软件的测试 1面向对象软件的特点 2面向对象测试的层次与数据流 3面向对象的单元测试 4面向对象的集成测试 1面向对象软件的特点 我们生活在一个对象的世界里 ,每个对象有一定的 属性 ,把属 性相同的对象进行归纳就形成 类 ,如家具就可以看作类,其主要 的属性有价格、尺寸、重量、位置和颜色等,无论我们谈论桌子、 椅子还是沙发、衣橱,这些属性总是可用的,因为它们都是家具 而继承了为类定义的所有属性。实际上,计算机软件所创建的面 向对象思想同样来源于生活。 除了属性之外,每个对象可以被一系列不同的方 式 操纵 ,它可以被买卖、移动、修改 (如漆上不同 的颜色 )。这些操作或方法将改变对象的一个或多 个属性。 这样所有对类的合法操作可以和对象的 定义联系在一起,并且被类的所有实例继承。 面向对象 (object-oriented) 面向对象 (object-oriented) = 对象 + 分类 + 继承 + 通信 面向对象 (object-oriented) 可重用性 。从一开始对象的产生就是为了重复利用, 完成的对象将在今后的程序开发中被部分或全部地 重复利用。 可靠性 。由于面向对象的应用程序包含了通过测试 的标准部分,因此更加可靠。由于大量代码来源于 成熟可靠的类库,因而新开发程序的新增代码明显 减少,这是程序可靠性提高的一个重要原因。 连续性 。具有面向对象特点的 C与 C语言有很大的兼容性, C程序员可以比较容易地过渡到 C语言开发工作。 面向对象 (object-oriented) 对象的封装和抽象 继承性与多态性 继承与多态 2面向对象测试的层次与数据流 -面向对象软件测试的层次与数据流,是面向对象软件的单元测试 与集成测试的基础。 类与子类的测试 假设类 D是类 C的子类,类 C已进行了充分的测试 分层与增量 类 C和其派生类 D间的增量变化能够用来帮助确定需要在 D中测试什么。 由于 D是 C的子类,那么所有的用于 C的基于规范的测试用例也都适用于 D。引入术语“ 继承的测试用例 ”来代表从父类测试用例中选取出来的、 用于子类的测试用例。可以通过简单的分析来确定继承的测试用例中哪 些适用于测试子类、哪些在测试子类时不必执行。 合理的分析,有利于找出更有 价值的测试用例。 分层与增量 D的接口中添加一个或多个新的操作,并且有可能是 D中的一个新方法实 现一个新操作。新操作引入了新的功能和新的代码,这些都需要测试。 在 D中改变那些在 C中声明的操作规范,需要为操作添加新的基于规范的测 试用例。附加的测试用例提供了新的输入,这些输入符合任何削弱了的前 置条件,并且对由任何加强了的后置条件导致的新的期望结果进行检查 。 在 D中覆盖那些在 C中实现了某个操作并且被 D继承了的方法,可以复用于 该方法的所有继承来的基于规范的测试用例 。 在 D中添加一个或多个新的实例变量来实现更多的状态和 /或属性。添加新 的变量最有可能与新的操作和 /或重载方法中代码有关,而且对测试的处理 也与它们有关 。 在 D中改变类常量。类常量累计成每个测试用例的附加的后置条件。 分层与增量:测试用例选择时,需要注意的事项: 面向对象层次结构测试重点 对认定的对象的测试 OOA(面向对象分析)中认定的对象是对问题空间中的结构、其他系 统、设备、被记忆的事件、系统涉及的人员等实际实例的抽象。对 它的测试可以从如下方面考虑: 认定的对象是否全面 ,其名称应该尽量准确、适用,是否问题空间 中所涉及到的实例都反映在认定的抽象对象中。 认定的对象是否具有多个属性 。只有一个属性的对象通常应看作其 他对象的属性而不是抽象为独立的对象 对认定为同一对象的实例是否有共同的、区别于其他实例的共同属 性,是否提供或需要相同的服务 ,如果服务随着不同的实例而变化, 认定的对象就需要分解或利用继承性来分类表示。 如果系统没有必要始终保持对象代表的实例信息,提供或者得到关 于它的服务,认定的对象也无必要。 面向对象层次结构测试重点 对认定的结构的测试 认定的结构指的是多种对象的组织方式,用来反映问题空间中的复杂实 例和复杂关系。 认定的分类结构测试要点: 对于结构中的一种对象,尤其是处于高层的对象,是否在问题空间 中含有不同于下一层对象的特殊可能性,即是否能派生出下一层对 象。 对于结构中的一种对象,尤其是处于同一低层的对象,是否能抽象 出在现实中有意义的更一般的上层对象。 对所有认定的对象,是否能在问题空间内向上层抽象出在现实中有 意义的对象。 高层的对象的特性是否完全体现下层的共性,低层的对象是否有高 层特性基础上的特殊性。 面向对象层次结构测试重点 对构造的类层次结构的测试 为了能充分发挥面向对象继承共享特性, OOD(面向对象设计)的类层次 结构通常基于 OOA中产生的分类结构的原则来组织,着重体现父类和 子类间的一般性和特殊性。在当前的问题空间,对类层次结构的主要要 求是能在解空间构造实现全部功能的结构框架。为此测试要注意如下几 个方面: 类层次结构是否涵盖了所有定义的类; 是否能体现 OOA中所定义的实例关联、消息关联; 子类是否具有父类没有的新特性; 子类间的共同特性是否完全在父类中得以体现。 3面向对象的单元测试 类测试 类测试的方法 通过代码检查或执行测试用例能有效地测试一个类的代码。 面向对象的单元测试 类测试的组成部分 作为每个类,决定是将其作为一个单元进行独立测试,还是以某 种方式将其作为系统某个较大部分的一个组件进行独立测试,需要 基于以下因素进行决策: 这个类在系统中的作用,尤其是与之相关联的风险程度。 这个类的复杂性(根据状态个数、操作个数以及关联其他类的程 度等进行衡量) 开发这个类测试驱动程序所需的工作量。 在进行类测试时,一般要考虑以下几个方面: 测试人员 测试内容 测试时间 测试过程 测试程度 面向对象的单元测试 构建测试用例 首先要看怎样从类说明中确定测试用例,然后根据类实现引进的边界 值来扩充附加的测试用例。 根据前置条件和后置条件来构建测试用例的总体思想是:为所有可 能出现的组合情况确定测试用例需求。在这些可能出现组合情况下, 可以满足前置条件,也能够达到后置条件。接下来创建测试用例来表 达这些需求,根据这些需求还可以创建拥有特定输入值(包括常见值 和边界值)的测试用例,并确定它们的正确输出。最后,还可以增加 测试用例来阐述违反前置条件所发生的情况。 面向对象的单元测试 类测试系列的充分性 充分性的三个常用标准是:基于状态的覆盖率、基于限制的覆盖率、 基于代码的覆盖率。 基于状态的覆盖率 , 以测试覆盖了多少个状态转换为依据 。 基于约束的覆盖率 , 与基于状态转换的充分性类似,还可以根据有 多少对前置条件和后置条件被覆盖来表示充分性。 基于代码的覆盖率 。当所有的测试用例都执行结束时,确定实现一 个类的每一行代码或代码通过的每一条路径至少执行了一次,这是 一种很好的思想。 面向对象的单元测试 构建测试的驱动程序 测试驱动程序是一个运行测试用例并收集运行结果的程序。测试驱动 程序的设计应该相对简单,因为我们很少有时间和资源来对驱动程序软 件进行基于执行的测试(否则会进入一个程序测试递归的、无穷的之 路),而是依赖代码检查来检测测试驱动程序。所以,测试驱动程序必 须是严谨的、结构清晰、简单,易于维护,并且对所测试的类说明变化 具有很强的适应能力。理想情况下,在创建新的测试驱动程序时,应该 能够复用已存在的驱动程序的代码。 4 面向对象的集成测试 面向对象的集成测试主要是两个方面: 类的线性测试,交互测试。 类的独立性测试(跨平台)方面测试。 面向对象的程序是由若干对象组成的,这些对象互相协作以解决 某些问题。对象的协作方式决定了程序能做什么,从而决定了这个 程序执行的正确性。因此,一个程序中对象的正确协作 -即交互 - 对于程序的正确性是非常关键的。 4 面向对象的集成测试 对象交互 汇集类测试 有些类在它们的说明中使用对象,但是实际上从不和这些对象中的任何一个 进行协作,也就是说,它们从来不请求这些对象的任何服务。相反,它们会 表现出以下的一个或多个行为: 存放这些对象的引用(或指针),程序中常表现为对象之间一对多的关系 创建这些对象的实例 删除这些对象的实例 协作类测试 该类的一个或多个操作中使用其它的对象并将其作为它们的实现中不可缺少 的一部分。当类接口中的一个操作的某个后置条件引用了一具对象的实例状 态,并且(或者)说明那个对象的某个属性被使用或修改了,那么这个类就 是一个协作类 。 4 面向对象的集成测试 面向对象集成测试的常用方法 抽样测试 正交阵列测试 例如,假设有 3个因素 -即 A、 B、 C,每个因素有 3 个级别 -即 1、 2、 和 3,那么这些值就有 27种可能的组合情况 -A的 3 种组合情况 C的 3 种 组合情况。 4 面向对象的集成测试 分布式对象测试 如今很少有设计单个进程在单个处理机上执行的系统,为了获得灵活 性和伸展性,许多系统都被设计成多个充分独立的部件,每个部件可以 存在于一个独立的进程中,而整个系统的运行会根据需要启动多个进程。 如果这些进程不是分布在一台机器上,而是分布在多台机器上,借助于 计算机通讯或网络实现它们相互之间的协作,从而构成一个分布式的系 统,客户机 /服务器模型是一种简单的分布式系统,在这种模型中,客户 机和服务器部件被设计成存在于独立的进程中,服务器提供数据计算、 处理、存储等管理工作,客户端接受用户的输入、请求、显示结果等工 作,两者分工不同。随着,计算机技术的发展,可以构造一个分布式的 服务器集群,通过并行技术实现复杂的或巨量的计算;也可以构造没有 服务器的、分布式的、由客户端构成的对等网络 (P2P) 系统。 4 面向对象的集成测试 分布式对象的概念和特点 线程 是一个操作系统进程内能够独立运行的内容,它拥有自 己的计数器和本地数据。线程是能够被调度执行的最小单位。 面向对象语言通过隐藏接口的属性或在某些情况下使线程对 对象做出反应,以此提供一些简单的同步手段。 在测试过程中,我们不能因为在一个特定执行中没有发生错误就 肯定缺陷被消除了,而是引导我们必须使用下列技术之一: 在类的层次上进行更彻底的测试。 在记录事件发生顺序的同时,执行大量的测试用例。 指定标准的测试环境 : 4 面向对象的集成测试 分布式对象测试中需要注意的情况 局部故障 : 超时 : 结构的动态性 : 线程 : 同步 : Q & A
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!