软件缺陷检测方法及装置与流程

文档序号:11323128阅读:283来源:国知局
软件缺陷检测方法及装置与流程

本发明涉及计算机技术领域,特别涉及一种软件缺陷检测方法及装置。



背景技术:

随着信息技术的发展,软件复杂程度不断提高、软件规模不断增大,对于软件质量进行预测和控制的难度逐渐提高,软件系统的质量问题极有可能会导致严重后果。良好的软件缺陷控制和预测机制,在软件早期实现对软件缺陷严重程度进行评估,进而采取相应的处理措施,可以帮助企业开发出高质量的软件产品,防止由于软件系统的缺陷而导致严重后果,减少产品生产和维护的成本,增强企业在市场上的竞争力。因此,软件质量越来越受重视,如何分析和控制软件缺陷进而提高软件质量成为当今研究的热点之一。

目前,一种软件缺陷评价方式是软件缺陷严重等级的评价,软件缺陷严重等级的评价主要依据建立软件缺陷等级划分准则,通常将软件缺陷划分为致命缺陷、严重缺陷、一般缺陷和轻微缺陷等,致命缺陷是指测试执行直接导致系统死机、蓝屏、挂起或程序非法退出,另外也可能会引起系统的主要功能或需求没有实现等。严重缺陷是指系统的次要功能点或需求点没有实现,数据丢失或损坏,执行软件主要功能的测试用例导致系统出错,程序无法继续正常执行,程序执行过于缓慢或是占用过大的系统资源。一般缺陷是指软件的实际执行过程与需求有较大的差异,系统运行过程中偶尔(<10%)有出错提示或导致系统运行不正常。轻微缺陷一般指软件的实际执行过程与需求有较小的差异,程序的提示信息描述容易使用户产生混淆。在缺陷等级划分准则基础上,根据执行或运行情况将软件缺陷划分到相应等级,这种评价方法是定性的,存在一定的主观性,易导致缺陷估计结果不准确。

另一种软件缺陷评价方法是软件缺陷预测,是指通过统计学方法对与软件质量有关的数据进行处理从而对软件模块是否存在缺陷进行估计,这样就能在软件开发的早期根据软件的有关数据,对软件是否存在缺陷进行判别。但这种方法的评价结果仅能将软件缺陷划分为有缺陷和无缺陷两个等级,无法对缺陷的严重程度进行定量评价,导致缺陷预测不准确。



技术实现要素:

基于此,有必要针对的软件缺陷预测不准确的问题,提供一种提高软件缺陷预测准确性的软件缺陷检测方法及装置。

一种软件缺陷检测方法,包括如下步骤:

获取待测软件,并提取所述待测软件对应的各度量特征值获得所述待测软件对应的度量特征值向量;

根据缺陷样本软件对应的各缺陷等级分类中的所述缺陷样本软件的度量特征值向量,分别计算所述待测软件对应的度量特征向量到各所述缺陷等级分类的距离;

根据各所述距离,计算所述待测软件对应的缺陷度量值;

根据各所述距离中的最小距离对应的所述缺陷等级分类,对所述待测软件的缺陷度量值进行归一化处理,获得所述待测软件的缺陷检测结果。

本发明还提供一种软件缺陷检测装置,包括:

待测信息获取模块,用于获取待测软件,并提取所述待测软件对应的各度量特征值获得所述待测软件对应的度量特征值向量;

距离计算模块,用于根据缺陷样本软件对应的各缺陷等级分类中的所述缺陷样本软件的度量特征值向量,分别计算所述待测软件对应的度量特征向量到各所述缺陷等级分类的距离;

缺陷度量值计算模块,用于根据各所述距离,计算所述待测软件对应的缺陷度量值;

缺陷检测模块,用于各所述距离中的最小距离对应的所述缺陷等级分类,对所述待测软件的缺陷度量值进行归一化处理,获得所述待测软件的缺陷检测结果。

