当前位置:文档之家› 面向对象软件测试方法研究

面向对象软件测试方法研究


-氏 , ' 则给当前结点增加一条分支和一个后续结点, 分支标识函数调用, 后续结点标识对象的下一个状 态: k S ,3 …,k …,/ ; ( 2 S , S , S ) S ,k k 1 2 i l i ,
・ 重复上述动作, 直到所有结点都不可扩展。 对象状态迁移树的最后形式如图 3 所示。
成过程 。
面向对象软件测试(O ) O T 的实现
测试层次与流程
() 根据 0 1 0软件的特点, 我们将软件测试过程划分成如表 1 所示的层次。
[ 收稿日 20-0-1 期〕 04 6 6
〔 作者简介〕 宋雪芬(93 , 河北高邑人, 17-)女, 工程师, 主要从事遥测工程专业方面的研究工作。
23 测试方法 .
测试方法主要包括对象状态测试方法和类簇测试方法。
231 对象状态测试方法 .. 对象的动作依赖于它的状态, 在消息驱动下, 对象在不同的状态下会导致不同的动作响应, 而对象的 动作又可能会导致对象发生状态迁移。这个过程可能会产生某种错误, 这些错误是无法用功能测试和类 方法测试检查出来的, 必须针对对象状态迁移过程构造专门的测试。对象状态迁移测试是根据对象状态 迁移轨迹构造一系列的消息序列, 驱动对象动作, 检查对象的响应和状态变换。 对象状态测试的步骤和方法如下: () 1识别类的状态变量, 标识其状态 类状态变量的识别是根据该类所有成员函数中所有路径条件进行。一个类成员变量通过影响程序 执行路径从而影响对象状态的迁移, 所以, 将影响类成员函数执行路径的成员变量作为类的状态变量。
19. 93
[] K n,GoP iDsn v y s ta ttg b c oet p g m [ ][ 1 Rvr Eg 3 C ugJ , H a i r oe f ow r e i oojt rn d r s . :e s ni H a s eg e r o f e n f - i e r a M s e e - c r s e o ]
俨 S :区间 1 0仁 ] V S :区间 0 ' o[ ' ]
45 4
( 冶金 自 动化》04 20 年增刊
Vl 俨
S:区间 1 i「 ] S.区间。 o仁 2 〕
对象状态可以用状态变量的状态来表示: S= ¥ ,若… ,o( o ( ,o , S)对象的初始状态) SS S () 2构造状态变量的状态迁移图状态变量的状态在类成员函数的作用下会发生迁移, 这个导致状态 迁移的成员函数称为一个迁移。见图 2 。
44 4
( 冶金 自动化》04 20 年增刊
表 1 测试层次
类测试( 类方法测试、 类方法交互测试、 类状态测试)
类簇测试 部件测试 配置项测试 系统测试
() 2测试流程如图 1 所示。
对象关系图
静态分 析
类方法
类 方法 结构 分析 数据
类 方 法 交互 事件 分析数据
图 1 O O T流程
nen , 9. er g1 3 i 9 [〕 4 何新华. 面向对象软件的测试研究[ ] 19 年全国软件工程会议论文集[]北京: A . 6 9 C. 清华大学出版社,96 19. 「 编辑: 胜〕 张
O T的重要内容。 O
() 3状态变量(V S)
对象的状态是由类成员变量的取值来表示的, 能够影响对象状态表现和状态迁移的类成员变量称为 状态变量(V:t e rb ) S Sa V i l 。 t aa e 12 O . O 丁的基本内容 O T是在后期软件测试中应用 0 O 0技术的体现, O T同样要遵循一般的 0 所以 O 0概念和原则。被 测软件本身具有的 0 0概念和原则对测试起着决定性影响。面向对象软件测试与面向过程软件测试在 内容上存在以下差异: () 1面向对象软件测试的基本单元是类 类是 0 0软件的基本组成单元, O O T的中心就是类的测试。与面向过程测试中以模块为单元不同, O T以类为测试的基本单元可以在测试中充分利用 0 O 0技术, 避免将作为整体封装的类人为地拆解成 函数和数据进行测试。 () 2类簇测试是更高级别的测试 类簇测试是将一组相关的类作为一个整体进行测试, 主要是测试类簇中各个类之间的交互和它的集
图 2 状态变f状态迁移图
状态变量的状态转移图可以根据状态变量的状态标识以及对程序的分析而获得。 () 3构造对象状态迁移树 根据各个状态变量的状态迁移图, 可以构造对象的状态迁移树, 过程如下: 1将各个状态变量在构造函数执行以后的初始状态组合作为对象初始状态, ) 标识为 (iS,弓……,o( 个状态变量) S,若S, S)n 如果某个状态变量可能有多个初始状态, 则对象的初始状态相应地就有几个。比如, 假定第二个状 态变量具有两个初始状态:l S。 S . o 。 羞
《 冶金 自动化》04 20 年增刊
面 向对象软件测试方法研究
宋雪芬‘王冠军‘宋雪玲“ , ,
0. 酒泉卫星发射中心 遥测室, 甘肃 酒泉 725 ;. 3702河北科技大学)
[ 要〕 摘 介绍了面向对象软件测试的概念和内容, 提出了面向对象软件的测试层次与流程, 并重点论述了对象状态测试 的方法。测试结果证明, 该方法为提高软件可靠性的一种有效方法。
22 测试排序 .
测试排序包括类排序和类方法排序。 类方法排序在类排序的基础上进行。测试排序的目的是为了
减少测试辅助程序的构造量。排序的基本原则是首先测试最少依赖的类或方法, 优先测试作为其它类或 方法支撑的类或方法, 最后测试依赖最多的类或方法。 类排序的基本依据是软件的类及对象关系图( R )类测试排序需要明确参加排序的类的范围。 O D, 类 方法排序的基本依据是类方法调用关系图(C ) F D 。类方法排序是在同一个类内部进行, 排序的对象是该 类的方法集合。
3 结束语
0 0软件开发技术为 O T提供了许多技术支持, O 同时也给 O T带来了诸如 0 O 0软件的理解、 动态 绑定等问题, 因此, 前 0 目 0软件的测试是比较困难的。0 0软件测试的难易程度依赖于软件开发各阶 段提交文档的丰富性, 依赖于该文档对类、 对象关系、 对象状态迁移、 类方法调用等技术描述的准确性。 充分应用这些信息, 采用模式语言形式化地描述 O T 最大程度地实现 O T的自 O , O 动化。本文提出的测 试方法已经在测试辅助工具中得到良好应用。但 目前还有一些技术问题需要进一步研究解决, 比如路径 计算问题、 状态图自 动生成问题等。
通过分析路径条件, 标识出 可以 状态变量的状态。这个过程就是通过分析路径条件, 划分一个状态
变量的取值区间, 使同一个区间中的值导致同样的程序路径, 不同的区间导致不同的程序路径。同一个 状态变量可能影响多个成员函数的执行路径, 这样就得到多个取值区间。这些区间称为状态变量的状态
区间, 简称状态。 状态变量的状态标识格式如下: 本结点没有在更高层出现, 并且某个状态变量存在迁移:; L, S} -S 考虑该状态迁移对应的成 员函数调用, 如果该函数调用还导致了其它状态变量的状态迁移, 就要综合考虑各个发生改变的状态变 量的最终状态。比如, 如果该状态迁移对应的函数调用 F n(还导致了第 i uc) 个状态变量的状态迁移:k S i
〔 考 文 献〕 参
[] 1 吴鹏程, 金茂忠. 面向对象软件测试模型与测试策略[ ]19 年全国软件工程会议论文集[ ]北京: A . 6 9 C. 清华大学出版 社, 9. 16 9 [] T r r J snT e t ae t t g oj t rne por sM][ 1:o 一w r Ma t ac, 2 C un , R bo. Sa -bs e i o b c i t r a [ . ]Sf a D e D o h te d n f e 一o e d g m s s t e ie ne nn
〔 关键词〕 面向对象 ; 软件测试 ; 类测试
面向对象( 0 方法已经成为软件开发的主流技术, 0 ) 目前已有 比较成熟的面向对象的分析( O ) O A, 面向对象的设计( O ) O D 和面向对象的编码( O ) O P 等技术, 而且也出现了面向对象的软件工程技术。这 些技术为解决“ 软件危机” 发挥了巨大的作用。但是, 在面向对象技术领域中, 有关软件的后期测试活动 却明显滞后。随着面向对象技术在应用软件开发中的广泛应用, 面向对象的软件测试方法为大型软件质
量控制和测试提供了一种全新的技术, 它有效避免了面向过程软件测试的复杂程度, 提高了测试准确性
和有效性。
1 面向对象软件测试(O ) O T 概述
11 基本概念 . () 1面向对象软件测试
面向对象软件测试(O :b c rne Tsn) O T O j t i t e i 是指利用0 e -O e d tg 0技术提供的各种机制对0 0软件
进行测试, 广义地讲, 它还包括对软件分析、 设计和实现的一致性检查。 () 2对象的状态( S O)
对象的状态(SO j t t 是指某一时刻对象所有属性值的集合。 O : cSa ) b e te 对象状态是对象的重要特征,
对象的行为依赖于对象的状态, 同时对象的行为又会改变对象的状态。对对象状态迁移过程的测试是
图 3 对象状态迁移树形式
() 4构造消息序列, 驱动测试
46 4
( 冶金 自动化》04 20 年增刊
从对象状态迁移树的根结点开始, 依次搜索到树的每个叶子结点, 这样每个叶子结点对应一条搜索 路径, 一个搜索路径所经过的所有迁移就组成一个消息序列。每个消息序列就是对象状态测试的一个测
试用例。
则对象就有 个初始状态 2
初始状态 1( ,2 S, S) : iS ,君…,o S l o
初始状态 :S ,呈 君…,o 2(乙S。S , S) , 2对于对象的每个初始状态, ) 构造这样一个测试树: ・ 将对象初始状态作为根结点;
・ 逐个检查测试树的各个结点, 假设当前结点是: k S + …,b ; ( k S , S + 2 l k St i ) ・ 如果当前结点已经在树的更高层出现, 则本结点不再扩展, 检查下一结点;
相关主题