基于efsm模型的路径测试数据生成方法

文档序号:6631013阅读:178来源:国知局
基于efsm模型的路径测试数据生成方法
【专利摘要】本发明公开了基于EFSM模型的路径测试数据生成方法,包括以下步骤:步骤一、对EFSM模型进行符号执行和数据流依赖分析,获得每条EFSM模型的路径约束;步骤二、使用遗传算法生成满足路径约束的测试数据,给定初始个体;步骤三、根据适应度函数评估初始个体的适应度值,若个体的适应值为0,那么这样的初始个体就是满足路径约束的测试数据,算法终止;步骤四、若步骤三中的适应值没有超过设定的最大代数,可以在当前代中选取两个具有最小适应值的个体作为父个体进行交叉操作或变异操作,生成新一代个体,并对新一代个体重复步骤三和步骤四。对于具有复杂约束或涉及多变量的路径,我们的方法生成满足所有约束条件的测试数据的成功率要比S.Kalaji方法高的多。
【专利说明】基于EFSM模型的路径测试数据生成方法

【技术领域】
[0001]本发明涉及软件测试领域,具体涉及基于EFSM模型的路径测试数据生成方法。

【背景技术】
[0002]目前已经有很多关于程序的测试数据生成的研究,也已经有很多研究者把基于搜索的方法应用到了该领域。但是关于EFSM模型的测试数据生成方法的文章不是很多,目前主要的方法如下:
[0003]J.Zhang等提出了一种面向路径的测试数据生成方法,首先符号执行获取路径约束,然后采用约束求解器求解该路径约束,获取满足约束条件的输入值。但是符号执行和约束求解的局限是不能求解非线性约束。
[0004]R.Lefticaru等定义了一个适应度估算方法来获取路径的输入序列,该方法把Tracey的适应值函数应用到了路径的每一条迁移,路径的适应值通过把路径中的每一个函数看作是一个关键结点来定义。该方法的局限是它要求每个函数不能包含内部路径即嵌套的IF语句,要不然就不能使用Tracy的方法。
[0005]S.Kalaji等提出使用遗传算法来测试EFSM,他把分支距离和接近层次结合起来作为遗传算法的适应度函数,该适应度函数对于具有复杂约束的EFSM路径生成测试数据的成功率不高。对于包含等式约束的EFSM路径,不能生成符合所有约束的测试数据,生成的测试数据违反的平均约束率较高,说明测试数据的质量不高。
[0006]R.Lefticaru等改进了 S.Kalaji的适应度函数,他们把路径分解成多条独立子路径,并根据S.Kalaji的方法计算每条子路径的适应值,整条路径的适应值是各条子路径的适应值之和。他们给予那些满足较多条件的个体较好的适应值,这跟我们的方法类似。但是,他们的方法仍会碰到S.Kalaji方法一样的问题,而且我们不是总能找到路径的独立子路径。


【发明内容】

[0007]本发明要解决的技术问题是提供基于EFSM模型的路径测试数据生成方法,以扩展有穷状态机(EFSM)模型作为研究对象,使用遗传算法来生成面向EFSM路径的测试数据,在计算个体的适应度时同时考虑了它的分支距离和未覆盖的条件比率。在实验中,我们的方法与现有技术的S.Kalaji的方法进行了比较,结果表明我们的方法具有较好的效果并能获得质量较好的测试数据。
[0008]为达到上述目的,本发明的技术方案如下:
[0009]基于EFSM模型的路径测试数据生成方法,包括以下步骤:
[0010]步骤一、对EFSM模型进行符号执行和数据流依赖分析,获得每条EFSM模型的路径约束;
[0011]步骤二、使用遗传算法生成满足路径约束的测试数据,给定初始个体;
[0012]步骤三、根据适应度函数评估初始个体的适应度值,若个体的适应值为0,那么这样的初始个体就是满足路径约束的测试数据,算法终止;
[0013]步骤四、若步骤三中的适应值没有超过设定的最大代数,可以在当前代中选取两个具有最小适应值的个体作为父个体进行交叉操作或变异操作,生成新一代个体,并对新一代个体重复步骤三和步骤四。
[0014]在本发明的一个优选实施例中,所述步骤四中的适应值超过了设定的最大代数,
算法终止。
[0015]在本发明的一个优选实施例中,所述步骤一中的路径约束采用平行的IF语句表
/Jn ο
[0016]在本发明的一个优选实施例中,所述路径约束中只包含输入变量。
[0017]在本发明的一个优选实施例中,所述适应度函数是初始个体的分支距离与个体未覆盖的路径约束中的条件的比率之和。
[0018]通过上述技术方案,本发明的有益效果是:
[0019]对于具有复杂约束或涉及多变量的路径,我们的方法生成满足所有约束条件的测试数据的成功率要比s.Kalaji方法高的多;
[0020]对于只能生成不能完全满足所有条件的测试数据的路径即包含等式的路径,我们以生成的测试数据违反的平均约束率来衡量生成测试数据的质量,我们的方法生成的测试数据质量要比s.Kalaji方法的要高。

