第8章面向对象软件测试
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
合理的分析,有利于找出更有价 值的测试用例。
软件质量保证与测试
分层与增量 -测试用例选择
D的接口中添加新的操作,并且有可能是D中的一个新方法实现的新 操作。新操作引入了新的功能/代码,这些都需要测试。
在D中改变那些在C中声明的操作规范,需要为操作添加新的基于规范 的测试用例。附加的测试用例提供了符合其前置条件的新输入,并且 对由任何加强了的后置条件导致的新的期望结果进行检查 。 在D中覆盖那些在C中实现了某个操作并且被D继承了的方法,可以复 用于该方法的所有继承来的基于规范的测试用例 。 在D中添加新的实例变量来实现更多的状态和/或属性,最有可能与新 的操作和/或重载方法中代码有关,而且关系到对测试的处理。 在D中改变类常量。类常量累计成每个测试用例的附加的后置条件。
这个类在系统中的作用,尤其是与之相关联的风险程度。 这个类的复杂性(根据状态个数、操作个数以及关联其他类的程度 等进行衡量) 开发这个类测试驱动程序所需的工作量。
软件质量保证与测试
面向对象的单元测试
构建测试用例
从类说明中确定测试用例根据类实现引进的边界值来扩充附加的测 试用例。 根据前置/后置条件来构建测试用例的总体思想是: • 为所有可能出现的组合情况确定测试用例需求。 • 创建测试用例来表达这些需求、包括特定输入值(包括常见值和边 界值),并确定它们的正确输出。 • 增加测试用例来阐述违反前置条件所发生的情况。
软件质量保证与测试
第8章 面向对象软件的测试
西安财经学院
软件质量保证与测试
第8章 面向对象软件的测试
8.1 面向对象软件测试概述
8.2 面向对象的单元测试
8.3 面向对象的集成测试 8.4 基于客户角度的Java测试 8.5 基于程序角度的Java测试
软件质量保证与测试
8.1 概述
我们生活在一个对象的世界里,每个对象有一定的属性,把属性相 同的对象进行归纳就形成类,如家具就可以看作类,其主要的属性有价 格、尺寸、重量、位置和颜色等,无论我们谈论桌子、椅子还是沙发、 衣橱,这些属性总是可用的,因为它们都是家具而继承了为类定义的所 有属性。实际上,计算机软件所创建的面向对象思想同样来源于生活。 除了属性之外,每个对象可以被一系列 不同的方式操纵,它可以被买卖、移动、修 改(如漆上不同的颜色)。这些操作或方法将 改变对象的一个或多个属性。这样所有对类 的合法操作可以和对象的定义联系在一起, 并且被类的所有实例继承。
软件质量保证与测试
面向对象(object-oriented)
面向对象(object-oriented) = 对象 + 分类 + 继承 + 通信
软件质量保证与测试
类与子类的测试
假设类D是类C的子类,类C已进行了充分的测试
软件质量保证与测试
分层与增量
派生类D是C的子类,那么所有的用于C的基于规范的测试用例也都适用 于D。引入术语“继承的测试用例”来代表从父类测试用例中选取出来 的、用于子类的测试用例。可以通过增量变化分析来确定继承的测试用 例中哪些在测试子类时必须执行、哪些可以不执行。
软件质量保证与测试
面向对象层次结构测试重点
对认定的结构的测试
认定的结构指的是多种对象的组织方式,用来反映问题空间中的复杂 实例和复杂关系。认定的分类结构测试要点: 处于高层的对象,是否在问题空间中含有不同于下一层对象的特 殊可能性,即是否能派生出下一层对象。 处于同一低层的对象,是否能抽象出在现实中有意义的更一般的 上层对象。 对所有认定的对象,是否能在问题空间内向上层抽象出在现实中 有意义的对象。 高层的对象的特性是否完全体现下层的共性,低层的对象是否有 高层特性基础上的特殊性。
软件质量保证与测试
面向对象层次结构测试重点
对认定的对象的测试
OOA(面向对象分析)中认定的对象是对问题空间中的结构、其他系 统、设备、被记忆的事件、系统涉及的人员等实际实例的抽象。对 它的测试可以从如下方面考虑: 认定的对象是否全面,其名称应该尽量准确、适用,是否问题空间 中所涉及到的实例都反映在认定的抽象对象中。 认定的对象是否具有多个属性。只有一个属性的对象通常应看作其 他对象的属性而不是抽象为独立的对象 对认定为同一对象的实例是否有共同的、区别于其他实例的共同属 性,是否提供或需要相同的服务,如果服务随着不同的实例而变化, 认定的对象就需要分解或利用继承性来分类表示。 如果系统没有必要始终保持对象代表的实例信息,提供或者得到关 于它的服务,认定的对象也无必要。
软件质量保证与测试
8.2 面向对象的单元测试
类测试的方法 通过代码检查或执行测试用例能有效地测试一个类的代码。
软件质量保证与测试
面向对象的单元测试
类测试的组成部分
作Hale Waihona Puke Baidu每个类,决定是将其作为一个单元进行独立测试,还是以某种 方式将其作为系统某个较大部分的一个组件进行独立测试,需要基于以 下因素进行决策:
软件质量保证与测试
面向对象层次结构测试重点
对构造的类层次结构的测试 为了能充分发挥面向对象继承共享特性,OOD(面向对象设计)的 类层次结构通常基于OOA中产生的分类结构的原则来组织,着重 体现父类和子类间的一般性和特殊性。在当前的问题空间,对类 层次结构的主要要求是能在解空间构造实现全部功能的结构框架。 为此测试要注意如下几个方面: 类层次结构是否涵盖了所有定义的类; 是否能体现OOA中所定义的实例关联、消息关联; 子类是否具有父类没有的新特性; 子类间的共同特性是否完全在父类中得以体现。
软件质量保证与测试
面向对象的单元测试
类测试系列的充分性三个常用标准是:
基于状态的覆盖率,测试覆盖了多少个状态转换为依据 。
基于约束的覆盖率,有多少对前置/后置条件被覆盖来表示充分性。 基于代码的覆盖率。当所有的测试用例都执行结束时,确定实现一 个类的每一行代码或代码通过的每一条路径至少执行了一次
软件质量保证与测试
面向对象的单元测试
测试驱动程序是一个运行测试用例并收集运行结果的程序,必须 是严谨的、结构清晰、简单,易于维护,并且对所测试的类说明变化 具有很强的适应能力,应该能够复用已存在的驱动程序的代码。 因为我们很少有时间和资源来对驱动程序软件进行基于执行的测 试(否则会进入一个程序测试递归的、无穷的之路),而是依赖代码 检查来检测测试驱动程序。