[发明专利]一种基于配置项性能期望的软件性能缺陷检测方法有效
| 申请号: | 202010610996.3 | 申请日: | 2020-06-29 |
| 公开(公告)号: | CN111611177B | 公开(公告)日: | 2023-06-09 |
| 发明(设计)人: | 李姗姗;廖湘科;王戟;董威;何浩辰;陈振邦;陈立前;贾周阳;王腾 | 申请(专利权)人: | 中国人民解放军国防科技大学 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F11/34;G06F18/214 |
| 代理公司: | 湖南企企卫知识产权代理有限公司 43257 | 代理人: | 任合明 |
| 地址: | 410073 湖*** | 国省代码: | 湖南;43 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 配置 性能 期望 软件 缺陷 检测 方法 | ||
1.一种基于配置项性能期望的软件性能缺陷检测方法,其特征在于包括以下步骤:
第一步,构建性能缺陷检测系统,性能缺陷检测系统由配置项期望预测模块、测试样例生成模块、性能缺陷检测模块构成;
配置项期望预测模块是一个加权投票分类器,与测试样例生成模块、性能缺陷检测模块相连,从待检测软件的配置项用户手册读取配置项的描述、取值范围,对待预测配置项的性能期望进行预测,得到配置项的性能期望标签,将配置项的性能期望标签发送给测试样例生成模块和性能缺陷检测模块;
测试样例生成模块与配置项期望预测模块、性能缺陷检测模块相连,从配置项期望预测模块接收配置项的性能期望标签,从待检测软件的测试集读取测试命令,根据配置项的性能期望标签和待检测软件测试集生成测试样例集合T;
性能缺陷检测模块与配置项期望预测模块、测试样例生成模块相连,从测试样例生成模块接收测试样例集合T,从配置项期望预测模块接收配置项的性能期望标签,执行测试样例集合T中测试样例并检测配置项的性能期望标签所对应的期望性能和实际性能是否相符,若不相符则输出待检测软件的性能缺陷;
第二步:读入人工标注期望的配置项和配置项的官方文档描述,训练性能缺陷检测系统的配置项期望预测模块,方法是:
2.1构建训练集,令训练集中共N个配置项,N≥500;
2.2根据N个配置项的官方文档描述,对配置项人工标注其性能期望标签,方法为:根据配置项c的文档描述d,如果调节该配置项的目的是为了开启优化开关,则该配置项的性能期望标签为Label1;如果调节该配置项的目的是为了提升性能牺牲可靠性等非功能需求,则该配置项的性能期望标签为Label2;如果调节该配置项的目是为了分配更多计算机资源,则该配置项的性能期望标签为Label3;如果调节该配置项的目的是为了开启软件额外功能,则该配置项的性能期望标签为Label4;如果调节该配置项与软件性能无关,则该配置项的性能期望标签为Label5;最终得到训练集,记为0≤i1≤N1;0≤i2≤N2;0≤i3≤N3;0≤i4≤N4;0≤i5≤N5,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;若则得到预处理后的为如下形式:POS1,DS1,POS2,DS2,...,简记为转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,100)},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个可能取值,为cN′的第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判定repeat是否等于A,若是,则得到一组关于测试样例ta的性能指标,记为:转4.1.5;否则令repeat=repeat+1,转4.1.3;
5.1.5判定a是否等于W,若是,记输出为Out={[t1,R1],...,[ta,Ra],...,[tW,RW]}其中,二元组[ta,Ra]的第一个元素为测试样例,第二个元素为执行该测试样例A次得到的性能值集合,转5.2;否则令a=a+1,转5.1.2;
5.2性能缺陷检测模块将Out依据测试样例进行分组,得到分组后的测试结果集合G={Group(1,1),Group(1,2),...,Group(1,Y),...,Group(z,y)...,Group(N′,Y)};
5.3性能缺陷检测模块根据配置项集合C的性能期望标签L以及分组后的测试结果集合G,使用假设检验的方法判别待检测软件是否存在缺陷:
5.3.1初始化变量z=1;
5.3.2初始化变量y=1;
5.3.3若Labz=Label1,设定待验假设H0:Ra≤Ra′,其中,cz在ta中的值为0,cz在ta′中的值为1,1≤a′≤W,转5.3.8;
5.3.4若Labz=Label2,设定待验假设H0:Ra≤Ra′,其中,cz在ta中的值大于cz在ta′中的值,转5.3.8;
5.3.5若Labz=Label3,设定待验假设H0:Ra≤Ra′,其中,cz在ta中的值小于cz在ta′中的值,转5.3.8;
5.3.6若Labz=Label4,设定待验假设H0:5·Ra≤Ra′,其中,cz在ta中的值为1,cz在ta′中的值为0,转5.3.8;
5.3.7若Labz=Label5,设定待验假设H0:Ra≠Ra′,转5.3.8;
5.3.8当假设检验结果表明H0被拒绝时即被拒绝概率≥1-β时,表明软件存在一个与配置项cz有关的性能缺陷,且触发该缺陷的测试命令为β为假设检验参数,为小于1的正实数;
5.3.9若y=Y,转5.3.10;否则令y=y+1,转5.3.3;
5.3.10若z=N′,结束检测;否则令z=z+1,转5.3.2。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科技大学,未经中国人民解放军国防科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010610996.3/1.html,转载请声明来源钻瓜专利网。





