一种基于混合测试的软件可靠性评估方法及其装置转让专利

申请号 : CN201110006751.0

文献号 : CN102063375B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吴玉美王栓奇陆民燕

申请人 : 北京航空航天大学

摘要 :

本发明公开了一种基于混合测试的软件可靠性评估方法及其装置,属于软件可靠性工程领域,所述方法通过确定被测软件的缺陷失效率分布,得到缺陷失效率分布函数和密度函数;然后根据次序统计量确定次序缺陷失效率的密度函数、次序缺陷失效率期望值和软件失效率期望值;对被测软件进行混合测试,利用混合测试结果数据,确定分布参数。本发明充分结合并利用运行测试和针对性测试的优点,克服传统可靠性测试忽视软件结构内部信息、测试用例多、测试时间长、资源消耗大等缺点,缩短了软件可靠性测试的时间,加快了软件缺陷暴露速度及软件可靠性测试的进程,同时也大大减少了测试费用和资源消耗。

权利要求 :

1.一种基于混合测试的软件可靠性评估方法,其特征在于:

步骤一、根据被测软件中的缺陷个数n,n为要估计的未知参数,确定被测软件的缺陷失效率分布,得到缺陷失效率的分布函数和缺陷失效率的密度函数;

步骤二、根据次序统计量,确定次序缺陷失效率的密度函数;

所述的次序缺陷失效率是指将被测软件的缺陷失效率按照从小到大的顺序排列之后的缺陷失效率;假设被测软件中所有缺陷的缺陷失效率服从同一种分布,将缺陷失效率按照从小到大的顺序排列,记为次序缺陷失效率,由次序统计量,得到从小到大排列后的第r个次序缺陷失效率的密度函数,r=1,2,…,n;

步骤三、确定被测软件的次序缺陷失效率期望值和软件失效率期望值;

步骤四、对被测软件进行混合测试,得到缺陷失效率数据和软件失效率数据;所述的混合测试是通过如下步骤实现的:(a)分析软件功能信息和结构信息来选定具体的针对性测试方法,并根据选定的针对性测试方法生成针对性测试用例;

(b)根据需要搭建针对性测试环境;

(c)在针对性测试环境上执行步骤(a)中生成的针对性测试用例,并收集记录缺陷失效率数据ri,i=1,2,…,m,m为针对性测试过程缺陷个数;

(d)判断上述针对性测试过程是否满足相应的规范或准则,如果是,则进入步骤(e),否则根据步骤(a)中所选定的针对性测试方法重新生成针对性测试用例,并返回步骤(c);

(e)停止针对性测试,得到一组缺陷失效率数据{ri};实施基于MUSA操作剖面的运行测试,分析被测软件的任务书和需求分析文档,根据软件功能和使用信息,构造MUSA操作剖面;

(f)根据步骤(e)中构造的MUSA操作剖面进行随机抽样生成可靠性测试用例:首先确定被测软件的操作中每个输入变量的具体值,通过抽取操作和确定各输入变量取值两个步骤的抽样,生成可靠性测试用例;

(g)根据被测软件特点和可靠性测试要求搭建可靠性测试环境;

(h)在可靠性测试环境中执行步骤(f)中可靠性测试用例,并收集记录失效数据,得到软件失效率数据pi,i=m+1,…,k,k为针对性测试和运行测试过程中的已发现缺陷数总和;

(i)判断此时被测软件是否满足规定的可靠性要求,如果是,则进入步骤(j),否则根据步骤(e)中构造的MUSA操作剖面进行随机抽样重新生成可靠性测试用例,并返回步骤(h);

(j)停止运行测试过程,得到一组软件失效率数据{pi};从而完成整个混合测试过程;

步骤五,利用步骤四中的混合测试结果数据,对分布参数进行最小二乘估计,确定分布参数,以每个缺陷失效率数据作为输入,就得到软件失效率,从而对软件可靠性进行评估;以正态分布参数的确定为例,所述分布参数是通过如下步骤实现的:(1)输入针对性测试阶段的一组缺陷失效率数据{ri}和运行测试阶段的一组软件失效率数据{pi},输入数据的个数为针对性测试过程发现缺陷个数m个和运行测试过程发现缺陷个数之和,令两种缺陷个数之和为已发现缺陷数,记为k,m≤k,则运行测试过程发现缺陷数为k-m个;

