APP下载

基于失效模式的软件可靠性评估模型

2023-07-12李海峰

软件工程 2023年7期
关键词:软件可靠性失效率软件测试

田 雷 ,封 亮 ,李海峰

(1.上海华讯网络系统有限公司,上海 201620;2.北京航空航天大学,北京 100183)

0 引言(Introduction)

软件尤其是安全关键软件的失效可能会导致财产损失甚至人员伤亡。因此,可靠性已成为软件发布时用户最为关心的验证指标[1]。作为软件可靠性定量评估的重要手段,软件可靠性模型已经成功地应用于各种类型关键软件的开发过程[2-3]。

现有软件可靠性模型主要依据基于运行剖面的软件可靠性测试中收集的失效时间数据,对失效行为进行定量评估或预计,其存在揭错效率低下、工作量巨大等情况[4-8]。为解决这些问题,已有研究提出一个基于顺序统计量的软件可靠性模型处理混合测试数据,但其需要同时开展功能测试以及可靠性测试,工作量较大[9];而基于失效模式的软件测试方法,虽然可以提升揭错效率,但是其产生的失效数据却不能用已有的模型进行处理,难以准确刻画软件运行时的可靠性。

因此,本文在传统软件可靠性模型的基础上,面向基于失效模式的软件测试过程,借助失效模式概率与马尔科夫过程,提出一种新的软件可靠性评估模型,并在某型动力控制软件测试失效数据上开展工程实践。应用结果表明,新模型可对软件测试过程中的失效数据进行处理,获得准确的软件可靠性定量评估结果。

1 基于运行剖面与输入空间的失效模式概率(The failure mode probability based on the operation profile and input domain)

1.1 软件失效模式概率概述

软件运行过程中接收外部输入数据,如果功能处理过程出现异常,则外部输出数据也会出现异常,导致软件运行出现失效(即软件动态执行的输出为不希望或不可接受的结果,是软件系统运行行为对用户要求的偏离),即“输入—处理—输出”软件失效链模型,该模型认为决定失效模式发生概率的主要因素有两点,即失效模式所在功能的执行概率,以及触发失效模式的输入空间分布概率[10]。

记失效模式k的发生概率为φk,失效模式k所在的功能m的执行概率为f p m,失效模式k的输入空间分布概率为εIPD,则失效模式k发生概率可由公式(1)计算:

由公式(1)可知,若想计算失效模式k的发生概率,需要先计算功能m的执行概率f p m与失效模式k的输入空间分布概率εIPD。

1.2 基于运行剖面的功能执行概率

假定软件共有n个功能,各项功能的执行概率记为。依据软件运行剖面,确定功能之间转移关系的定量描述,即针对功能f i,假定其在运行剖面中共有path i条转移路径(从起始点到结束点之间的若干功能之间转移所组成的一条通路)可以经过功能f i,则称这些转移路径为功能f i的可达路径。

假设功能f i的可达路径K(K=1,…,path i)上共有K ik次转移,每次转移的发生概率记为tp ikj(j=1,…,K ik,tp ikj≤1),则功能f i的每条可达路径上转移概率的乘积之和即为功能f i的执行概率fp i,如公式(2)所示:

1.3 软件输入空间分布概率

软件输入数据C的有效取值区间为ψ,无效取值区间为θ,则输入数据C的取值空间ϑ=ψ∪θ。可依据软件历史运行数据,对输入数据C取值区间的分布概率进行计算,具体计算方法如下。

假设共有m组运行数据,每组数据中均记录输入数据C的取值情况。假定第i组数据下,输入数据C在有效取值区间ψ的取值次数为k i N,在无效取值区间θ的取值次数为k i A,则输入数据C有效取值区间ψ的分布概率εψ如公式(3)所示:

输入数据C无效取值区间θ的分布概率εθ如公式(4)所示:

1.4 基于功能执行与输入分布的失效模式概率

基于软件功能执行概率与输入分布概率的计算,本文提出软件失效模式概率的计算方法如下。

假设失效模式k的发生概率记为φk,其所在功能m的执行概率记为f p m,并且失效模式k与功能m的一个或多个不同类型的输入数据相关。

