面向对象软件测试技术研究
浅析面向对象模型中的软件测试技术

成分,所 以,面 向对象类 的测试是面 向对象 软件测试 的关键 。
测试 类时通常会遇 到一些新 问题 :
( )类 不能直接测试 ,测试类只能通过类的实例—— 对 1 象进行 。随之而来 的一个 问题是 ,对于无法实例化 的抽象类
如何进行 测试 。 ( )在面 向对象程序 中,对象之间 以消息传递的方式进 2 行通 信 ,控制流 的转移发 生在多个不 同对象之 间。因此 ,一 个类 内部 没有顺序 的控制流 。 ( )对于常规的过程来讲,仅靠传给过程 的参数和全局 3
维普资讯
2 0 年 8月刊 07 ( 总第 9 6期 )
大 众 科 技
DA Z HONG J KE
20. 078
( muai l N . ) Cu l v y o9 te 6
浅 析 面 向对 象模 型 中的软 件 测 试 技 术
雷育芳 ,李 陶深
如图 1 示: 所
分 ,类 中有多个操作 ( 能) 功 ,就要进行 多个操作 的测试 。另 外 ,父类 中定义 的某个操作 能被 多个子类继承 。但在实 际应
用 中,不 同子类 中某个操 作在 使用时又有细微 的不同,所 以 还必须对每个子类 中某个操作进行测试 。 初始状态
冈
输数 出据
【 关键词 】软件测 试;面向对 象;用例
【 中图分类号 】T 3 1 P 1 【 文献标识码 】A 【 文章编 号1 10 — 120 )8 0 8 0 0 8 15 (0 70 —0 5 — 3 1
的错 误 是 否 存 在 。
( )引言 一
软件测试是软件开发生命周 期中一项非常重要 的工作 , 贯穿于软件定义和 开发 的整个期间 。检验和评价 。它一 方面检 查软件产 品质量存在
面向对象的软件测试

面向对象的软件测试作者:王容来源:《电脑知识与技术》2013年第05期摘要:软件的测试时软件开发的重要部分,是保证软件质量提高软件性能的关键。
面向对象的软件测试具有它自己的特点,需要与传统的软件测试相区别,因此面向对象的软件测试则被分成不同的阶段,本文将面向对象软件测试层次划分为六个个层次,主要介绍了面向对象软件测试的以下三个层次:类测试、集成测试和系统测试。
关键词:面向对象;单元测试;集成测试;系统测试中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)05-1200-02面向对象的方法在现在的软件开发的运用中是越来越广泛,但是相应的测试方法并没有做出相应的改变,仍然有很多使用的还是传统软件使用的测试方法,出现这样的结果不是单方面的原因,既有在采用面向对象方法开发软件的时候在设计和分析阶段保留的文档不够全面或者并没有按照面向对象的方法进行保存,造成了在设计测试的时候不能够找到原始文档。
还有可能就是现在并没有有效的方法是针对面向对象方法的。
这样就会使得工作变得更加的复杂,就会增加工作量。
但是测试的结果也可能并不理想,使得最后得到的软件并不能够达到用户的期望。
因此,如何使用面向对象的方法来测试软件是非常必要的。
1 面向对象测试与传统测试技术的异同首先,这两种技术的测试过程是相同的。
都要对整个测试进行计划,设计出测试用例,运行测试用例,根据结果进行测试分析,最后是用户验收。
其次,这两种技术的测试目标也是相同的。
测试的目的都是为了使得设计出来的软件能够达到期望的功能。
再次,测试也是为了用尽可能少的工作量测试出软件尽可能多的错误,虽然在这三个方面这两种技术都是相同的,但是在测试计划和设计测试用例的时候是有很大的区别的,这主要是归结于面向对象软件和传统的软件的设计思路不同。
传统的软件是由各个功能模块组成的,那么在测试计划和设计测试用例的时候就要注意的就是这些功能模块之间的关系。
面向对象软件类测试研究新进展

