CN104077228B - 一种基于谓词依赖图的efsm可执行测试序列生成方法 - Google Patents
一种基于谓词依赖图的efsm可执行测试序列生成方法 Download PDFInfo
- Publication number
- CN104077228B CN104077228B CN201410324042.0A CN201410324042A CN104077228B CN 104077228 B CN104077228 B CN 104077228B CN 201410324042 A CN201410324042 A CN 201410324042A CN 104077228 B CN104077228 B CN 104077228B
- Authority
- CN
- China
- Prior art keywords
- transition
- predicate
- efsm
- type
- relate
- 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
Landscapes
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于谓词依赖图的EFSM可执行测试序列生成方法,该方法对已有的可执行分析树方法进行了分析和改进,在旧方法基础上加入了引导生成测试序列的思想。本发明通过深度挖掘EFSM模型中变迁之间的依赖关系,通过构造EFSM模型的谓词依赖图可视化的显示模型变迁之间可执行性的相互影响,通过量化变迁的可执行预测值来引导可执行分析树的搜索过程,进而引导生成可执行测试序列。故本发明方法能够有效的避免状态爆炸的问题,且在测试序列生成的稳定性上面有较大提高。
Description
技术领域
本发明属于程序测试技术领域,具体涉及一种基于谓词依赖图的EFSM可执行测试序列生成方法。
背景技术
基于模型的协议测试方法往往通过构建协议形式化模型来生成测试用例,这些测试用例被应用于检测协议实现与协议规格之间的一致性,为通信质量提供有效的保障。该类测试称为协议一致性测试。
据统计,协议测试工作占据了整个协议研发过程50%至70%的工作量。因此,如何提高协议一致性测试的自动化程度成为了问题关键。近年来,协议一致性测试序列自动生成方法的研究已经成为工业界和学术界的研究热点。在基于模型的协议一致性测试序列生成方法中,有限状态机模型(FSM)和扩展有限状态机模型(EFSM)被广泛应用于协议测试建模。基于FSM模型的测试序列生成方法较为成熟,但是该类方法并不考虑测试序列的可执行性。EFSM模型在变量以及谓词条件方面对FSM模型进行了扩展,导致基于EFSM模型生成的一致性测试序列存在不可执行问题。为了解决基于EFSM模型生成的测试序列的可执行性问题,一些方法被提出:
在早期较为著名的基于EFSM模型的测试序列生成方法是Huang提出的基于可执行分析技术的测试序列生成方法(Huang,C.M.,M.Y.Jang,andY.C.Lin,Executable EFSM ‐ based data flow and control flow protocol test sequencegeneration using reachability analysis [J].Journal of the Chinese Institute ofEngineers,1999.22(5):p.593-615.),该方法通过构建可执行分析树来生成测试序列以保证测试序列的可执行性,鉴于该方法使用宽度优先搜索(BFS)方式,该方法生成的测试序列是最短的,但是该方法大大增加了状态爆炸产生的概率;此外,为了减少重复分支的搜索,该方法使用剪枝(CET)策略来生成测试序列。但是,通过实验证明该策略的使用将导致无法生成某些具有特征变迁的EFSM模型的测试序列。
近年来,基于遗传算法(GA)的EFSM测试序列生成方法被提出,该类方法主要包含两个部分:生成满足覆盖要求的候选测试序列以及生成触发候选测试序列可执行的测试数据。其中最具代表性的是Kalaji提出的方法(Kalaji,A.S.,R.M.Hierons,and S.Swift,An integrated search-based approach for automatictesting from extended finite state machine(EFSM)models.Information and So ftwareTechnology,2011.53(12):p.1297-1318.),该方法首先使用一个算法生成满足覆盖需求的候选测试序列,但是这些测试序列不一定是可执行的;然后使用GA来生成能够触发候选测试序列可执行的测试数据。该方法的第一步通过静态分析EFSM模型中变迁之间的数据依赖关系提出了一个可执行预测矩阵,使用该矩阵来引导候选测试序列的生成。但是,GA有其先天不足之处即不能保证候选测试序列都是可执行的;此外,GA也不能保证一定能生成触发候选测试序列可执行的测试数据。
发明内容
针对现有技术所存在的上述技术问题,本发明提供了一种基于谓词依赖图的EFSM可执行测试序列生成方法,
一种基于谓词依赖图的EFSM可执行测试序列生成方法,包括如下步骤:
(1)分析EFSM中各变迁涉及的变量类型及变量使用类型;
(2)对于EFSM中的任一赋值使用类型的变迁,确定与其存在数据依赖关系的变迁,使存在数据依赖关系的两个变迁构成谓词依赖对,且令谓词依赖对中赋值使用类型的变迁为头变迁,另一变迁为尾变迁;依此遍历EFSM中的所有赋值使用类型的变迁,并建立EFSM的谓词依赖图;
(3)分析谓词依赖对的三重属性:即头变迁涉及的变量类型和赋值运算符类型以及尾变迁涉及的谓词判断符类型;
(4)建立谓词依赖矩阵M,根据谓词依赖对的三重属性从谓词依赖矩阵M中提取谓词依赖对所对应的谓词依赖预测值;
(5)根据谓词依赖预测值,计算谓词依赖图中每个变迁的可执行预测值;
(6)从EFSM中任选一个状态作为初始状态,以该初始状态为根节点构建EFSM的可执行分析树,并对可执行分析树进行路径搜索:当从可执行分析树中搜索到一条变迁且初始状态到该变迁尾状态的路径满足用户的覆盖要求,即终止搜索,并输出该路径作为EFSM的可执行测试序列。
所述的变迁涉及的变量类型为常数(constant variables)、输入变量(inputparameters)或上下文变量(context variables)三类,变迁涉及的变量使用类型为赋值使用类型或谓词使用类型两类。
所述的谓词依赖图以EFSM中的变迁作为节点,任一组谓词依赖对的头变迁与尾变迁相连,未归于谓词依赖对的变迁不纳入谓词依赖图中。
所述的头变迁涉及的赋值运算符类型为+、-或nop(无运算)三类;所述的尾变迁涉及的谓词判断符类型为≤&<、≥&>、=或≠四类。
所述的谓词依赖矩阵M的表达式如下:
其中:α、β和γ均为矩阵参数(一般取α=5,β=1,γ=2),谓词依赖矩阵M的第1至9行分别对应谓词依赖对头变迁的九种类型A1~A9,谓词依赖矩阵M的第1至4列分别对应谓词依赖对尾变迁的四种类型B1~B4;A1表示头变迁涉及的变量类型为上下文变量且赋值运算符类型为+,A2表示头变迁涉及的变量类型为常数且赋值运算符类型为+,A3表示头变迁涉及的变量类型为输入变量且赋值运算符类型为+,A4表示头变迁涉及的变量类型为上下文变量且赋值运算符类型为-,A5表示头变迁涉及的变量类型为常数且赋值运算符类型为-,A6表示头变迁涉及的变量类型为输入变量且赋值运算符类型为-,A7表示头变迁涉及的变量类型为上下文变量且赋值运算符类型为nop,A8表示头变迁涉及的变量类型为常数且赋值运算符类型为nop,A9表示头变迁涉及的变量类型为输入变量且赋值运算符类型为nop,B1表示尾变迁涉及的谓词判断符类型为=,B2表示尾变迁涉及的谓词判断符类型为≤&<,B3表示尾变迁涉及的谓词判断符类型为≥&>,B4表示尾变迁涉及的谓词判断符类型为≠。
所述的步骤(5)中根据以下算式计算变迁的可执行预测值:
其中:T表示变迁,fvalue(T)表示变迁T的可执行预测值,m为谓词依赖图中的节点总数,Cmax为谓词依赖矩阵M中的最大元素值,n为初始状态到变迁T头状态的路径相对于用户的覆盖要求中未覆盖的变迁条数,k为变迁T与n条未覆盖的变迁能够组成谓词依赖对的数量,PDi为变迁T与n条未覆盖的变迁能够组成的k组谓词依赖对中的第i组谓词依赖对的谓词依赖预测值,i为自然数且1≤i≤k,Level(T)为变迁T头状态在可执行分析树中的层数,μ为预测参数且为大于0的自然数(一般取μ=2)。
所述的步骤(6)中根据以下方法对可执行分析树进行路径搜索:
①将初始状态所连的所有变迁纳入变迁格局集合中,并从该集合中提取出一条可执行预测值最大的可执行变迁作为当前变迁;
②判断初始状态到当前变迁尾状态的路径是否满足用户的覆盖要求:若是,则终止搜索;若否,则将当前变迁尾状态所连的其他所有变迁纳入变迁格局集合中,执行步骤③;
③从变迁格局集合中提取出一条可执行预测值最大的可执行变迁更新作为当前变迁,并返回执行步骤②,直至初始状态到当前变迁尾状态的路径满足用户的覆盖要求,即终止搜索。
本发明对可执行分析树方法进行了扩展,将测试序列的可执行性、测试序列长度以及目标覆盖问题考虑在内,提出一种引导式生成可执行测试序列的方法。本发明方法保证了测试序列的可执行性,且在测试序列长度以及目标覆盖问题上面做出了权衡,旨在生成一条长度相对较短且满足目标覆盖的可执行测试序列。实验结果表明,本发明方法在稳定性方面要优于基于BFS的测试序列生成方法,且在可执行分析树中遍历节点的数量要少于BFS方法。
附图说明
图1为可执行分析树的结构示意图。
图2为EFSM模型的结构示意图。
图3为图2所示的EFSM模型的谓词依赖图。
图4为InresEFSM模型的结构示意图。
图5(a)为对于图2所示的EFSM模型,本发明在可执行分析树中遍历节点相对于BFS方法减少的百分比统计图。
图5(b)为对于图2所示的EFSM模型,本发明生成的测试序列长度相对于BFS方法增加的百分比统计图。
图6(a)为对于图4所示的Inres EFSM模型,本发明在可执行分析树中遍历节点相对于BFS方法减少的百分比统计图。
图6(b)为对于图4所示的Inres EFSM模型,本发明生成的测试序列长度相对于BFS方法增加的百分比统计图。
图7(a)为对于OLSR模型,本发明在可执行分析树中遍历节点相对于BFS方法减少的百分比统计图。
图7(b)为对于OLSR模型,本发明生成的测试序列长度相对于BFS方法增加的百分比统计图。
具体实施方式
为了更为具体的描述本发明,下面结合附图及具体实施方式对本发明的技术方案进行详细说明。
本发明基于可执行分析树的引导式测试序列生成方法,充分将变迁之间的关系考虑在内,而不是盲目的进行搜索。
本实施方式首先分析EFSM模型中的变迁特征,构造EFSM模型的谓词依赖图。图3展示了图2所示EFSM模型的谓词依赖图。
谓词依赖图由一个元组PDS表示,其中PDS=<SN,TN>。在该元组中,SN表示谓词依赖图中的节点集合,TN表示谓词依赖图中边的集合。在图3中,每一个节点对应着EFSM模型中的一条变迁,节点与节点之间的有向边表示节点之间存在谓词依赖关系。有向边的头节点对变量v有赋值使用,尾节点对变量v有谓词使用。与其他变迁没有谓词依赖关系的变迁不会出现在图3中。从图3可以看到,其反应的是EFSM模型内部变迁可执行性的相互影响。对于TN中的任意一条边,其尾节点的可执行性受到头节点的影响。从这个角度来讲,TN中边的数量直接反映了生成模型可执行测试序列的难度。如果TN的数量比较多,表示变迁之间可执行性的相互影响,进而表示生成可执行测试序列的难度较大。相反,如果TN的数量为0,则表示在生成满足覆盖要求的测试序列的时候并不用考虑序列的可执行问题,因为变迁之间不存在可执行性的相互影响。例如,假设当前状态为SCi,T3是其一条输出变迁,变迁T7和T8在TTC(目标变迁覆盖集合)中。从图3中可以看到,T3对变量的操作直接影响T7和T8的可执行性。如果SCi有其他可执行的输出变迁,且这些输出变迁对TTC中的某些目标变迁的可执行性造成影响,那么选择哪一条输出变迁继续执行是一个值得考虑的问题。如果当前状态的任何一条输出变迁与TTC中的任何一条目标变迁没有PD(谓词依赖)关系,那么当前状态的所有输出变迁的预测值为0,表示可以选择任何一条变迁执行,且不会引起目标变迁的不可执行问题。
然而,变迁对变量的赋值使用不尽相同,变迁对变量的谓词使用也不尽相同。每一个PD对都属于不同的赋值使用与谓词使用则组合。为了更加精准的引导测试序列的生成。需要对变迁的赋值操作与谓词判断进行分类,对不同的分类赋予不同的优先级,进而构造模型的可执行预测矩阵。在可执行预测矩阵中,不同组合的值直接的反映了该组合在选择下一步变迁时对目标变迁可执行性的影响。
在一条变迁中,其赋值语句有如下形式:v=EP。其中v代表EFSM中的一个变量,包括上下文变量以及输入变量,EP是一个表达式。对于每一个表达式,+、-、nop(无运算符)运算可能出现在表达式中。这几种运算在不同程度上影响着变量的取值,对操作符的归类能够更准确的达到引导式生成测试序列的目的。本实施方式将变迁中的赋值语句分类如下:
1、ACvva:一条变迁的赋值语句属于ACvva当且仅当EP中出现上下文变量且该变量的操作是加法操作。此外,Rvs(ep)仅仅包含上下文变量且ep不是一个常数。如图2中的变迁T4属于此类型变迁。
2、ACvvs:一条变迁的赋值语句属于ACvvs类型当且仅当EP中出现上下文变量且该变量的操作是减法操作。此外,Rvs(ep)仅仅包含上下文变量且ep不是一个常数。图2中并没有任何变迁属于此类变迁,但是本实施方式依然将该分类列出。
3、ACvv:一条变迁的赋值语句属于ACvvm类型当且仅当EP中出现上下文变量且没有运算符操作。此外,Rvs(ep)仅仅包含上下文变量且ep不是一个常数。图2中并没有任何变迁属于此类变迁,但是本实施方式依然将该分类列出。
4、ACvca:一条变迁的赋值语句属于ACvca当且仅当EP中出现输入常数且操作为加法操作。在图2中并没有此类变迁。
5、ACvcs:一条变迁的赋值语句属于ACvcs当且仅当EP中出现输入常数且操作为减法操作。在图2中并没有此类变迁。
6、ACvc:一条变迁的赋值语句属于ACvcm当且仅当EP中出现输入常数且没有运算符操作。在图2中并没有此类变迁。
7、ACvpa:一条变迁的赋值语句属于ACvpa当且仅当EP中出现输入参数且该变量的操作是加法操作,即Rvs(ep)至少包含一个输入参数。在图2所示的EFSM中并没有此类变迁,但是本实施方式依然这种情况考虑在内。
8、ACvps:一条变迁的赋值语句属于ACvps当且仅当EP中出现输入参数且操作符为减法,即Rvs(ep)至少包含一个输入参数。在图2所示的EFSM中并没有此类变迁,但是本实施方式依然这种情况考虑在内。
9、ACvp:一条变迁的赋值语句属于ACvpm当且仅当EP中出现输入参数且该变量没有操作符,即Rvs(ep)至少包含一个输入参数。在图2所示的EFSM中并没有此类变迁,但是本实施方式依然这种情况考虑在内。
变迁的谓词判断操作符主要包含以下四类:=,<=和<,>=和>以及≠。
通过对PD对中变迁的详细分类,可以构造可执行预测矩阵M,并对不同的组合进行赋值。预测值的大小反映了PD可执行性的大小,本实施方式根据预测值来引导测试序列的生成。根据对变迁赋值语句以及谓词判断语句的分类可以将M表示如下:
在M中,对于一个谓词依赖对<Ti,Tj>,行对应着Ti赋值语句的不同分类,列对应着谓词依赖对中Tj的谓词判断操作符类型。Mij就是一个特定的PD对的谓词依赖预测值。
在M中,不同的组合导致了其预测值的不同。对于谓词判定符=来讲,加法以及减法操作对该谓词判定条件的影响是等价的。对于操作符≠,加法和减法操作对PD对的可执行性影响是等价的。对于包含>和≥判定符的谓词变迁,相对于减法操作,加法操作增加了该变迁的可执行性。对于包含<和≤判定符的谓词变迁,相对于加法操作,减法操作则增加了该变迁的可执行性。除了谓词变迁操作符以及变迁赋值语句运算符,变量的类型也是一个重要的因素。相对于上下文变量以及常量,输入变量增加了变迁的可执行性,因为输入变量是人工输入的,该值的取舍具有较大的灵活性。对于M中的取值,本实施方式取的值仅仅表示不同的赋值运算操作符以及判定操作符对PD对的可执行性所造成的影响,它们之间有一个顺序,值大小仅仅表示满足PD对可执行的难易程度。
每一个PD都属于上述分类中的一个组合,根据M,可以使用下述公式计算每一个PD的值。
PDs=f(vi,AOj,GOk)=Mmk
其中,vi∈X,AOj∈{+,-,nop}并且GOk∈GPOS。函数f有三个参数,这三个参数对应于变量类型,赋值运算符类型以及谓词判定操作符类型。当输入参数确定之后,可以从M中找到对应的取值。
对模型的PD对分类之后,本发明使用下述公式计算变迁的可执行预测值:
其中,T表示变迁,fvalue(T)表示变迁T的可执行预测值,m为谓词依赖图中的节点总数,Cmax为谓词依赖矩阵M中的最大元素值,n为初始状态到变迁T头状态的路径相对于用户的覆盖要求中未覆盖的变迁条数,k为变迁T与n条未覆盖的变迁能够组成谓词依赖对的数量,PDi为变迁T与n条未覆盖的变迁能够组成的k组谓词依赖对中的第i组谓词依赖对的谓词依赖预测值,i为自然数且1≤i≤k,Level(T)为变迁T头状态在可执行分析树中的层数,μ为预测参数且为大于0的自然数,在本实施方式中取μ的值为2。
在本实施方式的搜索策略中,计算当前状态的可执行输出变迁预测值之后,将该变迁添加到变迁格局集合(TCS)中,搜索策略将始终选择TCS中预测值最大的变迁执行。在选择下一条执行变迁之后,下述方程组将用来检测是否生成满足覆盖要求的测试序列。
在该方程组中,f1(Ti)用来检测当前变迁是否可执行。如果f1成立,则使用f2检测从初始状态触发到变迁Ti的变迁序列的长度是否和目标覆盖变迁集合的长度相等。如果f2成立,则使用f3检测当前TC头状态的路径是否已经包含了TTC中所有变迁,如果f3成立,则返回结果序列。
最终,我们给出了本实施方式可执行测试序列生成方法的执行流程如下:
上述函数是方程组的一个展开。在生成测试序列的过程中,BFS的思想被用来引导测试序列的生成。与BFS盲目的搜索策略不同的是,在选择下一条变迁的时候,始终选择变迁预测值最大的变迁执行。该算法以模型的初始状态作为EAT(可执行分析树,其结构图1所示)的根节点,计算根节点的每一条可执行输出变迁的预测值,构造每一条输出变迁的TC(变迁格局)之后将该TC添加到TCS中。在选择下一条执行变迁时,始终选择TCS中变迁预测值最大的TC执行。选定下一条变迁后,新算法将判定从初始状态到当前变迁的头状态的路径是否完全覆盖目标变迁,如果完全覆盖目标变迁则返回测试序列,算法结束。如果没有覆盖所有目标变迁,该方法会遍历变迁尾状态的可执行输出变迁并将新的TC添加到TCS中。EAT的每一步扩展都要从TCS中选取预测值最大的TC继续执行,直至找到一条满足覆盖需求的变迁序列。
为了验证本实施方式的有效性,我们选择了三个经典的EFSM模型:图2所示的EFSM模型、图4所示的EFSM模型以及OLSR模型(文献:Orset,J.,B.Alcalde and A.Cavalli,An EFSM-based intrusion detection system for ad hocnetworks,in Automated technology for verification and analysis.2005,Springer.p.400-413.)。分别使用本实施方式(PD方法)以及BFS方法生成满足覆盖需求的测试序列,然后将这两种方法生成的测试序列长度以及遍历的节点数进行对比来凸显本发明的有效性。
图4所示的EFSM中各变迁的详细信息如下:
(1)对于图2所示的EFSM模型,我们设定其初始状态为SC(Idle,0,0,0,0,0),在执行变迁T3之后,我们设定变量no_of_segment的值为3以及blockbound的值为2。对于图2所示的EFSM模型。表1列出了包含6个目标覆盖变迁集合。
表1
表2列出了两种方法分别生成满足表1中目标变迁覆盖集合的实验数据。在统计结果的时候,主要考虑到测试序列生成过程中的节点遍历数以及最终生成的测试序列的长度。
表2
从表2中可以看到,随着目标覆盖变迁集合中变迁数量的增加,两种方法遍历的节点数以及测试序列的长度都有所增加。其中,BFS方法的增加最为明显。随着目标变迁数量的增加,BFS方法遍历的节点数是呈现指数增长形势,但是BFS方法生成的测试序列始终是最短的,这符合BFS方法的特性。然而,PD方法生成的测试序列长度并不比BFS方法长,加之遍历节点数较少,PD方法在测试序列生成方面有较大的效率提升。从表中数据可以看到,随着目标变迁覆盖数量的增加,新方法相对于BFS方法在遍历节点减少的平均百分比为56.1%。从平均数上面可以看到,PD方法平均增幅并不是最少的,但是从表2中可以看到在生成前5个满足变迁覆盖的测试序列时,PD方法遍历节点的数量级始终处于平缓状态,相对比,BFS方法随着目标变迁数量增加而增幅较大,稳定性差。图5显示了为生成满足6个变迁覆盖集合的测试序列,PD方法遍历节点数相对于宽度优先搜索减少的百分比统计以及生成的测试序列长度相对于宽度优先搜索增加的百分比。
从图5可以看出,在生成同等覆盖目标变迁集合的测试序列情况下,PD方法在EAT中遍历节点数相对于BFS方法有所减少,生成的测试序列长度方面较宽度优先搜索方法有所增加。
(2)对于Inres模型,表3列出了包含6个目标覆盖变迁集合,在设定目标覆盖变迁的时候,表3并没有将变迁T3考虑在内,因为在原模型中,T3的条件较难满足,生成一条满足T3的测试序列要花费较大的时间和空间。Inres模型中所有变量的初始值为0,初始状态选定为SC(Disconnect,counter,number,input,optional,NUM,block)=SC(Disconnect,0,0,0,0,0,0)。
表3
表4列出了Inres模型的测试数据。在生成满足表3中罗列的目标变迁集合的测试序列的时,统计了两种方法遍历的节点数以及生成测试序列的长度。
表4
从表4可以看到,随着目标变迁覆盖数量的增加,BFS方法的增幅较大。较之而言,PD方法在的增幅趋于平缓。图6显示了PD方法在生成满足6个目标变迁集合时遍历节点数相对于BFS方法减少的百分比统计以及生成的测试序列长度相对于BFS方法增加的百分比。
从图6可以看出,PD方法在EAT中遍历的节点数随着目标变迁集合中变迁数量的增加而增加,但是该增加比例较为平缓,该图的走势显示了PD方法的稳定性。PD方法生成的测试序列长度总体较BFS方法短,且长度的增加幅度较小。
(3)由于OLSR模型中存在多条自循环模型变迁,在生成测试序列的时候,这些变迁无疑增加了测试序列的生成难度。然而,从模型分析可知,在生成覆盖其中一条变迁的时候,其他自循环变迁是可以忽略的。比如,自循环变迁集合{T18,T19,T20,T21,T22}来讲,在实验的时候选择T18作为覆盖变迁,而其他变迁暂时从模型中剔除。当然,由于自循环模型的等价性,在后续测试序列生成过程中,可以选择另外一条变迁而剔除其他变迁。表5列出了这对OLSR模型的6个目标变迁覆盖集合。在设定OLSR初始状态的时候,选择SC(Idle,SendHello,HelloTimer,UpdateTimer,TcTimer,AsymList,MprSelList,MprList,obs,cur)=SC(Idle,0,0,0,0,0,0,0,0,0),即模型所有变量的初始值都为0.
表5
表6列出了OLSR模型的测试数据。统计了为生成满足表5中列出的目标变迁集合的测试序列时两种方法遍历的节点数以及生成测试序列的长度。
表6
从表6可以看到,随着目标变迁覆盖数量的增加,BFS方法的增幅较大。较之而言,PD方法在的增幅趋于平缓。图7显示了两种方法在生成满足6个目标变迁集合时遍历节点数减少百分比以及测试序列长度增加百分比。
实验结果表明,本发明方法在生成满足目标覆盖集合测试序列的时候,性能要优于BFS方法;最坏的情况下,本发明方法的时空复杂度和BFS方法相当。
Claims (6)
1.一种基于谓词依赖图的EFSM可执行测试序列生成方法,包括如下步骤:
(1)分析EFSM中各变迁涉及的变量类型及变量使用类型;
(2)对于EFSM中的任一赋值使用类型的变迁,确定与其存在数据依赖关系的变迁,使存在数据依赖关系的两个变迁构成谓词依赖对,且令谓词依赖对中赋值使用类型的变迁为头变迁,另一变迁为尾变迁;依此遍历EFSM中的所有赋值使用类型的变迁,并建立EFSM的谓词依赖图;
(3)分析谓词依赖对的三重属性:即头变迁涉及的变量类型和赋值运算符类型以及尾变迁涉及的谓词判断符类型;
(4)建立谓词依赖矩阵M,根据谓词依赖对的三重属性从谓词依赖矩阵M中提取谓词依赖对所对应的谓词依赖预测值;所述的谓词依赖矩阵M的表达式如下:
其中:α、β和γ均为矩阵参数,谓词依赖矩阵M的第1至9行分别对应谓词依赖对头变迁的九种类型A1~A9,谓词依赖矩阵M的第1至4列分别对应谓词依赖对尾变迁的四种类型B1~B4;A1表示头变迁涉及的变量类型为上下文变量且赋值运算符类型为+,A2表示头变迁涉及的变量类型为常数且赋值运算符类型为+,A3表示头变迁涉及的变量类型为输入变量且赋值运算符类型为+,A4表示头变迁涉及的变量类型为上下文变量且赋值运算符类型为-,A5表示头变迁涉及的变量类型为常数且赋值运算符类型为-,A6表示头变迁涉及的变量类型为输入变量且赋值运算符类型为-,A7表示头变迁涉及的变量类型为上下文变量且赋值运算符类型为nop,A8表示头变迁涉及的变量类型为常数且赋值运算符类型为nop,A9表示头变迁涉及的变量类型为输入变量且赋值运算符类型为nop,B1表示尾变迁涉及的谓词判断符类型为=,B2表示尾变迁涉及的谓词判断符类型为≤&<,B3表示尾变迁涉及的谓词判断符类型为≥&>,B4表示尾变迁涉及的谓词判断符类型为≠;
(5)根据谓词依赖预测值,计算谓词依赖图中每个变迁的可执行预测值;
(6)从EFSM中任选一个状态作为初始状态,以该初始状态为根节点构建EFSM的可执行分析树,并对可执行分析树进行路径搜索:当从可执行分析树中搜索到一条变迁且初始状态到该变迁尾状态的路径满足用户的覆盖要求,即终止搜索,并输出该路径作为EFSM的可执行测试序列。
2.根据权利要求1所述的EFSM可执行测试序列生成方法,其特征在于:所述的变迁涉及的变量类型为常数、输入变量或上下文变量三类,变迁涉及的变量使用类型为赋值使用类型或谓词使用类型两类。
3.根据权利要求1所述的EFSM可执行测试序列生成方法,其特征在于:所述的谓词依赖图以EFSM中的变迁作为节点,任一组谓词依赖对的头变迁与尾变迁相连,未归于谓词依赖对的变迁不纳入谓词依赖图中。
4.根据权利要求1所述的EFSM可执行测试序列生成方法,其特征在于:所述的头变迁涉及的赋值运算符类型为+、-或nop三类;所述的尾变迁涉及的谓词判断符类型为≤&<、≥&>、=或≠四类。
5.根据权利要求1所述的EFSM可执行测试序列生成方法,其特征在于:所述的步骤(5)中根据以下算式计算变迁的可执行预测值:
其中:T表示变迁,fvalue(T)表示变迁T的可执行预测值,m为谓词依赖图中的节点总数,Cmax为谓词依赖矩阵M中的最大元素值,n为初始状态到变迁T头状态的路径相对于用户的覆盖要求中未覆盖的变迁条数,k为变迁T与n条未覆盖的变迁能够组成谓词依赖对的数量,PDi为变迁T与n条未覆盖的变迁能够组成的k组谓词依赖对中的第i组谓词依赖对的谓词依赖预测值,i为自然数且1≤i≤k,Level(T)为变迁T头状态在可执行分析树中的层数,μ为预测参数且为大于0的自然数。
6.根据权利要求1所述的EFSM可执行测试序列生成方法,其特征在于:所述的步骤(6)中根据以下方法对可执行分析树进行路径搜索:
①将初始状态所连的所有变迁纳入变迁格局集合中,并从该集合中提取出一条可执行预测值最大的可执行变迁作为当前变迁;
②判断初始状态到当前变迁尾状态的路径是否满足用户的覆盖要求:若是,则终止搜索;若否,则将当前变迁尾状态所连的其他所有变迁纳入变迁格局集合中,执行步骤③;
③从变迁格局集合中提取出一条可执行预测值最大的可执行变迁更新作为当前变迁,并返回执行步骤②,直至初始状态到当前变迁尾状态的路径满足用户的覆盖要求,即终止搜索。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410324042.0A CN104077228B (zh) | 2014-07-08 | 2014-07-08 | 一种基于谓词依赖图的efsm可执行测试序列生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410324042.0A CN104077228B (zh) | 2014-07-08 | 2014-07-08 | 一种基于谓词依赖图的efsm可执行测试序列生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104077228A CN104077228A (zh) | 2014-10-01 |
CN104077228B true CN104077228B (zh) | 2016-08-17 |
Family
ID=51598496
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410324042.0A Active CN104077228B (zh) | 2014-07-08 | 2014-07-08 | 一种基于谓词依赖图的efsm可执行测试序列生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104077228B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104243243B (zh) * | 2014-10-14 | 2017-08-04 | 清华大学 | 一种用于生成协议测试序列的方法 |
CN104461861B (zh) * | 2014-10-21 | 2018-07-27 | 苏州市职业大学 | 基于efsm模型的路径测试数据生成方法 |
CN105528296B (zh) * | 2016-01-13 | 2018-10-23 | 东北大学 | 一种面向对象软件的类簇测试方法 |
CN108021746A (zh) * | 2017-11-29 | 2018-05-11 | 北京化工大学 | 一种基于依赖关系的efsm模型事件失效修复方法 |
CN108388511A (zh) * | 2018-02-12 | 2018-08-10 | 安徽千云度信息技术有限公司 | 一种用于构件化软件的集成测试方法 |
CN108536606B (zh) * | 2018-04-22 | 2021-01-19 | 北京化工大学 | 一种基于复合依赖关系覆盖准则的efsm测试方法 |
CN109542783B (zh) * | 2018-11-19 | 2021-07-09 | 北京航空航天大学 | 一种基于变量分割的扩展有限状态机测试数据生成方法 |
CN109977005B (zh) * | 2019-02-13 | 2022-11-25 | 网易(杭州)网络有限公司 | 端到端测试方法、介质、装置和计算设备 |
CN111274142B (zh) * | 2020-01-20 | 2023-04-21 | 中国人民解放军国防科技大学 | 一种基于扩展有限状态机的软件通信体系架构符合性测试建模方法 |
CN111934948B (zh) * | 2020-07-20 | 2022-04-12 | 浙江理工大学 | 基于蒙特卡洛树搜索的efsm可执行测试序列生成方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102404167A (zh) * | 2011-11-03 | 2012-04-04 | 清华大学 | 基于变量依赖的并行扩展有限状态机的协议测试生成方法 |
-
2014
- 2014-07-08 CN CN201410324042.0A patent/CN104077228B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102404167A (zh) * | 2011-11-03 | 2012-04-04 | 清华大学 | 基于变量依赖的并行扩展有限状态机的协议测试生成方法 |
Non-Patent Citations (1)
Title |
---|
自适应EFSM可执行测试序列生成;舒挺 等;《计算机研究与发展》;20121231(第6期);第1211-1218页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104077228A (zh) | 2014-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104077228B (zh) | 一种基于谓词依赖图的efsm可执行测试序列生成方法 | |
Lindig | Fast concept analysis | |
JP4485330B2 (ja) | 回路の有向ファルシフィケーション | |
Malaguti et al. | A metaheuristic approach for the vertex coloring problem | |
US8370808B2 (en) | Apparatus and a method for generating a test case | |
CN102368226B (zh) | 一种基于扩展有限状态机可行路径分析的测试用例自动生成方法 | |
CN106713273B (zh) | 一种基于字典树剪枝搜索的协议关键字识别方法 | |
US20050262456A1 (en) | Verifying one or more properties of a design using SAT-based BMC | |
CN106682514B (zh) | 基于子图挖掘的系统调用序列特征模式集生成方法 | |
Verwer et al. | Efficiently identifying deterministic real-time automata from labeled data | |
CN108763064B (zh) | 一种基于黑盒函数与机器学习的代码测试生成方法和装置 | |
CN106021361A (zh) | 一种基于序列比对的自适应应用层网络协议报文聚类方法 | |
CN103391224B (zh) | 基于并行扩展有限状态机的协议层次化测试生成方法 | |
Chaturvedi et al. | Design pattern detection using machine learning techniques | |
CN108629124B (zh) | 一种基于活动图路径的仿真参数数据自动生成方法 | |
Amroun et al. | A compressed generalized hypertree decomposition-based solving technique for non-binary constraint satisfaction problems | |
US20210012247A1 (en) | Information processing apparatus, information processing method, and program | |
Reynier et al. | Minimal coverability set for Petri nets: Karp and Miller algorithm with pruning | |
CN112434831A (zh) | 故障排查方法、装置、存储介质及计算机设备 | |
US10789203B2 (en) | Data processing apparatus, data processing method, and program recording medium | |
Aminof et al. | Synthesis of hierarchical systems | |
Podlovchenko et al. | Equivalence problem solvability in gateway program models | |
CN112783775A (zh) | 特殊字符输入测试方法及装置 | |
CN105701403A (zh) | 安卓应用的口令处理路径识别方法及使用该方法的装置 | |
KR101837236B1 (ko) | 코드 커버리지 향상을 위한 베이직 블록 크기 감응 실행 경로 탐색 방법 및 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20201230 Address after: Room 2003, 1801, 1804, No.13-1, Hai'an Road, Tianhe District, Guangzhou, Guangdong 510627 Patentee after: HEYU HEALTH TECHNOLOGY Co.,Ltd. Address before: 310018, No. 2, No. 5, Xiasha Higher Education Park, Hangzhou, Zhejiang Patentee before: Zhejiang University of Technology |
|
TR01 | Transfer of patent right |