首页> 中国专利> 一种基于UML模型的测试用例优先排序方法

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

摘要

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

著录项

  • 公开/公告号CN106502892A

    专利类型发明专利

  • 公开/公告日2017-03-15

    原文格式PDF

  • 申请/专利权人 杭州电子科技大学;

    申请/专利号CN201610914948.7

  • 发明设计人 王兴起;章天宁;方景龙;魏丹;

    申请日2016-10-20

  • 分类号G06F11/36(20060101);

  • 代理机构杭州君度专利代理事务所(特殊普通合伙);

  • 代理人杜军

  • 地址 310018 浙江省杭州市下沙高教园区2号大街

  • 入库时间 2023-06-19 01:46:55

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-05-26

    专利权质押合同登记的生效 IPC(主分类):G06F11/36 专利号:ZL2016109149487 登记号:Y2023980040155 登记生效日:20230509 出质人:杭州远传新业科技股份有限公司 质权人:中国光大银行股份有限公司杭州分行 发明名称:一种基于UML模型的测试用例优先排序方法 申请日:20161020 授权公告日:20181113

    专利权质押合同登记的生效、变更及注销

  • 2022-07-01

    专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F11/36 专利号:ZL2016109149487 变更事项:专利权人 变更前:杭州远传新业科技有限公司 变更后:杭州远传新业科技股份有限公司 变更事项:地址 变更前:310000 浙江省杭州市滨江区信诚路857号世茂中心23楼 变更后:311611 浙江省杭州市滨江区浦沿街道信诚路857号悦江商业中心23011室

    专利权人的姓名或者名称、地址的变更

  • 2019-11-01

    专利权的转移 IPC(主分类):G06F11/36 登记生效日:20191014 变更前: 变更后: 申请日:20161020

    专利申请权、专利权的转移

  • 2018-11-13

    授权

    授权

  • 2017-04-12

    实质审查的生效 IPC(主分类):G06F11/36 申请日:20161020

    实质审查的生效

  • 2017-03-15

    公开

    公开

查看全部

说明书

技术领域

本发明是对测试用例集的一种优化处理方法,旨在使得该技术处理后的测试用例在检测运用模型驱动开发的软件时,能够高效检错,达到减少测试成本的效果。

背景技术

软件测试在软件开发过程中有着极其重要的作用,但软件测试也是软件开发中一个高成本的过程。测试人员或者通过手工有选择的设计测试用例,或者通过软件测试工具为一个软件自动生成测试用例,并利用测试用例对软件进行测试。通过手工设计测试用例,主观性强,测试质量很难保证,因此通过测试用例生成工具自动生成测试用例是目前软件测试的发展趋势。但对于测试用例自动生成而言,最大的问题在于如何从庞大的测试用例集中挑选出优秀的测试用例子集使得该子集能够在拥有良好的测试覆盖率的前提下,降低软件测试的开销。

国内外的研究学者针对测试用例的选择和使用问题做了大量的相关研究工作,测试用例约简技术(Test Case Reduction,TCR)和测试用例排序技术(Test CasePrioritization,TCP)就是其中相对成熟的两种技术,这两种技术通过较小的代价解决了测试用例的选择问题。

然而这两种技术仍存在一定的局限性,比如:TCR技术在约简测试用例集的过程中,可能将一些原本能够检测软件漏洞的测试用例当做冗余测试用例删除,因此使得精简后的测试用例集在错误检测能力上有所下降,失去了检测出某些潜在漏洞的能力。而传统TCP技术注重于按照某一种排序策略对测试用例进行排序亦或是根据软件代码与错误间的联系使覆盖易错区域测试用例优先执行,忽略了软件模型与错误之间存在的联系,使得传统TCP技术在运用到基于模型的软件测试时无法取得良好的效果。

发明内容

本发明针对传统的TCP技术提出了一种改进型的算法,基于软件UML模型的测试用例排序方法不局限于测试用例集本身,且不依赖于特定的软件代码,而是通过对软件设计模型的分析,综合考虑模型中反映的软件复杂度以及方法调用的依赖关系,从而提高测试用例的检错能力和测试效率。此外,因为基于模型的测试不依赖于代码,且软件模型的建立位于软件开发过程的前端,也使得基于软件UML模型的测试用例排序方法可以实现全流程测试。

本发明方法具体包括以下步骤:

步骤1、获取软件各类的Chidamber和Kemerer度量元(CK度量元,Chidamber andKemerer度量元),具体的获取如下:

通过统计UML类图中的各类的方法数量,获得各类的类加权方法数(WMC,WeightedMethods per Class)、用深度优先搜索在类图中搜索出类的最深前驱,计算类到最深前驱的距离,获得各类的继承树深度(DIT,Depth of Inheritance Tree)、分析各类的直接子类数量,获得各类的类子类数(NOC,Number of Children)、统计各类的非继承关系数量,获得类耦合度(CBO,Coupling Between Object Class)、通过分析UML顺序图方法中类实例化对象之间的方法调用关系,获得各类的类响应度(RFC,Response For a Class)。

