基于统一建模语言活动图自动生成测试用例的方法及系统的制作方法

文档序号:6471587阅读:129来源:国知局

专利名称::基于统一建模语言活动图自动生成测试用例的方法及系统的制作方法
技术领域
:本发明涉及软件测试
技术领域
,尤其涉及一种基于统一建模语言(UnifiedModelingLanguage,UML)活动图自动生成测试用例的方法及系统。
背景技术
:测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,用于测试某个程序路径或核实是否满足某个特定需求。测试用例是按一定的顺序执行的与测试目标相关的测试活动的描述,确定"怎样"测试。测试用例被看作是有效发现软件缺陷的最小测试执行单元,也被视为软件的测试规格说明书。在软件测试工作中,测试用例的设计非常重要,是测试执行的正确性、有效性的基础。如何有效地设计测试用例,一直是测试人员所关注的问题。设计好测试用例,也是保证软件测试工作的最关键的因素之一。现有技术中,人们通常从软件的算法结构和功能特征两个角度来设计测试用例并对软件进行测试。在实践中,面对各种不同类型的复杂软件系统,比如分布式软件或大型交互式应用软件,测试人员则通常需根据他们对应用问题的理解和具备的应用领域知识,以及对系统(功能特征和结构特性)的了解和测试经验等来综合设计和生成大量的测试用例。这些测试用例并非一些简单类型的数值的组合,而是一个与被测软件的交互执行过程相对应的多元组的序列。该多元组的序列由输入控制点及其输入指令或数据等要素组成。因此,针对被测软件,如何建立一个好的软件测试模型,用以定义和描述被测软件的各种可能的行为和执行情况,确定测试要点和充分性准则,并依据模型来设计和生成完备的测试用例集合无疑是软件测试的一项核心任务。实践中,人们常常会从各种不同的特定场景的角度来展示和分析期望系统实现的功能。其中,场景用来简要描述系统预期的或所希望的使用方式。场景适合描述系统中的任何角色,包括操作员、系统设计人员、修改人员、系统管理人员和其他的人员,他们从事的活动以及他们之间的交流或通讯。针对具体的系统和对其特定的需求,场景大多用以描述系统的各种典型的活动过程。在系统的开发过程中,随着需求的不断丰富和设计的逐步细化,通常会有更多的更加典型和具体的场景被确定下来,据此可以不断捕获各种典型的系统应用案例,并进而为测试构造具有代表性的测试用例。现有技术的缺陷在于无法结合场景生成测试用例。
发明内容本发明的目的在于提出一种基于统一建模语言活动图自动生成测试用例的方法及系统,以解决无法结合场景生成测试用例的问题。为实现上述目的,本发明提供了一种基于统一建模语言活动图自动生成测试用例的方法,包括将统一建模语言活动图转换为包括结点集合、边集合的集合,所述统一建模语言活动图用于描述被测软件用例的操作规程;从所述结点集合中提取从开始结点到叶子结点的路径,得到路径集合;将所述集合中的边集合与所述路径集合作为测试用例。本发明还提供了一种基于统一建模语言活动图自动生成测试用例的系统,包括转换模块,用于将统一建模语言活动图转换为包括结点集合、边集合的集合,所述统一建模语言活动图用于描述被测软件用例的操作规程;提取模块,用于从所述结点集合中提取从开始结点到叶子結点的路径,得到路径集合;生成模块,用于将所述集合中的边集合与所述路径集合作为测试用例。上述方案通过将被测软件的操作规程用户UML活动图表示,并将UML活动图转换为集合,结合场景生成了测试用例,解决了现有技术无法结合场景生成测试用例的问题,并填补了目前无标准的基于UML活动图设计测试用例的具体规范或方法这项技术空白,实现了将UML活动图用于测试软件的测试用例设计标准化。下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。图1为本发明基于统一建模语言活动图自动生成测试用例的方法实施例一的流程图2为本发明基于统一建模语言活动图自动生成测试用例的方法实施例一中一个UML活动图的简单例子的示意图3为本发明基于统一建模语言活动图自动生成测试用例的方法实施例二的流程图4为本发明基于统一建模语言活动图自动生成测试用例的方法实施例二中UML活动图的示意图5为本发明基于统一建模语言活动图自动生成测试用例的系统实施例的结构示意图。具体实施例方式图1为本发明基于统一建模语言活动图自动生成测试用例的方法实施例一的流程图,包括步骤ll、将UML活动图转换为包括结点集合、边集合、的集合,所述UML活动图用于描述被测软件所需进行的活动及活动间约束关系;步骤12、从所述结点集合中提取从开始结点到叶子结点的路径,得到路径集合;步骤13、将所述集合中的边集合与所述路径集合作为测试用例。UML是用来对软件密集系统进行可视化建模的一种语言。如,对面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言就是UML。UML是一个标准的图形表示法,它不是面向对象的分析和设计,也不是一种方法,它仅仅是一组符号而已,是非专利的第三代建模和规约语言。UML是一种定义良好、易于表达、功能强大且普遍适用的建模语言。它溶入了软件工程领域的新思想、新方法和新技术。它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。在面向对象软件密集系统的产品开发阶段,用UML进行说明、可视化、构建和书写,展现了一系列最佳工程实践。这些最佳实践在对大规3莫,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效。UML可以贯穿软件开发周期中的每一个阶段,被对象管理组织(ObjectManagementGroup,OMG)釆纳作为业界的标准。UML活动图由结点和边组成。结点分为动作状态、活动状态、判断、泳道、分叉、汇合、对象、信号的发送和接受等类型。边代表数据流程或控制流程,表示活动、包含活动的对象的发生序列,分为控制流、信息流和信号流等类型。一个活动图中有一个或多个初始状态,可能有多个终止状态或流结束状态。开始结点表示活动的开始。判断(decision)结点根据监视条件产生分支结构。分叉结点表示有多少个处理是同步执行的,然后在一个汇合结点结束同步执行。结束结点表示活动的结束。叶子结点表示该结点只是边的箭头指向,^L不输出即不指向其他结点。叶子结点包括结束结点。参数的输入和输出也可以显示在活动图中,用附于活动图的矩形边框上的小矩形表示。还允许用户在活动图上建立用泳道(swimlanes)表示的横向、纵向以及横向和纵向结合的多种分区,来描述活动图上与动作相关的主体。从一个开始结点到一个结束结点代表了整个活动图的完成。图2为一个UML活动图的简单例子的示意图。图中最上面的黑点为开始结点;最下面的三个黑点为结束结点;"查询余额有效,,、"取款状态有效"和"存款状态有效"三个结点均为判断结点。本实施例通过运用可视化面向对象建模技术UML中的活动图,先根据UML活动图生成测试场景,再根据测试场景生成测试用例,解决了现有技术无法结合场景生成测试用例的问题。并填补了目前无标准的基于UML活动图设计测试用例的具体规范或方法这项技术空白,实现了将UML活动图用于测试软件的测试用例设计标准化。这种方法不仅适合于软件系统的测试,同时也适用于软件设计阶段的对软件需求和设计模型的测试和验证。上述步骤12中,可采用深度搜索方法从集合中提取从开始结点到叶子结点的路径。上述步骤13之后还可包括对生成的测试用例进行分析,剔除无效的测试用例。图3为本发明基于统一建模语言活动图自动生成测试用例的方法实施例二的流程图。假设UML活动图描述了被测软件系统所需进行的活动及活动间约束关系,即被测软件系统用例的操作规程。自动生成测试用例的过程包括步骤31、将活动图转化为集合,为后续操作提供便利。运用常规的集合概念,活动图可表示为集合D=(B;A,T,E);其中,B表示活动图的开始结点;A={al,a2,a3,……}表示活动图的结点集合;T={tl,t2,t3,……}表示活动图的边集合;E={el,e2,e3,……}表示活动图的结束结点集合。假设活动图如图4所示,则,活动图经转换得到的集合如表1所示。9表l活动图对应的集合活动图各元素各元素具体值B开始结点Aal:用户登录a2:登录校验是否通过a3:通过a4:不通过a5:返回用户登录页面a6:进入用户管理页面a7:添加用户a8:》务改用户a9:删除用户al0:查询用户all:退出Ttl:B->alt2:al->a2t3:a2-〉a3t4:a2->a4t5:a4->a5t6:a5画〉alt7:a3-〉a6t8:a6-〉a7t9:a6-〉a8U0:a6-〉a9tll:a6陽〉al010<table>tableseeoriginaldocumentpage11</column></row><table>步骤32、基于活动图集合提取路径。分析活动图中可能存在的所有路径,以结点串联的方式表达,以便后续分析。提取路径采用深度搜索方法,可包括步骤一搜索从结点B开始,将结点B纳入路径rj中,j=l;对结点B执行步骤二;步骤二对结点ai(ai可为集合A中的结点,也可为结点B),从T集合中找寻以ai为开头的有向边集合"L,若"^非空则执行步骤三;步骤三遍历tm,tme"^';从tm可以找到tm所连接的下一个结点假设为as,将as纳入路径rj中,执行步骤四;当"r。'中的边都已经被遍历时,则向上回溯上一个"7^的遍历;若是从步骤四或步骤五返回而且"K'中的边没有都已经被遍历,则将路径r(j-l)中除去结点as的其他部分全部拷贝到rj中;步骤四对结点as重复执行步骤二,直到找到的下一个结点为集合E中的结束结点或找到的下一个结点的边集合D7;为空;当下一个结点为集合E中的结束结点或找到的下一个结点的边集合D7;为空时,j=j+l,返回步骤三;步骤五在找寻下一结点的过程中,若找到的结点为路径中已经记录的结点,则再次将该结点纳入路径rj后,j=j+l,返回步骤三。这样,就提取出了活动图中所有的路径R:(rl,r2,r3,……},并将其记录下来。以图4及表1为例,进行深度搜索后,得到以下路径B->al->a2->a3->a6->a7->al1->EB->al->a2->a4->a5->alB->al->a2->a3->a6->a8->al1->EB->al->a2->a3->a6->a9->al1->EB-〉al->a2->a3->a6->al0->al1->E步骤33、此时,测试用例包括边集合和路径集合,为了去除无效的测试用例,在边集合和路径集合的基础上继续分析,生成新的测试用例。分析过程可包括对于边集合T,其每一条边ti都是一个测试场景,分析后生成测试用例,每一条边可能对应多个测试用例;对于路径集合R,其每一条路径都是一个测试场景,分析后生成测试用例,每一条路径可能对应多个测试用例。在对T和R分析过程中,输入结点需要收集涉及到的输入变量信息以及相应的约束条件信息,输入变量可以从结点的文档属性中得到,约束条件需要分析从输入结点流出的转换;输出结点的输出内容可以从结点的文档属性中得到。分析过程中可能会出现无效的测试用例。无效用例指实际无法执行的用例,例如,输入错误登录名登录后执行其他操作,但实际上输入错误登录名后无法登录成功,也无法4丸行登录后的其他操作。当出现无效的测试用例时,剔除无效的测试用例。经过T和R分析得到测试用例,如表2所示。表2边和i各径对应的测试用例表<table>tableseeoriginaldocumentpage12</column></row><table><table>tableseeoriginaldocumentpage13</column></row><table>RB->al->a2->a4->a5->alB->al->a2->a3->a6->a8->all-〉EB->al->a2->a3->a6->a9->all->EB->al-〉a2->a3->a6->alO->all-〉E本实施例通过分析剔除无效的测试用例,避免了由无效测试用例产生的不必要的软件测试时间,有效地节约了软件测试时间,提高了软件测试执行效率。图5为本发明基于统一建模语言活动图自动生成测试用例的系统实施例的结构示意图。包括转换模块51、提取模块52及生成模块53。转换模块51用于将统一建模语言活动图转换为包括开始结点、结点集合、边集合、结束结点的集合,所述统一建模语言活动图用于描述被测软件用例的操作规程;提取模块52用于从所述集合中提取从开始结点到叶子结点的路径,得到路径集合;生成模块53用于将所述集合中的边集合与所述路径集合作为测试用例。所述提取模块52可通过深度搜索方法从所述集合中提取从开始结点到叶子结点的路径。基于统一建模语言活动图自动生成测试用例的系统还可包括剔除模块54。剔除模块54用于从所述测试用例中剔除无效的测试用例,以避免由无效测试用例产生的不必要的软件测试时间,有效节约软件测试时间。上述方法及系统实施例通过将被测软件的操作规程用户UML活动图表示,并将UML活动图转换为集合,结合场景生成了测试用例,解决了现有技术无法结合场景生成测试用例的问题,实现了用于测试软件的测试用例设14计步骤化、自动化及标准化,一定程度上增加了用例设计过程的可评审性,明确了基于UML活动图生成测试用例的具体思路和方法,较好地解决了现有技术根据需求点或功能点进行设计用例时产生测试用例重复的现象导致的测试重复性问题,提高了测试执行效率。并且,目前业内尚无标准的基于UML活动图设计测试用例的具体规范或方法,处于探索阶段,上述实施例提出了一种基于UML活动图自动生成测试用例的具体思想和方法,填补了该项技术的空白。本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。权利要求1、一种基于统一建模语言活动图自动生成测试用例的方法,其特征在于,包括将统一建模语言活动图转换为包括结点集合、边集合的集合,所述统一建模语言活动图用于描述被测软件用例的操作规程;从所述结点集合中提取从开始结点到叶子结点的路径,得到路径集合;将所述集合中的边集合与所述路径集合作为测试用例。2、根据权利要求1所述的基于统一建模语言活动图自动生成测试用例的方法,其特征在于,从所述结点集合中提取从开始结点到叶子结点的路径包括通过深度搜索方法从所述结点集合中提取从开始结点到叶子结点的路径。3、根据权利要求2所述的基于统一建模语言活动图自动生成测试用例的方法,其特征在于,所述深度搜索方法包括步骤一搜索从所述结点集合中的开始结点开始,将开始结点纳入路径rj中,j=l;对开始结点执行步骤二;步骤二对所述结点集合中的结点ai,从所述边集合中找寻以结点ai为开头的有向边集合"L,若"^非空则执行步骤三;步骤三遍历有向边集合"^中的边tm;从tm找到tm所连接的下一个结点as,将as纳入路径rj中,执行步骤四;当"7^中的边都已经被遍历时,则向上回溯上一个"乙的遍历;若从步骤四或步骤五返回且D^中的边没有都已经被遍历,则将路径r(j-l)中结点as以外结点全部拷贝到rj中;步骤四对结点as重复执行步骤二,直到找到的下一个结点为所述结点集合中的结束结点或找到的下一个结点的边集合Z)7;为空;当下一个结点为所述结点集合中的结束结点或找到的下一个结点的边集合Dr。s为空时,,返回步骤三;步骤五在找寻下一结点的过程中,若找到的结点为路径中已经记录的结点,则再次将该结点纳入路径rj后,j=j+l,返回步骤三。4、根据权利要求1至3中任一项所述的基于统一建模语言活动图自动生成测试用例的方法,其特征在于,还包括从所述测试用例中剔除无效的测试用例。5、根据权利要求4所述的基于统一建模语言活动图自动生成测试用例的方法,其特征在于,所述无效的测试用例为实际无法执行的用例。6、一种基于统一建模语言活动图自动生成测试用例的系统,其特征在于,包括转换模块,用于将统一建模语言活动图转换为包括结点集合、边集合的集合,所述统一建模语言活动图用于描述被测软件用例的操作规程;提取模块,用于从所述结点集合中提取从开始结点到叶子结点的路径,得到路径集合;生成模块,用于将所述集合中的边集合与所述路径集合作为测试用例。7、根据权利要求6所述的基于统一建模语言活动图自动生成测试用例的系统,其特征在于,所述提取模块还用于通过深度搜索方法从所述结点集合中提取从开始结点到叶子结点的路径。8、根据权利要求7所述的基于统一建模语言活动图自动生成测试用例的系统,其特征在于,所述提取模块采用的深度搜索方法包括步骤一搜索从所述结点集合中的开始结点开始,将开始结点纳入路径rj中,j=l;对开始结点执行步骤二;步骤二对所述结点集合中的结点ai,从所述边集合中找寻以结点ai为开头的有向边集合"7^,若。^非空则执行步骤三;步骤三遍历有向边集合"^中的边tm;从tm找到tm所连接的下一个结点as,将as纳入路径rj中,执行步骤四;当"、'中的边都已经被遍历时,则向上回溯上一个"乙的遍历;若从步骤四或步骤五返回且"^中的边没有都已经被遍历,则将路径r(j-l)中结点as以外结点全部拷贝到rj中;步骤四对结点as重复执行步骤二,直到找到的下一个结点为所述结点集合中的结束结点或找到的下一个结点的边集合Z)乙为空;当下一个结点为所述结点集合中的结束结点或找到的下一个结点的边集合Dr。,为空时,j=j+l,返回步骤三;步骤五在找寻下一结点的过程中,若找到的结点为路径中已经记录的结点,则再次将该结点纳入路径rj后,j=j+l,返回步骤三。9、根据权利要求6至8中任一项所述的基于统一建模语言活动图自动生成测试用例的系统,其特征在于,还包括剔除4莫块,用于从所述测试用例中剔除无效的测试用例;所述无效的测试用例为实际无法执行的用例。全文摘要本发明涉及一种基于统一建模语言活动图自动生成测试用例的方法及系统,方法包括将统一建模语言活动图转换为包括结点集合、边集合的集合,所述统一建模语言活动图用于描述被测软件用例的操作规程;从所述结点集合中提取从开始结点到叶子结点的路径,得到路径集合;将所述集合中的边集合与所述路径集合作为测试用例。系统包括转换模块、提取模块及生成模块。上述方案通过将被测软件的操作规程用户UML活动图表示,并将UML活动图转换为集合,结合场景生成了测试用例,解决了现有技术无法结合场景生成测试用例的问题。文档编号G06F9/44GK101464797SQ20081023913公开日2009年6月24日申请日期2008年12月9日优先权日2008年12月9日发明者王哲煊申请人:北京星网锐捷网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1