CN109542783B - 一种基于变量分割的扩展有限状态机测试数据生成方法 - Google Patents
一种基于变量分割的扩展有限状态机测试数据生成方法 Download PDFInfo
- Publication number
- CN109542783B CN109542783B CN201811373829.0A CN201811373829A CN109542783B CN 109542783 B CN109542783 B CN 109542783B CN 201811373829 A CN201811373829 A CN 201811373829A CN 109542783 B CN109542783 B CN 109542783B
- Authority
- CN
- China
- Prior art keywords
- variables
- variable
- matrix
- migration
- test path
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/12—Computing arrangements based on biological models using genetic models
- G06N3/126—Evolutionary algorithms, e.g. genetic algorithms or genetic programming
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Biology (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Physiology (AREA)
- Genetics & Genomics (AREA)
- Quality & Reliability (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于变量分割的扩展有限状态机测试数据生成方法,属于软件测试技术领域,特别是涉及一种基于模型的测试技术领域。在基于扩展有限状态机的测试中,使用启发式方法获得测试数据的一个关键问题是如何提高算法的搜索效率。本发明在遗传算法的基础上提出一种自动分割测试路径中无关输入变量的方法。该方法特征是通过深入分析模型中变量与变量、变量与谓词条件间的关系,判定不影响子路径中谓词条件的无关输入变量及其起始分割迁移,同时开发了一个动态可执行模型框架用以提供算法所需的信息反馈,而后在遗传算法的搜索过程中将可分割输入变量逐渐从个体中分离以实现搜索空间的自动缩减,快速的生成目标测试路径的测试数据,提高测试数据生成效率。
Description
技术领域
本发明属于软件测试技术领域,特别是涉及一种基于模型的测试技术领域,用以判定、分割扩展有限状态机测试数据生成中的无关输入变量,具体地,是指一种基于变量分割的扩展有限状态机测试数据生成方法。
背景技术
软件测试对于保证软件质量具有关键作用。模型是软件***的一种抽象描述,基于模型的测试(Model-Based Testing,MBT)是采用形式化的方法判定软件错误所在,从而确保待测软件的正确性与可靠性。由于MBT并不针对某一程序代码本身,因而广泛用于软件生命周期早期阶段的产品测试,尤其适合于航空航天软件等安全悠关***的前期评估,是软件测试领域重要的研究方向之一。在MBT中,扩展有限状态机(Extended Finite StateMachine,EFSM)与有限状态机(Finite State Machine,FSM)是两种最为通用的测试模型,其中EFSM一直被作为SDL、UML、Simulink等建模语言的底层行为模型使用,它是在FSM的基础上引入了变量、操作以及状态迁移的谓词条件,因而相比于FSM更加适合于描述诸如嵌入式及通信协议软件等复杂应用***。目前基于EFSM模型的测试主要存在以下两方面的挑战:一是如何生成可执行的测试路径,二是测试路径对应的测试数据的生成。
目前已有许多针对扩展有限状态机的测试数据生成方法,包括松弛技术、区间算术、函数极小化方法等,由于EFSM中变量间往往存在有复杂的联系,因而这几种获取测试数据的方法成功率不高,某些情况下还需要人工参与,无疑降低了软件的测试效率。与这几种方法不同,使用启发式算法生成测试数据是将代价函数做为反馈量,动态的搜索输入变量的取值,以此来获取满足目标测试路径中谓词约束的测试输入值,因而整个过程可以采用自动化方法实现。此外启发式算法中还存在有许多跳出局部极值的机制,如模拟退火算法中的Metropolis准则,遗传算法中的选择、交叉、变异等操作,这些机制使得算法具备了全局寻优的能力,实际应用表明启发式算法与其他几种方法相比可以大幅提高测试数据生成的效率与成功率。
启发式算法虽然具有诸多优点但也存在以下不足:
1)在解决组合优化问题时算法的复杂度与问题的规模呈正比,对于测试数据的生成来说,当输入变量个数较多时,搜索所花费的时间开销会显著增加,甚至在有限时间内难以生成有效测试数据。
2)利用启发式方法求解满足约束条件的输入变量值时,会同时改变所有输入变量的取值而使代价函数向正确的方向靠近,因为每次只考虑一个约束条件,因此求出满足该约束条件的变量值后需要在当前变量值的基础上搜索满足下一个约束条件的变量值,若某些变量不满足下一条件又会改变所有变量的取值重新搜索,这种搜索过程会导致另外一些本以满足全部约束条件的变量变得不再满足,增加了多次回溯的概率。
基于变量分割的测试数据自动生成技术旨在解决上述问题。该测试数据自动化生成方法通过判定测试路径中的无关变量,并分割其中的无关输入变量以尽可能减少启发式算法的搜索空间,以此减小问题的规模;与此同时被分割的无关输入变量的值被替换为常数以固定下来,后续搜索过程将不再改变这些变量的值,这将有效降低回溯搜索的概率,以减小测试数据生成的时间开销。
发明内容
本发明要解决的问题是:通过对目标测试路径中无关变量的判定与分割,从而缩减启发式算法搜索测试数据的搜索空间,自动化的生成待测软件的测试输入数据,大幅提高测试数据的生成效率。
本发明提供的一种基于变量分割的扩展有限状态机测试数据生成方法,包括以下步骤:
步骤1)建立待测软件的扩展有限状态机模型,生成从起始状态节点到其他节点的测试路径候选集,而后对所述测试路径候选集中的测试路径进行预处理,并去除测试路径候选集中不可执行的测试路径;
步骤2)从预处理后的测试路径候选集中选取一条目标测试路径,分析目标测试路径中变量与迁移之间的依赖关系,判定目标测试路径中的无关输入变量及其起始分割迁移;
步骤3)建立可执行模型,利用语义解析方法使得扩展有限状态机模型可执行化,可执行模型使得扩展有限状态机EFSM具有了像软件程序一样动态运行的能力,从而可以为启发式算法提供运行时反馈;
步骤4)使用遗传算法搜索目标测试路径的测试数据,若当前测试数据所能经过的测试路径包含可分割输入变量的起始分割迁移,则直接固定这些可分割输入变量的取值为常数,在以后的遗传算法迭代中仅需搜索其余输入变量的取值直到成功生成测试数据为止。
测试数据的生成的主要过程为:首先由步骤1)生成软件的EFSM模型以及满足迁移覆盖的测试路径候选集,而后选取该测试路径候选集中的一条测试路径做为目标测试路径,并根据步骤2)获取该目标测试路径的无关输入变量及其起始分割迁移,通过步骤3)开发的可执行模型和步骤4)来获取运行时的反馈信息,将其作为遗传算法的适应度值,并将无关输入变量分割出去,随着输入变量个数的减少,遗传算法的搜索空间逐渐减小,将极大的提高搜索效率。
所述EFSM模型由一个六元组(S,S0,I,O,T,V)构成,其中S是该EFSM的状态集合,S0为初始状态,I是输入消息集合,O为非空的输出消息集合,T是状态迁移集合,V是变量的集合。
步骤1)中所述的预处理具体指:由于EFSM模型中同一输入变量符可能在不同的状态迁移的输入变量表中出现,为了表示它们代表的值不同,需要把每个状态迁移上的输入变量改写为vti的形式以示区分,其中v为输入变量的标识符,ti是某个状态迁移的标识符。
步骤2)中所述变量与迁移之间的依赖关系包含两个方面,一是变量的取值是否受到迁移上赋值语句及谓词条件中其他变量的影响(简称为变量与变量的关系),二是谓词条件的满足是否会受到某些变量的影响。
步骤3)中所述运行时反馈信息为:
其中F为反馈值,approach_level为总测试路径长度与当前测试数据可以触发的测试路径长度之差,branch_distance为当前测试数据与满足未触发迁移上谓词条件时的接近程度。
本发明的优点在于:
1)该方法通过判定与分割测试路径中的无关输入变量减小了启发式算法的搜索空间,从而提高了测试数据生成效率;
2)深入的分析了测试路径中变量间及变量与谓词条件间的依赖关系,并给出了明确的定义表述;
3)给出了无关输入变量判定与分割的自动实现算法;
4)通过语义分析技术实现了动态可执行模型用以提供运行时反馈,并利用遗传算法实现最终的测试数据生成。
将这四点结合,通过实验表明:无关输入变量的自动判定与分割算法是有效的,这种方法可以成功缩减遗传算法的搜索空间。此外,与在全空间搜索下的传统遗传算法及随机算法相比,本发明提出的方法对目标路径集生成有效测试数据的成功率更高,且所需进化代数及运行时间更少,稳定性更好。
附图说明
图1为本发明的整体实施流程图;
图2遗传算法搜索空间变化示意图;
图3是EFSM中的一条目标测试路径;
图4是图3路径中各变量间的关系图;
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施案例,并参照附图,对本发明进一步详细说明。以下实施案例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
本发明的总体实施流程图如图1所示,所述的测试数据生成方法包括以下步骤:
步骤1)在计算机中将被测试软件程序转化为EFSM模型,采用图遍历的方法生成测试路径候选集。
步骤2)针对步骤1)中的测试路径候选集,对测试路径候选集进行预处理,将不同迁移输入变量表中相同名称的变量采用不同的符号表示,而后去除测试路径候选集中的不可执行测试路径,并随机选取测试路径候选集中的一条测试路径作为目标测试路径;
步骤3)针对目标测试路径,采用无关变量的判定算法,找出目标测试路径中的无关输入变量及其起始分割迁移;
步骤4)实现一个EFSM动态可执行的框架,从而为启发式算法提供运行时反馈;
步骤5)利用遗传算法实现目标测试路径的测试数据,在这一过程中使用无关变量分割算法自动分割测试路径中的无关输入变量,逐渐缩减算法的搜索空间;
步骤6)将步骤5)最终获取的输入变量值作为待测EFSM目标路径的测试输入数据。
下面,将对有关步骤进行详细描述说明:
(一)EFSM模型与问题建模
[定义1]扩展有限状态机M由一个六元组(S,S0,I,O,T,V)构成,其中S是非空状态集合,S0为初始状态,I是输入消息集合,O为输出消息集合,T是状态迁移集合,V是变量集合。状态迁移集合T中的元素为迁移t由五元组(Si,i,g,op,ST)组成,其中Si是迁移t的出发状态,i∈I是输入消息,g是迁移t执行的谓词条件,op则是由变量的赋值语句或输出语句组合而成,ST是状态迁移t的到达状态。
EFSM中的变量集合V由三元组(Iv,Cv,Ov)构成,其中Iv表示输入变量集合,Ov表示输出变量集合,Cv表示环境变量集合,输入变量的取值可以人为进行控制,而输出变量和环境变量则不受测试人员控制,它们的取值由迁移中的相应操作来决定。
EFSM中的测试路径(Test Path,TP)定义为一个迁移序列,即TP=[t1,t2,…,tn],其中{t1,TP对应的谓词条件序列GP=[g1,g2,…,gn],若tk为测试路径TP中的状态迁移,gk为迁移tk的谓词条件则分别表示为tk→TP,gk→GP。其中,k=1,2,…,n,n为测试路径中迁移的个数。
使用图遍历方法获取初始测试路径集合,由于测试路径中同一输入变量符有可能在不同的状态迁移的输入变量表中出现,为了表示它们代表的值不同,需要把每个状态迁移上的输入变量改写为的形式以示区分。例如,若某个输入变量x在两个状态迁移t1和t2的输入变量列表中同时出现,为了区分该变量的不同输入值,需要在初始化阶段把该变量分别改写为。
为判定测试路径集合中的不可行路径采用随机算法搜索各测试路径的测试数据,若在指定迭代次数内未成功找到测试数据,则认为该测试路径不可行,将其从集合中去除,最终剩余的测试路径则可作为目标测试路径。
EFSM中测试数据的生成问题可描述为:
1)选取一个待测软件的EFSM模型M,选取EFSM模型M中的一条测试路径TP作为目标测试路径;
2)设待测软件的EFSM模型M中输入变量的取值空间为D,求取测试数据x∈D,使得以测试数据x作为输入,在动态执行EFSM模型M时,所能经过的测试路径为TP。
使用遗传算法自动获取EFSM模型M的测试数据,需要将其建模为一种最优化问题。
将不同的测试数据代入到TP中所实际经过的测试路径与目标测试路径接近的程度即运行时反馈作为各个测试数据的适应度,记为Fi(x),i=1,2,…,n,n为测试数据的个数。反馈值的计算方式为:
其中approach_level为总测试路径长度与当前测试数据可以触发的测试路径长度之差,branch_distance为当前测试数据与满足未触发迁移上谓词条件时的接近程度。
依据适应度函数,对于EFSM模型M中测试数据生成问题就可以建立函数一个最小化模型:
(二)无关变量的判定与分割方法;
EFSM模型M中将不影响测试路径子路径谓词条件的变量称为无关变量。而EFSM模型M中与变量存在依赖关系的迁移元素包括迁移中的赋值语句或输出语句op以及迁移执行的谓词条件g,其中输出语句仅进行变量的输出操作,并不会影响变量的取值,因此变量与状态迁移的关系包括变量与赋值语句及谓词条件中其他变量的关系(简称为变量与变量的关系),以及谓词条件与变量的关系两部分。
1.变量与变量的关系:
设待测软件的EFSM模型M的变量集合V={x0,x1,…,xn-1},状态迁移集合T={t0,t1,…,te-1},目标测试路径TP=[t0,t1,…,tm-1],TP对应的谓词条件序列GP=[g1,g2,…,gm-1],其中,n为集合V中变量的个数,m为TP包含迁移的个数,e为状态迁移集合T中迁移的个数;有以下定义:
[定义2]设迁移td∈T,若xj∈V,使得td的赋值语句中变量xi的取值取决于变量xj,表示为xi=f(xj)d,则在迁移td中xi直接依赖于xj;若xj∈V,使得td的谓词条件中既包含xi又包含xj,则在td中xi与xj相互直接依赖,即xi=f(xj)d,xj=f(xi)d。
[定义3]在目标测试路径TP中,设迁移td→TP,若xj∈V,xk∈V,使得td中变量xi直接依赖于xk,但并不直接依赖于xj,即xi=f(xk)d,但在td之前迁移tb(b<d)中xk直接依赖于xj,即xk=f(xj)b,则称在td中变量xi间接依赖于变量xj。
为方便描述定义2中的直接依赖关系,可以为EFSM模型M的每一迁移建立变量间的直接依赖矩阵,而间接依赖关系在针对不同的目标测试路径时其依赖矩阵有所不同,且关系复杂,后面将给出通过图的连通性判断变量间是否存在间接依赖关系的方法。
[定义4]对于EFSM模型M,设迁移td∈T,则td中变量间的直接依赖矩阵可以由n维矩阵Pd=(pij)n×n表示,其中n为集合V中变量的个数,矩阵Pd中的元素pij定义如下:
对于谓词条件与变量的依赖关系也可分为直接与间接两种。
[定义6]在目标测试路径TP中,设迁移td→TP,若对于迁移td的谓词条件gd(gd→GP),xj∈V使得gd直接依赖于变量xj,而不直接依赖于变量xi,但在td之前迁移tb(b<d)中变量xj依赖于xi,即xj=f(xi)b,则认为谓词条件gd对变量xi存在间接依赖关系。
对于目标测试路径TP中谓词条件与变量的直接或间接依赖关系在本发明中统称为二者具有依赖关系,这种关系也可建立相应的依赖矩阵进行描述。
[定义7]在目标测试路径TP中,设迁移td→TP,td的谓词条件gd与变量xi∈V的依赖关系可以由n×m维矩阵Q=(qij)n×m表示,其中n为集合V中变量的个数,m为TP包含迁移的个数,矩阵Q中的元素qij定义如下:
通过定义5、定义6、定义7可知,谓词条件与变量间的依赖矩阵描述了变量在该测试路径中的生存周期,因此存在以下性质:
[性质1]设待测软件的EFSM模型M中输入变量集合为Iv,若使得矩阵Q中的第i行元素均为0,则对于测试路径TP,xi∈V为无关变量;若对于m-1]矩阵Q中元素qij=0,而对j=u-1元素qij≠0,其中u∈[1,m-1],则在TP的子路径TP’=[tu,tu+1,…,tm-1]中xi∈V为无关变量,若同时xi∈Iv则在TP或TP’中可以固定输入变量xi的取值并从Iv中将其分割,并将tu-1定义为变量xi的起始分割迁移。
2.无关变量的自动判定算法;
对于一条测试路径中是否存在无关变量,取决于谓词条件与变量间的依赖矩阵Q,对于谓词条件与变量的直接依赖关系,可以通过扫描谓词条件中是否包含该变量得到,而间接依赖关系需要依靠变量与变量的关系进行判断,下面给出依赖矩阵P与矩阵Q的计算方法。
[算法1]变量间直接依赖矩阵P计算方法
输入.EFSM模型M的变量集合V={x0,x1,…,xn-1},迁移集合T={t0,t1,…,te-1}
输出.直接依赖矩阵P0,P1,…,Pe-1
Step1.选择某一未建立依赖矩阵的迁移td∈T,建立n维矩阵Pd并初始化元素为0。
Step4.输出矩阵Pd,判断EFSM模型M中是否有未建立直接依赖矩阵的迁移,若有转到Step1。
Step5.算法结束。
通过算法1即可得到待测EFSM模型M所有状态迁移中变量间的直接依赖矩阵,而矩阵Q的计算需要先建立测试路径的每一迁移之前所有迁移中变量间的关系图G,变量间的关系图实质上为一种有向图,因而可以采用图论中的邻接矩阵进行表示,其建立方法如下:
[算法2]关系图G的建立方法
输入.EFSM模型M变量集合V={x0,x1,…,xn-1},变量间直接依赖矩阵P0,P1,…,Pe-1,目标测试路径TP=[t0,t1,…,tm-1]
输出.关系图的邻接矩阵序列R=[R0,R1,…,Rm-1]
Step1.选择某一未建立关系图的迁移td→TP,以变量x0,x1,…,xn-1作为有向图的n个顶点,建立td的关系图Gd。
Step2.扫描TP中td及其之前所有迁移对应的变量间直接依赖矩阵,若矩阵中变量xj∈V对变量xi∈V存在直接依赖关系,则从顶点xi向顶点xj建立一条有向边。
Step3.将Gd转化为邻接矩阵Rd并输出,判断TP中是否还有未建立关系图的迁移,若有转到Step1。
Step4.算法结束;
建立关系图后,依据该有向图可以得到以下性质:
[性质2]利用算法2生成的关系图Gd中,若变量xi到xj存在一条通路,则xi与xj在迁移td或td之前的迁移中存在依赖关系,且变量xj依赖于xi。
根据性质2,即可求出依赖矩阵Q。
[算法3]矩阵Q的计算方法;
输入.EFSM模型M变量集合V={x0,x1,…,xn-1},目标测试路径TP=[t0,t1,…,tm-1],TP对应的谓词条件序列GP=[g0,g1,…,gm-1],邻接矩阵序列R=[R0,R1,…,Rm-1]
输出.依赖矩阵Q
Step1.选择GP中某一未扫描的谓词条件gj,扫描gj是否包含变量xi∈V,若包含则令qij=1。
Step2.若qij=1,则使用深度优先算法判断邻接矩阵Rj-1中变量vk(xk∈V,k≠i)是否有到vi的通路,若存在通路,则令qkj=1。
Step3.判断GP中是否还存在未扫描的谓词条件,若有转到Step1。
Step4.输出矩阵Q,算法结束。
在得到矩阵Q后,根据性质1便可以获取无关输入变量xi及其对应的起始分割迁移。
3.无关输入变量的自动分割方法;
设待测软件的EFSM模型M包含的输入变量为Iv={x1,x2,…,xn},变量的取值空间为D,选取EFSM模型M中的一条目标测试路径TP=[t0,t1,…,tm-1],设遗传算法产生的初始种群包含k个个体,不同个体对应的测试数据分别为v1,v2,…,vk,vk∈D,不同个体以其对应测试数据作为输入,在动态执行EFSM模型M时,所能实际经过的路径分别为TP1,TP2,…,TPk,以|TP|表示所能经过路径的长度。无关输入变量的分割方法为:在每一次迭代中,考察种群中经过路径长度最长的个体i,对应的测试数据为vi,考察其经过的路径TPi中是否包含可分割输入变量xj对应的起始分割迁移,若包含则可以在所有个体中去除变量xj,在之后的迭代中xj的取值以常数c代替,c为个体i中xj的取值。
本发明通过分割测试路径中的无关输入变量以达到减小搜索空间的目的,从而提升测试数据生成效率,设待测软件的EFSM模型M中的输入变量Iv={x1,x2,…,xn},不同变量的输入域分别为D1,D2,…,Dn,则遗传算法的搜索空间为:
例:图3为EFSM模型M中的一条测试路径,该测试路径TP=[t1,t2,t3,t4],对应的谓词条件分别为g1={a<5&&b>2}、g2={a>2}、g3={c==3}、g4={d≥1},赋值语句op1={b=a+d}、op2={a=b+a,c=b+d}、op3={b=c-a}、op4={d=c+a},变量集合V=Iv={a,b,c,d},首先依据算法1计算t1~t4迁移中变量间的直接依赖矩阵:
依据算法2及依赖矩阵P分别做出{t1}、{t1,t2}、{t1,t2,t3}、{t1,t2,t3,t4}中变量与变量间的关系图G1、G2、G3、G4,如图4所示,图(a)(b)(c)(d)分别表示对应的关系图G1、G2、G3、G4。
依据关系图可以建立对应的邻接矩阵序列R=[R1,R2,R3,R4],得到R后根据算法3便可以计算依赖矩阵Q:
根据矩阵Q及算法4可以得出:变量{a,b,c,d}的取值会对迁移t3的谓词条件能否满足造成影响,而迁移t4的谓词条件仅受变量d的影响,由于{a,b,c,d}均为输入变量,因此对于TP的子路径TP’=t4来讲,变量{a,b,c}属于无关输入变量,可以分割,其起始分割迁移为t3,而变量d对应的起始分割迁移为t4,说明其在整个测试路径中不能分割。
设遗传算法在进化到某一代时,种群中适应度值最好个体所经过的路径为[t1,t2,t3],其对应测试数据v={a=3,b=7,c=4,d=0},由于该个体所经过的路径包含变量a、b、c的起始分割迁移t3,因此可以固定这三个变量为常数,常数值为{a=3,b=7,c=4},并从所有个体中将它们去除,在以后的迭代中遗传算法仅需搜索变量d的值即可。
下面通过实验验证本发明提供的方法。将采用全空间搜索(Global SpaceSearch,GSS)的传统遗传算法与本发明中无关输入变量分割(Irrelevant InputVariables Separation,IIVS)的遗传算法进行对比,同时使用随机算法(RandomAlgorithm,RA)作为遗传算法的比较,将三种方法应用于ATM、INRES及Casher三组模型的测试数据生成,这三组模型的相关信息如表1所示。
表1:实验模型及无关变量判定时间
采用三种算法对所有实验路径在不同的输入变量取值区间内分别进行15次实验,统计相应的平均进化代数及运行时间,如表2所示。
表2:不同算法的平均进化代数与运行时间:
由表中数据可知本发明中方法与传统方法相比,对目标路径集生成有效测试数据的成功率更高,所需进化代数及运行时间更少,效率更高,达到了预期目的。
本发明未详细公开的部分属于本领域的公知技术。
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
Claims (1)
1.一种基于变量分割的扩展有限状态机测试数据生成方法,其特征在于:具体包括以下步骤,
步骤1)建立待测软件的扩展有限状态机模型,生成从起始状态节点到其他节点的测试路径候选集,而后对所述测试路径候选集中的测试路径进行预处理,并去除测试路径候选集中不可执行的测试路径;
扩展有限状态机M由一个六元组(S,S0,I,O,T,V)构成,其中S是非空状态集合,S0为初始状态,I是输入消息集合,O为输出消息集合,T是状态迁移集合,V是变量集合;状态迁移集合T中的元素为迁移t,由五元组(Si,i,g,op,ST)组成,其中Si是迁移t的出发状态,i∈I是输入消息,g是迁移t执行的谓词条件,op则是由变量的赋值语句或输出语句组合而成,ST是状态迁移t的到达状态;
扩展有限状态机M中的变量集合V由三元组(Iv,Cv,Ov)构成,其中Iv表示输入变量集合,Ov表示输出变量集合,Cv表示环境变量集合;
扩展有限状态机M中的测试路径定义为一个迁移序列,即TP=[t1,t2,…,tn],其中TP对应的谓词条件序列GP=[g1,g2,…,gn],若tk为测试路径TP中的状态迁移,gk为迁移tk的谓词条件则分别表示为tk→TP,gk→GP;其中,k=1,2,…,n,n为测试路径中迁移的个数;使用图遍历方法获取初始测试路径集合;
步骤2)从预处理后的测试路径候选集中选取一条目标测试路径,分析目标测试路径中变量与迁移之间的依赖关系,判定目标测试路径中的无关输入变量及其起始分割迁移;
所述变量与迁移之间的依赖关系包含两个方面,一是变量的取值是否受到迁移上赋值语句及谓词条件中其他变量的影响,简称为变量与变量的关系,二是谓词条件的满足是否会受到某些变量的影响;
所述判定目标测试路径中的无关输入变量,自动判定算法如下:
对于一条测试路径中是否存在无关变量,取决于谓词条件与变量间的依赖矩阵Q,对于谓词条件与变量的直接依赖关系,通过扫描谓词条件中是否包含该变量得到,而间接依赖关系需要依靠变量与变量的关系进行判断,下面给出依赖矩阵P与矩阵Q的计算方法;
[算法1]变量间直接依赖矩阵P计算方法
输入.EFSM模型M的变量集合V={x0,x1,…,xn-1},迁移集合T={t0,t1,…te-1};
输出.直接依赖矩阵P0,P1,…Pe-1;
Step1.选择某一未建立依赖矩阵的迁移td∈T,建立n维矩阵Pd并初始化元素为0;
Step4.输出矩阵Pd,判断EFSM模型M中是否有未建立直接依赖矩阵的迁移,若有转到Step1;
Step5.算法结束;
通过算法1得到待测EFSM模型M所有状态迁移中变量间的直接依赖矩阵,而矩阵Q的计算需要先建立测试路径的每一迁移之前所有迁移中变量间的关系图G,变量间的关系图实质上为一种有向图,因而采用图论中的邻接矩阵进行表示,其建立方法如下:
[算法2]关系图G的建立方法
输入.EFSM模型M变量集合V={x0,x1,…,xn-1},变量间直接依赖矩阵P0,P1,…Pe-1,目标测试路径TP=[t0,t1,…,tm-1];
输出.关系图的邻接矩阵序列R=[R0,R1,…,Rm-1];
Step1.选择某一未建立关系图的迁移td→TP,以变量x0,x1,…,xn-1作为有向图的n个顶点,建立td的关系图Gd;
Step2.扫描TP中td及其之前所有迁移对应的变量间直接依赖矩阵,若矩阵中变量xj∈V对变量xi∈V存在直接依赖关系,则从顶点xi向顶点xj建立一条有向边;
Step3.将Gd转化为邻接矩阵Rd并输出,判断TP中是否还有未建立关系图的迁移,若有转到Step1;
Step4.算法结束;
建立关系图后,依据该有向图得到以下性质:
[性质2]利用算法2生成的关系图Gd中,若变量xi到xj存在一条通路,则xi与xj在迁移td或td之前的迁移中存在依赖关系,且变量xj依赖于xi;
根据性质2,即求出依赖矩阵Q;
[算法3]依赖矩阵Q的计算方法;
输入.EFSM模型M变量集合V={x0,x1,…,xn-1},目标测试路径TP=[t0,t1,…,tm-1],TP对应的谓词条件序列GP=[g0,g1,…,gm-1],邻接矩阵序列R=[R0,R1,…,Rm-1];
输出.依赖矩阵Q
Step1.选择GP中某一未扫描的谓词条件gj,扫描gj是否包含变量xi∈V,若包含则令qij=1;
Step2.若qij=1,则使用深度优先算法判断邻接矩阵Rj-1中变量vk(xk∈V,k≠i)是否有到vi的通路,若存在通路,则令qkj=1;
Step3.判断GP中是否还存在未扫描的谓词条件,若有转到Step1;
Step4.输出矩阵Q,算法结束;
在得到依赖矩阵Q后,根据性质1获取无关输入变量xi及其对应的起始分割迁移;
步骤3)建立可执行模型,利用语义解析方法使得扩展有限状态机模型可执行化,为启发式算法提供运行时反馈;
所述运行时反馈,反馈信息为:
其中F为反馈值,approach_level为总测试路径长度与当前测试数据可以触发的测试路径长度之差,branch_distance为当前测试数据与满足未触发迁移上谓词条件时的接近程度;
步骤4)使用遗传算法搜索目标测试路径的测试数据,若当前测试数据所能经过的测试路径包含可分割输入变量的起始分割迁移,则直接固定这些可分割输入变量的取值为常数,在以后的遗传算法迭代中仅需搜索其余输入变量的取值直到成功生成测试数据为止;
使用遗传算法搜索目标测试路径的测试数据过程中,通过分割测试路径中的无关输入变量以达到减小搜索空间的目的,具体为:设待测软件的EFSM模型M中的输入变量Iv={x1,x2,…,xn},不同变量的输入域分别为D1,D2,…,Dn,则遗传算法的搜索空间为:
设该测试路径目标解的空间为Dr,则随着分割变量的增多,搜索空间逐渐减小。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811373829.0A CN109542783B (zh) | 2018-11-19 | 2018-11-19 | 一种基于变量分割的扩展有限状态机测试数据生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811373829.0A CN109542783B (zh) | 2018-11-19 | 2018-11-19 | 一种基于变量分割的扩展有限状态机测试数据生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109542783A CN109542783A (zh) | 2019-03-29 |
CN109542783B true CN109542783B (zh) | 2021-07-09 |
Family
ID=65847965
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811373829.0A Active CN109542783B (zh) | 2018-11-19 | 2018-11-19 | 一种基于变量分割的扩展有限状态机测试数据生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109542783B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111367822B (zh) * | 2020-05-26 | 2021-03-19 | 南京大学 | 一种基于有限状态机的回归测试方法及装置 |
CN112732582A (zh) * | 2020-08-03 | 2021-04-30 | 徐州工程学院 | 一种基于搜索域缩减的软件测试用例进化生成方法 |
CN111930631B (zh) * | 2020-08-17 | 2022-09-09 | 南宁师范大学 | 概率有限状态机变异测试用例生成方法 |
CN112306889B (zh) * | 2020-11-23 | 2023-10-20 | 国网北京市电力公司 | 充电桩的测试方法、装置、存储介质及处理器 |
CN114253524B (zh) * | 2021-12-20 | 2024-05-24 | 山东浪潮科学研究院有限公司 | 一种基于脚本的用于辅助状态机逻辑代码设计的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1039391A3 (en) * | 1999-03-04 | 2001-08-29 | The Secretary of State for Trade and Industry of Her Majesty's Britannic Government | Method and apparatus for testing of a finite state machine |
CN102368226A (zh) * | 2011-10-10 | 2012-03-07 | 南京大学 | 一种基于扩展有限状态机可行路径分析的测试用例自动生成方法 |
CN104077228A (zh) * | 2014-07-08 | 2014-10-01 | 浙江理工大学 | 一种基于谓词依赖图的efsm可执行测试序列生成方法 |
-
2018
- 2018-11-19 CN CN201811373829.0A patent/CN109542783B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1039391A3 (en) * | 1999-03-04 | 2001-08-29 | The Secretary of State for Trade and Industry of Her Majesty's Britannic Government | Method and apparatus for testing of a finite state machine |
CN102368226A (zh) * | 2011-10-10 | 2012-03-07 | 南京大学 | 一种基于扩展有限状态机可行路径分析的测试用例自动生成方法 |
CN104077228A (zh) * | 2014-07-08 | 2014-10-01 | 浙江理工大学 | 一种基于谓词依赖图的efsm可执行测试序列生成方法 |
Non-Patent Citations (2)
Title |
---|
Applying Meta-Heuristic Algorithm based on Slicing Input Variables to Support Automated Test Data Generation;Hyorin Choi;《KIPS Tr. Software and Data Eng.》;20180131;第7卷(第1期);第1-8页 * |
基于EFSM不定型切片测试用例自动生成的研究;苏宁等;《计算机研究与发展》;20170315;第669-680页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109542783A (zh) | 2019-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109542783B (zh) | 一种基于变量分割的扩展有限状态机测试数据生成方法 | |
Wegener et al. | Verifying timing constraints of real-time systems by means of evolutionary testing | |
Cheetham et al. | Solving large FPT problems on coarse-grained parallel machines | |
JP2009505227A (ja) | 順序システムのための離接イメージ計算 | |
CN109634869B (zh) | 二进制翻译中间表示正确性测试方法及装置 | |
CN102598001A (zh) | 用于分析具有瞬时逻辑的逻辑设计的技术 | |
EP3264274B1 (en) | Input discovery for unknown program binaries | |
CN110297765B (zh) | 软件可靠性早期评估方法 | |
Saifullah et al. | Learning from examples to find fully qualified names of api elements in code snippets | |
CN115098292B (zh) | 应用程序崩溃根原因识别方法、装置及电子设备 | |
CN112948193B (zh) | 一种基于差异测试的fpga综合工具缺陷检测方法 | |
CN116702157B (zh) | 一种基于神经网络的智能合约漏洞检测方法 | |
Pitakrat et al. | Increasing dependability of component-based software systems by online failure prediction (short paper) | |
US20120290282A1 (en) | Reachability analysis by logical circuit simulation for providing output sets containing symbolic values | |
CN109144498A (zh) | 一种面向对象实例化任务的api自动推荐方法及装置 | |
Koenig et al. | Adaptive restarts for stochastic synthesis | |
CN110069347B (zh) | 一种基于过程重要度的线程划分方法 | |
Ostrowski et al. | Knowledge-based software testing agent using evolutionary learning with cultural algorithms | |
CN116383070A (zh) | 一种面向高mc/dc的符号执行方法 | |
JP5075695B2 (ja) | プロパティ記述のカバレッジ測定装置及びプログラム | |
CN114706761A (zh) | 一种基于约束分割的混合执行测试优化方法及装置 | |
US7650579B2 (en) | Model correspondence method and device | |
Niewenhuis et al. | Efficient trimming for strongly connected components calculation | |
Kaiser et al. | BDD complexity reduction by component fault trees | |
Wang et al. | Comparing expected improvement and kriging believer for expensive bilevel optimization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |