【技术实现步骤摘要】
一种基于配置项性能期望的软件性能缺陷检测方法
本专利技术涉及大型软件中的性能缺陷检测领域,具体涉及一种基于配置项性能期望的软件性能缺陷检测方法。
技术介绍
随着社会的不断进步,软件系统已经在各个领域得到广泛应用,在现代社会中扮演着举足轻重的角色,发挥了重要的作用。随着软件系统的不断发展,人们对软件的可靠性,安全性,性能(软件运行速度)要求越来越高,导致软件规模不断增大,软件复杂度不断提升。例如,Hadoop分布式开源软件的2.8.0版本,源码文件数量超过8000,代码总行数接近千万。同时,软件系统提供更多更加灵活的配置项以使用户根据需求配置软件。例如,Apachehttpd软件中共有个1000多个配置项,MySQL中有800多个配置项。且非功能属性的所占的比例日益增加,这些配置项与计算资源(如CPU、内存等)、性能优化策略密切相关。同时,随着软件规模不断增大,提高软件性能是软件演化和维护最重要的任务之一。XueHan等人在ESEM2016发表的文章“AnEmpiricalStudyonPerformanceBugsforHighlyConfigurableSoftwareSystems(高可配置软件系统中的性能缺陷实证研究)”表明:配置项也成为引发软件性能问题的主要原因之一,比例高达59%。在对148家企业的调查中,92%的企业认为提高软件性能是软件发展过程中最重要的任务之一。近年来,软件配置项相关的代码缺陷导致的软件性能问题造成了巨大的商业损失。针对软件性能问题,现有技术主要采用两类方法对其进行检测。第一类 ...
【技术保护点】
1.一种基于配置项性能期望的软件性能缺陷检测方法,其特征在于包括以下步骤:/n第一步,构建性能缺陷检测系统,性能缺陷检测系统由配置项期望预测模块、测试样例生成模块、性能缺陷检测模块构成;/n配置项期望预测模块是一个加权投票分类器,与测试样例生成模块、性能缺陷检测模块相连,从待检测软件的配置项用户手册读取配置项的描述、取值范围,对待预测配置项的性能期望进行预测,得到配置项的性能期望标签,将配置项的性能期望标签发送给测试样例生成模块和性能缺陷检测模块;/n测试样例生成模块与配置项期望预测模块、性能缺陷检测模块相连,从配置项期望预测模块接收配置项的性能期望标签,从待检测软件的测试集读取测试命令,根据配置项的性能期望标签和待检测软件测试集生成测试样例集合T;/n性能缺陷检测模块与配置项期望预测模块、测试样例生成模块相连,从测试样例生成模块接收测试样例集合T,从配置项期望预测模块接收配置项的性能期望标签,执行测试样例集合T中测试样例并检测配置项的性能期望标签所对应的期望性能和实际性能是否相符,若不相符则输出待检测软件的性能缺陷;/n第二步:读入人工标注期望的配置项和配置项的官方文档描述,训练性能 ...
【技术特征摘要】
1.一种基于配置项性能期望的软件性能缺陷检测方法,其特征在于包括以下步骤:
第一步,构建性能缺陷检测系统,性能缺陷检测系统由配置项期望预测模块、测试样例生成模块、性能缺陷检测模块构成;
配置项期望预测模块是一个加权投票分类器,与测试样例生成模块、性能缺陷检测模块相连,从待检测软件的配置项用户手册读取配置项的描述、取值范围,对待预测配置项的性能期望进行预测,得到配置项的性能期望标签,将配置项的性能期望标签发送给测试样例生成模块和性能缺陷检测模块;
测试样例生成模块与配置项期望预测模块、性能缺陷检测模块相连,从配置项期望预测模块接收配置项的性能期望标签,从待检测软件的测试集读取测试命令,根据配置项的性能期望标签和待检测软件测试集生成测试样例集合T;
性能缺陷检测模块与配置项期望预测模块、测试样例生成模块相连,从测试样例生成模块接收测试样例集合T,从配置项期望预测模块接收配置项的性能期望标签,执行测试样例集合T中测试样例并检测配置项的性能期望标签所对应的期望性能和实际性能是否相符,若不相符则输出待检测软件的性能缺陷;
第二步:读入人工标注期望的配置项和配置项的官方文档描述,训练性能缺陷检测系统的配置项期望预测模块,方法是:
2.1构建训练集,令训练集中共N个配置项,N≥500;
2.2根据N个配置项的官方文档描述,对配置项人工标注其性能期望标签,方法为:根据配置项c的文档描述d,如果调节该配置项的目的是为了开启优化开关,则该配置项的性能期望标签为Label1;如果调节该配置项的目的是为了提升性能牺牲可靠性等非功能需求,则该配置项的性能期望标签为Label2;如果调节该配置项的目是为了分配更多计算机资源,则该配置项的性能期望标签为Label3;如果调节该配置项的目的是为了开启软件额外功能,则该配置项的性能期望标签为Label4;如果调节该配置项与软件性能无关,则该配置项的性能期望标签为Label5;最终得到训练集,记为N1+N2+N3+N4+N5=N;N1、N2、N3、N4、N5分别为性能期望标签为Label1,Label2,Label3,Label4,Label5的配置项文档描述的个数;是训练集中性能期望标签为Labell的第il个配置项,是的文档描述,由单词组成,1≤l≤5,1≤il≤Nl;令中的单词总数为记为(单词1,单词2,…,单词…,单词);
2.3配置项期望预测模块预处理训练集,方法是:
2.3.1初始化变量l=1;
2.3.2初始化变量il=1;
2.3.3对进行预处理,方法是:
2.3.3.1令变量
2.3.3.2将单词转化为为单词的词性标签,为计算机领域同义词;
2.3.3.3若令转2.3.3.2;若则得到预处理后的为如下形式:(简记为转2.3.4;
2.3.4判断il是否等于Nl,若是,转2.3.5,否则令il=il+1,转2.3.3;
2.3.5判断l是否等于5,若是,转2.4,否则令l=l+1,转2.3.2;
2.4配置项期望预测模块挖掘频繁子序列,使用PrefixSpan算法分别对集合进行频繁子序列挖掘,得到5个频繁子序列集合:其中Q1,Q2,…,Ql,…,Q5为正整数,表示当l=1,2,…,5时,PrefixSpan算法从集合挖掘出的频繁子序列的个数;1≤q≤Ql;
2.5对P1,P2,…,P5中的所有频繁子序列计算置信度Confidence,方法是:
2.5.1初始化变量l=1;
2.5.2初始化变量q=1;
2.5.3计算频繁子序列p(l,q)的置信度Confidence(l,q):
Confidence(l,q)=(p(l,q)在集合中的匹配次数)/(p(l,q)在五个集合中的匹配次数之和),其中,若p(l,q)是的一个子序列,则判定p(l,q)与一次匹配;
2.5.4判断q是否等于Ql,若是,转2.5.5;若否,令q=q+1,转2.5.3;
2.5.5判断l是否等于5,若是,表示得到了P1,P2,…,P5中的所有频繁子序列的置信度,转2.6;若否,令l=l+1,转2.5.2;
2.6根据P1,P2,…,P5中的频繁子序列的置信度Confidence,对P1,P2,…,P5中的频繁子序列进行筛选,得到筛选后的频繁子序列集合P1',P2',P3',P4',P5';
2.7采用P1',P2',P3',P4',P5'对配置项期望预测模块进行训练,方法是:
2.7.1初始化:从P1',P2',P3',P4',P5'中分别随机选出100个频繁子序列,构成随机选出频繁子序列集合P1”,P2”,P3”,P4”,P5”;P1”,P2”,P3”,P4”,P5”中共包含500个频繁子序列,即:
{p(1,1),p(1,2),…,p(1,r),…,p(1,100)},…,{p(l,1),p(l,2),…,p(l,r),…,p(l,100)},…,{p(5,1),p(5,2),…,p(5,r),…,p(5,133)},1≤r≤100;
2.7.2分别计算P1”,P2”,P3”,P4”,P5”在训练数据集上的准确率Precision、召
回率Recall、准确率和召回率的调和平均数F-score:
2.7.3判断F-score最大值的估计累积分布函数值是否大于阈值δ,若大于,转2.8;若小于等于阈值δ,转2.7.1;
2.8配置项期望预测模块选取F-score最大时对应的P1”,P2”,P3”,P4”,P5”构建加权投票分类器,转第三步;
第三步,利用训练后的配置项期望预测模块为待检测软件生成性能期望标签集合L,将L发送给测试样例生成模块和性能缺陷检测模块,方法是:
训练后的配置项期望预测模块从待检测软件的配置项用户手册读取配置项描述,加权投票分类器对所有待测配置项C={c1,c2,…,cz,…,cN'}的性能期望进行预测,得到性能期望标签集合L=[Lab1,Lab2,…,Labz,…,LabN′],其中,1≤z≤N′,Labz∈{Label1,Label2,Label3,Label4,Label5,null},N′为配置项用户手册中配置项的个数;将L发送给测试样例生成模块和性能缺陷检测模块;
第四步,测试样例生成模块为待检测软件生成测试样例集合T,并将T发送给性能缺陷检测模块,方法是:
4.1测试样例生成模块对C中的软件配置项的语法类型和取值范围进行提取,提取出的语法类型分为四类:数值类型、布尔类型、枚举类型、字符串类型;
4.2测试样例生成模块为配置项集合C={c1,c2,…,cz,…,cN'}生成待测值集合V,V={V1,V2,…,Vz,…,VN'},其中为配置项cz的一个取值,Kz为测试样例生成模块为cz生成的值的个数;
4.3对V1,V2,…,Vz,…,VN'取笛卡尔积,得到笛卡尔积VCartesian=V1×V2×…×VN';
4.4测试样例生成模块基于性能测试工具生成测试命令,方法为:采用pair-wise方法对性能测试工具的参数进行抽样,然后将参数输入性能测试工具,输出测试命令,得到测试命令集合B={b1,b2,b3,…,by,…,bY},1≤y≤Y,Y为B中测试命令的个数;
4.5测试样例生成模块生成测试样例集合T,T=B×VCartesian={t1,t2,t3,…,ta,…,tW},1≤a≤W,ta为一个二元组,其中,的含义是:cz的取值为W为T中测试样例的个数,为c1的第u个可能取值,为cz的第h个可能取值,为c8′的第j个可能取值,1≤u≤K1,1≤h≤Kz,1≤j≤KN′,K1、Kz、KN′分别为Spex算法提取到的配置项c1、cz、cN′的可能取值的个数,且均为正整数;将测试样例集合T发送给性能缺陷检测模块;
第五步:性能缺陷检测模块根据T和L检测待测软件可执行文件的性能缺陷:
5.1性能缺陷检测模块执行T中的测试样例,得到测试样例的性能值,方法是:
5.1.1初始化变量a=1;
5.1.2性能缺陷检测模块重复执行每个测试样例A次,令变量repeat=1,A为正整数;
5.1.3性能缺陷检测模块将测试样例ta输入待检测软件,运行待检测软件,记录第repeat次输入ta运行得到的性能值设定检测性能值的默认性能指标为软件数据吞吐量;
5.1.4判定rep...
【专利技术属性】
技术研发人员:李姗姗,廖湘科,王戟,董威,何浩辰,陈振邦,陈立前,贾周阳,王腾,
申请(专利权)人:中国人民解放军国防科技大学,
类型:发明
国别省市:湖南;43
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。