假定失效模式k对应一个输入数据C,若该输入数据C在无效取值区间θ取值时,导致失效模式k发生,则可依据公式(4)计算无效取值区间的分布概率εθ。

依据上述计算结果,可得到软件失效模式k的发生概率φk如公式(5)所示:

2 基于马尔科夫过程与失效模式的软件可靠性评估模型(Soft ware reliability evaluation model based on Markov process and failure modes)

2.1 基于失效模式概率的功能失效率评估

假定软件失效模式总数为N,在测试过程中共探测到m个失效模式,每个失效模式的发生概率记为φk,k=1,…,m。整个软件测试过程中,累积失效模式概率记为{k,φk|k=1,…,m},k表示测试过程中的累积失效模式个数;φk为测试过程中的累积失效模式概率,即。

将软件测试结束时的功能失效率记为λO,软件测试开始时的功能失效率记为λI。本论文提出如下几个假设,为软件功能失效率的评估奠定基础。

假设1:功能失效率是当前残存失效模式的发生概率之和。

假设2:考虑到学习因素的影响,软件测试过程中累积失效模式概率的增长速率可能会呈现先增后减的“S”形增长趋势。

根据假设2,本论文采用变形“S”形函数描述累积失效模式概率φk的这种“S”形增长趋势,如公式(6)所示:

其中,φmax=λI=φN,c,b,q为参数常量。

假设3:假定功能失效模式总数N是有限的。

进而获得功能失效率的估计值如公式(8)所示:

2.2 基于马尔科夫过程的软件可靠性建模

马尔科夫过程具有“无后效性”,即系统在下一时刻所要执行的功能,仅取决于当前时刻的执行功能。针对长时间连续运行的软件,功能之间的转移关系通常近似服从马尔科夫过程。基于上述分析,本论文提出如下建模假设。

假设1:软件可划分为有限个独立的功能模块。

假设2:软件运行过程中,各项功能之间的转移关系服从马尔科夫过程。

假定软件具有n个功能,功能i转移到功能模块j的转移概率记为p ij。将转移概率p ij依次排列,构成功能转移概率矩阵P如公式(9)所示:

功能转移概率矩阵P是一个n阶矩阵,具有如下性质。

性质1:p ij≥0,即每个元素均是非负的;

由于软件可靠性表示软件最终成功地完成任务的概率,因此对于假定服从马尔科夫过程的软件可靠性R,可以用功能模块失效率λi和功能转移概率矩阵P表示。即对于有n个功能的软件,软件可靠性函数可表示为公式(10):

其中,p i表示功能模块F i的执行概率,p ij表示在下一项操作时由功能模块F i迁移到模块F j的概率,λi表示功能模块F i的失效率,t表示软件运行或测试时间。

3 实例应用(Case study)

本论文针对某型动力控制系统软件开展工程应用,验证基于失效模式的软件可靠性评估模型的有效性和可行性。具体的应用步骤与评估结果如下。

(1)应用概述。针对某型动力控制系统软件进行基于失效模式的软件可靠性测试,共执行测试用例185项,总测试时间约502 h,确认13项软件问题(对应13项软件失效模式,问题编号分别为REQ-01至REQ-13),受篇幅限制,问题内容不再详述。

(2)软件失效模式概率计算。针对软件外场运行数据进行统计分析,评估运行剖面中每项功能的执行概率。以“初始化功能”为例,其在外场运行过程中,有效执行时间为43 h,而软件的总运行时间总计863 h。所以,“初始化功能”的执行概率为43/863≈0.049 8。由此也可获得该动力控制软件全部功能的执行概率计算结果,如表1所示。

表1 软件功能执行概率Tab.1 Operation probabilities of the software functions

针对软件外场运行数据进行统计分析,确认每项外部输入接口数据在不同值域的取值概率。以输入接口数据“启动信号”为例,该数据为离散型,取值值域为{0,1},取值为0表示启动无效(即异常值),1表示启动有效(即正常值)。在外场运行过程中,数据取值为0的时间为24.6 h,取值为1的时间为838.4 h。所以,“启动信号”取值为0的概率为24.6/863≈0.028,取值为1的概率为1-0.028=0.972。

