一种基于UML模型的测试用例优先排序方法技术

技术编号:14836782 阅读:75 留言:0更新日期:2017-03-17 04:10
本发明专利技术涉及一种基于UML模型的测试用例优先排序方法。本发明专利技术将类的复杂度和方法间的依赖关系作为重要因素进行考虑,首先根据UML类图结合UML顺序图分析出反映类复杂度的CK度量元,然后根据CK度量元与软件故障关系公式生成类故障率,再由UML顺序图生成的有限状态自动机生成迁移间的数据依赖与控制依赖关系。最后综合考虑迁移的依赖关系以及迁移对应类故障率,生成迁移的重要度,并将测试用例中未覆盖迁移的总重要度做为优先级对测试用例排序。本发明专利技术解决了传统测试用例排序技术过分依赖于程序代码、无法基于软件模型测试软件的局限性,更适用于基于模型驱动方式开发的软件的测试。

【技术实现步骤摘要】

本专利技术是对测试用例集的一种优化处理方法,旨在使得该技术处理后的测试用例在检测运用模型驱动开发的软件时,能够高效检错,达到减少测试成本的效果。
技术介绍
软件测试在软件开发过程中有着极其重要的作用,但软件测试也是软件开发中一个高成本的过程。测试人员或者通过手工有选择的设计测试用例,或者通过软件测试工具为一个软件自动生成测试用例,并利用测试用例对软件进行测试。通过手工设计测试用例,主观性强,测试质量很难保证,因此通过测试用例生成工具自动生成测试用例是目前软件测试的发展趋势。但对于测试用例自动生成而言,最大的问题在于如何从庞大的测试用例集中挑选出优秀的测试用例子集使得该子集能够在拥有良好的测试覆盖率的前提下,降低软件测试的开销。国内外的研究学者针对测试用例的选择和使用问题做了大量的相关研究工作,测试用例约简技术(TestCaseReduction,TCR)和测试用例排序技术(TestCasePrioritization,TCP)就是其中相对成熟的两种技术,这两种技术通过较小的代价解决了测试用例的选择问题。然而这两种技术仍存在一定的局限性,比如:TCR技术在约简测试用例集的过程中,可能将一些原本能够检测软件漏洞的测试用例当做冗余测试用例删除,因此使得精简后的测试用例集在错误检测能力上有所下降,失去了检测出某些潜在漏洞的能力。而传统TCP技术注重于按照某一种排序策略对测试用例进行排序亦或是根据软件代码与错误间的联系使覆盖易错区域测试用例优先执行,忽略了软件模型与错误之间存在的联系,使得传统TCP技术在运用到基于模型的软件测试时无法取得良好的效果。
技术实现思路
专利技术针对传统的TCP技术提出了一种改进型的算法,基于软件UML模型的测试用例排序方法不局限于测试用例集本身,且不依赖于特定的软件代码,而是通过对软件设计模型的分析,综合考虑模型中反映的软件复杂度以及方法调用的依赖关系,从而提高测试用例的检错能力和测试效率。此外,因为基于模型的测试不依赖于代码,且软件模型的建立位于软件开发过程的前端,也使得基于软件UML模型的测试用例排序方法可以实现全流程测试。本专利技术方法具体包括以下步骤:步骤1、获取软件各类的Chidamber和Kemerer度量元(CK度量元,ChidamberandKemerer度量元),具体的获取如下:通过统计UML类图中的各类的方法数量,获得各类的类加权方法数(WMC,WeightedMethodsperClass)、用深度优先搜索在类图中搜索出类的最深前驱,计算类到最深前驱的距离,获得各类的继承树深度(DIT,DepthofInheritanceTree)、分析各类的直接子类数量,获得各类的类子类数(NOC,NumberofChildren)、统计各类的非继承关系数量,获得类耦合度(CBO,CouplingBetweenObjectClass)、通过分析UML顺序图方法中类实例化对象之间的方法调用关系,获得各类的类响应度(RFC,ResponseForaClass)。步骤2、获取CK度量元值与软件故障的关系公式,然后根据关系公式和各类的CK度量元值估算类的错误概率。具体的实施如下:首先根据历史版本的CK度量元以及类是否错误的信息训练二元逻辑斯蒂模型,模型如下:因变量p为类是否包含错误的概率,类包含错误值取1,否则取0;自变量集X=(1,x1,x2,……,xn)T为类的各CK度量元的值;参数集B=(β0,β1,……,βn)为对应CK度量元的参数。用训练集训练二元逻辑斯蒂回归模型,获取较为准确的B。如果缺少历史信息可以采用权威的CK度量元数据集训练模型,CK数据集网址如下:http://openscience.us/repo/defect/ck/。其中包含tomcat、ant、log4j等Apache开源软件各版本的CK数据集。将当前版本的类CK度量元信息使用训练后的二元逻辑斯蒂公式计算类的错误概率。步骤3、获取时间自动机迁移之间的依赖关系。时间自动机由UML顺序图生成。迁移的数据依赖迁移集DD、控制依赖迁移集CD即为迁移的依赖关系,具体的获取方式如下:3-1.提取所有迁移中使用数据集合Use和定义数据集合Def。3-1-1.分割字符串。字符串Str中包含有迁移上的判断条件以及输入输出,以逻辑、算数等运算符为分割点分割字符串Str,获得含有变量和变量取值的集合Temp。3-1-2.删除变量的赋值。变量的赋值为数字,从集合Temp中删去完全为数字形式的元素,获得变量集Var。3-1-3.变量归类。如果字符串Str存储的信息类型为内部返回时,变量集Var加入Def集合中;如果字符串Str存储的信息类型为其余类型时,则加入Use集合。3-2.生成迁移的数据依赖迁移集DD。3-2-1.采用深度优先搜索方式生成所有迁移的所有无环路径。3-2-2.对路径进行逐条分析,当除起始迁移TRs外的迁移TRn的Use集包含有迁移TRs的Def集的元素时,从Def集中删除该元素,迁移TRn依赖于迁移TRs,将迁移TRn加入迁移TRs的数据依赖迁移集DD中。当Def为空时结束本条路径的分析,开始分析下一条路径。3-3.生成迁移的控制依赖迁移集CD。确定可能存在控制依赖关系的迁移集合CT。根据控制依赖定义,迁移TRa到终止状态必须经过迁移TRb,而迁移TRa的起始状态到终止状态不必须经过迁移TRb,迁移TRa控制依赖于迁移TRb。因此,只有起始状态出度大于1的迁移可能产生控制依赖。创建包含状态和出度两个属性的数组,遍历迁移,被遍历迁移的起始状态的出度加1。根据要求选择出度大于1的状态集State,再从迁移集中选择出起始状态属于状态集State的迁移集合CT。生成迁移TR到自动机终止状态必须经过的迁移集TMT。采用深度优先搜索方式生成以迁移TR为起始的所有无环路径,找出所有路径都经过的迁移放入该迁移的迁移集TMT。生成迁移TR的起始状态S到自动机终止状态必须经过的迁移集SMT。采用深度优先搜索方式生成状态S的所有无环路径,找出所有路径都经过的迁移放入状态S的迁移集SMT。集合运算,迁移TR的迁移集TMT集合与状态S的迁移集SMT集合的差集,即为迁移TR依赖的迁移集合CDB。在集合CDB中的迁移的控制依赖迁移集CD中加入迁移TR。步骤4、计算迁移的重要度。根据迁移的被依赖度Dep以及迁移对应的类错误概率p计算该迁移的重要度。被依赖度Dep为依赖于迁移TR的迁移数量,包含有控制依赖迁移数量|CD|和数据依赖迁移数量|DD|,同时为避免被依赖度Dep为0,导致迁移重要度无法反映类错误概率的影响,使迁移的被依赖度Dep在原有的基础上加0.5。p为迁移对应类的错误概率,迁移重要度IM计算公式如下:Dep=|DD|+|CD|+0.5IM=Dep*p步骤5、计算测试用例优先级,根据优先级增量(Additional)排序策略排序测试用例,具体排序过程如下:5-1.设输入测试用例集合TC。所有迁移的集合Trans作为未覆盖迁移集合和以及空的已排序队列Queue。5-2.测试用例中所有属于集合Trans的迁移的重要度之和作为该测试用例的优先级,计算集合TC中各测试用例优先级。5-3.选择优先级最大的测试用例,当优先级相同时本文档来自技高网...
一种<a href="http://www.xjishu.com/zhuanli/55/201610914948.html" title="一种基于UML模型的测试用例优先排序方法原文来自X技术">基于UML模型的测试用例优先排序方法</a>

