首页> 中国专利> 一种基于蚁群算法的工作流系统测试用例优化方法

一种基于蚁群算法的工作流系统测试用例优化方法

摘要

本发明提供了一种基于蚁群算法的工作流系统测试用例优化方法。所述基于蚁群算法的工作流系统测试用例优化方法包括:步骤1,将所需测试的工作流系统建模为RTI/O_WF_Net模型;步骤2,定义蚁群算法的目标函数;步骤3,定义蚁群算法的启发函数;步骤4:修改蚁群算法信息素更新规则;步骤5:制定状态转移概率计算方法;步骤6:按照设计的蚁群算法生成优化后的测试序列。本发明的有益效果在于:所述基于蚁群算法的工作流系统测试用例优化方法将蚁群算法这一启发式算法应用到测试用例优化中,解决了工作流系统测试用例数量爆炸、测试周期长的问题,提高了系统的测试效率。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-10-01

    授权

    授权

  • 2018-12-14

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

    实质审查的生效

  • 2018-11-20

    公开

    公开

说明书

技术领域

本发明涉及计算机技术领域,具体涉及一种基于蚁群算法的工作流系统测试用例优化方法。

背景技术

随着计算机技术的发展工作流系统已经广泛被应用于银行、保险、医疗、政府等办公自动化业务领域中,由于其具有较高的业务重组能力,因此极大地提高了相关领域的业务处理能力。正是由于其应用范围的广泛性,其可靠性越来越受到重点关注。软件测试作为保证软件质量的重要手段,在工作流系统的测试中也进行了普遍应用。测试用例的设计和执行是软件测试的核心工作。由于工作流系统是可并行执行的应用系统,其测试用例的产生和优化一直是一个难以解决的NP问题。也就是说,工作流系统地测试用例如果全部生成和执行,将耗费大量时间,在现实中是不可接受的。

发明内容

本发明的目的在于提供一种基于蚁群算法的工作流系统测试用例优化方法,从而能够有效地提高测试的工作效率。

本发明的技术方案如下:一种基于蚁群算法的工作流系统测试用例优化方法包括:步骤1,将所需测试的工作流系统建模为RTI/O_WF_Net模型;步骤2,定义蚁群算法的目标函数;步骤3,定义蚁群算法的启发函数;步骤4:修改蚁群算法信息素更新规则;步骤5:制定状态转移概率计算方法;步骤6:按照设计的蚁群算法生成优化后的测试序列。

优选地,步骤1的RTI/O_WF_Net模型定义如下:

九元组<Activity,Input,Output,Resource,Relation,fAI,fAO,fTT,fTR>表示带输入输出及资源、时间约束的工作流,其中:

Activity={activity1,activity2,…activityk}(k≥1)表示工作流的活动集合;

Input={input1,input2,…inputm}(m≥1)表示输入元素的集合;

Output={output1,output2,…outputn}(n≥1)表示输出元素的集合;

Resource={resource1,resource2,…resourcel}(l≥1)表示资源的集合;

Relation={(f,Type)|f∈(Activity×Activity)}表示工作流中的关系集合,其中,

Type∈{sequence,and-join,or-join,and-split,or-split}表示工作流中前后两个活动的关系类型;

fAI:Activity→ρ(Input)表示工作流中某一活动到输入元素的映射,其中ρ(Input)表示输入元素的幂集;

fAO:Activity→ρ(Output)表示工作流中某一活动到输出元素的映射,其中

ρ(Output)表示输出元素的幂集;

fTT:Activity→Time是工作流中某一活动到时间上的映射,如果

fTT(activity1)=time1,则表示活动activity1的执行需要的时间为time1

fTR:Activity→ρ(Resource)表示工作流中某一活动到资源的映射,其中ρ(Resource)表示资源的幂集。

优选地,在步骤2中,目标函数的定义为:

设整个工作流的任务W={wi|wi={σ12…σn}},wi表示某一时间段内工作流中并行执行的各时序片段σ12…σn集合,令max(wi)表示wi中所有时序无关的活动序列执行时间的最大值,则本文所要求得的目标函数为:

约束条件:a.如果σk∈wis∈wj,并且则i<j;

b.如果σk∈wis∈wi,则须满足如下两个条件之一:

(1)σk和σs时序无关,并且σk和σs资源无关;

