一种基于蜕变测试的运行时配置更新缺陷检测方法技术

技术编号:37622413 阅读:23 留言:0更新日期:2023-05-18 12:13
本发明专利技术公开了一种基于蜕变测试的运行时配置更新缺陷检测方法,目的是有效检测出运行时配置更新缺陷。技术方案为:构建由配置项分析与插桩模块、测试样例生成模块、缺陷检测模块构成的运行时配置更新缺陷检测系统;配置项分析与插桩模块根据目标配置项影响范围对软件源码进行插桩,将插桩后的软件发送到测试样例生成模块和缺陷检测模块;测试样例生成模块根据目标配置项和软件测试用例集生成蜕变测试用例,并发送到缺陷检测模块;缺陷检测模块执行蜕变测试并检查两种蜕变关系是否满足,若任意一种蜕变关系不满足则表示目标配置项存在运行时配置更新缺陷,并输出运行时配置更新缺陷集合。采用本发明专利技术能有效检测出软件运行时配置更新缺陷。配置更新缺陷。配置更新缺陷。

【技术实现步骤摘要】
一种基于蜕变测试的运行时配置更新缺陷检测方法


[0001]本专利技术涉及大型软件中的缺陷检测领域,具体涉及一种基于蜕变测试的运行时配置更新缺陷检测方法。

技术介绍

[0002]随着信息化水平的不断提高,大规模基础软件不断发展和完善,在现代社会中扮演着举足轻重的角色,发挥了重要的作用。软件系统通过引入不同类型的配置选项从而为用户使用提供灵活性。用户通常在软件启动前修改配置文件中配置项的值。软件系统在启动阶段加载这些配置项,并使之生效。然而,修改配置项的值需要重新启动软件。对于提供持久服务的软件系统,例如数据库服务器和Web服务器,重启软件系统是不切实际的。为了解决这个问题,现代软件系统支持在运行时更新配置项,而无需重新启动,也称运行时配置更新,如在最新版本的MySQL中64%的配置项支持运行时更新、Redis中84%的配置项支持运行时更新等。
[0003]由于开发人员缺乏对配置生命周期的全面理解,支持运行时配置更新也引入了一些新的问题和挑战,如陈旧的配置值未及时更新、配置更新引发的数据竞争等,引发了一系列功能失败和软件崩溃等问题。因此,研本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于蜕变测试的运行时配置更新缺陷检测方法,其特征在于包括以下步骤:第一步,构建运行时配置更新缺陷检测系统,运行时配置更新缺陷检测系统由配置项分析与插桩模块、测试用例生成模块、缺陷检测模块构成;配置项分析与插桩模块与测试用例生成模块、缺陷检测模块相连,从待检测软件中读取软件源码和目标配置项,利用软件源码对目标配置项进行污点分析,得到目标配置项的影响范围,并对软件源码中目标配置项影响的相关程序语句进行插桩,得到插桩后的软件S,将插桩后的软件S发送给测试用例生成模块和缺陷检测模块;所述目标配置项指用户关心的软件的配置参数集合中的单个配置参数;测试用例生成模块和配置项分析与插桩模块、缺陷检测模块相连,从配置项分析与插桩模块接收插桩后的软件S,读取软件测试用例集,利用软件S从软件测试用例集筛选合适的测试用例作为测试用例子集,根据插桩后的软件S和测试用例子集生成蜕变测试集合T;缺陷检测模块和配置项分析与插桩模块、测试用例生成模块相连,从配置项分析与插桩模块接收插桩后的软件S,从测试用例生成模块接收蜕变测试集合T,在插桩后的软件S上执行蜕变测试集合T中测试用例并检查两种蜕变关系是否均满足,若任意一种蜕变关系不满足则表示目标配置项存在运行时配置更新缺陷,根据当前测试用例和测试输出得到运行时配置更新缺陷集合D;第二步:配置项分析与插桩模块利用软件源码对目标配置项进行污点分析,得到目标配置项的影响范围,并对软件源码中目标配置项影响的相关程序语句进行插桩,将插桩后的软件S发送给测试用例生成模块和缺陷检测模块,方法是:2.1配置项分析与插桩模块读入待检测软件源码S0和目标配置项c;2.2配置项分析与插桩模块分析目标配置项c的初始程序变量,得到一个程序变量vc;2.3配置项分析与插桩模块对程序变量vc进行污点分析,得到目标配置项c的影响范围集合P,P={p1,p2,

,p
z


,p
M
},其中p
z
为一个二元组,p
z
=[v
z
,l
z
],v
z
为目标配置项c的污点传播变量,l
z
为v
z
在源代码中位置,M为影响范围集合P中元素的个数;2.4配置项分析与插桩模块利用目标配置项
c
的影响范围集合P,对软件源码进行插桩,得到插桩后的软件S;2.5将插桩后的软件S发送给测试用例生成模块和缺陷检测模块;第三步,测试用例生成模块为待检测软件生成蜕变测试集合T,将T发送给缺陷检测模块,方法是:3.1测试用例生成模块读入软件测试用例集T0,其中T0={t1,t2…
,t
n


,t
N
},N为软件测试用例集T0中测试用例个数,t
n
为T0中第n个测试用例,1≤n≤N;3.2测试用例生成模块利用插桩后的软件S,根据执行测试用例后软件输出日志是否包含插桩日志,对T0进行筛选,得到用于生成蜕变测试的软件测试用例子集T
s
,T
s
={t1′
,t2′


,t
n



,t
N

},其中N

