基于时间序列的软件测试方法、系统、存储介质及设备
未命名
09-22
阅读:73
评论:0
1.本发明涉及软件测试领域,尤其涉及基于时间序列的软件测试方法、系统、存储介质及设备。
背景技术:
2.随着信息技术的飞速发展,越来越多的软件被广泛地应用于电子电器、公共交通、军事科技以及互联网it等领域,同时也给我们的生活品质带来了极大地改善和提升。然而,当这些软件的数量多到一定程度时,它们的质量难以得到保证,于是软件测试应运而生,服务于软件开发和用户,通过测试获取数据,并分析结果,来找出软件存在的缺陷,以此来帮助开发人员解决软件存在的bug,提高软件的质量,提升了用户的体验。
3.传统的软件测试方法在执行测试用例时是随机的,极有可能会重复执行相似的测试用例,降低了测试效率的同时也会降低发现缺陷的效果。现有技术中,为了降低重复单元的测试,采用聚类算法实现协助软件测试,但也存在缺陷:1、目前聚类算法架构趋于复杂,而传统的软件测试技术难以适应新的需求,在测试方面容易造成漏测,误测等不良结果。2、自动化软件测试在整个项目的软件测试中所占地比重仍然较小,大多数的测试还依赖人工的测试,现阶段的聚类研究并不能实现自动化测试的比重提升。3、目前的关于软件测试的聚类研究当中,在处理测试模块的方法上不能完全体现测试用例的功能模块,不能全面覆盖所要测试的功能需求,给产品的质量安全性埋下隐患。
4.针对上述问题,对数学化处理后的软件功能模块数据进行聚类已经被应用于不同的行业领域,这些被运用于聚类模型的数据经过研究人员的提取可以从这些复杂和大规模的数据集中获得有价值的信息,用聚类进行测试用例的回归分析,使用深度学习模型对测试用例进行特征取样并完成软件程序模块聚类。但是当前的聚类方法对软件模块测试分析只能对测试用例部分代码提取并加以选择,不能准确对软件测试各个环节进行有效分析,且分析方法过于单一,覆盖面小,不能降低软件测试的资源消耗、时间消耗。
技术实现要素:
5.本发明的目的在于克服软件测试中聚类方法存在的问题,提供了一种基于时间序列分割聚类算法的软件测试方法、系统、存储介质及设备。
6.本发明的目的是通过以下技术方案来实现的:
7.主要提供一种基于时间序列分割聚类算法的软件测试方法,所述方法包括:
8.对各类待测项目程序进行静态分析并提取出待测目标代码,并在所述待测目标代码中插入原型项目程序的模块代码段,得到待测数据集;
9.采用时间序列分割聚类算法对所述待测数据集进行初次聚类,并对初次聚类进行准确性评估,得到初次聚类结果;其中,聚类相同的一组项目模块代码进行具体功能的划分,得到一组新的测试用例,并根据新的测试用例划分新的待测试模块;
10.对所述初次聚类结果使用时间序列分割聚类算法进行二次聚类,得到最终的测试
用例集合;
11.对所述测试用例集合进行测试。
12.作为一优选项,一种基于时间序列分割聚类算法的软件测试方法,所述对各类待测项目程序进行静态分析并提取出目标代码,包括:
13.对所述待测项目程序进行切割成不同类型的功能代码片段,并对不同类型的功能代码片段设置不同类型的特征标签,得到不同类型的待测功能模块;
14.采用pca主成分分析对所述待测功能模块进行特征选取,并构建新的字段来描述原本的特征。
15.作为一优选项,一种基于时间序列分割聚类算法的软件测试方法,在所述待测目标代码中插入原型项目程序的模块代码段,包括:
16.对原型项目程序的模块代码段进行标签化,得到原型标签,并将所述原型标签插入所述待测目标代码中。
17.作为一优选项,一种基于时间序列分割聚类算法的软件测试方法,所述初次聚类包括:
18.将所述待测功能模块设定成一定长度的原始信号,将所述原始信号划分为若干可能的状态段,并标记原始信号的各个状态段。
19.作为一优选项,一种基于时间序列分割聚类算法的软件测试方法,使用f1-score均值对初次聚类进行准确性评估。
20.作为一优选项,一种基于时间序列分割聚类算法的软件测试方法,所述二次聚类包括:
21.对所述新的测试用例进一步划分,并将划分后的测试用例与所述原型项目程序的模块代码段进行聚类。
22.作为一优选项,一种基于时间序列分割聚类算法的软件测试方法,所述对不同类型的功能代码片段设置不同类型的特征标签,包括:
23.对具有增、删、改、查的目标功能代码片段进行特征标签,得到fp类特征标签;对登录注册功能的代码片段进行特征标签,得到lgp类特征标签;对含有可视化展示的功能代码片段进行特征标签,得到vp类特征标签。
24.本发明还提供一种基于时间序列分割聚类算法的软件测试系统,包括:
25.待测数据创建模块,用于对各类待测项目程序进行静态分析并提取出待测目标代码,并在所述待测目标代码中插入原型项目程序的模块代码段,得到待测数据集;
26.初次聚类模块,采用时间序列分割聚类算法对所述待测数据集进行初次聚类,并对初次聚类进行准确性评估,得到初次聚类结果;其中,聚类相同的一组项目模块代码进行具体功能的划分,得到一组新的测试用例,并根据新的测试用例划分新的待测试模块;
27.二次聚类模块,用于对所述初次聚类结果使用时间序列分割聚类算法进行二次聚类,得到最终的测试用例集合;
28.测试模块,用于对所述测试用例集合进行测试。
29.另一方面,本发明还提供一种计算机可读存储介质,其上存储有执行所述的软件测试方法的相关程序。
30.另一方面,本发明还提供一种电子设备,包括处理器和存储器,所述存储器中存储
有至少一条程序代码,所述至少一条程序代码由所述处理器加载并执行,以使所述电子设备实现所述的软件测试方法。
31.需要进一步说明的是,上述各选项对应的技术特征在不冲突的情况下可以相互组合或替换构成新的技术方案。
32.与现有技术相比,本发明有益效果是:
33.(1)本发明采用时间序列分割聚类算法搭建基于软件功能性连接组采用逆协方差的自动分割聚类模型,在没有标定的情况下,能够发掘待测功能模块中隐藏的信息,准确提取出测试用例的功能模块,提升了软件测试各环节的覆盖面,保证测试用例的多元化的同时,降低测试用例的处理复杂度,降低软件测试的资源消耗,提高测试效率。
34.初次聚类的目的是为了获取标准测试代码同待测试的代码之间的聚类矩阵,二次聚类的目的就是能够具体到某一个功能,同第一次聚类中获得的标准测试代码的二次聚类,这次聚类能够获得该待测试代码同标准测试代码的聚类分组,随后软件测试人员根据聚类分组的情况以及聚类模型给出的评分决定同一分组内的代码为安全、标准或基本标准的代码,不用进行测试,通过多级聚类的方式,最终实现降低测试成本目标的目的。
35.(2)使用pca主成分分析的方法能够对初步获得的测试用例中的特征进行很好的降低特征维度,否则数据集维度过高会影响后续聚类效果,只有提取准确的测试代码模块特征才能完成时间序列聚类算法的数据输入模块,才能得到好的聚类结果
36.(3)本发明降低单元测试的重复测试,大幅度增强了自动化软件测试的工作效率,填补了软件测试生产中缩短测试工作周期的空缺。
37.(4)本发明使用改进的逆协方差方法,将软件测试过程当中需要进行检测的模块进行分割并进行静态分析,获得原型模块测试代码和分类软件功能模块测试代码并进行遍历,计算其中的代码耦合率,提供有效的聚类结果评估方法,并实现更加智能化的聚类识别从而减少重复软件测试。
附图说明
38.下面结合附图对本发明的具体实施方式作进一步详细的说明,此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,在这些附图中使用相同的参考标号来表示相同或相似的部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。
39.图1为本发明示出的一种基于时间序列分割聚类算法的软件测试方法的流程图。
具体实施方式
40.下面结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
41.在本发明的描述中,需要说明的是,属于“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
42.此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
43.本发明主要针对待测项目程序和原型项目程序进行静态分析并提取出目标代码,得到待测试项目程序映射集合以及原型项目程序的映射集;基于对获取的各类软件待测试项目的映射集合同原型项目程序集合进行聚类,首先对其中的待测试项目的程序进行标签化处理,以获得进行数据处理的原始数据,再对原始数据进行分类标识,得到初始聚类的数据集,构建数学化聚类模型。最后,将各类待测项目程序同原型项目程序的聚类结果进行准确性评估,判断各类待测程序的聚类相似度,相同类型的待测程序便能够在现实的生产测试中进行抽样检测,而不用所有待测程序进行穷举式检测,提升了软件测试的效率,节约了人力物力成本。
44.实施例1
45.将深度学习的算法运用到软件测试当中是近年测试领域十分活跃的研究方法,有很多的研究中都能够找到应用的案例,但是大多数的方法都是基于测试用例排序、分类等方法进行研究,而采用聚类的算法就非常少,而本方法根据时间序列分割算法对软件测试当中的测试代码功能序列进行切分,能够实现同标准测试代码的聚类,从而大量减少测试代码的执行,这种方法在目前的软件测试领域中基本未被提出。
46.在该示例性实施例中,提供一种基于时间序列分割聚类算法的软件测试方法,如图1所示,所述方法包括:
47.对各类待测项目程序进行静态分析并提取出待测目标代码,并在所述待测目标代码中插入原型项目程序的模块代码段,得到待测数据集;
48.采用时间序列分割聚类算法对所述待测数据集进行初次聚类,并对初次聚类进行准确性评估,得到初次聚类结果;其中,聚类相同的一组项目模块代码进行具体功能的划分,得到一组新的测试用例,并根据新的测试用例划分新的待测试模块;
49.对所述初次聚类结果使用时间序列分割聚类算法进行二次聚类,得到最终的测试用例集合;
50.对所述测试用例集合进行测试。
51.具体地,初次聚类的目的是从目前的软件测试领域获取的标准测试代码的功能片段,同待测试的软件测试代码进行初步聚类能够获得首次聚类矩阵,从而挑选出待测试代码的目标测试代码;其次,将初次聚类获取的聚类矩阵进行二次聚类是更加深度的获取每一个测试代码的功能,比如,测试矩阵中的代码包含了登录、注册、病人信息调用,将该测试矩阵的具体每个功能测试段同标准测试代码再次进行聚类,获得第二个聚类矩阵结果,而这个结果就是我们要进行分析的聚类结果,软件测试人员根据这个聚类结果决定哪些功能测试代码是需要进行测试的,哪些功能测试代码是同标准测试代码一类的便不需要再进行测试。采用时间序列聚类算法能够准确的分析出代码模块之间的特征关系,能够增加聚类效果,这也是选择该方法应用于软件测试的一个重要原因。
52.进一步地,使用pca主成分分析等静态分析的方法能够对初步获得的测试用例中的特征进行很好的降低特征维度,否则数据集维度过高会影响后续聚类效果,只有提取准确的测试代码模块特征才能完成时间序列聚类算法的数据输入模块,才能得到好的聚类结果。
53.此外,初次聚类的目的是为了获取标准测试代码同待测试的代码之间的聚类矩阵,二次聚类的目的就是能够具体到某一个功能,同第一次聚类中获得的标准测试代码的
二次聚类,这次聚类能够获得该待测试代码同标准测试代码的聚类分组,随后软件测试人员根据聚类分组的情况以及聚类模型给出的评分决定同一分组内的代码为安全、标准或基本标准的代码,不用进行测试,实现降低测试成本目标。
54.实施例2
55.基于实施例1,提供一种基于时间序列分割聚类算法的软件测试方法,所述对各类待测项目程序进行静态分析并提取出目标代码,包括:
56.对所述待测项目程序进行切割成不同类型的功能代码片段,并对不同类型的功能代码片段设置不同类型的特征标签,得到不同类型的待测功能模块。
57.具体地,对待测项目程序的数学化处理方法包括以下步骤:
58.s1、待测项目程序的切割以及分析:在对待测程序的代码进行切割的过程当中,需要首先确定目标功能,建立目标函数,提取准确有效的代码片段,在实际的生产过程当中,对具有增、删、改、查的目标功能代码片段(fp)进行特征标签,此类代码在进行数学表达式转化时采用正则化表示,得到第1类特征标签,也叫fp类特征标签;在对登录注册功能的代码(lgp)片段采用偏分方差的方式进行数学表达,得到第2类特征标签,也叫lgp类特征标签;在代码片段中含有可视化展示的功能代码片段(vp)当中采用正弦函数的数学表达,得到第3类特征标签,也叫vp类特征标签;并且,在各类功能不同的软件项目当中可以采用同样的方式对其功能模块代码(op)进行特征标签的处理,将软件程序的代码片段进行聚类标签化(label)处理。
59.s2、采用pca(principal component analysis)主成分分析对所述待测功能模块进行特征选取,并构建新的字段来描述原本的特征:选取一部分有用或有价值的特征进入模型进行训练;新建新的字段来描述原本的特征。如对一类特征进行降维处理,使得降维后的数据能够表达原本的信息,构造目标:对设定的待测功能模块程序进行去中心化,x通过与v点积完成线性变换,计算得到方差s:
60.s=(v
t
x)(v
t
x)=v
t
xx
tv61.最大化方差是我们的目标,同时还要满足v由单位向量构成,即:
62.maxv
t
xx
tv63.s.t.v
t
v=1
64.其中,x表示待测程序样本集,v表示样本矩阵。
65.求导解决:
66.利用拉格朗日乘子法,可以求得:
67.l(v,λ)=v
t
xx
t
v-λ(v
t
v-1)
68.求导可得:
[0069][0070]
求解得到:
[0071]
xx
t
·
v=λv
[0072]
这里的λ表示软件程序模块特征值,v为特征向量。选出最大的几个软件程序模块
特征值,并选出特征值对应的主成分(λi所对应的vi),完成主成分分析,最终得到待测程序的初始数据集。
[0073]
s3、在所述待测目标代码中插入原型项目程序的模块代码段,包括:
[0074]
对原型项目程序的模块代码段进行标签化,得到原型标签,并将所述原型标签插入所述待测目标代码中。具体地,在对待测功能模块的代码进行初始主成分分析处理后,需要设置原型模块代码段,而原型模块代码段的设置选取从代码库当中挑选已经在现实中上线并能够接受真实网络用户检验的稳定代码段,并将此作为原型模块代码段,以此保证待测代码的有效性以及正确性;将原型模块代码段进行数学转化,得到标签化的数学表达,并将原型标签插入数据集,得到软件测试重复率检测数据集(software test repetition rate detection)strrd,该数据集就成为最终的待测数据集。该数据集可以根据功能模块的代码进行维度的增加或减少,并设置维度为n;数据量的大小根据软件项目的待测项功能进行增加或减少,并设置数据量长度为m。
[0075]
s4、在设置好原型模块代码段和各类软件功能模块代码段的标签后,使用strrd数据集进行聚类算法,开始进行聚类中心的选取:在strrd数据集当中首先随机选取一个聚类样本作为初始的聚类中心c1;其次,首先根据计算的每个样本同当前选取的聚类中心之间的最小距离(即同聚类中心根据距离方差运算获得的最近距离),用d(x)表示;随后,计算每个样本被选取为下一个聚类中心的概率最后,按照轮盘法选取出下一个聚类中心;一直重复上一步骤直到选取出设定的k个聚类中心。
[0076]
进一步地,所述初次聚类包括:
[0077]
将所述待测功能模块设定成一定长度的原始信号,将所述原始信号划分为若干可能的状态段,并标记原始信号的各个状态段。具体地,在获得待测数据集以及聚类中心之后,需要搭建聚类模型,聚类模型的搭建包括:
[0078]
s1、搭建基于软件功能性连接组采用逆协方差自动分割聚类模型:在没有标定的情况下,想发掘这些数据中隐藏的信息,即将信号划分为若干可能的状态,并标记每条信号的各段。例如:待测软件初始功能模块:登录、注册、短信验证、邮箱验证
…
;待测软件系统功能模块:用户信息增删改查、数据图形化展示、用户数据转化
…
。这就需要同时对数据进行两种操作:将待测程序的初始数据集进行数据分割,本方法采用的算法考察信号各维度之间的相关性,以确定信号间的相似度。
[0079]
s2、建立聚类模型:采用根据待测程序的初始数据集段(fp、lgp、vp、op等功能模块信号)作为长度t的原始信号:x=[x1,x2,x3,x4,
…
,x
t
],其中的每一类型的信号段xi为n维向量,为了便于后续的二次划分考察各类信号的相关性,以原型信号为基准,向前截取宽度为w的基准段,构建信号段:
[0080]
xi=[x
i-w+1
,
…
,x
i-1
,xi]
[0081]
其中i=1,2,3,
…
,t.信号段xi为nw维度的向量。
[0082]
s3、将聚类中心联系获得联合方程,并将所有的信号段划分为k类,属于第j类的信号段程序序号集合为pj,j=1,2,3,
…
,k.划分每一类信号段服从0均值高斯分布,其协方差逆矩阵为θj,j=1,2,
…
,k,构成一个nw
×
nw的矩阵。θj由w
×
w个子矩阵组成,每个子矩阵的尺寸为n
×
n。位置pq的子矩阵描述过程信号p和过程信号q之间,n个维度之间的协方差逆矩
阵:
[0083]
[0-w+1,
…
p,
…
,q,
…
,0]
[0084]
而这里的需要假设信号是根据非时变化的,不同的特征功能信号之间的关系变化只利用不同功能信号的协方差相关;交换pq,其协方差逆阵互为转置。
[0085]
求解:给定θj,求解程序信号段分类pj;给定pj,求解各类特征的逆协方差阵θj。
[0086]
s4、求解信号段分类pj:给定θj,将信号段xi归入j类的代价进行负对数似然表示:
[0087][0088]
在实验中继续加入功能信号连续性:相连信号段不同类时施加惩罚β:
[0089][0090]
核心思路:在给第i个信号段分类时,只需考虑第i-1信号段分为各类时的代价即可。
[0091]
s5、求解逆协方差阵θj,给定一类中所有信号段集合pj,通过最小化其负对数似然总和,能够求解θj。各类待测功能模块信号可以并行计算:
[0092][0093]
求和式内第一项和j无关,||表示集合内元素计数:
[0094]
e1=-|pi|
·
logdet(θ)
[0095]
求和式内第二项可写为迹的形式:
[0096][0097]
其中,s是由pj中所有信号段计算得到的当前逆协方差阵,另外添加正则项:
[0098]
e3=||γ
⊙
θ||
[0099]
其中γ为权重矩阵,
⊙
表示矩阵对位相乘。
[0100]
根据上述的实验操作,要求θ是分块的软件功能性连接组逆协方差矩阵,将问题变换形式后,可以用admm(alternating direction method of multipliers)交替方向乘子法获得快速求解:
[0101]
minimize-logdet(θ)+tr(s
·
θ)+||γ
⊙
θ||
[0102]
subject toθ=z,z为分块的toeplitz矩阵。
[0103]
进一步地,在搭建好聚类模型后,将数据集strrd中的数据进行应用,设置包括原型程序模块信号维度n,窗口宽度为w。聚类数量k选定的聚类中心个数决定,开始进行原型程序样本同待测试程序样本的聚类。利用上述所设定的软件功能性连接组逆协方差自动分割聚类算法得到初次聚类的聚类结果。
[0104]
进一步地,使用f1-score均值对初次聚类进行准确性评估。具体地,采用混淆矩
阵,其总体思路是统计a类别实例被预测(聚类)为b类别的次数。召回率(recall)和精度(precise)是广泛用于统计学分类领域的两个度量值,用来评估分类结果的质量。该方法采用的混淆矩阵如下:
[0105] 预测值0预测值1真实值tnfp预测值fntp
[0106]
其中:
[0107]
tn表示上述基于软件功能性连接组逆协方差自动分割聚类算法预测正确,算法预测为负例(n),实际上也是负例(n)的个数,即算法预测对了(true);
[0108]
tp表示算法预测为正例(p),实际上是负例(n)的个数,即算法预测错了(false);
[0109]
fn表示算法预测为负例(n),实际上是正例(p)的个数,即算法预测错了(false);
[0110]
fp表示算法预测为正例(p),实际上也是正例(p)的个数,即算法预测对了(true)。
[0111]
准确率计算:
[0112]
召回率计算:
[0113]
f1值是来综合评估精确率和召回率,当精确率和召回率都高时,f1也会高,该方法采用f1值对模型聚类效果的评估:
[0114][0115]
其中,p表示准确率,r表示召回率,根据最终的f1值来评估自动分割聚类模型的准确率,以此作为软件项目模块相似度并判断聚类合理与否的依据。
[0116]
进一步地,所述二次聚类包括:
[0117]
对所述新的测试用例进一步划分,并将划分后的测试用例与所述原型项目程序的模块代码段进行聚类。具体地,根据上述的基于软件功能性连接组采用逆协方差自动分割聚类算法得到待测软件项目代码的聚类结论,聚类相同的一组标签结果显示该组测试用例的项目代码耦合度高,可以根据评估标准判断其耦合概率,再将聚类相同的一组项目模块代码进行具体功能的划分,得到一组新的测试用例,根据用例划分新的待测试模块,将重新划分得到的基础功能模块待测程序使用自动分割模型继续聚类,最终得到聚类结果便表示该类软件程序的模块功能同原型模块功能相同,可以进行抽样测试软件模块而不用进行穷举测试。
[0118]
接着,进行测试用例的细致划分,包括待测程序的功能模块,在自动测试数据集当中的m条数据进行功能划分:c1,c2,c3…
,cj,其中j表示待测程序功能划分个数。然后对新获得的划分后的测试用例进行数据集的生成,将待测程序同此类原型程序模块进行关系,最终得到测试用例数据集tcd(test case data)。
[0119]
进一步地,使用上述步骤搭建的软件功能性连接组聚类模型进行待测程序的聚类,得到聚类结果,经过评估后获得准确率评估,得到聚类分组后的测试用例集合[t1,t2,
…
,tk],k表示聚类模型最终得到的聚类分组个数。
[0120]
最后测试人员验证聚类后的测试用例:测试人员验证最终得到的tk聚类分组中的
项目程序,获取反馈信息:聚类分组中的测试用例是否为同一类型的功能模块,是否可以对该聚类分组的测试用例进行随机抽样进行系统的软件测试,而不需要采用穷举法测试,最终判断该聚类方法是否准确,是否能够直接使用该方法。
[0121]
实施例3
[0122]
基于实施例2,提供一种基于软件功能性连接组聚类的降低单元重复测试方法,以医院管理助手测试为例,医疗助手系统具体的功能需要测试相关的病人模块的标准测试代码,第一次聚类的目的是为了获取标准测试代码同待测试的代码之间的聚类矩阵,这次聚类就能够将待测试的代码同标准测试用例代码库中的代码进行聚类,筛选出一个同医疗领域测试相关的类库矩阵。在获得类库矩阵后,第二次聚类的目的就是能够具体到某一个功能,比如病人信息录入、医生交班信息录入,再进行待测试代码同第一次聚类中获得的标准测试代码的二次聚类,这次聚类能够获得该待测试代码同标准测试代码的聚类分组,随后软件测试人员根据聚类分组的情况以及聚类模型给出的评分决定同一分组内的代码为安全、标准或基本标准的代码,不用进行测试,实现最终的降低测试成本目标。
[0123]
具体地,对该系统测试进行功能提取并通过数学转化提取到的数据集中存在60条数据,每段数据有个4功能维度属性。数据读取模块读取strrd数据集s={s1,s2,
…
,s
60
}。
[0124]
将数据集根据功能模块的代码进行维度的增加或减少,并设置功能维度为4;数据量的大小根据软件项目的待测项功能进行增加或减少,并设置数据量长度为60。开始进行聚类中心的选取:在strrd数据集当中首先随机选取一个聚类样本作为初始的聚类中心c1;其次,首先根据计算的每个样本同当前选取的聚类中心之间的最小距离(即同聚类中心根据距离方差运算获得的最近距离),用d(x)表示;随后,计算每个样本被选取为下一个聚类中心的概率最后,按照轮盘法选取出下一个聚类中心;一直重复上一步骤直到选取出设定的k个聚类中心。
[0125]
将数据集strrd中的数据进行应用:设置包括原型程序模块信号维度4,窗口宽度为5。聚类数量k根据选定的聚类中心个数决定,开始进行原型程序样本同待测试程序样本的聚类,利用软件功能性连接组逆协方差自动分割聚类算法得到最终的软件模块聚类结果。
[0126]
对初次聚类得到的分组进行二次聚类,首先进行测试用例的细致划分,包括待测程序的功能模块,在自动测试数据集当中的60条数据进行功能划分:c1,c2,c3…
,cj,其中j=4表示待测程序功能划分个数。
[0127]
实施例4
[0128]
提供一种基于时间序列分割聚类算法的软件测试系统,包括:
[0129]
待测数据创建模块,用于对各类待测项目程序进行静态分析并提取出待测目标代码,并在所述待测目标代码中插入原型项目程序的模块代码段,得到待测数据集;
[0130]
初次聚类模块,采用时间序列分割聚类算法对所述待测数据集进行初次聚类,并对初次聚类进行准确性评估,得到初次聚类结果;其中,聚类相同的一组项目模块代码进行具体功能的划分,得到一组新的测试用例,并根据新的测试用例划分新的待测试模块;
[0131]
二次聚类模块,用于对所述初次聚类结果使用时间序列分割聚类算法进行二次聚类,得到最终的测试用例集合;
[0132]
测试模块,用于对所述测试用例集合进行测试。
[0133]
其中,待测数据创建模块使用pca主成分分析等静态分析的方法能够对初步获得的测试用例中的特征进行很好的降低特征维度,否则数据集维度过高会影响后续聚类效果,只有提取准确的测试代码模块特征才能完成时间序列聚类算法的数据输入模块,才能得到好的聚类结果。
[0134]
初次聚类模块是为了获取标准测试代码同待测试的代码之间的聚类矩阵,二次聚类模块能够具体到某一个功能,同初次聚类模块中获得的标准测试代码的二次聚类,这次聚类能够获得该待测试代码同标准测试代码的聚类分组,随后软件测试人员根据聚类分组的情况以及聚类模型给出的评分决定同一分组内的代码为安全、标准或基本标准的代码,不用进行测试,实现降低测试成本目标。
[0135]
实施例5
[0136]
提供一种计算机可读存储介质,其上存储有执行实施例1中所述的软件测试方法的相关程序。基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0137]
实施例6
[0138]
提供一种电子设备,包括处理器和存储器,所述存储器中存储有至少一条程序代码,所述至少一条程序代码由所述处理器加载并执行,以使所述电子设备实现所述的软件测试方法。处理器可以是单核或者多核中央处理单元或者特定的集成电路,或者配置成实施本发明的一个或者多个集成电路。
[0139]
以上具体实施方式是对本发明的详细说明,不能认定本发明的具体实施方式只局限于这些说明,对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演和替代,都应当视为属于本发明的保护范围。
技术特征:
1.一种基于时间序列分割聚类算法的软件测试方法,其特征在于,所述方法包括:对各类待测项目程序进行静态分析并提取出待测目标代码,并在所述待测目标代码中插入原型项目程序的模块代码段,得到待测数据集;采用时间序列分割聚类算法对所述待测数据集进行初次聚类,并对初次聚类进行准确性评估,得到初次聚类结果;其中,聚类相同的一组项目模块代码进行具体功能的划分,得到一组新的测试用例,并根据新的测试用例划分新的待测试模块;对所述初次聚类结果使用时间序列分割聚类算法进行二次聚类,得到最终的测试用例集合;对所述测试用例集合进行测试。2.根据权利要求1所述的一种基于时间序列分割聚类算法的软件测试方法,其特征在于,所述对各类待测项目程序进行静态分析并提取出目标代码,包括:对所述待测项目程序进行切割成不同类型的功能代码片段,并对不同类型的功能代码片段设置不同类型的特征标签,得到不同类型的待测功能模块;采用pca主成分分析对所述待测功能模块进行特征选取,并构建新的字段来描述原本的特征。3.根据权利要求1所述的一种基于时间序列分割聚类算法的软件测试方法,其特征在于,在所述待测目标代码中插入原型项目程序的模块代码段,包括:对原型项目程序的模块代码段进行标签化,得到原型标签,并将所述原型标签插入所述待测目标代码中。4.根据权利要求2所述的一种基于时间序列分割聚类算法的软件测试方法,其特征在于,所述初次聚类包括:将所述待测功能模块设定成一定长度的原始信号,将所述原始信号划分为若干可能的状态段,并标记原始信号的各个状态段。5.根据权利要求1所述的一种基于时间序列分割聚类算法的软件测试方法,其特征在于,使用f1-score均值对初次聚类进行准确性评估。6.根据权利要求1所述的一种基于时间序列分割聚类算法的软件测试方法,其特征在于,所述二次聚类包括:对所述新的测试用例进一步划分,并将划分后的测试用例与所述原型项目程序的模块代码段进行聚类。7.根据权利要求2所述的一种基于时间序列分割聚类算法的软件测试方法,其特征在于,所述对不同类型的功能代码片段设置不同类型的特征标签,包括:对具有增、删、改、查的目标功能代码片段进行特征标签,得到fp类特征标签;对登录注册功能的代码片段进行特征标签,得到lgp类特征标签;对含有可视化展示的功能代码片段进行特征标签,得到vp类特征标签。8.一种基于时间序列分割聚类算法的软件测试系统,其特征在于,包括:待测数据创建模块,用于对各类待测项目程序进行静态分析并提取出待测目标代码,并在所述待测目标代码中插入原型项目程序的模块代码段,得到待测数据集;初次聚类模块,采用时间序列分割聚类算法对所述待测数据集进行初次聚类,并对初次聚类进行准确性评估,得到初次聚类结果;其中,聚类相同的一组项目模块代码进行具体
功能的划分,得到一组新的测试用例,并根据新的测试用例划分新的待测试模块;二次聚类模块,用于对所述初次聚类结果使用时间序列分割聚类算法进行二次聚类,得到最终的测试用例集合;测试模块,用于对所述测试用例集合进行测试。9.一种计算机可读存储介质,其特征在于,其上存储有执行权利要求1-7中任意一项所述的软件测试方法的相关程序。10.一种电子设备,其特征在于,包括处理器和存储器,所述存储器中存储有至少一条程序代码,所述至少一条程序代码由所述处理器加载并执行,以使所述电子设备实现如权利要求1-7中任意一项所述的软件测试方法。
技术总结
本发明公开了基于时间序列的软件测试方法、系统、存储介质及设备,属于软件测试领域,使用PCA分析方法提取待测项目程序的特征,得到待测数据集,采用时间序列分割聚类算法对待测数据集进行初次聚类,并对初次聚类进行准确性评估,得到初次聚类结果;其中,聚类相同的一组项目模块代码进行具体功能的划分,得到一组新的测试用例,并根据新的测试用例划分新的待测试模块;对所述初次聚类结果使用时间序列分割聚类算法进行二次聚类,得到最终的测试用例集合。本发明能够准确提取出测试用例的功能模块,提升了软件测试各环节的覆盖面,实现更加智能化的聚类识别从而减少重复软件测试。智能化的聚类识别从而减少重复软件测试。智能化的聚类识别从而减少重复软件测试。
技术研发人员:王聪 李晓瑜 周永 付锦涛 郑德生 柯武平 汪忠来 钱伟中
受保护的技术使用者:电子科技大学
技术研发日:2023.07.18
技术公布日:2023/9/20
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/