一种软件测试用例自动生成方法

文档序号:6481855阅读:256来源:国知局
专利名称:一种软件测试用例自动生成方法
技术领域
发明涉及一种基于Petri网的软件测试用例自动生成的方法,属于软件测试自动化的技术领域。
背景技术
软件测试是保证软件系统正确性的一个重要手段,它通过运行选定的测试用例来发现软件中的错误,并通过纠正错误使软件的质量达到要求。软件测试的关键问题就是构造一个测试用例的合理而有限的集合,尽可能的覆盖被测软件的问题空间。软件测试数据的生成在软件系统开发时间和费用中占有很大比重,而目前主要采用的人工选取方法工作量大、测试周期长、容易出现遗漏,并且效用低,因此如果有方法让这个选取过程能自动实现以生成效用高的测试用例集,将有很高的价值。遗传算法是模拟生物进化的优化算法,利用遗传算法生成软件测试用例是软件测试用例自动生成方法的一个重要的分支。University of SouthFlorida的D. Berndt, J. Fisher在总结前人的基础上详细研究了用遗传算法来生成软件测试用例的技术。四川大学的金虎采用了面向路径的测试用例生成方法,应用遗传算法对测试用例空间进行等价划分,根据适应度动态调整测试用例生成以减少测试冗余,通过进化计算指导测试用例生成。如文献(I)D. Berndt, J. Fisher, L. Johnson*, J. Pinglikar, and A. ffatkins. Breeding Software Test Cases with Genetic Algorithms[J]. Proceedings of the 36th Hawaii International Conference on SystemSciences. 2003 (2)金虎.基于面向路径的遗传算法的测试用例自动生成[J].计算机工程.2007基于UML的测试是面向对象软件测试的研究热点。Kim Y K,Hong H S,Bae D H早在1999年就将UML状态图应用到测试用例自动生成中,提出了一种把控制流和数据流相结合的基于UML状态图的类的测试用例的生成方法,使得UML在面向对象建模及测试中得到了统一,国内外很多专家学者对这种方法提出了扩展。西安理工大学的张毅坤把基于扩展的有限状态机EFMS的唯一输入输出UIO测试用例自动生成方法和UML的类的状态图相结合,提出了一种基于UML状态图的类的测试用例自动生成方法。该方法的特点是在测试用例中包含了预测,通过算法保证测试用例的长度最短,同时测试从状态图开始,避免了建模中出现的状态爆炸问题。如文献(I)Kim Y K, Hong HS, Bae D H. Test Cases Generation From UML State Diagrams [J] · IEEEProc. Softw. . 1999 O)张毅坤,施凤鸣,姚全珠,刘军, 付长龙.基于UML状态图的类测试用例自动生成方法[J].计算机工程.2003在已有的软件测试用例自动生成方法中,一般仍然或多或少存在以下不足(1)只能针对某单一类型的软件进行测试,例如面向对象程序,或者结构化程序;(2)用于生成测试用例的目标程序必须首先要有具体实现,即先有程序才有测试用例;(3)所建模型结构信息的收集没有建立具体的规则标准,导致不利于模型的分析与验证;
(4)所建模型没有明确的评价机制,即模型本身的合理性没有方法来评价,直接影响测试用例的效用;(5)人为参与的步骤太多,并且需要较多的相关专业知识才能够实施相应方法;(6)得到的测试用例没有较完善的评价机制。新模型下测试用例覆盖率分析多沿用传统的方法,且指标比较单一,不能全面的反映软件的质量;(7)测试用例管理机制缺乏,根据测试用例的性能分析而修订后的内容没有及时反映到测试用例集中,而达不到逐步优化的效果。