依据表1中的功能执行概率,以及外部输入接口数据的取值概率,对每项失效模式的发生概率进行计算。本文以失效模式“REQ-01”为例,说明该失效模式的发生概率计算过程如下。

首先,确定失效模式“REQ-01”对应功能的执行概率。该失效模式与“启动功能”相关,由表1可知,“启动功能”的执行概率为0.034 8;然后,确定失效模式REQ-01对应外部输入接口数据的取值概率分布。该失效模式是由“启动信号”取值为0(异常值)引发的。所以,该失效模式对应的外部接口数据取值概率应为取值为0的发生概率,即0.028。最后,计算失效模式REQ-01的发生概率为0.034 8×0.028=0.000 974 4。

(3)基于失效模式的功能失效率计算。依据失效模式的发生概率,以及功能执行概率,计算失效模式相关功能的失效率。以“启动功能”为例,说明该项功能失效率的计算过程。在本次软件可靠性测试过程中,与“启动功能”相关的失效模式为REQ-01、REQ-02、REQ-03,进而根据模式假设3进行功能失效率计算。

(4)基于功能失效率的软件失效率计算。依据功能失效率以及表1中的功能执行概率,对软件失效率λ进行计算,具体过程如下。

依据式λ=λ1p1+λ2p2+…+λnp n,需确定动力控制软件的所有失效模式发生概率及相应功能的执行概率。软件失效率^λ经计算得

即动力控制系统软件的平均失效前间隔时间MTBF=1/^λ≈100.24 h。

(5)与传统软件可靠性测试评估方法的比对分析。该动力控制系统软件曾经进行过基于运行剖面的传统软件可靠性测试评估试验,共用时1 100 h,发现软件问题11项。将这种基于运行剖面的传统软件可靠性测试评估方法(传统方法),与本文提出的基于失效模式的软件可靠性测试评估方法(新方法)相比,可以得出如下对比分析结果。①新方法可有效提升软件的揭错效率。本论文借助基于失效模式的软件可靠性测试,共识别13项软件问题;而传统的基于运行剖面的软件可靠性测试只发现了11项问题。因此,相比传统可靠性测试,本文所提软件的揭错效率提升了(13-11)/11×100%≈18.2%。②新方法显著降低软件测试工作量。基于失效模式的软件可靠性测试所用的测试时间仅为502 h,而传统软件可靠性测试则用时为1 100 h。因此,测试工作量降低了(1 100-502)/1 100×100%≈54.4%。③新方法可获得与传统方法同样准确的软件可靠性评估结果。借助经典软件可靠性模型(GO 模型),计算软件的MTBF为103.41 h。借助本论文提出的模型,计算软件的MTBF为100.24 h,二者之间的误差仅为3.1%。因此,与经典的GO模型相比,本文所提模型也可以获得较为准确的可靠性评估结果。

4 结论(Conclusion)

本文提出一种新的基于失效模式的软件可靠性定量评估模型。首先,借助运行剖面与输入空间计算失效模式概率,进而评估软件功能失效率;然后,借助马尔科夫过程实现基于失效模式的软件可靠性定量评估。实例应用结果表明,本文提出的基于失效模式的软件可靠性测试方法以及评估模型,可提升18.2%的揭错效率,降低54.4%的测试工作量,可以获得准确的软件可靠性评估结果,同时适用于软件可靠性测试。

本文所提可靠性评估模型的准确性可能受限于软件测试的充分性,即如果软件测试数据未覆盖所有功能及其接口时,可能会对失效模式概率以及功能执行概率的评估值产生影响。因此,在未来研究工作中,将考虑采用软件仿真数据(或运行数据)与测试数据相结合的方式优化该模型的适应性和准确性。

猜你喜欢

软件可靠性失效率软件测试
Archimedean copula刻画的尺度比例失效率模型的极小次序统计量的随机序
基于OBE的软件测试课程教学改革探索
深入理解失效率和返修率∗
基于改进龙格-库塔法反舰导弹贮存寿命研究
软件可靠性工程综合应用建模技术研究
EXCEL和VBA实现软件测试记录管理
关于软件测试技术应用与发展趋势研究
软件测试工程化模型及应用研究
数控系统软件可靠性设计与故障分析技术
固体电解质钽电容器失效率鉴定