专利名称:一种基于混合测试的软件可靠性评估方法及其装置的制作方法
技术领域:
本发明涉及软件可靠性工程领域,尤其涉及软件可靠性测试和评估领域,具体地 说,是指一种基于混合测试的软件可靠性评估方法及其装置。
背景技术:
软件可靠性评估技术作为评价软件质量和可靠性的重要手段,正成为国内外软件 可靠性工程的主要研究方向之一。为了满足用户对软件可靠性要求、评估软件可靠性水平 及验证软件产品是否达到可靠性要求,软件可靠性测试是一种有效的途径。它是随机测试 中的一种,其主要特征是按照用户实际使用软件的方式来测试软件。它一方面继承了软件 测试的思想,另一方面又有自身的特点,特别是在测试机理上与一般软件测试是不同的。当前有两种主要的传统的软件可靠性测试及评估方法,一种是Richard C. Linger 1988 年在其论文〈〈A case study in cleanroom software engineering〉〉中提出的“基于 使用模型的统计测试方法”,其中使用模型包括马尔可夫模型和形式化的语法,根据这些使 用模型来产生测试用例(软件所有可能输入的一个子集)并评估和度量软件可靠性;另 外一种是AT&T贝尔实验室的John D. Musa 1993年在其论文《Operational profiles in software reliability engineering))提出的“基于操作剖面的可靠性测试方法”,其中操 作剖面即用户使用软件的统计规律,其构造流程如
图1所示,首先确定操作模式和操作的 发起者,然后选择表格表示法或图形表示法对每个操作发起者创建操作表,最后确定单个 操作或属性值的出现率,将总的发生概率分解到每个操作上,最后生成MUSA操作剖面,该 方法是根据操作剖面抽样随机生成测试数据。上述两种方法的基本思想都是基于统计学的 基本原理,即根据软件实际使用情况的统计规律的描述,对软件进行随机测试,利用测试结 果进行软件可靠性评估。该特点决定了这一过程时间长、费用高、资源消耗大,因此如何加 快软件可靠性测试,及提高软件可靠性评估的效率和准确性,是亟待突破的技术难关。另外目前大部分软件在发布之前都会根据被测软件的特点和其所要达到的要求 或指标(主要是与缺陷相关的要求或指标)进行针对性测试,如针对覆盖率要求的各种覆 盖率测试、针对功能实现的功能测试等等,它们在发现软件缺陷提高软件质量方面具有明 显的效果。但是针对性测试中的缺陷信息并没有用于对软件可靠性的评估中,软件可靠性 评估仍然是通过“从头开始的”软件可靠性测试和重新收集失效数据等方面来进行。因此 如何充分、综合地利用这些已有的测试信息综合到软件可靠性评估过程中,并通过其实现 装置提高软件可靠性评估的效率也已成为当务之急。
发明内容
本发明为了解决现有技术中存在的软件可靠性测试效率低的问题,提供了一种基 于混合测试的软件可靠性评估方法及其装置,所述的方法是基于针对性测试与运行测试相 结合的混合两阶段可靠性加速测试方法,同时结合次序统计量理论,提出了基于混合测试 的软件可靠性次序统计量模型,充分利用针对性测试以及运行测试的测试数据,并给出软件可靠性评估,从而加速软件可靠性测试过程,提高软件可靠性测试效率。本发明从软件可靠性评估方法数据输入的角度,对传统软件可靠性测试方法进行 了改进,采用由针对性测试向运行测试过渡的混合测试方法。这种混合测试方法中,充分利 用了针对性测试中收集到的缺陷信息,通过面向缺陷的针对性测试中发现的缺陷被不断剔 除,软件的可靠性得到了增长。当针对性测试基本结束后,通常这个时候软件可靠性还没有 达到规定的可靠性要求,因此还要继续转入软件可靠性测试,直到满足规定的可靠性要求。 其中针对性测试采取的是基于覆盖率的白盒测试,运行测试为黑盒测试,所以本发明提供 的这种混合测试从某种程度上来说可以看作是一种灰盒测试方法。本发明提供的基于混合测试的软件可靠性评估方法的原理为假设被测软件中有η个缺陷,其缺陷失效率分别为Φ2,...,Φη,将缺陷失效 率按照从小到大的顺序排列,记为次序缺陷失效率Φ1:η,Φ2:η,.. .,Φη:η。假设混合测试过 程中共发现k个缺陷,将这k个缺陷按照缺陷失效率从大到小的顺序排列,并将排序好的缺 陷失效率依次记为WiG = 1,2,..., k)。根据测试的顺序特性,可以认为这k个缺陷是η 个缺陷中失效率最大的前k个缺陷,因此有如下对应关系= Φ(η+1_ ):η0将剩余n-k个缺陷的缺陷失效率按照从大到小的顺序排列,记为Vj(j = k+l,...,n)。则测试停止时的软件失效率Xk可以表示为
权利要求
1.一种基于混合测试的软件可靠性评估方法,其特征在于步骤一、确定被测软件的缺陷失效率分布,得到缺陷失效率分布函数和密度函数;步骤二、根据次序统计量,确定次序缺陷失效率的密度函数;所述的次序缺陷失效率是指将被测软件的缺陷失效率按照从大到小的顺序排列之后 的缺陷失效率;步骤三、确定被测软件的次序缺陷失效率期望值和软件失效率期望值;步骤四、对被测软件进行混合测试,得到缺陷失效率数据和软件失效率数据;步骤五,利用步骤四中的混合测试结果数据,对分布参数进行最小二乘估计,确定分布 参数。
2.根据权利要求1所述的一种基于混合测试的软件可靠性评估方法,其特征在于步 骤四中所述的混合测试是通过如下步骤实现的(a)分析软件功能信息和结构信息来选定具体的针对性测试方法,并根据其选定的测 试方法生成针对性测试用例;(b)根据需要搭建针对性测试环境;(c)在针对性测试环境上执行步骤(a)中生成的针对性测试用例,并收集记录缺陷失 效率数据A;(d)判断上述针对性测试过程是否满足相应的规范或准则,如果是,则进入步骤(e), 否则根据步骤(a)中所选定的针对性测试方法重新生成针对性测试用例,并返回步骤(c);(e)停止针对性测试,得到一组缺陷失效率数据IrJ;实施基于MUSA操作剖面的运行 测试,分析被测软件的任务书和需求分析文档,根据软件功能和使用信息,构造MUSA操作 剖面;(f)根据步骤(e)中构造的MUSA操作剖面进行随机抽样生成可靠性测试用例首先确 定被测软件的操作中每个输入变量的具体值,通过抽取操作和确定各输入变量取值两个步 骤的抽样,生成可靠性测试用例;(g)根据被测软件特点和可靠性测试要求搭建可靠性测试环境;(h)在可靠性测试环境中执行步骤(f)中可靠性测试用例,并收集记录失效数据,得到 软件失效率数据Pi ;(i)判断此时被测软件是否满足规定的可靠性要求,如果是,则进入步骤(j),否则根 据步骤(e)中构造的MUSA操作剖面进行随机抽样重新生成可靠性测试用例,并返回步骤 (h);(j)停止运行测试过程,得到一组缺陷失效率数据{pj ;从而完成整个混合测试过程。
3.根据权利要求1所述的一种基于混合测试的软件可靠性评估方法,其特征在于所 述的步骤五,以正态分布参数的确定为例,是通过如下步骤实现的(a)输入针对性测试阶段的缺陷失效率数据IrJ和运行测试阶段的软件失效率数据 {pj,由输入数据的个数可知针对性测试过程发现缺陷个数m个和运行测试过程发现缺陷 数,两种失效率数据之和为已发现缺陷数,记为k,m < k,则运行测试过程发现缺陷数为k-m 个;(b)根据最小二乘法,并结合次序缺陷失效率的期望值和软件失效率的期望值,得到最 小二乘式
4. 一种基于混合测试的软件可靠性评估方法的实现装置,其特征在于所述的实现装 置具体包括测试数据输入模块、数学计算模块、表达式预处理模块、参数估计模块和软件 失效率预计及输出模块;所述的测试数据输入模块用于读取软件失效率数据和缺陷失效率 数据;所述的数学计算模块包括积分子模块和求导子模块;积分子模块调整精度计算符号 表达式的定积分,求导子模块调整精度计算符号表达式的导数;所述的表达式预处理模块 具有两个功能(1)根据用户选择的失效率分布类型,读入失效率分布函数存储文件中的相应失效率 分布函数,计算出次序缺陷失效率密度函数符号表达式;(2)调用积分子模块并利用次序缺陷失效率密度函数符号表达式计算得出缺陷失效率 期望及软件失效率期望符号表达式;所述的参数估计模块采用最小二乘法估计参数值;所述的软件失效率预计及输出模块调用参数估计模块得到的模型参数估计值,代入到表达式预处理模块中的软件失效率期望 符号表达式,进而预计出软件失效率,并输出相应的评估结果。
全文摘要
本发明公开了一种基于混合测试的软件可靠性评估方法及其装置,属于软件可靠性工程领域,所述方法通过确定被测软件的缺陷失效率分布,得到缺陷失效率分布函数和密度函数;然后根据次序统计量确定次序缺陷失效率的密度函数、次序缺陷失效率期望值和软件失效率期望值;对被测软件进行混合测试,利用混合测试结果数据,确定分布参数。本发明充分结合并利用运行测试和针对性测试的优点,克服传统可靠性测试忽视软件结构内部信息、测试用例多、测试时间长、资源消耗大等缺点,缩短了软件可靠性测试的时间,加快了软件缺陷暴露速度及软件可靠性测试的进程,同时也大大减少了测试费用和资源消耗。
文档编号G06F11/36GK102063375SQ20111000675
公开日2011年5月18日 申请日期2011年1月13日 优先权日2011年1月13日
发明者吴玉美, 王栓奇, 陆民燕 申请人:北京航空航天大学