发明内容
本发明目的是针对现有技术方法存在的缺陷提供一种软件测试用例自动生成方法。本发明是一种软件测试用例自动生成方法,其特征在于包括如下步骤1.)第一阶段根据被测对象建立组件化Petri网模型(1)如果程序为结构化程序如C语言,由于有固定语法格式顺序结构、条件结构 (if·、switch)、循环结构(while、for),则对结构分别建模,Petri网模型就是这些模块的组合;(2)如果程序为00程序如C++,通过半形式化语言UML的状态图、动态图等生成过渡模型,再由UML图转化为Petri网模型;( 需求描述或者场景直接生成Petri网模型;2.)第二阶段收集Petri网结构信息将Petri网模型的各个元素(库所、变迁、 有向弧、Token等)用组件化形式表现出来。收集各种元素的信息,即得到Petri网的结构信息库所、变迁的前集、后集以及初始化条件等;3.)第三阶段模型分析与验证利用第二阶段得到的结构信息,结合由Petri网理论生成的相应算法分析Petri网模型的死锁、活性、有界性、可达性等模型特性。发现错误则需要回到第一阶段修改模型;4.)第四阶段生成测试用例用Petri网的可达标识集的分析方法对模型进行分析,用深度优先或广度优先搜索算法对可达树或覆盖图搜索而得到标识序列,对得到测试序列整理生成测试用例集;5.)第五阶段分析第四阶段得到的测试用例的效用传统分析方法和自定义方法相结合。传统白盒测试分析方法如语句覆盖、判定覆盖、条件覆盖、条件判定组合覆盖、多条件覆盖和修正判定条件覆盖等;Petri网自定义指标如标识覆盖、变迁覆盖;6.)第六阶段根据第五阶段的分析调整测试用例集,对测试用例添加、删除、修改后回到第五阶段重新分析,直至满足用户原始需求与质量要求。


图1 基于Petri网软件测试用例自动生成的流程图
具体实施例方式l.Petri网形式化定义1. 1. Petri网的充分必要条件三元组N = (S,T ;F)称为有向网(简称网)的充分必要条件是
(1 ) SC[T = 0\
权利要求
1. 一种基于PN模型的软件测试用例自动生成方法,其特征在于包括如下步骤1.)第一阶段根据被测对象建立组件化Petri网模型(1)如果程序为结构化程序如C语言,由于有固定语法格式顺序结构、条件结构(if、 switch)、循环结构(while、for),则对结构分别建模,Petri网模型就是这些模块的组合; ⑵如果程序为00程序如C++,通过半形式化语言UML的状态图、动态图等生成过渡模型, 再由UML图转化为Petri网模型;( 需求描述或者场景直接生成Petri网模型;2.)第二阶段收集Petri网结构信息将Petri网模型的各个元素(库所、变迁、有向弧、Token等)用组件化形式表现出来。收集各种元素的信息,即得到Petri网的结构信息 库所、变迁的前集、后集以及初始化条件等;3.)第三阶段模型分析与验证利用第二阶段得到的结构信息,结合由Petri网理论生成的相应算法分析Petri网模型的死锁、活性、有界性、可达性等模型特性。发现错误则需要回到第一阶段修改模型;4.)第四阶段生成测试用例用Petri网的可达标识集的分析方法对模型进行分析,用深度优先或广度优先搜索算法对可达树或覆盖图搜索而得到标识序列,对得到测试序列整理生成测试用例集;5.)第五阶段分析第四阶段得到的测试用例的效用传统分析方法和自定义方法相结合。传统白盒测试分析方法如语句覆盖、判定覆盖、条件覆盖、条件判定组合覆盖、多条件覆盖和修正判定条件覆盖等;Petri网自定义指标如标识覆盖、变迁覆盖;6.)第六阶段根据第五阶段的分析调整测试用例集,对测试用例添加、删除、修改后回到第五阶段重新分析,直至满足用户原始需求与质量要求。
2.本发明提出了标识展开树的分析方法。对于Petri网应用中经常出现的状态爆炸问题,用标识展开树的分析方法解决,本方法通过定义循环节点和跳出节点来极大的简化可达标识树的规模,为模型分析提供了有效的方法。
3.本发明提供了测试用例评价优化机制。该机制下测试用例不仅顺利生成,同时通过方法步骤中四、五、六阶段的反复执行对测试用例进行不断的优化,来达到需求。
全文摘要
本发明公布了一种软件测试用例自动生成方法,属于软件测试自动化的技术领域。本发明所述方法包括如下步骤1.第一阶段基于被测对象(这里考虑三类对象结构化语言程序,基于需求或场景描述,面向对象程序)建立组件化Petri网模型;2.第二阶段用适当的数据结构收集和存储PN模型中库所、变迁的前集、后集以及初始化条件等模型结构的相关信息;3.第三阶段根据第二阶段收集的信息采用适当的算法对模型分析与验证(死锁、活性、有界性、可达性等);4.第四阶段测试用例生成;5.第五阶段按照不同覆盖率指标进行测试用例分析;6.第六阶段根据用户原始需求与质量要求,综合分析,重新生成符合要求的测试用例集。
文档编号G06F11/36GK102176200SQ20091003536
公开日2011年9月7日 申请日期2009年9月25日 优先权日2009年9月25日
发明者刘久富, 娄坚波, 孙琳, 李金奎, 杨振兴, 王伟 申请人:南京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1