(2)根据最小二乘法,并结合次序缺陷失效率的期望值和软件失效率的期望值,得到最小二乘式:式中,E(λi)为软件失效率的期望值,φj:n软件失效率,fj:n(φj:n)次序缺陷失效率的密度函数,φi:n次序缺陷失效率,fi:n(φi:n)软件失效率的密度函数;E(φi:n)为次序缺陷失效率φi:n的期望值;

(3)对最小二乘式(10)分别关于σ和μ求偏导,并对偏导式进行化简,得到含有未知参数n、σ和μ的式(11)和式(12):(4)联立步骤(3)中的式(11)和式(12),并利用尝试法先给定n值,从而得到关于σ和μ的方程组,求解该方程组得到σ和μ的估计值μ′和σ′,并对软件初始缺陷个数n进行穷举得到最小二乘式的最小值来确定估计值n′;

(5)软件失效率预计:将上面步骤(4)中得到的估计值μ′、σ′和n′代入被测软件的软件失效率的期望值公式:其中E(φr:n)为次序缺陷失效率φr:n的期望值,f(φr:n)、F(φr:n)分别为次序缺陷失效率φr:n的密度函数和分布函数,求得软件失效率计算值λ:其中,λk为测试停止时的软件失效率, 是将参数估计值μ′、σ′和

n′代入F(φj:n),f(φj:n)后的式子。

说明书 :

一种基于混合测试的软件可靠性评估方法及其装置

技术领域

[0001] 本发明涉及软件可靠性工程领域,尤其涉及软件可靠性测试和评估领域,具体地说,是指一种基于混合测试的软件可靠性评估方法及其装置。

背景技术

[0002] 软件可靠性评估技术作为评价软件质量和可靠性的重要手段,正成为国内外软件可靠性工程的主要研究方向之一。为了满足用户对软件可靠性要求、评估软件可靠性水平及验证软件产品是否达到可靠性要求,软件可靠性测试是一种有效的途径。它是随机测试中的一种,其主要特征是按照用户实际使用软件的方式来测试软件。它一方面继承了软件测试的思想,另一方面又有自身的特点,特别是在测试机理上与一般软件测试是不同的。
[0003] 当前有两种主要的传统的软件可靠性测试及评估方法,一种是Richard C.Linger1988年在其论文《A case study in cleanroom software engineering》中提出的“基于使用模型的统计测试方法”,其中使用模型包括马尔可夫模型和形式化的语法,根据这些使用模型来产生测试用例(软件所有可能输入的一个子集)并评估和度量软件可靠性;另外一种是AT&T贝尔实验室的John D.Musa 1993年在其论文《Operational profiles in software reliability engineering》提出的“基于操作剖面的可靠性测试方法”,其中操作剖面即用户使用软件的统计规律,其构造流程如图1所示,首先确定操作模式和操作的发起者,然后选择表格表示法或图形表示法对每个操作发起者创建操作表,最后确定单个操作或属性值的出现率,将总的发生概率分解到每个操作上,最后生成MUSA操作剖面,该方法是根据操作剖面抽样随机生成测试数据。上述两种方法的基本思想都是基于统计学的基本原理,即根据软件实际使用情况的统计规律的描述,对软件进行随机测试,利用测试结果进行软件可靠性评估。该特点决定了这一过程时间长、费用高、资源消耗大,因此如何加快软件可靠性测试,及提高软件可靠性评估的效率和准确性,是亟待突破的技术难关。
[0004] 另外目前大部分软件在发布之前都会根据被测软件的特点和其所要达到的要求或指标(主要是与缺陷相关的要求或指标)进行针对性测试,如针对覆盖率要求的各种覆盖率测试、针对功能实现的功能测试等等,它们在发现软件缺陷提高软件质量方面具有明显的效果。但是针对性测试中的缺陷信息并没有用于对软件可靠性的评估中,软件可靠性评估仍然是通过“从头开始的”软件可靠性测试和重新收集失效数据等方面来进行。因此如何充分、综合地利用这些已有的测试信息综合到软件可靠性评估过程中,并通过其实现装置提高软件可靠性评估的效率也已成为当务之急。