0 引 言
面 向对 象 软 件 测 试 技 术 的研 究 是面 向对 象 开 发 方 法 的 不 可 缺 少 的一 环 , 保 证 软 件 质 量 和 提 高 软 件 可 靠 性 的 关 键 。 是 面 向对 象 测 试 的 整 体 目标 一 以 最 小 的 工 作 量 发 现 最 多 的 错
s d fh e eo me t f bet r ne R re ls ite ai cmp sino jc_r ne R r, n dc s sn t yo te v lp n jc. i t s wa . as sh s o oio f bet i td o wae u d oo 0e d o C b s t o oe s a l s et gi a t i s
tsi g UM L-a e si g M t S b sdtsig a dd t o -a e sigaes r e e . Fn l , dr cin f uu er sac et , n b s dt t , e n S - a e t , n aaf w b sdt tn u v y d e n l e r ial y ie t so tr e h o f e r
S re i d p igC iee epe iea o r fr ai n i e n nvri , hn z o 5 0 2C ia uvyn a p , hns o l’ brt n my nom t n gn r g iesyZ eg h u o 5 , hn) g n Ma n P S L i A I oE ei U t 4
面向对象类的自动测试方法研究

前 一 阶 段 开 发 的 软件 的测 试 更 将 直 接 地 影 响后 一 阶段 的开 发 进 度 。 传 统 的 手 动 测 试 方 法 是 采 用 随机 的命 令 选 择 。 尽 管 实 现 起 来 快 而容 易 . 但 是 这 种 没 有 计 划 的 测 试 方 法 无 法 预料 所 有 可 能 出 现 的问 题 . 无 法 也 防 止 测试 人 员 出错 。 外 一 种 测 试 方 法 以预 先 确 定 的 手 动 操 作 的 序 列 另 来 代 替 上述 的 随 机 命 令 选 择 。使 用 这 种 方 法, 试 人 员 可 以有 计 划 地 测 执 行 手 动 操 作 序 列 , 时 直 观 地检 验 程序 执 行 的 结 果 。 但 是 同样 不 幸 同 测 试 人 员 在 重 复这 些 操 作 序 列 的 过 程 中有 可 能 会 出错 , 时 执 行 这 种 同
图 2 新 软 件 测试 过 程
二 、 向对 象 测 试 模 型 面
.
反 复 的操 作 是 一件 极 其 乏 味 的 工 作 , 花 费大 量 的 财 力 和 高 强 度 的 劳 并 面 向 对 象 的 开 发 模 型 突 破 了 传 统 的 瀑 布模 型 . 开 发 分 为 面 向对 将 动。 象 分 析 ( O , 向 对 象 设 计 ( OD)面 向对 象 编 程 ( P 三 个 阶 段 。 O A) 面 O , OO ) 这 里 介 绍 的 自动 测 试 方 法 将 执 行 一 系列 的 操 作 序 列 而 不 需 要 测 针对这种开发模型 , 结合传统 的测 试步骤 . 文把面 向对象 的软件测 本 试 人 员 的 介 入 。 种测 试 方法 有 助 于排 除 因测 试 人 员 的错 误 而 造 成 的 试 策 略 分 为 : 向对 象 单 元 测 试 、 向对 象 集 成 测 试 、 向 对 象 确 认 和 这 面 面 面 影 响, 且更 快 地 得 到测 试 结 果 。 以一 个 典 型 的软 件 产 品 来 考 虑 , 管 系统 测 试 , 中包 括 了 面 向对 象 分 析 的测 试 、 向对 象 设 计 的 测 试 、 并 尽 其 面 面 开 发 自动 测试 会 有 一 定 的开 销 , 只 要 进 行 2 3次 以上 的 测 试 , 但 — 自动 测 向对 象 编程 的测 试 方 法 。该 模 型 如 下 : 试 方 法 将 会 降低 软件 测 试 总 的开 销 。 图 1 以直 观 地 看 出 自动 测 试 从 可 是 如 何 降 低 测 试 的总 开 销 的 。 _ l _
面向对象测试技术

摘要
软件测试 面向对象软件测试 测试驱动的开发
2010-7-2
Institute of Computer Software Nanjing University
14
OO技术 技术
系统测试需要对被测的软件结合需求分析做仔 细的测试分析,建立测试用例
2010-7-2
Institute of Computer Software Nanjing University
27
OO System Test
具体测试内容
功能测试:最常用和必须的测试 强度测试:测试系统的能力最高实际限度 性能测试:测试软件的运行性能 安全测试:测试是否确实能对系统进行保护,是否 有安全保密漏洞 恢复测试:采用人工的干扰使软件出错,中断使用, 检测系统的恢复能力,特别是通信系统 可用性测试:测试用户是否能够满意使用
2010-7-2
Institute of Computer Software Nanjing University
22
OOD Test
对类库支持的测试:强调的重点是再次软件开 发的重用
一组子类中关于某种含义相同或基本相同的操作, 是否有相同的接口(包括名字和参数表) 类中方法的功能是否较单纯,相应的代码行是否较 少 类的层次结构是否是深度大,宽度小
OOA:把E-R图和语义网络模型,即信息造型 中的概念,与OOP中的重要概念结合在一起 而形成的设计方法.
问题空间的图表的形式描述 OOA直接映射问题空间,全面的将问题空间中实现 功能的现实抽象化.将问题空间中的实例抽象为对 象,用对象的结构反映问题空间的复杂实例和复杂 关系,用属性和操作表示实例的特性和行为.
面向对象的软件测试基础