上述软件缺陷检测方法及装置,首先,获取待测软件,并提取待测软件对应的各度量特征值获得待测软件对应的度量特征值向量,根据缺陷样本软件对应的各缺陷等级分类中的缺陷样本软件的度量特征值向量,分别计算待测软件对应的度量特征向量到各缺陷等级分类的距离,根据各距离,计算待测软件对应的缺陷度量值,确保了缺陷度量值的合理准确性,为待测软件缺陷检测提供数据依据,根据各距离中的最小距离对应的缺陷等级分类,对待测软件的缺陷度量值进行归一化处理,获得待测软件的缺陷检测结果,实现对待测软件缺陷严重程度进行定量评价,能准确反映待测软件缺陷等级水平,值越大,软件缺陷严重程度越高,计算出待测软件的缺陷检测结果,既可以对软件缺陷进行了定量评价,又划分为相应等级,提高缺陷检测结果的准确性。

附图说明

图1为一实施例的软件缺陷检测方法的流程图;

图2为一实施例的软件缺陷检测装置的模块示意图。

具体实施方式

请参阅图1,提供一种实施例的软件缺陷检测方法,包括如下步骤s110至步骤s140:

s110:获取待测软件,并提取待测软件对应的各度量特征获得待测软件对应的度量特征向量。

在本实施例中,上述各度量特征可包括代码长度、注释行数、操作符数、圈复杂度、内聚缺乏度以及继承树的深度等,根据各度量特征可组成度量特征向量。度量特征值即为上述度量特征对应的值,即上述各度量特征值可包括代码长度的值、注释行数的值、操作符数的值、圈复杂度的值、内聚缺乏度的值以及继承树的深度的值等。

可通过对软件的源代码进行静态度量方式获得上述各度量特征值,其中,静态度量方式包括halstead度量、macabe度量和ck度量等。可以理解,通过上述静态度量方式既可对待测软件进行度量也可对缺陷样本软件进行度量。待测软件和缺陷样本软件采用的相同的度量特征,不同点在于度量特征值不同。

s120:根据缺陷样本软件对应的各缺陷等级分类中的缺陷样本软件的度量特征向量,分别计算待测软件对应的度量特征向量到各缺陷等级分类的距离。

在对待测软件进行软件缺陷检测时,需要以根据已知的缺陷样本软件的分布空间进行分析而获得的已知的缺陷样本软件的整体分布情况为依据,即已知的缺陷样本软件的分布情况可为待测软件的缺陷检测提供依据。具体地,可预先获取缺陷样本软件的度量特征值向量以及缺陷样本软件对应的各缺陷等级分类,即在步骤s120之前可预先获取缺陷样本软件的度量特征值向量以及缺陷样本软件对应的各缺陷等级分类,后续需要据此进行距离计算时,可直接采用上述预先获得的缺陷样本软件的度量特征值向量以及缺陷样本软件对应的各缺陷等级分类。

缺陷样本软件的度量特征值向量中包括了缺陷样本软件的各度量特征值,缺陷样本软件的各度量特征与待测软件的上述各度量特征是相同的,各度量特征值可能不同,对于缺陷样本软件,可根据缺陷样本软件的度量特征值向量对各缺陷样本软件进行分类,即可得到缺陷样本软件对应的各缺陷等级分类。在进行软件缺陷检测过程中,可采用缺陷样本软件对应的各缺陷等级分类进行后续操作。具体地,各缺陷等级分类中包括了属于该缺陷等级分类的缺陷样本软件,例如,缺陷样本软件的数量为10,缺陷等级分类的数量为4,包括致命程度分类、严重程度分类、一般程度分类以及轻微程度分类,根据缺陷样本软件的度量特征值向量可将上述10个缺陷样本软件进行分类,即可将上述10个缺陷样本软件分类到上述4个缺陷等级分类中,每个缺陷等级分类中包括了属于该缺陷等级分类的缺陷样本软件,比如,缺陷样本软件a和b属于严重程度分类,则缺陷等级分类中的严重程度分类中包括了缺陷样本软件a和b。

在获知缺陷样本软件的各缺陷等级分类之后,即可知道各缺陷等级分类种所包括的缺陷软件样本有哪些,从而可知各缺陷等级分类中的缺陷样本软件的度量特征向量,可根据各缺陷等级分类中的缺陷样本软件的度量特征向量,分别计算待测软件对应的度量特征向量到各缺陷等级分类的距离,即可知待测软件到各缺陷等级分类的距离。

s130:根据各距离,计算待测软件对应的缺陷度量值。

在计算待测软件对应的度量特征向量到各缺陷等级分类的距离之后,需要对待测软件的缺陷程度进行评估,在本实施例中,根据待测软件到各缺陷等级分类的距离,计算待测软件对应的缺陷度量值。缺陷度量值反映待测软件的缺陷程度,缺陷度量值越大表示该待测软件缺陷越严重,反之越不严重。

s140:根据各距离中的最小距离对应的缺陷等级分类,对待测软件的缺陷度量值进行归一化处理,获得待测软件的缺陷检测结果。

由于各距离中的最小距离对应的缺陷等级分类会对软件实际的缺陷严重程度有影响,为了进一步提高软件缺陷检测准确性,还需要根据待测软件到缺陷等级分类的最小距离对应的缺陷等级分类,对待测软件的缺陷度量值进行归一化处理,以获得能较为准确的缺陷检测结果。

上述软件缺陷检测方法,首先,获取待测软件,并提取待测软件对应的各度量特征值获得待测软件对应的度量特征值向量,根据缺陷样本软件对应的各缺陷等级分类中的缺陷样本软件的度量特征值向量,分别计算待测软件对应的度量特征向量到各缺陷等级分类的距离,根据各距离,计算待测软件对应的缺陷度量值,确保了缺陷度量值的合理准确性,为待测软件缺陷检测提供数据依据,根据各距离中的最小距离对应的缺陷等级分类,对待测软件的缺陷度量值进行归一化处理,获得待测软件的缺陷检测结果,实现对待测软件缺陷严重程度进行定量评价,能准确反映待测软件缺陷等级水平,值越大,软件缺陷严重程度越高,计算出待测软件的缺陷检测结果,既可以对软件缺陷进行了定量评价,又划分为相应等级,提高缺陷检测结果的准确性。

在其中一个实施例中,距离为马氏距离。马氏距离表示数据的协方差距离,它是一种有效的计算两个未知样本集的相似度的方法。在本实施例中,分别通过计算待测软件对应的度量特征向量到各缺陷等级分类的马氏距离,即可知道待测软件的度量特征向量分别与各缺陷等级分类的相似度。

具体地,例如,待测软件的度量特征值向量为x,缺陷等级分类的数量为4,包括致命程度分类、严重程度分类、一般程度分类以及轻微程度分类,计算待测软件的度量特征值向量x与缺陷等级分类的马氏距离的公式为:

从而,对上述公式转换,上述马氏距离也通过计算。

其中,dk(x,σk)为待测软件的度量特征值向量x与第k个缺陷子集的马氏距离(即与第k个缺陷等级分类的马氏距离),λk=diag[λk1,...,λkd],λkj(j=1,...,d)是第k个缺陷子集的协方差矩阵σk的第j个特征值,k=1,...,classnum,classnum为缺陷等级分类的数量即缺陷子集的数量,在本实施例中,classnum可以优选为4,d为度量特征的数量。λk为由λk1,...,λkd组成的矩阵,为λk的逆矩阵,φk=[φk1,...,φkd],φkj(j=1,...,d)是第k个缺陷子集的协方差矩阵σk的第j个特征值λkj对应的特征向量,为φkj的转置矩阵,φk为由φk1,...,φkd组成的矩阵,即第k个缺陷子集的标准正交,为第k个缺陷子集中包括的缺陷样本软件的度量特征均值向量。

