- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于状态的类测试研究
摘要:类测试是面向对象的软件测试过程中的一个重要方面。类测试需要结合对象的状态行为,并考察在执行相应的方法后是否能达到预期状态。该文描述了基于状态的类测试的方法,并通过实例分析给出了测试用例生成方法,验证被测对象在经过操作变换后是否处于预期的正确状态,使得测试人员在缩减测试用例数量的同时,提高了测试效率。
关键词:类测试;面向对象;基于状态
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)12-2765-03
目前,面向对象技术作为一种全新的软件开发技术广泛地应用在各领域,随着面向对象软件测试的逐步深入,基于类具有封装和抽象特性,通过研究基于状态的类测试,考察与对象状态相关的变量或函数的数据变化,衡量软件模块的健壮性。该文主要针对基于状态的类测试方法及测试用例的生成展开讨论。
1 基于状态的类测试方法
相比与面向过程程序测试,面向对象程序测试中类测试与其单元测试类似,不同的是,单元测试关注函数模块算法和各函数间接口的输入输出。基于状态的类测试方法的核心在于关注类中的方法及其类的状态,要把对象与其状态结合起来,进行对象状态行为的测试,因为软件运行过程中对象的初始状态、对象的输入参数、对象的输出参数、对象的最终状态可能被改变,产生新的状态。
由于基于状态的类测试依赖对象的状态,因此在测试评估时通过检查对象数据成员和方法进行交互时产生的错误,如果方法执行后对象的状态并没有按预期结果发生变比,则表明此方法有误。
基于状态的类测试过程为:通过将面向对象程序中的类作为被测单元,明确类中的状态变量,根据相关的状态变量划分成多个状态,并生成类的状态多分支树,然后通过遍历状态分支树,产生测试用例执行测试,判定对象状态是否符合预期规定的状态。
2 基于状态的类测试用例的生成
对于基于状态的类测试而言,如果达到类的状态及状态转换完全覆盖的测试用例是无限的,通过建立状态转换模型,生成状态转换图,通过生成遍历测试路径树自动选择并执行测试用例,能够从无限的测试用例中选择最优、覆盖率高的测试用例。
2.1状态转换模型及状态转换图
状态转换模型描述了类中所有对象的共同行为,对于类对象具有多个状态,状态之间通过消息驱动。状态转换模型是一个四元组(S,T,s0,M),其中S是有限状态集、T表示状态转换图的状态转换,M表示状态转换图的当前状态,满足如下条件:s0[∈]S,M={s0}是初始标志,s0是初始状态;状态转换图中没有独立元素,S≠¢,T≠¢,M≠¢;对于任何转换至少有一个前驱和一个后继,即[?]t[∈]T,有*t≠¢,t*≠¢。当M={s′}时,[?]t[∈]T,*t=s′,转换t是可触发的;若转换t触发后,当前状态M={s′′},并且满足s′′[∈]t*,这时新状态产生。
最后通过状态转换模型中状态集、状态转换集、状态转换消息建立状态转换图。比如一个进程状态S={就绪、运行、阻塞、创建、终止},进程状态转换事件消息包含:1)创建状态――就绪状态(允许进入);2)就绪状态――运行状态(获取CPU进程调度);3)运行状态――阻塞状态(I/O或事件请求);4)运行状态――就绪状态(分配的CPU时间到);5)阻塞状态――就绪状态(I/O完成或等待事件发生);6)运行状态――终止状态(进程结束释放)。
状态转换集T为={允许进入,获取CPU进程调度,I/O或事件请求,分配的CPU时间到,I/O完成或等待事件发生,进程结束释放},图1所示为状态转换图,包含状态集S和状态转换集T。
2.2生成遍历测试路径树
通过对各状态设置唯一的输入输出路径生成测试路径树自动产生测试用例,测试包括验证每个状态是否能由初始状态按照一定的路径到达,状态转换后的每个状态能否正确执行,其输出是否正确。
首先对于某一事件路径为从初始状态到终止状态的转换,分析类对应的状态图,然后构造测试路径树,该测试路径树包含所有的事件消息路径。测试路径树的每个节点对应一个状态,每个分支表示状态之间的转换,并在分支上标识出事件动作。最后构造出满足状态转换覆盖的测试路径树。具体形式化算法如下:
1)创建所有非空状态集合S={S1,S2,…,Sn}
2)创建可达状态集Rs,开始为空,对象经过构造或初始化后,产生的状态加入到Rs中。
3)选择一状态Si∈Rs,将Si为初始前驱状态
4)选择一条定义数据成员M的路径P,执行条件为CP,R为路径执行结果。如果条件Si(D)和CP成立,则路径产生一次转移,如果条件不成立,放弃该路径。
5)转换到达的后继状态Sj∈Rs(j=1,2,…,n)或Sj 为对象被消除的最终状态,则Sj 为叶子节点
您可能关注的文档
最近下载
- 简历模板表格下载word格式个人简历模板表格下载.docx VIP
- AGMA 939-A07-2007 齿轮用奥贝球铁.pdf
- 陶土板幕墙设计计算书(最新材料陶土板).doc
- 手术室施工方案(完整版).pdf
- 标准图集-11G329-2建筑物抗震构造详图(多层砌体房屋和底部框架砌体房屋)图集.pdf VIP
- 2.危险废物贮存分区标志(可编辑版).pptx
- 广东广州卫生职业技术学院后勤资产部基建工程人员招考聘用2人考前冲刺卷壹【3套1500题】(带答案解析).docx
- 《金属硫化物异质结的构筑及其光催化性能研究》.docx
- JTT 697.1-2013 交通信息基础数据元 第1部分:总则.docx VIP
- 简易阀门试压装置的设计制作与使用.pdf
文档评论(0)