首页 从Rose的规约文件自动生成测试用例

从Rose的规约文件自动生成测试用例

举报
开通vip

从Rose的规约文件自动生成测试用例   收稿日期 :2003 - 07 - 02 ;修订日期 :2003 - 10 - 08   基金项目 :陕西省教育厅科研基金项目 (00J K265)   作者简介 :张毅坤 (1958 - ) ,男 ,陕西西安人 ,教授 ,主要研究方向 :软件工程、网络工程 ;  施凤鸣 (1971 - ) ,男 ,湖北武汉人 ,硕士研究生 , 主要研究方向 :面向对象软件系统的测试. 文章编号 :1001 - 9081(2003) 12 - 0012 - 04 从 Rose 的规约文件自动生成测试用例 张毅坤 ,施凤鸣...

从Rose的规约文件自动生成测试用例
  收稿日期 :2003 - 07 - 02 ;修订日期 :2003 - 10 - 08   基金项目 :陕西省教育厅科研基金项目 (00J K265)   作者简介 :张毅坤 (1958 - ) ,男 ,陕西西安人 ,教授 ,主要研究方向 :软件工程、网络工程 ;  施凤鸣 (1971 - ) ,男 ,湖北武汉人 ,硕士研究生 , 主要研究方向 :面向对象软件系统的测试. 文章编号 :1001 - 9081(2003) 12 - 0012 - 04 从 Rose 的规约文件自动生成测试用例 张毅坤 ,施凤鸣 (西安理工大学 计算机科学与工程学院 ,陕西 西安 710048) 摘  要 :对基于状态的类测试用例自动生成进行了研究 ,重点放在状态预测和测试消息序列生成 上 :类的动态行为用 UML 的状态图 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示 ,测试时直接从 Rational Rose 的规约文件中读取状态图规约 生成测试消息序列 ;对状态的预测使用状态不变量 ;生成消息序列时对算法进行优化 ,减少消息序列 的冗余 ,从而缩短消息序列的路径长度。 关键词 :面向对象 ;基于状态的测试 ;测试用例 ;UML ;状态图 ;有限状态机 中图分类号 : TP311. 5   文献标识码 :A Automatic Test Cases Generation from Rational Rose Specif ication Files ZHAN G Yi2kun , SHI Feng2ming (Com puter Science and Engineering School , Xi’an U niversity of Technology , Xi’an S haanxi , 710048 , China) Abstract : This paper probed into the automatic test cases generation of state2based class testing , emphasizing test sequences generation and state prediction. The dynamic behaviours of a class was modeled by UML statechart , and the test sequences were directly generated from state information in Rational Rose specification files. State invariants were used for the state prediction. The test sequences generation algorithm was optimized to trim the redundancy of the test sequences , thereby the length of the test sequences was shortened. Key words : Object2Oriented ; state2based testing ; test cases ; UML ; state diagram ; FSM 1  引言 面向对象软件的基本组成单元是类 ,大多数类都表现出 了行为和状态的相关性 ,类的实例对象在特定的状态下只能 接受和响应特定的消息 ,因此引入了和状态相关的有别于传 统结构化软件的特有的错误风险。当前对类的基于状态的测 试方面的研究很多 ,类的这种状态相关性很容易用扩展的有 限状态机这种数学模型表示 ,因此更多的研究方法集中于基 于有限状态机的测试 ,提出了各种测试用例自动生成的方法。 基于有限状态机的测试在通信软件的测试得到广泛的应 用 ,这种方法最早由 Chow 提出[ 1 ] ,他的 论文 政研论文下载论文大学下载论文大学下载关于长拳的论文浙大论文封面下载 对后续的基于状 态的测试产生了巨大的影响。在文献 [ 2 ] 中 Chourouk Bourhfir 系统讲述了基于 EFSM 测试的理论基础和各种方 法 ,其中包括覆盖标准的选择、测试消息序列的自动生成、状 态识别和测试数据选择等等。 UML 的状态图也是一种扩展的有限状态机 ,它描述对象 所具有的所有可能的状态及其转换关系。当前 ,以基于扩展 有限状态机的测试方法为基础 ,有很多人正在进行基于状态 图的类测试方法的研究[ 3 ,4 ] 。这方面的研究主要包括三个方 面的问题 : 1)按照测试覆盖要求自动生成测试消息序列 ; 2) 预测问题 ,预测包括对输出的预测和对象状态的预测 ,其中主 要是状态的预测 ; 3)选择测试数据 ,使测试路径可执行。 2  状态图的析取 在 UML 中状态图表示为一个有向图 ,在图中各个节点 (状态)通过有向边 (转换)连接起来。它表示了一个类的实例 对象在其生存周期内所具有的状态、可接受的事件和相应的 转换。图 1 是一个简单的账户类的状态图 ,除初态和终态外 , 共有四个状态 ,分别为新账户 ( New) 、活动 (Active) 、冻结 ( Frozen)和透支 ( InDebt) 。初始状态是一个空状态 ,表示对象 生命周期的开始 ,每个状态图只有且必须有唯一的一个初态 ; 终态 ( Final State) 也是一个空状态 ,表示对象生命周期的结 束 ,可能会有多个终态 ;有向边代表一个转换 ( Transition) ,它 表示在某个状态时 ,哪些事件 ( Event)触发了转换并转换到什 么状态 ,上面的标签具体地描述此转换的输入、输出、监视条 件 Guard(前置条件)和动作 (Action) 。动作和转换相联系 ,包 含在输出中 ,只需很短的时间来完成 (相对于计算机的处理速 度 ,也可认为不需要时间)而且是不可中断的。每个状态有三 种活动 (Activity) ,活动和动作是有区别的 ,活动和状态相关 联 ,当进入该状态时开始执行 ,而且需要一定的时间来完成 , 并且可以被中断 ,这三种活动分别为 entry、do 和 exit ,表示进 入、处于和退出此状态时的活动。 从形式描述来讲 ,如果不考虑并发、层次等扩充功能 ,状态 图和普通的扩展有限状态机是完全相同的 ,只不过使用了图形 第 23 卷第 12 期 2003 年 12 月   计算机应用 Computer Applications   Vol. 23 , No. 12 Dec. , 2003 化的表示方法。正因为如此 ,基于扩展有限状态机的测试方法 被大量应用到基于 UML 状态图的类的基于状态的测试。 Rational Rose 是目前应用最为广泛的 UML 工具 ,在 Rose 中所有的规约都存储在扩展名为 MDL 的文件中 ,这其中也 包括状态图。这个文件是一个文本文件 ,对文件进行解析 ,可 以得到状态图的规约 ,这是本文测试用例生成方法的起点。 图 1   以下是图 1 所示的账户类的规约文件的一部分 : statemachine (object State- Machine " State/ Activity Model" quid "3 E6C0B7F033 E" states (list States (object State " Initial State" quid "3 E6C0B850028" transitions (list transition-list (object State- Transition quid "3 E6C0CEE0078" supplier " New" quidu "3 E6C0B92003C" sendEvent (object sendEvent quid "3 E6C0CEE007B") ) ) type " StartState" ) . . . ) (object Self TransView "" @12 location (1104 , 299) label (object SegLabel @13 Parent- View @12∗ label "Draw ( float outMoney) [ Balance () > 0 ]"∗ client @4 supplier @4 line- style 0) . . . ) ) ) ) 该文件是一个解释性的文件 ,从中可以找到如下关键字 : statemachine、object State、transitions、object State- Transition、 quid , label、Self TransView、sendEvent、Action、TransView、 Client、Supplier、entry、do、exit、parameter、condition、type。 为了析取状态图 ,专门 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 了一个文件解析类 ,其头文件 如下 : class CDeChar { public : CDeChar (CString strFileName) ; / / 参数为文件完整路径 virtual ~CDeChar () ; / / 找到转换 ,存储到转换链表中 bool FindTrans(int bgnPos , CtypedPtrList < CObList , CTrans 3 > & tranList) ; / / 找到状态 ,存储到状态链表中 bool FindState (int bgnPos , CtypedPtrList < CObList , CState 3 > & staList) ; / / 查找关键字之间的字符 ,以字符串的引用形式返回 bool Get Words ( int & bgnPos , int endPos , const CString bgnStr , const CString endStr ,CString & strFind) ; / / 匹配关键字 ,匹配成功则返回关键字首字符的位置 , / / 如果没有找到返回 - 1 int Find KeyWords(int bgnPos ,int endPos , const CString str KeyWords) ; CString Char ToStr (int bgnPos ,int endPos) ; / / 转变字符数组为字符串 bool BracMatch(int bgnPos ,int & iFromPos ,int & i ToPos) ; / / 括弧匹配 protected : int m-iSize ; / / 字符数组的长度 char 3 m-pChar ; / / 字符指针存储字符数组 } ; 文件解析完成后 ,把找到的状态和转换分别存储到对象 指针链表 CtypedPtrList 中 ,对象指针链表是 MFC 的一个类 型安全的集合模板类。状态图用 CtypedPtrList < CObList , CTrans 3 > 表示 ,其中 CTrans为转换。 3  自动生成测试消息序列 测试消息序列的生成是一个标准的有向图的遍历问题 , 常用的方法有广度优先搜索和深度优先搜索。在基于状态的 测试中 ,每个测试消息序列把被测实现从初态转化到一个特 定的状态 ,然后返回初态 ,因此这种测试有时被称为往返路径 测试。 生成消息序列时要考虑两个主要问题 : 1) 生成的消息序 列要满足预定的覆盖目标 ; 2)生成的消息序列的路径长度要 尽可能的短 ,以提高测试执行效率 ,降低测试费用。 状态 - 转换覆盖标准是目前基于状态的测试中最常用的 覆盖标准 ,大多数的测试用例生成算法都是以此为目标 ,它能 生成相对较短的测试用例 ,并且具有很高的揭示故障的效率。 要求测试消息序列满足 :1)每个状态都要被测试至少一次 ;2) 每个转换都要求最少被执行一次 ,对于类的基于状态的测试 就是要求每个公有的方法 (服务)都至少被调用一次。本文中 的测试用例生成时就是采用这种覆盖标准。 对有向图的深度优先搜索和广度优先搜索能产生不同长 度的消息序列 ,为了得到路径尽可能短的测试消息序列 ,可采 取深度优先和广度优先两种方法同时使用 ,然后取其路径较 短的作为测试消息序列 ,整个过程可分为三步 : 31第 12 期 张毅坤等 :从 Rose 的规约文件自动生成测试用例      1) 生成达到状态覆盖的测试消息序列 为达到状态的覆盖 ,为每一个状态找到一条从初始状态 到达该状态的最短路径 ,算法描述如下 : Test Sequence Generation (Si) {if Si is processed return ; FindPathBFS(Si) ; / / 广度优先找到一条从初态到 Si 的路径 FindPathDFS(Si) ; / / 深度优先找到一条从初态到 Si 的路径 Save ShortLen( PathDFS[ ] ,PathBFS[ ]) as Test Sequence of Si ; / / 保存路径长度短的序列为测试消息序列 Save LongLen ( PathDFS[ ] ,PathBFS[ ]) as Spare Sequence of Si ; / / 保存另一条路径备用 Mark Si as processed ; / / 标记为已处理 } 以上算法构造的测试用例集合能够保证为每个状态生成 一条从初态出发的测试用例消息序列 ,而且保证每个测试消 息序列路径最短 ,但不能保证每个转换的覆盖 ,很明显地就有 回路转换没有被覆盖。应用以上算法可以为图 1 所示的账户 类的状态图生成如下的测试消息序列 ,可以把它用树的形式 表示出来 (图 2) ,图中节点表示状态。       图 2            图 3 2) 补充测试消息序列以达到转换的覆盖 为达到转换的完全覆盖 ,使每个转换至少发生一次 ,需要 产生另外的测试用例消息序列 ,算法描述如下 : Spare Test Sequence Generation () {if all Trans are processed return ; for each Ti is not processed { / / 首先看备用的消息序列 if Ti in the Spare Sequences of SSqk Count k = Count k + 1 ; / / 直接重新生成一条消息序列 Get HeadStatei of Ti ; Append in the tail of the Test Sequence of HeadStatei to construct a new Test Sequence ; Mark Ti as processed ; } Delete the SSqs with Count = 0 ; / / 路径上有没被处理的转换最多的备用消息序列 Pick out the SSq with max Count and Trim the redundant part and make it as a Test Sequence ; Mark the Trans through it as processed ; Spare Test Sequence Generation () } 应用以上的算法后 ,就可以使测试用例满足覆盖标准 ,账 户类的基于状态的测试用例消息序列如图 3 所示。以上算法 在保证状态 - 转换覆盖的基础上 ,能生成相对短的测试用例 消息序列 ,但不是最短的 ,其中还有少量的冗余消息序列。 3) 消息序列执行顺序排序 在测试消息序列的执行过程中 ,还要注意消息序列的执 行顺序 ,因此有必要对消息序列的执行进行排序。在软件测 试中 ,每种范围层次的测试都有一个入口条件[ 1 ] ,它要求组成 被测系统的构件首先得到充分的测试 ,把这引申到消息序列 的执行顺序中 ,就是要求组成一条消息序列的从初始状态出 发的任一子序列已经通过测试 ,可以按照这种原则对消息序 列进行排序 ,算法可描述如下 : Sort Sequences(Sequence) {if Sequence is sorted return ; if Lenof (Sequence) = 1 {Sort Sequence ; return ; } for (L = 1 ;L < Lenof (Sequence) ; L + + ) { / / LsubSequence 表示长度为 L 的消息序列 if ( the LSubSequence of Sequences is not sorted and the LsubSequence ∈Sequences) Sort Sequences(LSubSequence) ; } Sort Sequence ; Return ; } 排序从最长的测试消息序列开始 ,对每一个没有排序的 消息序列运行 ,就可以使测试用例执行过程遵循上面所说的 原则。如果简单地按照长度进行排序 ,也可以满足这个原则 , 但它没有规律性 ,相关的消息序列没有聚集 ,不易于准确地定 位错误。 4  状态预测 基于扩展有限状态机的状态识别方法主要有 W 方法、 Wp 方法、U IO 方法等 ,这三种方法都是通过可观测的动作来 识别状态 ,应用到类的测试中时 ,除了一些特殊的类 ,如通信 类、控制类符合这个条件 ,大多数类没有或很少具有可观测的 动作输出 ,既不可能为大多数状态找到 W 集 ,也不可能找到 唯一的输入输出。因此我们需要为类构造一个可观测的方法 或者叫作观测者 ,这个方法要求是可执行的、无二义性的和可 观测的 ,而且调用此方法时不应该影响对象的当前状态。 目前对状态比较公认的定义是状态是值的集合 ,一个对 象的状态由它的变量的所有的域定义。如一个类有三个成员 变量 A、B、C ,对应的值域分别为 a、b、c ,则作为该类的实例对 象可能的状态空间是一个笛卡尔积 a ×b ×c。这个状态空间 是无限大的 ,如果以此来建立状态模型 ,即使一个简单的类也 会产生很大的状态模型 ,因此实际的做法是把状态定义为状 态空间的一个子集 ,对象在此子集上具有相同的行为。即如 果一个类的状态空间 S ,可以把状态空间划分为 S 1 , S 2 , ⋯, S n , 并且满足 : 1) S 1 ∪ S2 ∪, ⋯, ∪ S n = S ; 其中 S i < > Á , i ∈{ 1 ,2 , ⋯, n} ; 2) S i ∩ S k = Á , i , k ∈{ 1 ,2 , ⋯, n} ; 3) 对象在相同的子集 S i 上表现出完全相同的行为 ; 4) 对象在不同子集上表现出完全不同的行为。 对类的状态空间进行划分后 ,各子空间也就是状态在被 测类所采用的面向对象的编程语言中可编码为一个返回布尔 值的可供外部调用的公有方法 ,这种方法具备可执行性、无二 义性和可观测性 ,而且对它的调用明显不会影响对象的当前 41     计算机应用 2003 年 状态。虽然说这种方法并不是类的规约所需要的服务 ,但是 从测试的角度讲是非常有效的 ,我们称这种布尔表达式为状 态不变量 ,并把它作为公有的方法供外部调用。当存在状态 不变量时 ,测试中就可以准确地判定对象是否到达预期的状 态 ,这对自动化测试是必需的。 对状态不变量进行定义后 ,接下来就是在 UML 的状态 图上如何表示状态不变量 ,并且尽量不扩展状态图的语法。 从状态图的语法可知每个状态都可以定义三个活动 ,可以把 它作为一个 entry 活动 ,因为 entry 活动本身就是一个可观测 的活动 ,只是大多数状态并没有 ,在没有时用状态不变量代 替 ,如果本来就有 entry 活动 ,就直接用它来作预测。图 1 中 的每一个状态都有一个状态不变量。 测试消息序列把被测类的实例对象从初态带到特定的状 态 ,把对状态不变量的调用作为消息加在以上生成的每个消 息序列的后面 ,就能完成对最后到达的状态进行自动预测 ,提 高测试的自动化程度。 对于账户类 ,最终生成的测试用例如表 1 所示。 表 1 编号 消息 消息 消息 消息 预测消息 1 Account () IsNew () 2 Account () Deposit () IsActive () 3 Account () Deposit () Draw () IsInDebt () 4 Account () Deposit () Draw () Freeze () IsFrozen () 5 Account () Deposit () Draw () Deposit () IsInDebt () 6 Account () Deposit () Draw () Deposit () IsActive () 7 Account () Deposit () Deposit () IsActive () 8 Account () Deposit () Freeze () IsFrozen () 9 Account () Deposit () Freeze () UnFreeze () IsActive () 10 Account () Deposit () Freeze () UnFreeze () IsInDebt () 11 Account () Deposit () Deposit () UnFreeze () IsActive () 5  总结 目前 ,几乎所有的来自硬件和通信的基于状态测试的经 验都被应用到面向对象的类层次的基于状态的测试中 ,但因 为面向对象软件的特殊性 ,这方面的进展很缓慢。基于 UML 状态图的测试用例自动生成的研究集中在三个方面 :测试消 息序列生成、状态预测和消息序列路径可执行问题。本文在 对面向对象软件测试的类层次的基于状态的测试的理论基 础、测试方法进行了大量的研究后 ,对基于 UML 状态图的测 试用例自动生成方法进行了探讨 ,主要集中在状态预测和消 息序列生成 :为解决状态预测问题 ,引入了状态不变量 ,并要 求在规约的时候进行正确的表示 ;生成测试消息序列时对算 法进行优化 ,尽量减少消息序列的长度和冗余。在此方法的 基础上开发了一个验证性的工具 ,这个工具的输入是 Rational Rose 的规约文件 ,输出是 TTCN 形式测试用例。 本文中的方法还不完善 ,对测试消息序列的路径可执行 问题并没有进行研究 ;对作为 UML 状态图的新特性 (层次结 构和并发)造成的影响并没有考虑。这些问题有待以后进行 更深入的研究。 参考文献 [ 1 ]  Chow TS. Testing Software Design Modeled by Finite State Ma2 chines[J ] . IEEE Transactions on Software Engineering ,1978 ,SE - 4 (3) :178 - 187. [2 ]  Bourhfir C , Dssouli R , Aboulhamid EM. Automatic Test Genera2 tion for EFSM2Based Systems[ EB/ OL ] . http :/ / citeseer. nj. nec. com/ 11451. html ,2002 - 11 - 20. [3 ]  Latella D , Massink M. A Formal Testing Framework for UML Statechart Diagrams Behaviours : From Theory to Automatic Veri2 fication[ M ] . Springer2Verlag , 2001. [ 4 ]  Offutt J . Abdurazik A. Generating Tests from UML Specification [ A] . UML99[ C] . Springer2Verlag ,1999. (上接第 11 页) 法 ARTCS。该方法包括根据实际应用建立消息集、对消息集 进行可调度性判定、按照相应模型调度算法生成总线调度表三 个步骤。其间利用风车调度算法进行可调度性判定 ,使系统可 具备更高的带宽利用率 ,同时减小了判定开销 ,确保了硬实时 消息在无抢占、不阻塞条件下的成功调度。ARTCS 既可用于 静态总线调度表的自动生成 ,也可用于系统初始化和变化时总 线调度表的在线生成和重排 ;既支持周期消息又支持非周期消 息 ;既可用于调度周期任务模型消息集又可用于调度距离约束 模型消息集 ,较好地支持了现场总线系统实际应用的需要。 经实验 说明 关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 系统开销较小、可实施性好 ,易于移置 到其它硬实时通信系统中。而在此基础上如何对生成的总线 表进行在线优化 ,将是我们今后工作和努力的方向。 参考文献 [ 1 ]  Liu CL , Layland J W. Scheduling Algorithm for Multiprogramming in a Hard2Real2time Environment [J ] . Journal of the ACM ,1973 , 20 (1) :40 - 61. [ 2 ]  Mok A K. Fundamental design problems of distributed systems for hard real2time environment [D] . MIT , 1983. [ 3 ]  Sha L , Rajkumar R , Lehoczky J P. Priority inheritance protocols : An approach to real2time synchronization [J ] . IEEE Transactions on computers , 1990 , 39 (9) :1175 - 1185. [4 ]  Han CC , Lin KJ . Scheduling distance2constrained real2time tasks [ A] . Proceedings IEEE real2time Systems Symposium[ C] , 1992. 300 - 308. [5 ]  Hsueh C , Lin KJ , Fan N. Distributed pinwheel scheduling with end2to2end timing constraints [ A ] . Proceedings of IEEE real2time Systems Symposium[ C] , 1995. 171 - 181. [ 6 ]  Sprunt B , Sha L , Lehoczky J . Aperiodic task scheduling for hard real2time systems[J ] . The Journal of real2time Systems , 1989 ,1 (1) :27 - 60. [ 7 ]  Malcolm N , Zhao W . Hard real 2 time communication in multiple 2 access networks[J ] . Journal of real2time Systems , 1995 , 8 (1) :35 - 77. [8 ]  陈慧 ,熊光泽 ,杨仕平. 基于以太网的硬实时通信技术 ARTC [J ] . 计算机科学 ,2003 ,30 (7) . [ 9 ]  Krishna C , Shin K. Real2time Systems[ M ] . Mc Graw2Hill Compa2 nies , Inc , 1997. [10 ] Lehoczky J P , Sha L , Stonider J K , Enhanced Aperiodic Respon2 siveness in Hard real2time Environment [ A] . Proc of the 8th IEEE real2time Systems Symposium[ C] , 1987. 261 - 270. 51第 12 期 张毅坤等 :从 Rose 的规约文件自动生成测试用例     
本文档为【从Rose的规约文件自动生成测试用例】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_152426
暂无简介~
格式:pdf
大小:259KB
软件:PDF阅读器
页数:4
分类:互联网
上传时间:2010-06-28
浏览量:19