对于缺陷样本软件i,i=1,2,...,n,n为缺陷样本软件的数量,对缺陷样本软件的源代码进行静态度量,每个缺陷样本软件可对应得到d个度量特征值,并根据d个度量特征值构成每个缺陷样本软件的度量特征值向量。

根据缺陷样本软件的缺陷等级,将其划分为四个缺陷子集(即四个缺陷等级分类):

1)致命等级子集(致命程度分类即第1个缺陷子集)可表示为{x1h1|h1=1,2,...,n1}。

2)严重等级子集(严重程度分类即第2个缺陷子集)可表示为{x2h2|h2=1,2,...,n2}。

3)一般等级子集(一般程度分类即第3个缺陷子集)可表示为{x4h3|h3=1,2,...,n3}。

4)轻微等级子集(轻微程度分类即第4个缺陷子集)可表示为{x4h4|h4=1,2,...,n4}。

其中,x1h1为第1个缺陷子集中第h1个缺陷样本软件的度量特征值向量,x2h2为第1个缺陷子集中第h2个缺陷样本软件的度量特征值向量,x3h3为第1个缺陷子集中第h3个缺陷样本软件的度量特征值向量,x4h4为第1个缺陷子集中第h4个缺陷样本软件的度量特征值向量,n1+n2+n3+n4=n,n1为第1个缺陷子集中包括的缺陷样本软件的数量,n2为第2个缺陷子集中包括的缺陷样本软件的数量,n3为第3个缺陷子集中包括的缺陷样本软件的数量,n4为第4个缺陷子集中包括的缺陷样本软件的数量。

(1)为上述第k个缺陷子集(缺陷等级分类)中包括的缺陷样本软件的度量特征均值向量,第k个缺陷子集中包括的缺陷样本软件的数量为nk,的计算公式为:

其中,xkj为第k个缺陷子集中第j个缺陷样本软件的度量特征值向量,针对每个缺陷子集,对应的j为大于或等于1,且小于或等于该缺陷子集中所包含的缺陷样本软件的数量的整数。

(2)计算第k个缺陷子集的协方差矩阵σk,计算公式如下

(3)对第k个缺陷子集的协方差矩阵σk进行特征值分解:

在其中一个实施例中,缺陷等级分类包括致命程度分类、严重程度分类、一般程度分类以及轻微程度分类。

根据各距离中的最小距离对应的缺陷等级分类,对待测软件的缺陷度量值进行归一化处理,获得待测软件的缺陷检测结果的步骤s150包括:

当最小距离对应的缺陷等级分类为致命程度分类时,根据第一预设归一化规则对待测软件的缺陷度量值进行归一化处理,获得待测软件的缺陷检测结果。

当最小距离对应的缺陷等级分类为严重程度分类时,根据第二预设归一化规则对待测软件的缺陷度量值进行归一化处理,获得待测软件的缺陷检测结果。

当最小距离对应的缺陷等级分类为一般程度分类时,根据第三预设归一化规则对待测软件的缺陷度量值进行归一化处理,获得待测软件的缺陷检测结果。

当最小距离对应的缺陷等级分类为轻微程度分类时,根据第四预设归一化规则对待测软件的缺陷度量值进行归一化处理,获得待测软件的缺陷检测结果。

由于单纯地依靠最小距离是无法得到准确缺陷检测结果,但最小距离又对缺陷检测结果有影响,从而,根据各距离中的最小距离对应的缺陷等级分类,对待测软件的缺陷度量值进行归一化处理,可获得准确待测软件的缺陷检测结果。比如,待测软件分别与上述致命程度分类、严重程度分类、一般程度分类以及轻微程度分类的距离是1,2,3以及4,则最小距离为与致命程度分类的距离,一般可认为待测软件的缺陷检测结果属于致命程度分类,即待测软件的缺陷检测结果为致命程度,最小距离(dmin)为1。如果另一个待测软件分别与上述致命程度分类、严重程度分类、一般程度分类以及轻微程度分类的距离是2,1,3以及4,则最小距离为与严重程度分类的距离,一般可认为待测软件的缺陷检测结果属于严重程度分类,即待测软件的缺陷检测结果为严重程度,最小距离还是为1。也就是说,上述两个待测软件的缺陷实际上属于不同缺陷等级分类,但最小距离相等,无法比较,所以需要换算(归一化处理),可将待测软件的缺陷度量值进行归一化处理,获得准确待测软件的缺陷检测结果。