【技术保护点】
一种基于UML模型的测试用例优先排序方法,其特征在于包括如下步骤:步骤1、获取软件各类的Chidamber和Kemerer度量元,具体的获取如下:通过统计UML类图中的各类的方法数量,获得各类的类加权方法数;用深度优先搜索在类图中搜索出类的最深前驱,计算类到最深前驱的距离,获得各类的继承树深度;分析各类的直接子类数量,获得各类的类子类数;统计各类的非继承关系数量,获得类耦合度;分析UML顺序图方法中类实例化对象之间的方法调用关系,获得各类的类响应度;步骤2、获取CK度量元值与软件故障的关系公式,然后根据关系公式和各类的CK度量元值估算类的错误概率;步骤3、获取时间自动机迁移之间的依赖关系;时间自动机由UML顺序图生成;分析自动机迁移上的参数,得到迁移的数据依赖关系;迁移的数据依赖迁移集DD、控制依赖迁移集CD即为迁移的依赖关系步骤4、计算迁移的重要度;根据迁移的被依赖度Dep以及迁移对应的类错误概率p计算该迁移的重要度;步骤5、计算测试用例优先级,根据优先级增量(Additional)排序策略排序测试用例。

【技术特征摘要】
1.一种基于UML模型的测试用例优先排序方法,其特征在于包括如下步骤:步骤1、获取软件各类的Chidamber和Kemerer度量元,具体的获取如下:通过统计UML类图中的各类的方法数量,获得各类的类加权方法数;用深度优先搜索在类图中搜索出类的最深前驱,计算类到最深前驱的距离,获得各类的继承树深度;分析各类的直接子类数量,获得各类的类子类数;统计各类的非继承关系数量,获得类耦合度;分析UML顺序图方法中类实例化对象之间的方法调用关系,获得各类的类响应度;步骤2、获取CK度量元值与软件故障的关系公式,然后根据关系公式和各类的CK度量元值估算类的错误概率;步骤3、获取时间自动机迁移之间的依赖关系;时间自动机由UML顺序图生成;分析自动机迁移上的参数,得到迁移的数据依赖关系;迁移的数据依赖迁移集DD、控制依赖迁移集CD即为迁移的依赖关系步骤4、计算迁移的重要度;根据迁移的被依赖度Dep以及迁移对应的类错误概率p计算该迁移的重要度;步骤5、计算测试用例优先级,根据优先级增量(Additional)排序策略排序测试用例。2.根据权利要求1所述的一种基于UML模型的测试用例优先排序方法,其特征在于步骤2所述的估算类的错误概率的具体实施如下:首先根据历史版本的CK度量元以及类是否错误的信息训练二元逻辑斯蒂模型,模型如下:因变量p为类是否包含错误的概率,类包含错误值取1,否则取0;自变量集X=(1,x1,x2,……,xn)T为类的各CK度量元的值;参数集B=(β0,β1,……,βn)为对应CK度量元的参数;用训练集训练二元逻辑斯蒂回归模型,获取较为准确的B;如果缺少历史信息则采用权威的CK度量元数据集训练模型,将当前版本的类CK度量元信息使用训练后的二元逻辑斯蒂公式计算类的错误概率。3.根据权利要求1所述的一种基于UML模型的测试用例优先排序方法,其特征在于步骤3所述的获取时间自动机迁移之间的依赖关系,具体的获取方式如下:3-1.提取所有迁移中使用数据集合Use和定义数据集合Def;3-1-1.分割字符串;字符串Str中包含有迁移上的判断条件以及输入输出,以逻辑、算数等运算符为分割点分割字符串Str,获得含有变量和变量取值的集合Temp;3-1-2.删除变量的赋值;变量的赋值为数字,从集合Temp中删去完全为数字形式的元素,获得变量集Var;3-1-3.变量归类;如果字符串Str存储的信息类型为内部返回时,变量集Var加入Def集合中;如果字符串Str存储的信息类型为其余类型时,则加入Use集合;3-2.生成迁移的数据依赖迁移集DD;3-2-1.采用深度优先搜索方式生成所有迁移的所有无环路径;3-2-2...

【专利技术属性】
技术研发人员:王兴起章天宁方景龙魏丹
申请(专利权)人:杭州电子科技大学
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1