(2)σk和σs时序无关,σk和σs资源相关且其中相关的资源数量可以满足相应活动的执行。

优选地,在步骤3中,启发函数的定义为:

在蚂蚁每一步的搜索中,需要受到启发函数及信息素两个方面的影响,设定启发函数:

表示蚂蚁k在时刻t从上一迁移i转到下一迁移j的启发信息,表示所有可执行迁移的执行时间平均值,也可理解为期望程度的强度,它在一定程度上将影响整个算法的收敛速度;tj表示迁移j的执行时间,该值越小,相应的启发信息越大,蚂蚁选择该活动进行执行的概率也就越大。

优选地,在步骤4中具体包括如下内容:

蚂蚁k在迁移ti、tj间留下的信息素大小为:

其中Q表示初始时刻各活动迁移中所包含的信息量,LB表示所有蚂蚁执行过的迁移时间的最小值,T表示所有蚂蚁执行过的所有迁移时间的总和,T表示所有蚂蚁执行过的迁移时间的平均值;

所有蚂蚁本次循环中在迁移ti、tj间留下的信息素的总和为:

从而t+n时刻在迁移ti、tj间的信息素更新策略可以表示为:

τij(t+n)=(1-ρ)·τij(t)+Δτij(t)

其中ρ表示信息素挥发速率,信息素更新策略的公式可以理解为迁移ti、tj间在原有信息素τij(t)的基础上,经挥发残留下原信息量的(1-ρ),并通过其他蚂蚁的经过,又补充进来大小为Δτij(t)的信息素。

优选地,在步骤5中具体包括如下内容:

由步骤4中信息素更新规则和步骤3中启发函数设置可得到蚂蚁k在时刻t由迁移ti转移到迁移tj的转移概率

其中allowedk为在RTI/O_WF_Net运行规则下蚂蚁k当前允许执行的活动集合。

本发明的有益效果在于:所述基于蚁群算法的工作流系统测试用例优化方法将蚁群算法这一启发式算法应用到测试用例优化中,解决了工作流系统测试用例数量爆炸、测试周期长的问题,提高了系统的测试效率。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

除非上下文另有特定清楚的描述,本发明中的元件和组件,数量既可以单个的形式存在,也可以多个的形式存在,本发明并不对此进行限定。可以理解,本文中所使用的术语“和/或”涉及且涵盖相关联的所列项目中的一者或一者以上的任何和所有可能的组合。

基本定义:

资源相关活动的定义为:如果资源并且则称活动ti、tj是资源相关的;如果在活动序列σi和σj中,ti和tj均资源无关,那么称活动序列σi和σj是资源无关的。

时序相关活动的定义为:如果存在状态M1,M2和活动序列σ,使得M1[ti>,并且M1[σ>M2,M2[tj>,则称活动ti、tj是时序相关的,ti先于tj执行,则记作如果则称活动序列σi和σj是时序相关的,记作如果ti和tj均时序无关,那么称活动序列σi和σj是时序无关的,即σi和σj可并行执行。

所述基于蚁群算法的工作流系统测试用例优化方法包括如下步骤:

步骤1,将所需测试的工作流系统建模为RTI/O_WF_Net模型。

具体地,在步骤1中,RTI/O_WF_Net模型定义如下:

九元组<Activity,Input,Output,Resource,Relation,fAI,fAO,fTT,fTR>表示带输入输出及资源、时间约束的工作流,其中:

10)Activity={activity1,activity2,…activityk}(k≥1)表示工作流的活动集合;

11)Input={input1,input2,…inputm}(m≥1)表示输入元素的集合;

12)Output={output1,output2,…outputn}(n≥1)表示输出元素的集合;

13)Resource={resource1,resource2,…resourcel}(l≥1)表示资源的集合;

14)Relation={(f,Type)|f∈(Activity×Activity)}表示工作流中的关系集合,其中,

Type∈{sequence,and-join,or-join,and-split,or-split}表示工作流中前后两个活动的关系类型;

15)fAI:Activity→ρ(Input)表示工作流中某一活动到输入元素的映射,其中ρ(Input)表示输入元素的幂集;

16)fAO:Activity→ρ(Output)表示工作流中某一活动到输出元素的映射,其中ρ(Output)表示输出元素的幂集;