具体地,上述根据各距离中的最小距离对应的缺陷等级分类,对待测软件的缺陷度量值进行归一化处理,获得待测软件的缺陷检测结果level(x)的公式为:

其中,c(x)为待测软件对应的缺陷度量值,dmin∈致命程度表示待测软件到各缺陷等级分类的各距离中最小距离对应的缺陷等级分类为致命程度分类,dmin∈严重程度表示待测软件到各缺陷等级分类的各距离中最小距离对应的缺陷等级分类为严重程度分类,dmin∈一般程度表示待测软件到各缺陷等级分类的各距离中最小距离对应的缺陷等级分类为一般程度分类,dmin∈轻微程度表示待测软件到各缺陷等级分类的各距离中最小距离对应的缺陷等级分类为轻微程度分类。

根据上式计算出待测软件的缺陷检测结果,既可以对软件缺陷进行了定量评价,又划分为相应等级。可以看出,该方法计算出的待测软件的缺陷检测结果在0到1之间,分值越大,软件缺陷严重程度越高。

在其中一个实施例中,根据各距离,计算待测软件对应的缺陷度量值的步骤包括:根据预设参数因子的值以及各距离,计算待测软件对应的缺陷度量值。

在计算待测软件对应的缺陷度量值时,还需要依据预设参数因子的值,预设参数因子的值可在计算待测软件对应的缺陷度量值之前已通过计算得到,计算缺陷度量值时直接采用预设参数因子的值即可,然后根据预设参数因子的值以及各距离,计算待测软件对应的缺陷度量值。

具体地,计算待测软件对应的缺陷度量值c(x)的公式为:

其中,d0为预设参数因子,di为待测软件到第i个缺陷子集的马氏距离,dj为待测软件到第j个缺陷子集的马氏距离,classnum为缺陷等级分类的数量即总分类数。

在其中一个实施例中,预设参数因子的值通过以下方式获得:

根据预设参数因子以及各距离中的最大距离,获得待测软件到最小距离的缺陷等级分类的第一置信度。

根据预设参数因子、最小距离以及各缺陷等级分类的总分类数,获得待测软件到最大距离的缺陷等级分类的第二置信度。

根据第一置信度需满足小于或等于第一预设阈值以及第二置信度需满足大于或等于第二预设阈值的条件,计算预设参数因子的值。

进行缺陷度量值的计算时,需要采用预设参数因子的值,在本实施例中,首先,根据预设参数因子以及各距离中的最大距离可获得待测软件到最小距离的缺陷等级分类的第一置信度的表达式,此时,第一置信度是关于预设参数因子的函数,根据预设参数因子、最小距离以及各缺陷等级分类的总分类数可获得待测软件到最大距离的缺陷等级分类的第二置信度的表达式,此时,第二置信度是关于预设参数因子的函数,预设参数因子的值还未知,本申请即是计算预设参数因子的值的过程。在获得第一置信度的表达式和第二置信度的表达式后,根据第一置信度(即第一置信度的表达式)需满足小于或等于第一预设阈值以及第二置信度(即第二置信度的表达式)需满足大于或等于第二预设阈值的条件,计算预设参数因子的值。由于此时预设参数因子此时是未知的,根据上述需要满足的条件,可计算出预设参数因子的值以获得预设参数因子的值,后续获取预设参数因子的值即可。