从测试视角的角度看待面向对象的概念
对象
消息
接口
类
继承
多态
*
对象
对象是指包含了一组属性以及对这些属性的操作的封装体。
对象是软件开发期间测试的直接目标 在程序运行时,对象被创建、修改、访问或删除,而在运行期间,对象的行为是否符合它的规格说明,该对象与和它相关的对象能否协同工作,这两方面都是面向对象软件测试所关注的焦点。
第10章 面向对象的软件测试基础
罗 东 俊
*
目 录
主要内容
1从测试视角看待面向对象
2面向对象测试的层次
4面向对象测试部分的例子
3面向对象测试模型
10.1从测试视角看待面向对象
从编程语言看,面向对象编程特点对测试产生了影响
测试面向对象软件的不同
封装把数据及对数据的操作封装在一起,限制了对象属性对外的透明性和外界对它的操作权限,在某种程度上避免了对数据的非法操作,有效防止了故障的扩散;但同时,封装机制也给测试数据的生成、测试路径的选取以及测试结构的分析带来了困难。
通常,传统软件中存在的依赖关系有:变量间的数据依赖;模块间的调用依赖;变量与其类型间的定义依赖;模块与其变量间的功能依赖。
在面向对象程序中,不得不同时考虑基类函数Base::Function()的行为和继承类函数Derived::Function()的行为。
而在面向对象软件中,除了存在上述依赖关系外,还存在以下的依赖关系:类与类间的依赖;类与操作间的依赖;类与消息间的依赖;类与变量间的依赖;操作与变量间的依赖;操作与消息间的依赖;操作与操作间的依赖。
1
*
面向对象软件的测试内容
模型测试
类测试
交互测试
面向对象软件的测试用例的设计方法

面向对象软件的测试用例的设计方法目前,面向对象软件的测试用例的设计方法,还处于研究、发展阶段。
与传统软件测试(测试用例的设计由软件的输入处理输出视图或单个模块的算法细节驱动)不同,面向对象测试关注于设计适当的操作序列以检查类的状态。
12.4.1 测试类的方法前面已经讲过,软件测试从“小型测试”开始,逐步过渡到“大型测试”。
对面向对象的软件来说,小型测试着重测试单个类和类中封装的方法。
测试单个类的方法主要有随机测试、划分测试和基于故障的测试等3种。
1. 随机测试下面通过银行应用系统的例子,简要地说明这种测试方法。
该系统的account(账户)类有下列操作: open(打开),setup(建立),deposit(存款),withdraw(取款),balance(余额),summarize(清单),creditLimit(透支限额)和close(关闭)。
上列每个操作都可以应用于account 类的实例,但是,该系统的性质也对操作的应用施加了一些限制,例如,必须在应用其他操作之前先打开账户,在完成了全部操作之后才能关闭账户。
即使有这些限制,可做的操作也有许多种排列方法。
一个account类实例的最小行为历史包括下列操作:open·setup·deposit·withdraw·close这就是对account类的最小测试序列。
但是,在下面的序列中可能发生许多其他行为:open·setup·deposit·[deposit|withdraw|balance|summarize|creditLimit]n·withdraw·close从上列序列可以随机地产生一系列不同的操作序列,例如:测试用例#r1:open·setup·deposit·deposit·balance·summarize·withdraw·close 测试用例#r2:open·setup·deposit·withdraw·deposit·balance·creditLimit·withdraw·close执行上述这些及另外一些随机产生的测试用例,可以测试类实例的不同生存历史。
一个面向对象软件测试工具实现及其实验研究