17)fTT:Activity→Time是工作流中某一活动到时间上的映射,如果fTT(activity1)=time1,则表示活动activity1的执行需要的时间为time1

18)fTR:Activity→ρ(Resource)表示工作流中某一活动到资源的映射,其中ρ(Resource)表示资源的幂集。

步骤2,定义蚁群算法的目标函数。

具体地,在步骤2中,目标函数的定义为:

设整个工作流的任务W={wi|wi={σ12…σn}},wi表示某一时间段内工作流中并行执行的各时序片段σ12…σn集合,令max(wi)表示wi中所有时序无关的活动序列执行时间的最大值,则本文所要求得的目标函数为:

约束条件:a.如果σk∈wis∈wj,并且则i<j;

b.如果σk∈wis∈wi,则须满足如下两个条件之一:

(1)σk和σs时序无关,并且σk和σs资源无关;

(2)σk和σs时序无关,σk和σs资源相关且其中相关的资源数量可以满足相应活动的执行。

步骤3,定义蚁群算法的启发函数。

具体地,在步骤3中,启发函数的定义为:

在蚂蚁每一步的搜索中,需要受到启发函数(即能见度)及信息素两个方面的影响,设定启发函数:

表示蚂蚁k在时刻t从上一迁移i转到下一迁移j的启发信息,表示所有可执行迁移的执行时间平均值,也可理解为期望程度的强度,它在一定程度上将影响整个算法的收敛速度;tj表示迁移j的执行时间,该值越小,相应的启发信息越大,蚂蚁选择该活动进行执行的概率也就越大。

步骤4:修改蚁群算法信息素更新规则。

具体地,在步骤4中具体包括如下内容:

蚂蚁k在迁移ti、tj间留下的信息素大小为:

其中Q表示初始时刻各活动迁移中所包含的信息量,LB表示所有蚂蚁执行过的迁移时间的最小值,T表示所有蚂蚁执行过的所有迁移时间的总和,表示所有蚂蚁执行过的迁移时间的平均值;这种动态标注方法可以减小可行解之间的差别,避免算法早熟。

所有蚂蚁本次循环中在迁移ti、tj间留下的信息素的总和为:

从而t+n时刻在迁移ti、tj间的信息素更新策略可以表示为:

τij(t+n)=(1-ρ)·τij(t)+Δτij(t)

其中ρ表示信息素挥发速率,信息素更新策略的公式可以理解为可以理解为迁移ti、tj间在原有信息素τij(t)的基础上,经挥发残留下原信息量的(1-ρ),并通过其他蚂蚁的经过,又补充进来大小为Δτij(t)的信息素。

步骤5:制定状态转移概率计算方法。

具体地,在步骤5中具体包括如下内容:

由步骤4中信息素更新规则和步骤3中启发函数设置可得到蚂蚁k在时刻t由迁移ti转移到迁移tj的转移概率

其中allowedk为在RTI/O_WF_Net运行规则下蚂蚁k当前允许执行的活动集合。

步骤6:按照设计的蚁群算法生成优化后的测试序列。

具体地,在步骤6中:

算法输入:RTI/O_WF_Net模型∑=(P,T,F,M0,α,K),初始时刻各活动迁移中所包含的信息量Q,蚂蚁个数m,算法最大循环次数Nmax

算法输出:最优测试序列W

算法过程:

为每只蚂蚁依照RTI/O_WF_Net运行规则初始化allowedk

根据步骤5计算的状态转移概率选择迁移tj前进,j∈allowedk

更新由本次选择执行的迁移tj产生的并行测试序列集W,并依照Petri网运行规则更新allowedk

依步骤4中信息素更新规则的公式更新每条路径上的信息量,循环上述过程直至完成m个蚂蚁的信息素更新,并输出最佳路径W。

从上述算法设计可以看出,算法的时间耗费依赖于最大循环次数Nmax、蚂蚁个数m的设置和模型中活动迁移的个数|T|,即算法中三层循环次数的设置,因此算法的时间复杂度为O(Nmax·m·|T|);算法的空间耗费主要用于记录每只蚂蚁的适应值信息、输入模型的存储及每只蚂蚁在每次循环得到的执行序列上,故算法的空间复杂度为O(|T|+|P|+m+k·Nmax)。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。

此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号