具体地,第一置信度需满足小于或等于第一预设阈值以及第二置信度需满足大于或等于第二预设阈值的条件的表达式如下:

其中,第一置信度对应第二置信度对应dmin为最小距离,dmax为最大距离,第一预设阈值为10-10,第二预设阈值为0.5,d0=2m,通过上述条件可计算出m,从而可计算出预设参数因子d0的值。

请参阅图2,本发明还提供一种实施例的软件缺陷检测装置,包括:

待测信息获取模块210,用于获取待测软件,并提取待测软件对应的各度量特征值获得待测软件对应的度量特征值向量;

距离计算模块220,用于根据缺陷样本软件对应的各缺陷等级分类中的缺陷样本软件的度量特征值向量,分别计算待测软件对应的度量特征向量到各缺陷等级分类的距离;

缺陷度量值计算模块230,用于根据各距离,计算待测软件对应的缺陷度量值;

缺陷检测模块240,用于各距离中的最小距离对应的缺陷等级分类,对待测软件的缺陷度量值进行归一化处理,获得待测软件的缺陷检测结果。

上述软件缺陷检测装置,首先,获取待测软件,并提取待测软件对应的各度量特征值获得待测软件对应的度量特征值向量,根据缺陷样本软件对应的各缺陷等级分类中的缺陷样本软件的度量特征值向量,分别计算待测软件对应的度量特征向量到各缺陷等级分类的距离,根据各距离,计算待测软件对应的缺陷度量值,确保了缺陷度量值的合理准确性,为待测软件缺陷检测提供数据依据,根据各距离中的最小距离对应的缺陷等级分类,对待测软件的缺陷度量值进行归一化处理,获得待测软件的缺陷检测结果,实现对待测软件缺陷严重程度进行定量评价,能准确反映待测软件缺陷等级水平,值越大,软件缺陷严重程度越高,计算出待测软件的缺陷检测结果,既可以对软件缺陷进行了定量评价,又划分为相应等级,提高缺陷检测结果的准确性。

在其中一个实施例中,距离为马氏距离。

在其中一个实施例中,缺陷等级分类包括致命程度分类、严重程度分类、一般程度分类以及轻微程度分类;

上述缺陷检测模块240包括:

第一缺陷检测模块,用于当最小距离对应的缺陷等级分类为致命程度分类时,根据第一预设归一化规则对待测软件的缺陷度量值进行归一化处理,获得待测软件的缺陷检测结果;

第二缺陷检测模块,用于当最小距离对应的缺陷等级分类为严重程度分类时,根据第二预设归一化规则对待测软件的缺陷度量值进行归一化处理,获得待测软件的缺陷检测结果;

第三缺陷检测模块,用于当最小距离对应的缺陷等级分类为一般程度分类时,根据第三预设归一化规则对待测软件的缺陷度量值进行归一化处理,获得待测软件的缺陷检测结果;

第四缺陷检测模块,用于当最小距离对应的缺陷等级分类为轻微程度分类时,根据第四预设归一化规则对待测软件的缺陷度量值进行归一化处理,获得待测软件的缺陷检测结果。

在其中一个实施例中,上述缺陷度量值计算模块,具体用于根据预设参数因子的值以及各距离,计算待测软件对应的缺陷度量值。

在其中一个实施例中,软件缺陷检测装置,还包括:

第一置信度获取模块,用于根据预设参数因子以及各距离中的最大距离,获得待测软件到最小距离的缺陷等级分类的第一置信度;

第二置信度获取模块,用于根据预设参数因子、最小距离以及各缺陷等级分类的总分类数,获得待测软件到最大距离的缺陷等级分类的第二置信度;

预设参数因子的值计算模块,用于根据第一置信度需满足小于或等于第一预设阈值以及第二置信度需满足大于或等于第二预设阈值的条件,计算预设参数因子的值。

上述软件缺陷检测装置为实现上述软件缺陷检测方法的装置,技术特征一一对应,在此不再赘述。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1