发明内容

[0005] 本发明为了解决现有技术中存在的软件可靠性测试效率低的问题,提供了一种基于混合测试的软件可靠性评估方法及其装置,所述的方法是基于针对性测试与运行测试相结合的混合两阶段可靠性加速测试方法,同时结合次序统计量理论,提出了基于混合测试的软件可靠性次序统计量模型,充分利用针对性测试以及运行测试的测试数据,并给出软件可靠性评估,从而加速软件可靠性测试过程,提高软件可靠性测试效率。
[0006] 本发明从软件可靠性评估方法数据输入的角度,对传统软件可靠性测试方法进行了改进,采用由针对性测试向运行测试过渡的混合测试方法。这种混合测试方法中,充分利用了针对性测试中收集到的缺陷信息,通过面向缺陷的针对性测试中发现的缺陷被不断剔除,软件的可靠性得到了增长。当针对性测试基本结束后,通常这个时候软件可靠性还没有达到规定的可靠性要求,因此还要继续转入软件可靠性测试,直到满足规定的可靠性要求。其中针对性测试采取的是基于覆盖率的白盒测试,运行测试为黑盒测试,所以本发明提供的这种混合测试从某种程度上来说可以看作是一种灰盒测试方法。
[0007] 本发明提供的基于混合测试的软件可靠性评估方法的原理为:
[0008] 假设被测软件中有n个缺陷,其缺陷失效率分别为φ1,φ2,…,φn,将缺陷失效率按照从小到大的顺序排列,记为次序缺陷失效率:φ1:n,φ2:n,…,φn:n。假设混合测试过程中共发现k个缺陷,将这k个缺陷按照缺陷失效率从大到小的顺序排列,并将排序好的缺陷失效率依次记为ψi(i=1,2,…,k)。根据测试的顺序特性,可以认为这k个缺陷是n个缺陷中失效率最大的前k个缺陷,因此有如下对应关系:ψi=φ(n+1-i):n。
[0009] 将剩余n-k个缺陷的缺陷失效率按照从大到小的顺序排列,记为ψj(j=k+1,…,n)。则测试停止时的软件失效率λk可以表示为:
[0010]
[0011] 假设被测软件中所有缺陷的缺陷失效率服从同一种分布,其密度函数为f(φ),其分布函数为F(φ),则根据次序统计量的特性,从小到大排序后的次序缺陷失效率φr:n的密度函数fr:n(φr:n)为:
[0012]
[0013] 式中,r=1,2,…,n,F(φr:n)为次序缺陷失效率φr:n的分布函数。
[0014] 因此,次序缺陷失效率φr:n的期望值E(φr:n)为:
[0015]
[0016] 由公式(1)和公式(3)可以得到,当测试停止时,软件失效率λk的期望值E(λk)为:
[0017]
[0018] 式中,E(φj:n)为次序缺陷失效率φj:n的期望值,fj:n(φj:n)为次序缺陷失效率φj:n的密度函数。
[0019] 因此,只要结合缺陷失效率分布形式的研究成果,即确定缺陷失效率密度函数f(φ)的具体形式,将其带入到上述(2)~(4)式,并利用混合测试失效数据对缺陷失效率密度函数f(φ)的参数进行最小二乘估计,即可获得基于次序统计量的软件可靠性评估结果。
[0020] 本发明提供的基于混合测试的软件可靠性评估方法具体通过如下步骤实现:
[0021] 步骤一、确定被测软件的缺陷失效率分布,得到缺陷失效率分布函数和密度函数。
[0022] 步骤二、根据次序统计量,确定次序缺陷失效率的密度函数。
[0023] 步骤三、确定被测软件的次序缺陷失效率期望值和软件失效率期望值。
[0024] 步骤四、对被测软件进行混合测试,得到缺陷失效率数据和软件失效率数据。
[0025] 步骤五、利用步骤四中的混合测试结果数据,对分布参数进行最小二乘估计,确定分布参数。
[0026] 本发明还提供一种软件可靠性评估装置,它是本发明中软件可靠性评估方法的实现装置,它能够读取混合测试中收集到的失效数据(包括被测软件的缺陷失效率数据和软件失效率数据),按照本发明中软件可靠性评估方法的具体算法,自动有效地表示出次序缺陷失效率密度函数并计算得出缺陷失效率期望和软件失效率期望表达式,接着对缺陷失效率分布函数中的参数进行最小二乘估计,最后得出软件失效率预计并进行相应输出。所述的实现装置具体包括:测试数据输入模块、数学计算模块、表达式预处理模块、参数估计模块和软件失效率预计及输出模块。所述的测试数据输入模块用于读取软件失效率数据和缺陷失效率数据。所述的数学计算模块包括积分子模块和求导子模块。积分子模块调整精度计算符号表达式的定积分,求导子模块调整精度计算符号表达式的导数。所述的表达式预处理模块具有两个功能:
[0027] (1)根据用户选择的失效率分布类型,读入失效率分布函数存储文件中的相应失效率分布函数,计算出次序缺陷失效率密度函数符号表达式;
[0028] (2)调用积分子模块并利用次序缺陷失效率密度函数符号表达式计算得出缺陷失效率期望及软件失效率期望符号表达式;
[0029] 所述的参数估计模块采用最小二乘法估计参数值;所述的软件失效率预计及输出模块调用参数估计模块得到的模型参数估计值,代入到表达式预处理模块中的软件失效率期望符号表达式,进而预计出软件失效率,并输出相应的评估结果。
[0030] 本发明与现有技术相比,具有明显的优势和有益效果:
[0031] (1)本发明提出的软件可靠性评估方法,是针对混合两阶段测试的软件可靠性加速测试过程的,它可以充分结合并利用运行测试(也称传统可靠性测试)和针对性测试的优点,克服传统可靠性测试忽视软件结构内部信息、测试用例多、测试时间长、资源消耗大等缺点,缩短了软件可靠性测试的时间,加快了软件缺陷暴露速度及软件可靠性测试的进程,同时也大大减少了测试费用和资源消耗。
[0032] (2)本发明以可靠性评估理论为基础,利用次序统计量,构造一种基于混合测试的软件可靠性评估方法,它有简洁的形式,明确的意义,不需要通常可靠性评估方法所要求的很强的分布假设,评估结果准确,同时有效地屏蔽了数据噪声,稳定性更强。