为T
s
中测试用例的个数,N

≤N,t
n

为T
s
中第n

个测试用例,1≤n

≤N

;3.3测试用例生成模块对目标配置项c的语法类型、取值范围和语法格式进行提取;提取出的四类语法类型包括:布尔类型、枚举类型、字符串类型、数值类型;提取出c的全部可能取值,将c的全部可能取值放入c的全部可能取值集合VC中,VC={p1,p2…
,p
t

,p
T
},p
t
是c的第t个可能取值;提取出c的语法格式包括:路径格式、IP格式、URL格式和ID格式;
3.4测试用例生成模块为目标配置项c生成待测合法值集合V1,V1={v1,v2,...,v
k
...,v
K
},v
k
为目标配置项c的第k个合法取值,K为测试用例生成模块为目标配置项c生成的合法值的个数;3.5测试用例生成模块为目标配置项生成待测非法值集合V2,其中V2={vv1,vv2…
,vv
k
,...,vv
K

},vv
k

为目标配置项c的第k

个非法取值,K

为测试用例生成模块为目标配置项c生成的非法值的个数;3.6测试用例生成模块为目标配置项c生成待测值集合V,V=V1∪V2,令集合V中元素个数为NV;3.7测试用例生成模块为目标配置项c生成蜕变测试集合T,方法是:3.7.1初始化蜕变测试集合初始化变量a=1;3.7.2初始化变量y=1;3.7.3初始化变量u1=1;3.7.4初始化变量u2=1;3.7.5若u1=u2,转3.7.7;若u1≠u2,转3.7.6;3.7.6令将[mt
a
,mt

a
]插入到集合T中,令a=a+1;[mt
a
,mt

a
]为一组蜕变测试用例,mt
a
为对目标配置项c执行非运行时更新的测试用例,mt
a
为二元组,t
y
为T
s
的第y个元素,1≤y≤N

,的含义是:在软件运行阶段将c的取值更新为为c的第u1个待测值,1≤u1≤NV;mt

a
为对目标配置项c执行运行时更新的测试用例,mt

a
为三元组,的含义是:在软件启动阶段c的取值为为c的第u2个待测值,1≤u2≤NV;3.7.7若u2=NV,转3.7.8;否则,令u2=u2+1,转3.7.5;3.7.8若u1=NV,转3.7.9;否则,令u1=u1+1,转3.7.4;3.7.9若y=N

,说明已遍历完测试用例子集T
s
,并得到蜕变测试集合T,此时的a即为T中元素个数,令蜕变测试集合T中蜕变测试用例组数W=a,T={[mt1,mt
′1],[mt2,mt
′2],[mt3,mt
′3],...,[mt
a
,mt

a
],...,[mt
w
,mt

w
]},1≤a≤w,转3.8;否则,令y=y+1,转3.7.3;3.8将蜕变测试集合T发送给缺陷检测模块;第四步:缺陷检测模块在插桩后的软件S上执行蜕变测试集合T,并检测目标软件的运行时配置更新缺陷:4.1缺陷检测模块遍历执行T中的测试用例,得到蜕变测试集合的输出结果,方法是:4.1.1初始化变量a=1;4.1.2重新启动软件S,缺陷检测模块将mt
a
输入插桩后的软件S,运行插桩后的软件S,记录输入mts后软件S的插桩日志输出rl
a
和测试输出rt
a
;4.1.3重新启动软件S,缺陷检测模块将mt

a
输入软件S,运行插桩后的软件S,记录输入mt

a
后软件S的插桩日志输出rl

a
和测试输出rt

a
;4.1.4判定a是否等于W,若是,记W次输出为蜕变测试集合的输出集合Out,Out={[rl1,rt1,rl
′1,rt
′1],

,[rl
a

【专利技术属性】
技术研发人员:李姗姗王腾郑思贾周阳董威陈振邦陈立前张元良刘浩然
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1