步骤2、获取CK度量元值与软件故障的关系公式,然后根据关系公式和各类的CK度量元值估算类的错误概率。具体的实施如下:

首先根据历史版本的CK度量元以及类是否错误的信息训练二元逻辑斯蒂模型,模型如下:

因变量p为类是否包含错误的概率,类包含错误值取1,否则取0;自变量集X=(1,x1,x2,……,xn)T为类的各CK度量元的值;参数集B=(β01,……,β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.5

IM=Dep*p

步骤5、计算测试用例优先级,根据优先级增量(Additional)排序策略排序测试用例,具体排序过程如下:

5-1.设输入测试用例集合TC。所有迁移的集合Trans作为未覆盖迁移集合和以及空的已排序队列Queue。

5-2.测试用例中所有属于集合Trans的迁移的重要度之和作为该测试用例的优先级,计算集合TC中各测试用例优先级。

5-3.选择优先级最大的测试用例,当优先级相同时选择较长的测试用例。从集合TC中将选择的测试用例取出放入队列Queue中,同时从集合Trans中删除队列Queue包含的迁移。

5-4.判断集合TC是否为空,如果为空,排序结束,输出测试用例队列Queue;否则,返回步骤5-2。

本发明的有益效果:

1.该技术考虑到软件系统中类的复杂度,测试用例所涉及到的迁移所对应的类越复杂越容易发现软件系统中所存在的错误,因此考虑类复杂度的测试用例排序能够更高效地发现软件系统中存在的错误。

2.该技术考虑到软件系统执行过程中消息传递的关系,测试用例所涉及到的迁移依赖关系越多说明消息在软件系统中影响越大也越复杂越易出错,因此考虑迁移依赖关系的测试用例排序能更高效地发现软件系统中存在的错误及其衍生错误。

3.该技术通过优先排序,优先执行权限高的测试用例,因此在测试时间有限的情况下,仍然能对重要的测试用例优先执行,从而削减软件测试成本。

附图说明

图1为基于UML模型的测试用例优先排序方法整体流程

图2为某无人机飞控系统自稳模块UML类图。

图3为某无人机飞控系统自稳模块部分UML顺序图。

图4为数据依赖生成具体流程。

图5为控制依赖生成具体流程。

图6为Additional排序策略流程。

具体实施方式

下面根据附图结合一个无人机飞控系统自稳模块的测试用例优先排序过程对本发明进行详细说明。本发明整体流程如附图图1所示,具体步骤如下:

步骤1、获取软件各类的Chidamber和Kemerer度量元。

步骤2、获取CK度量元值与软件故障的关系公式,然后根据关系公式和各类的CK度量元值估算类的错误概率。

步骤3、获取时间自动机迁移之间的依赖关系。时间自动机由UML顺序图生成。

步骤4、计算迁移的重要度。

步骤5、计算测试用例优先级,根据优先级增量排序测试用例。

进一步,在步骤1中,无人机飞控系统自稳模块的UML类图如附图图2所示,以及UML顺序图如附图图3所示。类图中类包含属性和方法,类与类的连线表示类之间的关系,包括继承关系和组合关系两大类。顺序图中包含类的实例化对象以及对象间的方法调用,实例化对象以及方法可以对应到类图中的类以及类的方法。类的方法数量即为类的WMC;通过深度优先搜索在类图中搜索出类的最深继承关系前驱,类到最深继承关系前驱的距离即为类的DIT;类的直接子类数量即为类的NOC;类的非继承关系数量即为类的耦合度;UML顺序图中类实例化对象调用其他类实例化对象的方法数量即为类的响应度。

进一步,在步骤2中,无人机飞控系统自稳模块无法获取历史版本信息,因此采用权威的CK度量元数据集训练二元逻辑斯蒂模型,训练后的模型如下:

p为类的错误概率,x1到x5分别表示类CK度量元中的WMC、DIT、NOC、CBO、RFC。然后将由步骤1得到的类CK度量元值,以类为单位代入模型中估算该类的错误概率。

进一步,在步骤3中,自动机的迁移依赖关系计算分为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.对路径进行逐条分析,当除起始迁移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.5

IM=Dep*p

将步骤2得到的类错误概率以及步骤3得到的迁移被依赖度代入公式,计算出迁移的重要度。

进一步,在步骤5中,采用Additional策略排序测试用例,策略流程如附图6所示,具体排序过程如下:

设输入测试用例集合TC。所有迁移的集合Trans作为未覆盖迁移集合和以及空的已排序队列Queue。

第一步:测试用例中所有属于集合Trans的迁移的重要度之和作为该测试用例的优先级,计算集合TC中各测试用例优先级。

第二步:选择优先级最大的测试用例,当优先级相同时选择较长的测试用例。从集合TC中将选择的测试用例取出放入队列Queue中,同时从集合Trans中删除队列Queue包含的迁移。

第三步:判断集合TC是否为空,如果为空,排序结束,输出测试用例队列Queue;否则,返回第一步。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号