附图说明

[0033] 图1为现有技术中MUSA操作剖面生成示意图;
[0034] 图2为本发明的可靠性评估方法流程示意图;
[0035] 图3为本发明中混合测试实施示意图;
[0036] 图4为本发明的可靠性评估方法的实现装置示意图。

具体实施方式

[0037] 以下结合附图和实施例对本发明进行详细说明,应当理解,此处所描述的实施例仅用于说明和解释本发明,并不用于限定本发明。
[0038] 本发明提供一种基于混合测试的软件可靠性评估方法及其实现装置,所述的方法以可靠性评估理论为基础,利用次序统计量,对被测软件的缺陷失效率、期望值和方差进行估计,得到软件可靠性估计,流程图如图2所示,具体步骤如下:
[0039] 步骤一、确定被测软件的缺陷失效率分布,得到缺陷失效率的分布函数和密度函数。
[0040] 以对数正态分布为例,设被测软件中的缺陷个数为n,则n为要估计的未知参数,采用对数正态分布表示每个缺陷的缺陷失效率φi(i=1,2,…,n)分布函数为:
[0041]
[0042] 则缺陷失效率φi的密度函数为:
[0043]
[0044] 其中μ和σ是待估计的分布参数,分别为缺陷失效率φi的均值和方差。
[0045] 步骤二、根据次序统计量,确定次序缺陷失效率密度函数。
[0046] 假设被测软件中所有缺陷的缺陷失效率服从同一种分布,将缺陷失效率φi按照从小到大的顺序排列,记为次序缺陷失效率φr:n,即φ1:n,φ2:n,…,φn:n,由次序统计量的知识可知,从小到大排列后的第r(r=1,2,…,n)个次序缺陷失效率φr:n的密度函数为:
[0047]
[0048] 将上面公式(5)和公式(6)代入公式(7)得到对数正态分布下具体的次序缺陷失效率的密度函数。
[0049] 步骤三、确定被测软件的次序缺陷失效率期望值和软件失效率期望值。
[0050] 每个缺陷的缺陷失效率用φ1,φ2,…,φn表示,若把它们按照从小到大的顺序排列并记为次序缺陷失效率:φ1:n,φ2:n,…,φn:n,将公式(7)代入公式(3)得到次序缺陷失效率φr:n的期望值:
[0051]
[0052] 其中r=1,2,…,n。
[0053] 结合公式(8)计算第i个缺陷暴露时被测软件的软件失效率的期望值:
[0054]
[0055] 步骤四、对被测软件进行混合测试,得到缺陷失效率数据和软件失效率数据。
[0056] 图3中为本发明中的混合测试方法实施示意图,通过在缺陷问题较多的测试前期首先执行针对性测试,旨在发现软件缺陷的针对性测试策略使得被测软件大部分常用功能和模块中的潜在缺陷得以暴露并剔除,同时被测软件的可靠性得到增长;当测试过程经过一段时间后会进入饱和状态,即此时软件的覆盖率足够大时,软件的可靠性增长将很难实现,这时依据相应的规范或准则将测试过程转入到运行测试即传统可靠性测试,由于考虑了前一阶段针对性测试实现的软件可靠性增长,则运行测试阶段中可以大量减少可靠性测试用例的执行个数,同时整个测试的时间会缩短许多,测试效率得到了提高。具体混合测试实现步骤如下:
[0057] (a)分析被测软件的功能信息和结构信息等来选定具体的针对性测试方法,如功能测试或者覆盖测试,并根据所选定的测试方法生成针对性测试用例;
[0058] (b)根据需要搭建针对性测试环境;
[0059] (c)在针对性测试环境上执行步骤a中生成的针对性测试用例,并收集记录缺陷失效率数据ri,i=1,2,…,m;
[0060] (d)判断上述针对性测试过程是否满足相应的规范或准则,例如对于覆盖测试可以选定覆盖率过渡准则或Extend-tagging过渡准则,如果是,则进入步骤(e),否则根据所选定的测试方法重新生成针对性测试用例,并返回步骤(c);
[0061] (e)停止针对性测试,得到一组缺陷失效率数据{ri};实施基于MUSA操作剖面的运行测试(也叫可靠性增长测试),分析被测软件的任务书、需求分析等文档,根据软件功能和使用信息,构造MUSA操作剖面;
[0062] (f)根据步骤e中构造的MUSA操作剖面进行随机抽样生成可靠性测试用例,具体过程为:首先确定被测软件的操作中每个输入变量的具体值,通过抽取操作和确定各输入变量取值两个步骤的抽样,生成可靠性测试用例;
[0063] (g)根据被测软件特点和可靠性测试要求搭建可靠性测试环境;
[0064] (h)在可靠性测试环境中执行步骤(f)中生成的可靠性测试用例,并收集记录失效数据,利用公式(1)计算得到软件失效率数据ri,i=m+1,…,k;
[0065] (i)判断此时被测软件是否满足规定的可靠性要求,如果是,则进入步骤(j),否则根据步骤e中构造的MUSA操作剖面进行随机抽样重新生成可靠性测试用例,并返回步骤(h);
[0066] (j)停止运行测试过程,得到一组缺陷失效率数据{pi};从而完成整个混合测试过程。步骤五,利用步骤四中的混合测试数据,对分布参数进行最小二乘估计。对于正态分布函数,所述的分布参数为n、μ和σ,所以最小二乘估计的具体步骤如下:
[0067] (a)输入针对性测试阶段的缺陷失效率数据{ri}和运行测试阶段的软件失效率数据{pi},由输入数据的个数可知针对性测试过程发现缺陷个数m个和运行测试过程发现缺陷数,两种失效率数据之和为已发现缺陷数,记为k(m≤k),则运行测试过程发现缺陷数为k-m个;
[0068] (b)根据最小二乘法并结合公式(8)和(9)得到最小二乘式:
[0069]
[0070]
[0071] 式中,φj:n软件失效率,fj:n(φj:n)次序缺陷失效率的密度函数,φi:n次序缺陷失效率,fi:n(φi:n)软件失效率的密度函数;
[0072] (c)对最小二乘式(10)分别关于σ和μ求偏导,并对偏导式进行化简,得到含有未知参数n、σ和μ的式(11)和式(12):
[0073]
[0074]
[0075]
[0076]
[0077] (d)联立步骤(c)中的式(11)和式(12),并利用尝试法先给定n值,从而得到关于σ和μ的方程组,求解该方程组得到σ和μ的估计值μ′和σ′,并对软件初始缺陷个数n进行穷举得到最小二乘式的最小值来确定估计值n′;
[0078] (e)软件失效率预计。将上面步骤(d)中得到的估计值μ′、σ′和n′代入步骤三中的公式
[0079] (9)便可求得软件失效率λ:
[0080]
[0081] 其中 是将参数估计值μ′、σ′和n′代入F(φj:n),f(φj:n)后的式子。
[0082] 本发明还提供一种基于混合测试的软件可靠性评估方法的实现装置,如图4为该装置的示意图,该装置是在Matlab平台中实现的,具体包括:测试数据输入模块1、数学计算模块2、表达式预处理模块3、参数估计模块4和软件失效率预计及输出模块5。
[0083] 所述的测试数据输入模块1使用Matlab中文件操作函数读取混合测试失效数据文本文件中的运行测试阶段的软件失效率数据和针对性测试阶段的缺陷失效率数据。
[0084] 所述的数学计算模块2包括积分子模块201和求导子模块202。由于本发明中软件可靠性评估方法的计算复杂性,若使用Matlab自带的积分求导函数有可能会导致后面计算溢出,本装置根据数值计算方法分别计算符号表达式的积分和导数,具体有积分子模块201调整精度计算符号表达式的定积分,求导子模块202调整精度计算符号表达式的导数。
[0085] 所述的表达式预处理模块3具有两个功能:
[0086] (1)根据用户选择的失效率分布类型,读入失效率分布函数存储文件中的相应失效率分布函数,计算出次序缺陷失效率密度函数符号表达式;
[0087] (2)调用积分子模块201并利用次序缺陷失效率密度函数符号表达式计算得出缺陷失效率期望及软件失效率期望符号表达式;
[0088] 所述的参数估计模块4,它主要采用最小二乘法估计参数值,主要计算流程有:
[0089] (1)依据最小二乘法原理,调用测试数据输入模块1中的混合测试失效数据(包括针对性测试缺陷失效率数据和运行测试软件失效率数据),和表达式预处理模块3中缺陷失效率期望及软件失效率期望符号表达式,得到最小二乘式;
[0090] (2)调用数学计算模块2的求导子模块202对本计算流程(1)中的最小二乘式分别进行关于分布参数符号求导,得到两个关于分布参数的符号表达式方程组,输出到方程组临时存储文件中;
[0091] (3)读取上述方程组临时存储文件,利用尝试法先给定n值,调用Matlab方程组求解函数求解上述方程组,并对n进行穷举得到最小二乘式的最小值来确定估计值n′,得到分布参数的估计值;
[0092] 所述的软件失效率预计及输出模块5,它调用参数估计模块4得到的模型参数估计值,代入到表达式预处理模块3中的软件失效率期望符号表达式,进而预计出软件失效率,并输出相应的结果。
[0093] 实施例:下面通过一个仿真实验来对本发明提供的可靠性评估方法进行举例说明。
[0094] 本实验采用的是通过仿真得到失效数据,包括缺陷失效率和软件失效率;然后根据确定的模型评价准则和比较模型,将预计和评估结果与比较模型进行对比,以此对提出的模型进行客观的考察和评价。
[0095] 实验的基础是公开发表的对某发射拦截控制LIC(Launch–Intercept-Control)软件系统进行测试中收集到的数据,使用知识驱动的功能测试方法(knowledge driven functional testing,KDFT),并记录下了每个缺陷在针对性测试中的失效比率和运行测试中的缺陷失效率。具体数据见表1:
[0096] 表1针对性测试中缺陷的失效比率与运行测试中的缺陷失效率
[0097]
[0098] 注1:*-*,第一个*表示模块号;第二个*表示该模块中的第多少个缺陷。
[0099] 对被测软件的26个模块中存在的45个缺陷进行了标识(如3-2,表示第三个模块的第二个缺陷),并通过针对性测试和可靠性测试分别统计了各个缺陷在针对性测试中的失效比率和在可靠性测试中的缺陷失效率。其中,针对性测试中的失效比率,是用运行失效的用例数在所运行的用例数中所占的比率,作为该缺陷在针对性测试下的失效比率;而可6
靠性测试中的缺陷失效率,是指运行10 个可靠性测试用例的过程中记录下每个缺陷发生失效的用例数,将其在总测试用例数中所占的比率作为该缺陷的缺陷失效率。
[0100] 基于混合测试流程的仿真数据生成:
[0101] 基于混合测试流程的仿真数据生成分为两个部分,其失效数据仿真也相应的分为两个阶段。(1)针对性测试数据的仿真利用的是表1中针对性测试下缺陷的失效比率数据,以及表1中的缺陷编号。这里仿真的针对性测试是一种基于状态覆盖的针对性测试,在仿真过程中按照缺陷编号逐个进行仿真,其思想是针对缺陷生成一个(0~1)的随机数,比较该随机数是否小于该缺陷在针对性测试下的失效比率,如果小于,则认为该缺陷发生了失效。(2)可靠性测试数据是根据表1中可靠性测试测得的缺陷失效率数据来进行仿真的,其主要思想是先定义出一个总的值域;然后根据每个缺陷的缺陷失效率为其在该值域内分配一段小的值域,其值域的大小是总的值域的大小乘上该缺陷的缺陷失效率,且各缺陷所分配的值域之间不相交;再在总值域上利用随机抽样原理进行仿真,生成失效数据。进行可靠性测试仿真过程中,记录的都是软件失效率。每当发现一个缺陷时,记录该缺陷的缺陷编号,然后用1/(1+该缺陷前连续无失效用例数)作为当前软件失效率,并记录。另外,需要确定针对性测试与可靠性测试转换的分界点:这里,通过对测试用例数的分析比较,不妨设定将1000个测试用例的连续无失效运行作为分界点。即在仿真过程中,当可靠性测试阶段出现1000个测试用例的连续无失效运行时可以转为可靠性测试阶段。
[0102] 按照上述的过程,生成的4组测试数据见表2~表5。
[0103] 表2混合测试数据集1
[0104]缺陷 软件失效率 缺陷 软件失效率
21.1 *0.0000849 18.1 *0.0000080
3.1 *0.0001350 13.1 *0.0000050
19.1 *0.0002290 17.2 *0.0000810
3.2 *0.0001880 6.2 *0.0022370
22.3 *0.0136170 17.1 *0.0114370
14.2 *0.0563110 25.2 *0.0007550
8.2 0.2187713 11.1 0.0121339
[0105]23.2 0.0272312 6.1 0.0028004
26.5 0.0167507 3.3 0.0015765
12.2 0.0490336 26.6 0.0020206
26.4 0.1270088 20.1 0.1270890
22.1 0.0049610 12.1 0.0024110
26.1 0.0007215 14.1 0.0041734
20.2 0.0132022 26.7 0.0002303
22.2 0.0118110 23.1 0.0000719
[0106] 表3混合测试数据集2
[0107]缺陷 软件失效率 缺陷 软件失效率
26.2 *0.0000090 25.2 *0.0000800
19.1 *0.0002640 25.3 *0.0000030
25.1 *0.0000140 16.1 *0.0000270
6.3 *0.0000320 11.1 *0.0200120
23.2 *0.0312500 26.6 *0.0044550
20.1 *0.001170
26.4 0.3334315 24.1 0.0054170
22.1 0.0545342 22.2 0.0072263
22.3 0.2500000 26.7 0.0270798
14.2 0.0452538 8.1 0.0083389
26.5 0.0234120 3.1 0.0001655
14.1 0.0088343 23.1 0.0008655
20.2 0.0234123 26.1 0.0000692
12.2 0.0112664 3.3 0.0004901
12.1 0.0389023 17.1 0.0002418
6.1 0.0002641
[0108] 表4混合测试数据集3
[0109]缺陷 软件失效率 缺陷 软件失效率
9.1 *0.0007970 16.2 *0.0000320
23.1 *0.0000690 21.2 *0.0000080
3.2 *0.0002100 25.1 *0.0000160
[0110]7.1 *0.0000690 26.2 *0.0000100
20.2 *0.0005320 22.3 *0.0080920
25.2 0.0016470 6.1 0.0019083
23.2 0.0352193 11.1 0.0027860
9.2 0.0178234 20.1 0.0028367
26.4 0.1210000 6.2 0.0058445
19.1 0.0739081 8.1 0.0191350
14.2 0.0059577 26.1 0.0066833
12.2 0.0458129 8.2 0.0088457
24.1 0.0147389 26.5 0.2700300
22.2 0.0812230 26.6 0.0002781
[0111] 表5混合测试数据集4
[0112]缺陷 软件失效率 缺陷 软件失效率
23.1 *0.0000690 9.1 *0.0000430
3.4 *0.0000080 7.1 *0.0000750
21.1 *0.0000790 26.1 *0.0001620
16.2 *0.0000110 26.7 *0.0002120
* *
20.1 0.0003460 25.1 0.0000110
26.4 *0.0279480 14.1 *0.0148940
6.2 0.0837528 11.1 0.0157802
3.3 0.0168004 6.1 0.0073396
26.5 0.0262772 19.1 0.0031456
12.2 0.0313097 23.2 0.1230000
9.2 0.0077658 14.2 0.0017800
22.3 0.0317344 12.1 0.0002450
20.2 0.0166027 22.2 0.0688913
22.1 0.0031659 3.1 0.0001585
[0113] 这里将两个仿真阶段的失效数据放在了同一个表中,因此表中是存在两类失效数据的:缺陷失效率和软件失效率。表的前半部分带*号的数据是在针对性测试仿真时记录的缺陷失效率,而后半部分是进行可靠性测试仿真过程中记录的是软件失效率。
[0114] 实验结果比较与分析
[0115] 选取软件可靠性评估预计的经典模型MO模型、JM模型和GO模型作为参考模型进行结果的比较,以下是基于仿真失效数据的关于各个模型的模型拟合度、模型预计有效性和模型噪声的可靠性预计的数据表。
[0116] 表6模型的评价指标计算
[0117]
[0118] 从上述表6数据可以看到:
[0119] (1)关于模型的拟合度:各模型的拟合度基本没有太大差别,相比较而言,对第四组仿真数据集拟合的稍微好些。但对各模型没有什么显著差异。
[0120] (2)关于模型的模型预计有效性:能看出OS模型比其它的模型表现更好一点,JM模型、MO模型和GO模型基本上相同。
[0121] (3)关于模型噪声:从表中数据基本上也看不出OS模型、MO模型和GO模型的优劣,可以认为它们是相近的,但可以看到OS、MO和GO模型在噪声方面都比JM模型表现的更好一些。
[0122] 对同一种模型而言,记软件的第i个失效率观测值为oi,用模型计算的估计值为qi,则可以利用下面的公式来计算模型的平均偏移方差e:
[0123]
[0124] 计算的数据结果如下表:
[0125] 表7各模型的平均偏移方差
[0126]模型 OS模型 MO模型 JM模型 GO模型
数据集1 20.3223 23.5451 31.2875 25.0036
数据集2 15.3721 20.7644 27.9365 23.3172
数据集3 15.7518 18.3002 27.2133 19.8173
数据集4 10.5908 11.0579 24.4117 19.2990
[0127] 从表7中可以看到:不管是对四组仿真数据集中的哪组数据集来说,OS模型和MO模型显然预计的效果更好一些。当然OS模型、MO模型和GO模型的效果并没有太大的差别,JM模型的表现要相对差一些。因此,可以说,OS模型至少不会比经典的模型对软件可靠性的估计效果差。
[0128] 最后应说明的是:以上实施例仅用以说明本发明而并非限制本发明所描述的技术方案;因此,尽管本说明书参照上述的各个实施例对本发明已进行了详细的说明,但是,本领域的普通技术人员应当理解,仍然可以对本发明进行修改或等同替换;而一切不脱离发明的精神和范围的技术方案及其改进,其均应涵盖在本发明的权利要求范围当中。