【专利附图】

【附图说明】
[0021]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0022]图1为本发明的工作流程图。
[0023]图2a为本发明的实施例1的EFSM模型。
[0024]图2b为本发明的实施例2的EFSM模型。
[0025]图2c为本发明的实施例3的EFSM模型。
[0026]图3a为本发明的简单飞机安全系统的扩展状态机模型生成测试数据的平均代数。
[0027]图3b为本发明的简单飞机安全系统的扩展状态机模型生成测试数据的成功率。
[0028]图3c为本发明的传输协议的扩展状态机模型生成测试数据的平均代数。
[0029]图3d为本发明的电梯系统的扩展状态机模型生成的测试数据的平均代数。
图3e为本发明的电梯系统的扩展状态机模型生产的测试数据违反的平均约束率。

【具体实施方式】
[0030]为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明。
[0031]参照图1,基于EFSM模型的路径测试数据生成方法,包括以下步骤:
[0032]步骤一、对于EFSM模型进行符号执行和数据流依赖分析,获得每条EFSM路径的路径约束。
[0033]步骤二、使用遗传算法生成满足路径约束的测试数据,给定初始个体。
[0034]步骤三、根据适应度函数评估个体的适应度值,这里的适应度函数是个体的分支距离与个体未覆盖的路径约束中的条件的比率之和。如果个体的适应值为0,那么这样的个体就是满足路径约束的测试数据,算法终止。
[0035]步骤四、否则,如果没有超过设定的最大代数,可以在当前代中选取两个具有最小适应值的个体作为父个体进行交叉操作,生成新一代的个体;或者在当前代中选取一个具有最小适应值的个体作为父个体进行变异操作,生成新一代的个体。如果超过了设定的最大代数,算法终止。重复步骤三-步骤四。
[0036]与本发明有关的概念如下:
[0037]1.1扩展的有穷状态机(EFSM)
[0038]有穷状态机(FSM)是一种Mealy自动机,它包含了有穷状态集、迁移集和输入输出集。由于其不能建模系统的数据部分,所以本文采用扩展的有穷状态机作为系统模型。扩展的有穷状态机在FSM的基础上扩展了上下文变量、谓词和操作。
[0039]EFSM是一个六元组(S;Sq;V;I ;0 ;T),其中S是有穷状态集合;S。是初始状态;V是上下文变量的集合是有穷的输入消息集合;0是有穷的输出消息集合;τ是有穷的迁移集合。
[0040]迁移t e T是一个五元组(Ss ;i ;g ;op ;se),其中Ss是七的源状态;i e I是输入,它可能与输入参数有关#是称为监护条件的逻辑表达式;op是由赋值语句或输出语句等组成的操作是t的目标状态。
[0041]当在状态Ss时,如果接收的是输入i且监护条件g满足,那么触发迁移t= (ss ;i ;g ;op ;se),同时执行op中的操作且状态转换为se。g和OP都可以包含输入参数和上下文变量。我们这里只考虑确定的EFSMs。如果对于从同一状态出发的具有相同输入的多个迁移,一次只有一个迁移的监护条件满足,即一次只能触发一个迁移,那么EFSM是确定的。
[0042]在EFSM中,迁移的监护条件可以由逻辑运算符AND和OR连接。由AND连接的监护条件我们表示成嵌套的IF语句。由OR连接的监护条件,我们把它划分成OR操作符个数+1个迁移,分别计算它们的适应值,最后把它们之间的最小值作为整个监护条件的适应值。
[0043]1.2符号执行
[0044]符号执行是一种静态的程序分析方法,它使用符号值而不是实际值来执行程序,执行的结果是一个关于符号的表达式。这对于分析输入和输出之间的关系很有用。
[0045]当符号执行应用到路径的测试数据生成中时,它就把测试数据生成问题刻画成了求解用符号值执行路径后得到的符号表达式的问题。例如,考虑迁移路径tit2t3,各个迁移中的谓词分别是x>0,y〈15,z > 10,我们分别用符号值a,b,c代入变量x,y,z,用符号值执行路径tit2t3后得到符号表达式(a>0ANDb〈15ANDc彡10),生成路径tit2t3测试数据的问题就转换成了寻找符号表达式(a>0ANDb〈15ANDc彡10)解的问题。
[0046]1.3数据流依赖
[0047]在EFSM中存在一些输入变量和上下文变量。通常我们只用输入变量来表示需要求解的符号表达式。那么对于路径中的上下文变量我们需要使用数据流分析技术把它们替换成相应的值和输入变量。
[0048]给定变量V,如果V在迁移t中作为输入参数或在t的操作中被赋值,那么称V在t中被定义,记为def (t)。如果V在迁移t的谓词中引用(p-use)中或操作中引用(c_use),那么称V在t中被使用,记为use (t)。
[0049]给定从迁移ti到tj的迁移路径,V e def (tj)且v e use (t」),如果V在和t」间的迁移上都没有重新定义,那么我们称从t到&的路径为V的定义清晰路径。Ui ;tj)称为V的定义-引用对,tj数据依赖于
[0050]在得到每个迁移上上下文变量的数据流依赖后,我们采用后向替换技术把这些上下文变量替换成相应的值和输入变量。所谓后向替换,就是从路径的最后一个迁移从后往前处理,把迁移上引用的变量替换成它所依赖的定义,最后得到的路径表达式是只包含了输入变量的符号表达式。
[0051]1.4遗传算法
[0052]基于搜索的测试方法把测试数据的生成问题表示成了最优化问题。在基于搜索的测试方法中必须要选择一种表示候选解的方式和一种评估候选解的方法。候选解的表示方式通常有二进制、整型和实型编码。而评估候选解的方法我们通常称为适应度函数。适应度函数是用来衡量候选解优劣的方法,它给每个候选解赋一个正数,这个正数用来评估候选解离可接受的解还有多远。因为最优化问题通常是最小化问题,所以具有较低适应值的候选解较好,具有适应值是O的解则是可接受的解。
[0053]当我们选择好编码方式和定义了适应度函数后,就可以使用元启发式搜索技术。而遗传算法则是一种功能强大的元启发式技术。在遗传算法中每个解我们称为染色体,它们是由基因组成的。遗传算法的主要流程是对种群中的个体使用适应度函数进行评估,选择具有较好适应值的解作为父个体,然后通过交叉和变异操作生成下一代的新个体。
[0054]下文对S.Kalaji方法与本发明的实施例进行对比说明:
[0055]我们从三个方面来分析。
[0056]参照图2a为本发明的EFSM模型的实施例1 (Simple in-flight safety systemEFSM—简单的飞机安全系统的扩展状态机模型),为第一个方面是生成测试数据的平均代数。
[0057]参照图2b为本发明的EFSM模型的实施例2 (Class II transport protocolEFSM—传输协议的扩展状态机模型),为第二个方面是在不能100%生成测试数据的情况下,考虑两种方法的成功率。
[0058]参照图2c为本发明的EFSM模型的实施例3(Lift system EFSM—电梯系统的扩展状态机模型),为第三个方面是在完全不能生成满足约束条件的测试数据的情况下,考虑生成的测试数据违反路径中约束的平均比率。
[0059]我们的方法和S.Kalaji 的方法都用 Genetic Algorithm and Direct SearchToolbox for Mathlab 7.0来实现。我们使用实型编码表示个体,采用随机均勻选择,选择标量交叉,交叉概率为0.8,使用高斯变异,选择种群大小为20,每个变量的初始取值范围是[O…100],搜索终止的条件是适应值为O或者到达最大代数1000。为每条迁移路径执行搜索10次。
[0060]参照3a,图3b,图3c以及图3d ;根据迁移覆盖准则,Simple in-flight safetysystem EFSM总共有20条迁移路径,为这20条路径生成测试数据的平均代数见图3 (a)。
[0061]两种方法在对除了路径P2 ;p17 ;p18 ;p19 ;p20 ;p21外的其它路径生成测试数据时,它们的平均代数大致相同,都在52左右。这是可能因为在这些路径中,它们的约束都很简单,并且只涉及单个变量。对于这样的情况,两种方法的性能相同。在对路径p2;p17;p18;p19;P20 ;p21生成测试数据时,我们提出的方法的平均代数要比s.Kalaji的方法的高。
[0062]两种方法都不能在10次搜索中每次都成功生成满足路径约束的测试数据,但是我们的方法生成测试数据的成功概率要比S.Kalaji的方法高的多,两种方法为这6条路径生成测试数据的成功率见图3(b)。
[0063]这是可能这6条路径的约束较复杂,并且涉及多个变量,S.Kalaji的方法在个体不满足较外层的约束时就给它赋较高的适应值,可是有些个体虽然不满足个别外层约束但满足多个内层约束,选择这样的个体可能会生成最优解。这样的个体在S.Kalaji生成测试数据的过程中却被舍弃了,导致S.Kalaji方法较快的收敛即较快的获得较差的最优解,所以导致他不能为具有复杂约束的路径生成测试数据。
[0064]而我们提出的方法考虑了个体对于约束的覆盖情况,覆盖率越高的个体适应值越低。我们的方法会选择可能生成最优解的个体,即不满足外层约束但满足多个内层约束的个体。所以导致生成测试数据时平均代数比S.Kalaji方法要高,但是生成测试数据的成功率要比S.Kalaji方法高的多。
[0065]类似地,根据迁移覆盖准则,Transport Protocol EFSM总共有12条路径,为这12条路径生成测试数据的平均代数见图3(c)。两种方法都能为除了 P8以外的路径生成测试数据,且平均代数几乎相同。不能为P8生成测试数据的原因是P8的路径约束中包含等式,而等式是很难满足的。
[0066]Lift System EFSM中有24条路径,其中只有pi和p2两条路径可以通过遗传算法获取数据。对于其它路径来说,两种方法都不能生成满足约束条件的测试数据,但是我们的方法生成最优解的平均代数比S.Kalaji的方法高,造成这个结果的原因同In FlightSafety System EFSM中的解释。对于这些未能生成测试数据的路径,为了分析两种方法的优劣,我们从生成的测试数据违反的平均约束比率来进行比较。S.Kalaji的方法违反的平均约束比率在80%上下,而我们的方法违反的平均约束比率在10%上下,也就是说我们的方法生成的测试数据除了违反了等式以外其它约束都是满足。我们以测试数据违反的平均约束比率来衡量测试数据的质量,违反的平均约束比率越低,则测试数据质量越高。从图3e来看,我们的方法生成的测试数据的质量要比S.Kalaji方法高很多。
[0067]以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
【权利要求】
1.基于EFSM模型的路径测试数据生成方法,其特征在于,包括以下步骤: 步骤一、对EFSM模型进行符号执行和数据流依赖分析,获得每条EFSM模型的路径约束; 步骤二、使用遗传算法生成满足路径约束的测试数据,给定初始个体; 步骤三、根据适应度函数评估初始个体的适应度值,若个体的适应值为O,那么这样的初始个体就是满足路径约束的测试数据,算法终止; 步骤四、若步骤三中的适应值没有超过设定的最大代数,可以在当前代中选取两个具有最小适应值的个体作为父个体进行交叉操作或变异操作,生成新一代个体,并对新一代个体重复步骤三和步骤四。
2.根据权利要求1所述的基于EFSM模型的路径测试数据生成方法,其特征在于,所述步骤四中的适应值超过了设定的最大代数,算法终止。
3.根据权利要求1所述的基于EFSM模型的路径测试数据生成方法,其特征在于,所述步骤一中的路径约束采用平行的IF语句表示。
4.根据权利要求1所述的基于EFSM模型的路径测试数据生成方法,其特征在于,所述路径约束中只包含输入变量。
5.根据权利要求1所述的基于EFSM模型的路径测试数据生成方法,其特征在于,所述适应度函数是初始个体的分支距离与个体未覆盖的路径约束中的条件的比率之和。
【文档编号】G06F11/36GK104461861SQ201410561899
【公开日】2015年3月25日 申请日期:2014年10月21日 优先权日:2014年10月21日
【发明者】陆公正 申请人:苏州市职业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1