错误 , 每类 叉包 告 若 干型 号 的错 靛 这些 错误 都 是编 译 器 难 以
识 别 的
一
个 面 向对 象 软 件 测 试 工 具 实 现 及 其 实 验 研 究
李 心 科 刘 宗 田。 何 免 如
。 肥 工 业 大 学 微 型 计 算 机 应用 研 究 所 安 触 音 肥 20 0 ) f 胥 5 0 9
“ 大 学 计葬 机 学 院 . f 2 9 7 ) t海 。 海 00 2
・ t个 错 误 J
)
基于 植 错 算 法 的测 试 方 法 的 忧 点 是 : 1 原 理 比 较 简 单 . (]
O 软 件 测 试 工 具 Er e d 它 可 对 目标 软 件 所 包 告 的 错 误 O S e. r
引 起 软 件 错 误 的原 因 很 多 , 如设 计语 言的 缺 陷 、 计 ^员 设 主 观 上 的 错 话: . 过 对 卜 软 件 设 计 中 容 易 出现 的 错 误 等 通
着 多 种 ( ) 程 浯 言 如 c十 一 、AVA 等 的诞 生 向 对 象 方 ) 编 ( _』 面
O 软 件 中 不 但 有 传 统 软 件 中 可 能 出 现 的 错 误 ( 要 体 现 在 0 主 类 的方法 中 因 为 类 的 方 法 从 某 种 意 义 上 仍 是 一个 过 程 )还 , 会 出 现 一 与 OO 特 征 相 关 的 错 误 . 继 承 和 封 装 方 面 的 错 些 如 误 . O 测 试技 术 中 , 娄 作 为 洲 试 的 重点 植 错 工 具 一 方 在 O 将
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象软件测试技术研究
一、引言
软件测试是伴随着软件的产生而产生的。软件危机的频繁出现促使了软件
测试的地位得到了大幅提升。软件测试已经不仅仅是局限于软件开发过程中的一
个阶段,它已经开始贯穿于整个软件开发过程,成为软件产品质量控制与质量管理
的重要手段之一。
软件测试技术作为软件工程学科的一个分支,是保证软件质量和可靠性的
关键,因此它也是软件开发过程中的一个重要环节。它的核心思想是:对于输入域
的特定输入,观察软件的执行结果,验证该结果与期望结果是否一致,然后根据结
果作相应的和调整。在测试过程中,测试用例的选择决定测试的有效性,这也就直
接影响到成本,是软件测试的关键和难点。目前,软件测试技术的发展还不是很成
熟,测试人员在选择测试用例时通常根据直觉和经验进行,给测试带来很大的盲目
性,最终导致的后果是使软件后期维护的费用在成本中居高不下。科学生成测试
用例对提高软件质量不仅重要而且必要。
随着面向对象软件开发技术的广泛应用和软件测试自动化的要求,特别是
基于的软件开发技术的逐渐普及,基于模型的软件测试逐渐得到了软件开发人员
和软件测试人员的认可和接受。它是一种新兴的测试用例生成技术。有优于以前
的测试技术的方面。其中模型以其定义良好、功能强大、普遍适用的优点,为基
于模型的测试提供了非常好的契机。
二、面向对象特征对软件测试的影响
面向对象技术是一个全新的开发模式,具有以下特点:
(1)它要综合考虑软件开发过程所有阶段。
(2)在软件开发的整个生存周期中,每个阶段之间是连续的。
(3)开发过程分为面向对象分析(00A)、面向对象设计(OOD)、面向对象编程(OOP)、
面向对象测试(OOT)四个连续的部分。
Coad和Yourdon给面}向对象的概念下了一个定义: 面向对象=对象+类+继承+通
信
如果一个软件系统是使用这样4个概念设计和实现的,则认为这个软件系统
是面向对象的。一个而向对象的程序的每一个组成部分都是对象,计算是通过对
象和对象之间的通信来执行的。
面向对象技术的本质是定义了类的抽象,将变量和与作用于它的操作封装
到一块。然后用不同的类和方法组合成一个对象系统。面向对象软件将传统软件
中的一个过程或一个方法内的复杂性转移到对象之间的交互中。面向对象语言一
些本质特征形成了如下的一些新的故障、错误风险。
1、基本功能模块
在面向对象系统中,系统的基本构造单元是封装了数据和方法的类和对象,
而不再是一个个能完成特定功能的功能模型。每个对象有自己的生存期,有自己
的状态。消息是对象之间相互请示或协作的途径,是外界使用对象方法及获取对
象状态的唯一方式。对象的功能是在消息的触发下,由对象所属类中定义的方法
与相关对象的合作共同完成,并且对象在不同状态下对消息的响应可能完全同。
工作过程中,对象的状态可能被改变,产生新的状态,即发生状态的转移。对象中的
数据和方法是一个有机的整体,在软件测试过程中,不能仅仅检查输入数据产生的
输出结果是否与预期结果相吻合,还要考虑对象的状态变化。因此,除了要对对象
的状态与方法间的相互影响进行测试,还要进行状态测试。
2、系统的功能实现
在面向对象系统中,系统的功能体现在对象间的协作上,而不再是简单的过
程调用关系。面向对象程序的执行实际上是执行一个由消息连接起来的方法序列,
方法的实现与所属对象本身的状态有关,各方法之间可能有相互作用。为实现某
一特定的功能,可能要激活调用属于不同对象类的多个成员函数,形成成员函数的
启用链。因此,基于功能分解的自顶向下或自底向上的集成测试策略不适用于面
向对象软件系统的测试。
3、封装对测试的影响
封装是指在词法单位之中或之间决定名字可见性的访问控制机制。它支持
信息的隐蔽和模块化,有助于防止全局变量访问的问题。尽管封装不会直接促成
错误的发生,它却给测试带来了障碍。封装使对象的内部状态隐蔽,如果类中未提
供足够的存取函数来表明对象的实现方式和内部状态,则类的信息隐蔽机制将给
测试带来困难。
4、继承对测试的影响
继承也是面向对象语言中的一个本质特征。继承可用于一般与特殊关系,
并目方便编码。但继承削弱了封装性,产生了类似于非面向对象语言中全局数据
的错误风险。由于继承的作用,一个函数可能被封装在具有继承关系的多个类中,
子类中还可以对继承的特征进行覆盖或重定义。
5、多态对测试的影响
多态性是指一个引用可以与多个对象绑定的能力。多态能减少代码的复杂
性和规模,同时还可以实现动态绑定。但依赖于不规则的类层次的动态绑定可能
产生编程人员没有想到的结果。某些绑定能正确的工作但并不能保证所有的绑定
都能正确地运行。以后绑定的对象可能很容易将消息发送给错误的类,执行错误
的功能,还可能导致一些与消息序列和状态相关的错误。
三、面向对象软件测试的层次划分及内容
面向对象软件测试的测试工作过程与传统的测试一样,分为以下几个阶段:
制定测试计划、产生测试用例、执行测试和评价。目前,面向对象软件测试划分
方法是:方法测试、类测试、类簇测试、系统测试。
1、方法测试
方法测试主要考察封装在类中的一个方法对数据进行的操作,它与传统的
单元模块测试相对应,可以将传统成熟的单元测试方法。但是,方法与数据一起被
封装在类中,并通过向所在对象发送消息来驱动,它的执行与对象状态有关,也有
可能会改变对象的状态。因此,设计测试用例时要考虑设置对象的初态,使它收到
消息时执行指定的路径。
2、类测试
主要考察封装在一个类中的方法与数据之间的相互作用。一个对象有它自
己的状态和依赖于状态的行为,对象操作既与对象状态有关,又反过来可能改变对
象的状态。普遍认为这一级别的测试是必须的。类测试时要把对象与状态结合起
来,进行对象状态行为的测试。
类测试可分以下两个部分:
(1) 基于状态的测试
考察类的实例在其生命期各个状态下的情况。这类方法的优势是可以充分
借鉴成熟的有限状态自动机理论,但执行起来还很困难。一是状态空间可能太大,
二是很难对一些类建立起状态模型,没有一种好的规则来识别对象状态及其状态
转换,三是可能缺乏对被测对象的控制和观察机制的支持。
(2) 基于响应状态的测试
从类和对象的责任出发,以外界向对象发送特定的消息序列来测试对象。较
有影响的是基于规约的测试方法,和基于程序的测试。基于规约的测试往往可以
根据规约自动或半自动地生成测试用例,但未必能提供足够的代码覆盖率。基于
程序的测试大都是在传统的基于程序的测试技术的推广,有一定的实用性但方法
过于复杂且效率不高。
3、系统测试
系统测试是对所有类和主程序构成的整个系统进行整体测试,以验证软件
系统的正确性和性能指标等满足需求式样说明书和任务书所指定的要求。它与传
统的系统测试一样,包括功能测试、性能测试、余量测试等,可套用传统的系统测
试方法。
四、面向对象软件测试的覆盖准则
测试覆盖标准是对软件测试充分性的度量,任何测试策略都应该有相对应
的覆盖标准,在此基础上选择测试用例,通过覆盖率来说明测试结果的可信性。传
统的软件测试的覆盖标准对基于代码的测试而言,主要是代码覆盖,可细分为语句
覆盖、路径覆盖、分支覆盖、判定分支覆盖,其中判定分支是最强的覆盖标准。
对于面向对象软件的测试而言代码的覆盖只对方法级测试适用,为了测试面向对
象程序设计机制带来的错误风险,必须引入新的覆盖标准。