近些年来,计算机应用渗透到了社会和人们生活的各个方面,例如交通系统、银行管理系统和国家防御系统等;它们不但改善了人们的生活品质,而且也提高了人们的工作效率.由于现有计算机硬件技术的不断创新,计算机所发生的故障主要集中在软件方面.一旦计算机软件发生故障,将会对人们的生活、工作,甚至生命造成重大损失.因此,现在计算机工业的主要问题是如何开发高质量的软件系统以及怎样评估软件的可靠性.当软件测试进行到一定阶段,比如验收测试阶段,完全可以利用已产生的故障数据来进行软件可靠性模型拟合和参数估计,然后用软件可靠性模型来预测软件中剩余故障的数量,并进行相应的软件可靠性分析.如果软件可靠性未达到要求,则继续进行相应的软件测试;如果软件可靠性已达到要求,则可以考虑停止该阶段测试,进入下一阶段.实际研究结果表明:建立适当的软件可靠性增长模型,可更加有效和准确地描述软件测试过程中软件故障发生行为,评估并量化软件在测试过程中的可靠性,对及时发布预期要求的软件可靠产品具有重要的指导意义.由于软件测试是一个复杂的问题,受到许多因素的影响.客观因素有:测试的工具、测试的资源、测试环境等;主观因素有:测试者的技术和心理因素等;而且现在已开发的软件可靠性模型在一定条件下是有效和准确的,但在其他条件下则不适用,因此不具有通用性.原因与其故障检测率的理想假设有关,对于预测实际软件故障检测不确定事件来说,它仍是一个没有完全解决的开放性问题.
软件可靠性被定义为:在规定时间和条件下,软件运行不发生故障的概率[1].软件可靠性在量化软件质量方面是一个重要的因素.在预定义的可靠性目标下,可以确定什么时候停止测试,并发布新版本的软件产品.在过去的40年里,许多软件可靠性增长模型(SRGM)[2, 3, 4, 5, 6, 7, 8, 9, 10, 11]已被开发出来,其中,非齐次泊松过程(non-homogeneous Poisson process,简称NHPP)类模型在实际的测试中取得了很大成功,也吸引了大量的研究人员加以关注[1].
根据故障检测率的不同变化,NHPP的软件可靠性增长模型一般可以划分为3类:一是故障检测率是不变的,也就是常数;二是故障检测率为平稳变化;三是故障检测率是有规律变化的.
· 对于第1类软件可靠性模型,Goel[3]假设:在(t,t+Δt)时间内,期望检测出的故障数量和在t时间内软件中剩余故障的数量成正比,故障检测率是一个比例常数.这个模型也称为指数软件可靠性增长模型.为了描述故障强度在测试开始时增加并且随后下降的趋势,Goel[12]提出了一个一般化的软件可靠性模型(GGO).除了完美调试模型,即:假设在检测到的故障立即被去除,没有新的故障被引进外,Goel[12]还首次提出了不完美调试模型,即:假设在去除故 障时,有新的故障被引进,并开发了故障检测率为常数的不完美软件调试模型;
· 对于第2类软件可靠性模型——故障检测率为平稳变化的模型,Yamada等人[3]观察到:在软件测试过程中,累计检测到的故障形状为S型,因此提出了Delay S-shaped模型(DSS).另一个相似的模型为Inflection S-shaped模型(ISS)[4],它描述了在软件测试当中,软件故障之间存在故障依赖现象.在日本,许多软件开发商采用Logistic和Gompertz增长曲线模型[5]来评测软件的可靠性,因为它们是最简单的S-shaped可靠性模型.在不完美调试模型当中,也有许多有关平稳变化的故障检测率模型被开发出来[13, 14, 15, 16];
· 但在实际的测试过程中,故障检测率也许不是平稳变化的,可能会发生规律变化.这就是提到的第3类软件可靠性模型,也就是故障检测率为有规律变化的情况.已经有许多文章研究了这种变化[17, 18, 19, 20],如Yamada等人[17]考虑了测试工作量(test effort)的变化,并且研究了测试工作量和故障检测数量之间的关系,提出了一个有关测试工作量的模型.另一方面,在实际测试过程中,软件测试过程是复杂的并且受到很多因素的影响,例如测试资源的分配、测试策略的使用以及测试环境的变化等,因此,故障检测率也许不是平稳变化的,可能在某个时间点上发生变化,这也被称为移动点[21, 22, 23, 24, 25, 26, 27].例如:Huang等人[27]考虑了故障检测和去除过程的不同,他们用统一理论并合并了多移动点的概念,将其带入软件可靠性模型.
通过上面的分析我们可以合理地得出故障检测率的3种变化:一是常数,例如G-O模型;二是平稳变化,例如DSS模型;三是有规律的变化,例如测试工作量和移动点模型.但是,这些模型在实际测试中,它们的故障拟合和预测性能都会受到损害.因为故障检测是一个复杂和随机的过程,它是一个不确定事件,也就是一个概率事件.在实际故障检测过程中,故障检测率随着测试环境、测试人员和测试资源的变化而发生变化,而且发生的是未知突然变化,即不规则变化.图1给出了故障检测率随测试时间不规则变化的情况.从图1中我们能够清楚地看到,在软件测试中,故障检测率随测试时间发生不规则的上下变化情况.因此在本文中,我们开发了一个在实际测试过程中随时间不规则变化的NHPP软件可靠性增长模型,目的是为了更深入地研究软件测试过程中故障检测率不规则变化的现象,用新方法来提高软件可靠性模型的拟合和预测性能,进而使建立的软件可靠性模型更接近于实际的软件测试过程变化.实验结果显示:我们提出的模型有更好的拟合历史故障数据集的能力,并能提供更精准的软件剩余故障数量的预测.同时,我们提出的模型在适应各种测试环境方面也有很强的鲁棒性(robust).
· 缩略语
K-S:Kolmogorov-Smirnov
KD:Kolmogorov-Distance
TEF:测试工作量函数
CP:移动点
PM:本文提出的模型
· 符号说明
a:期望最初故障数量
b:故障检测率
bi:在移动点模型中的第i个故障检测率
τ:在移动点中的时间点
k:故障样本的数量
φ:故障引进率
μ:模型参数数量
c:常量参数
β:拐点率
δ:波动因子
r:威布尔类测试工作量(Weibull-type TEF)模型中比例参数
${{o}_{{{t}_{i}}}}$:到时刻ti为止,观测到的故障数量
A:威布尔类测试工作量(Weibull-type TEF)模型中常量参数
N:测试过程中,总共花费的测试工作量
b(t):故障检测率函数
N(t):随机变量表示到t时刻为止,实际检测出的故障数量
m(ti):均值函数,即:在[0,ti]时间内,检测到的累计的故障数量期望值;m(ti)=E[N(ti)]
W(t):在t时刻,累计消耗的测试工作量
F*(x):到时刻x为止,观察到的标准化的累计分布
F(x):到时刻x为止,期望的累计分布
1.1 基本假设在本文中,PM的提出基于以下假设:
① 故障检测服从NHPP过程;
② 最初软件系统的故障是一个随机变量;
③ 软件可以在任意时间发生故障,且由软件中剩余故障造成;
④ 在故障检测过程中,每次只有一个故障被发现,检测出的故障立即被去除,没有引进新的故障;
⑤ 故障检测率是一个随时间发生不规则变化的随机变量;
⑥ 发生故障(k)的时间和发生故障(k-1)的时间有关.
假设⑤捕获了在实际测试过程中故障检测率的变化特征,假设⑥说明故障之间有依赖关系,由假设③可以建立微分等式方程.
1.2 模型开发
一般来说,假设{N(t),t>0}表示故障计数过程,则NHPP过程可以表示为
\[\Pr \{N(t)=k\}=\frac{{{(m(t))}^{K}}}{k!}{{\text{e}}^{-m(t)}},k=0,1,2,...\]
(1)
\[m(t)=\int_{\text{ }0}^{\text{ }t}{\lambda (x)\text{d}x}\]
(2)
\[\frac{\text{d}m(t)}{\text{d}t}=b(t)(a-m(t))\]
(3)
b(t)=btd+dγ(t)
(4)
把等式(4)带入等式(3)可得:
\[\frac{\text{d}m(t)}{\text{d}t}=(b{{t}^{d}}+\delta \gamma (t))(a-m(t))\] | (5) |
把等式(5)扩展到伊藤类(Itô type)[28, 29]的微分等式,可得:
\[\text{d}m(t)=\left( b{{t}^{d}}-\frac{1}{2}{{\delta }^{2}} \right)m(t)\text{d}t+\delta m(t)\text{d}\xi (t)\]
(6)
r[ξ(0)=0]=1 | (7) |
E[ξ(t)]=0 | (8) |
E[ξ(t)x(t')]=Min[t,t'] | (9) |
威纳过程和布朗运动(Brownian motion)服从正态分布,并且ξ(t)的密度函数为
\[f(\varsigma (t))=\frac{1}{\sqrt{2\pi t}}\exp \left\{ -\frac{{{(\varsigma (t))}^{2}}}{2t} \right\}\] | (10) |
利用伊藤公式[28, 29]和等式(10),当m(0)=0时,等式(5)可解得:
\[\begin{align} & m(t)=a(1-\exp (-\int_{\text{ }0}^{\text{ }t}{b(u)\text{d}u})) \\ & \ \ \ \ \ \ \ =a(1-\exp (-\int_{\text{ }0}^{\text{ }t}{(b{{u}^{d}}+\delta \gamma (u))\text{d}u})) \\ & \ \ \ \ \ \ \ =a(1-\exp (-(b{{t}^{(d+1)}}/(d+1)+\delta \xi (t)))) \\ & \ \ \ \ \ \ \ =a(1-\exp (-(b{{t}^{(d+1)}}/(d+1)-{{\delta }^{2}}t/2))) \\ \end{align}\] | (11) |
当t=0时,m(0)=0;当t→∞时,m(∞)=a.
· 故障强度函数可表示为
\[\lambda (t)=\frac{\text{d}m(t)}{\text{d}t}=a(b{{t}^{d}}-{{\delta }^{2}}/2)\exp (-(b{{t}^{(d+1)}}/(d+1)-{{\delta }^{2}}t/2))\] | (12) |
· 故障检测率函数可表示为
\[b(t)=\frac{\lambda (t)}{a-m(t)}=b{{t}^{d}}-{{\delta }^{2}}/2\] | (13) |
在等式(11)中:参数a表示在软件测试过程中,期望检测出故障的数量,可用a来估计软件中存在的故障总数量;参数b表示在软件测试过程中,检测到故障的发生率,可以用b大致估计软件测试中检测到故障的效率;参数d为塑型参数,它可以非线性地表示故障检测发生的情况;δ为波动因子,它可以表示故障检测率不规则波动程度.因此,PM的4个参数对于准确估计软件可靠性具有重要意义.
2 相关工作为了说明在传统的基于NHPP模型中故障检测率开发的多样性,我们在这一节回顾一些相关的NHPP模型的开发过程.
在过去的40年里,研究者们提出了许多软件可靠性增长模型.软件可靠性增长模型假设软件的失效是由软件中存在的故障造成,并且是随机发生的;当每次发生故障时,它会被立即去除,并且没有新的故障被引进.其中,软件可靠性增长模型中很重要的一个类型是非齐次泊松过程(NHPP),它在实际的软件测试中取得了很大成功,并吸引了大量人员去研究它[1].首先,Goel和Okumoto[2]提出了一种简单和成功的基于NHPP的模型,这个模型也被称为指数分布的软件可靠性增长模型.他们假设:软件测试中,期望的故障检测的数量正比于软件测试中软件故障剩余的数量,并且故障检测率为常数 .为了描述软件故障检测时软件故障强度(fault intensity)在开始时略微增加、在结束时下降的趋势,Goel还提出了另一个带有3个参数的一般的GGO模型[12],它也假设故障检测率为常数.
虽然假设常量故障检测率能够简化建立软件可靠性增长模型的过程,但是由于软件测试是一个复杂的过程,假设故障检测率为常数不能动态且准确地反映软件测试过程中故障检测现象.因此,Yamada等人[3]在研究累计的软件故障检测数量后,发现增长的曲线为S型,提出了Delay S-shaped软件可靠性增长模型.Ohba[4]发现软件测试过程中软件测试者的学习现象后,提出了另一种Inflection S-shaped软件可靠性增长模型.以上两种S-shaped模型都是假设故障检测率为平稳变化的增长型函数.另外,Yamada等人[17]考虑了测试工作量(test effort)的变化,并且研究了测试工作量和故障检测数量之间的关系,提出了一个有关故障检测率为平稳变化测试工作量的模型.
虽然假设故障检测率为平稳变化的增长模型在一定程度上能够有效和准确地评估和预测在测试中软件故障的数量,但是由于在实际的测试过程中软件测试过程可能受许多因素影响,例如测试资源的分配、测试策略和测试运行环境等,因此软件故障检测率可能不是平稳变化的,而有可能是有规律变化的.例如,在软件测试过程中,可能故障检测率在某个时间发生变化,则称为移动点(changing-point)[21, 22, 23, 24, 25, 26, 27].Huang等人[27]考虑到:在软件开发和运行过程中,他们用统一理论并且合并多个移动点来建立基于NHPP的软件可靠性增长模型,并充分研究了故障检测率在测试过程中有规律变化的现象.
除了上面提到的完美调试模型,假设检测到的故障立即去除没有新的故障被引进外,另一种不完美调试模型也被许多学者开发出来[12, 14, 15, 16, 23],即:假设检测到的故障被去除时,又有新的故障可能产生.他们也开发了许多像完美软件调试模型那样假设故障检测率为常数、平稳变化的和有规律变化的不完美调试模型.例如:
· Goel[12]首次提出了不完美调试模型,即:假设在去除故障时,有新的故障被引进,并开发了故障检测率为常数的不完美软件调试模型;
· Huang等人[30]考虑故障检测和纠错的过程时间延迟过程,他们提出了有限和无限服务排队理论的基于NHPP不完美软件可靠性增长模型.Huang等人[27]也采用多移动点的方法来解决不完美调试问题;
· Xiao和Dohi[31]则用小波变换的方法来量化评估NHPP类的软件可靠性模型的性能;
· Wang等人[32]则用概率状态转移来研究完美调试和不完美调试在软件测试中的相互关系.
从上面的讨论我们可以合理地得出:假设软件故障检测率为常数、平稳变化和有规律变化,能够在一些软件测试情况下,有效和准确地评估软件的可靠性.但在实际的软件测试过程中,软件测试不但受到客观因素影响,例如软件测试的工具等,还受到主观因素的影响,例如软件测试者的技能和心理等.因此,软件测试是一个复杂和非确定事件,在实际的软件测试过程中,软件故障检测率最有可能表现为无规律的不规则变化.研究在软件测试过程中故障检测率为不规则变化的NHPP类软件可靠性增长模型,更符合实际的软件故障检测过程,并具有更重要的实际意义.本文提出了一种考虑故障检测率不规则变化的NHPP类的软件可靠性增长模型,并用8个历史故障数据集进行了相应的验证和评估.实验结果表明:与其他NHPP模型相比,PM有更好的拟合和预测性能.
3 数值例子在这一节,PM将与其他不同条件下开发的NHPP模型进行充分的比较.表1给出了所有的模型和均值函数(MVF).同时,为了说明PM的可信性(confidence),也进行了相关的置信区间的估计和分析.此外,所有模型的参数是用最大似然估计(MLE)方法估计出来的[7, 33, 34, 35].最大似然估计(MLE)方法估计模型参数,与其他估计模型参数的方法相比具有无偏性的优点.而其他方法,比如最小二乘法没有这个优点,如果在大样本的情况下,用它进行模型参数估计会对结果造成一定的影响.
在这一节,我们给出等式(11)中未知参数a,b,d和d的估计方法,而它们的联合概率函数可以表示为
P(t1,y1;t2,y2;…;tn,yn)=Pr{m(t1)≤y1,…,m(tn)≤yn|m(t0)=0}
(14)
\[p({{t}_{1}},{{y}_{1}};{{t}_{2}},{{y}_{2}};...;{{t}_{n}},{{y}_{n}})=\frac{{{\partial }^{n}}P({{t}_{1}},{{y}_{1}};{{t}_{2}},{{y}_{2}};...;{{t}_{n}},{{y}_{n}})}{\partial {{y}_{1}}\partial {{y}_{2}}...\partial {{y}_{n}}}\] | (15) |
因为m(t)可以表示为连续值,其似然函数l可以表示为
l=p(t1,y1;t2,y2;…;tn,yn) | (16) |
我们可以进一步简化计算,而采用对数似然函数形式:
L=logl | (17) |
通过联立解以下方程,可以得出最大似然估计值a*,b*,d*和δ*.
\[\frac{\partial L}{\partial a}=\frac{\partial L}{\partial b}=\frac{\partial L}{\partial d}=\frac{\partial L}{\partial \delta }=0\] | (1) |
为了充分和有效地验证所提出模型的性能,我们选用8个故障数据集进行测试,其中,前3个故障数据集用于部分模型的性能比较,后5个故障数据集用于全部模型的性能比较,并验证了PM在实际软件测试中的性能.
· 第1个故障数据集来自巴西电气转化系统(Brazilian electronic switching system)——TROPICO-R 1500,它是面向1 500个电话客户的系统[36].这个故障数据集有81个数据条目,大小为300KB.测试用了81周的时间,461故障被去除.需要注意的是:从第1周~第30周的数据是在系统验证阶段获得的,从第31周~第42周的数据是在域测试阶段获得的,第42周~第81周的数据是在系统操作阶段获得的;
· 第2个故障数据集来自无线网络产品[37],它是运行在无线网络转换中心的软件.测试用了51周的时间,203个故障被去除;
· 第3个数据集是来自Ohba的文章,它是PL/2数据库应用软件系统,包括1 317 000 LOC[38].用了19周的时间,花费了47.65CPU小时,328故障被去除;
第4个故障数据集~第8个故障数据集是Musa[39]收集并整理的实际软件测试过程产生的不同类型的故障数据.其中,
· 第4个故障数据集来自实时命令和控制系统(real time command and control),系统码(system code)为1,
交付的目标代码指令数(delivered object code instructions)为21 700,并且在92天里,总共花费了88 682个执行时间(executive time),检测并去除了136个故障;
· 收集的第5个故障数据集产生于操作系统(operating system),系统码是SS1A,交付的目标代码指令数为几十万,用了148天,总共花费16 501 830个执行时间,检测并去除了112个故障;
· 第6个故障数据集来自于时间分享系统(time sharing system),系统码是SS2,交付的目标代码指令数为几十万,在655天里,共花费60 262 806个执行时间,检测并去除了192个故障;
· 第7个故障数据集产生于词处理系统(word processing system),系统码是SS3,交付的目标代码指令数为几十万,并且在657天里,共花费了57 676 499个执行时间,检测并去除了278个故障;
· 第8个故障数据集产生于操作系统,系统码是SS4,交付的目标代码指令数为几十万,并且在619天里,共花费了49 239 302个执行时间,检测并去除了196个故障.
需要注意的是:我们选择的验证模型性能的故障数据集是有特点的,其中,
· 前3个历史故障数据集用于部分模型在特定测试环境中的性能比较.例如:第1个故障数据集(DS1)可用于移动点模型验证,第2个故障数据集(DS2)可用于传统的NHPP模型验证,第3个故障数据集可用于测试工作量模型的验证;
· 后5个故障数据集用于全部模型的性能比较,并且用Musa在实际的软件测试中收集的有代表性的不同软件可靠性故障数据集来验证我们提出的软件可靠性模型在实际软件测试过程中的性能,包括预测和拟合软件故障数量的有效性和准确性.其中,选用的比较模型包括传统的NHPP模型、移动点模型和测试工作量模型.
3.3 模型比较标准为了比较模型的故障拟合和预测能力,我们采用了3个模型评比标准.
标准1.
均值平方误差(MSE)用来描述累计故障数和实际预测值之间的平均距离,其定义为
\[MSE=\frac{\sum\limits_{i=1}^{k}{{{[m({{t}_{i}})-{{o}_{{{t}_{i}}}}]}^{2}}}}{k}\]
(19)
一般来说,模型的参数越多,模型故障拟合或预测的性能越好.为了减少模型参数对模型性能的影响,我们给出了第1个评比标准的变化形式,其定义为
\[MS{{E}_{1}}=\frac{\sum\limits_{i=1}^{k}{{{[m({{t}_{i}})-{{o}_{{{t}_{i}}}}]}^{2}}}}{k-\mu }\]
(20)
标准2.
第2个评比标准为K-S测试,一般认为,K-S测试比卡方测试(chi-square)更能获得评比信息[33, 40].K-S测试可以量化模型累计分布函数和样本分布函数的距离,其定义为
Dh=Supx|F*(x)-F(x)|
(21)
标准3.
第3个模型的比较标准是AIC(the Akaike information criterion)[41],它用于计算模型在拟合故障数据时估计模型参数的似然函数达到最大值的能力.一般来说,模型的参数越多,模型的拟合性能越好.而AIC比较标准则加入了对模型的参数惩罚,也就是说,模型的参数越多,AIC值会越大,模型的拟合性能会越差.其定义如下:
AIC=-2log(似然函数取最大值)+2N
(22)
在这一节,为了验证所提出模型在实际测试中的有效性和预测软件测试中故障数量的准确性,我们使用了多种数据集.除使用了上面介绍的故障数据集外,还使用了Musa[39]收集并整理的实际测试中的软件可靠性数据集(the software reliability dataset),该数据集被广泛用于软件可靠性模型的验证和评估.我们还进行了相关模型的故障拟合和预测性能比较,用到的模型包括PM、传统的NHPP、移动点以及测试工作量等模型.
3.4.1 部分模型拟合和预测性能比较1) 数据集1(DS1)
从表2可以看到:PM在与其他模型的比较过程中,拟合MSE1fit和KDfit以及预测MSE1predict和KDpredict值都是最小的,它们分别是90.1,0.057 6和336.5,0.072;第二小的是Inflection S-shaped model with a single CP (ISSMSC),它们分别是96.6,0.061 1和437.5,0.098.拟合MSE1fit和KDfit以及预测MSE1predict和KDpredict值都为最大的是Delay S-shaped(DSS),它们分别是250.1,0.089 4和1 627.3,0.16.因此,PM拟合及预测的MSE1和KD值都少于G-O、DSS、单移动点G-O和单移动点ISS模型,这说明PM在与其他模型相比时有很强的故障拟合和预测能力.这些结果也可从图2(a)中看出.
图3(a)给出了PM使用数据集1进行故障拟合和预测的95%的置信区间.从图3(a)可以清楚地看到:PM准确地拟合了故障数量,并很好地预测了软件未来发生故障的失效行为.图3(a)也显示出,实际观察到的故障数量很好地落在了提出模型的95%的置信区间内.
2) 数据集2(DS2)
相似地,从表3同样能够得出,PM拟合及预测的MSE1和KD值都小于其他模型,例如G-O,GGO和DSS模型,它们分别有MSE1fit=6.4,KD1fit=0.04,MSE1predict=53.4,KD1predict=0.0399.
与其他模型相比,MSE1和KD拟合值第二小的是Generalized Goel model(GGO),它们的值分别是6.6和0.043 3.MSE1和KD预测值第二小的是Delay S-shaped(DSS),它们的值分别是88.9和0.079 9.因此可以合理地得出,PM有很好的拟合和预测性能.这些结果也可以从图2(b)中看到.图3(b)给出了PM使用数据集2进行故障拟合和预测的95%置信区间.从图3(b)可以看到:PM很好地拟合了故障数量并预测了软件存在故障的数量.图图3(b)也显示出,PM的95%置信区间很好地包括了实际观察到的故障数量发生情况.
3) 数据集3(DS3)
从表4可以得出PM的拟合能力情况.我们采用100%的故障数据进行了相关模型的拟合性能评测,结果是: PM的MSE和KD值都小于其他模型,包括G-O,DSS,ISS,GOLT和DSSMLT等模型.其中,我们提出的拟合MSE和KD值分别为42.6和0.048 2;第二小的是Inflection S-shaped(ISS),拟合MSE和KD值分别为82.7和0.073 7; Delay S-shaped(DSS)有最大的拟合MSE和AIC值,分别为640.8和0.11,这说明,PM同样有很好的拟合故障数据集的能力.这些结果也可以从图2(c)得到.图3(c)显示了PM使用数据集3进行故障拟合的95%置信区间,从图3(c)可以清晰地看到:PM准确地拟合了故障数量情况.图3(c)也显示,实际发生的故障数量较好地落在了所提出模型的95%置信区间内.
总之,从以上实验可以合理地得出:与其他模型相比,PM不论在故障拟合还是在故障预测能力上都比其他模型要好;而且PM还具有很强的鲁棒性,也就是说,对于不同的故障数据集都有很好的适用性.
3.4.2 全部模型拟合和预测性能比较为了充分和有效地检验PM在实际软件测试中的拟合和预测性能,我们把故障数据集4~数据集8分别划分为4类,分别是50%,75%,90%和100%;其中,故障数据集的50%,75%和90%是指用故障数据集前50%、前75%和前90%的故障数据来估计模型的参数,并用故障数据集后50%、后25%和后10%的故障数据来评估模型的预测能力.而100%故障数据是指用全部的故障数据来验证模型的拟合故障数据能力.需要注意的是,我们用文献[34]中的方法确定了故障数据集DS4~DS8的移动点(CP),它们分别是:在DS4中,τ=20;在DS5中,τ=25;在DS6中,τ=70;在DS7中,τ=20;在DS8中,τ=70.
1) 数据集4(DS4)
从表5可以看到:
· 在50%的数据集中,与其他模型相比,PM的MSE1predict值最小,其次是Inflection S-shaped with a single CP(ISSMSC),最差的是Inflection S-shaped(ISS).第二小的MSE1predict值(230.8)是PM(86)的两倍还多.同样,PM的AIC值也是最小的,仅为141.3;
· 在75%的数据集中,与其他模型相比,PM的MSE1predict和AIC值都是最小的,分别是30.6和246.1. MSE1predict值第二小的是Generalized Goel model(GGO),为50.8.AIC值第二小的是Inflection S-shaped (ISS),为254.97.MSE1predict和AIC值都最大的是G-O model with a single CP(GOMSC),分别为1 661.1和288.4;
· 在90%的数据集中,与其他模型相比,PM的MSE1predict和AIC值都是最小的,分别是61.8和301.3. MSE1predict值第二小的是G-O with logistic TEF(GOLT),为71.3.AIC值第二小的是Inflection S-shaped with a single CP(ISSMSC),为309.8.MSE1predict和AIC值都最大的是G-O model with a single CP (GOMSC),分别为1 298.3和353.7.因此能够得出:PM的预测能力好于其他模型,且拥有最低的AIC值;
· 在100%的数据集中,与其他模型相比,PM的MSE1fit和AIC值都是最小的,分别是35.7和335.2.MSE1fit值第二小的是Delay S-shaped(DSS)和Delay S-shaped model with a single CP(DSSMSC),它们都是40.9.AIC值第二小的是Inflection S-shaped with a single CP(ISSMSC),是343.8.MSE1fit值最大的是G-O with logistic TEF(GOLT),为437.1.AIC值最大的是Inflection S-shaped(ISS)和G-O model with a single CP(GOMSC),它们都是378.8.这说明,PM有很强的故障拟合能力.
图4(a)~图4(d)分别给出了本文所提出模型使用数据集4的50%,75%,90%和100%进行故障拟合和预测的95%的置信区间,从中也能看出,PM很好地拟合和预测了实际的软件测试中软件故障发生的情况.从图4可以清晰地看到:从图4(a)~图4(d),PM的95%置信区间逐渐从一般到很好地包括了实际观察到的故障数量发生情况.
2) 数据集5(DS5)
相似地,从表6可以看到:
· 在50%的数据集中,与其他模型相比,PM的MSE1predict值最小,是31.5;其次是Generalized Goel model (GGO),为37.2;最差的是G-O with logistic TEF(GOLT),为309.2.同样,PM的AIC值也是最小的,仅为184.6;
· 在75%的数据集中,与其他模型相比,PM的MSE1predict和AIC值都是最小的,分别是13.6和249.4. MSE1predict值第二小的是G-O with logistic TEF(GOLT),为20.8.最差的是Inflection S-shaped with a single CP(ISSMSC),是875.2.AIC值第二小的是Generalized Goel model(GGO),为259.3.AIC值最大的是G-O model with a single CP(GOMSC),为277.2;
· 在90%的数据集中,与其他模型相比,PM的MSE1predict和AIC值都是最小的,分别是0.6和320.2. MSE1predict值第二小的是Delay S-shaped(DSS),为0.81.AIC值第二小的也是Delay S-shaped (DSS),为322.8.MSE1predict最大的是Inflection S-shaped with a single CP(ISSMSC),为321.4.AIC值最大的是G-O model with a single CP(GOMSC),为335.7.所以我们能够得出:PM的预测能力好于其他模型,并且拥有最低的AIC值;
· 在100%的数据集中,与其他模型相比,PM的MSE1fit和AIC值都是最小的,分别是9.1和346.7.MSE1fit值第二小的是Delay S-shaped(DSS),为11.AIC值第二小的也是Delay S-shaped(DSS),为350.8.MSE1fit和AIC值最大的是G-O model with a single CP(GOMSC),分别是477.9和363.8.这可以说明,PM有很强的故障拟合能力.
图5(a)~图5(d)分别给出了PM使用数据集5的50%,75%,90%和100%进行故障拟合和预测的95%的置信区间,也可看出,PM很好地拟合和预测了实际的软件测试中软件故障发生的数量.图5中,从图5(a)~图5(d),实际观察到的故障数量较好地落在了PM的95%上下界中.
3) 数据集6(DS6)
从表7可以看到:
· 在50%的数据集中,与其他模型相比,PM的MSE1predict值最小,为609.2;其次是G-O with logistic TEF (GOLT),是644.6;最差的是Delay S-shaped(DSS).同样,PM的AIC值也是最小的,仅为411.5;第二小的AIC值为G-O with logistic TEF(GOLT),为417.2;
· 在75%的数据集中,与其他模型相比,PM的MSE1predict和AIC值都是最小的,分别是14.9和694.6. MSE1predict值第二小的是Delay S-shaped(DSS),为35.1.AIC值第二小的是Inflection S-shaped with a single CP(ISSMSC),为696.5.MSE1predict值最大的是G-O model with a single CP(GOMSC),为1 480.6. AIC值最大的是Delay S-shaped model with logistic TEF(DSSMLT),为722.1;
· 在90%的数据集中,与其他模型相比,PM的MSE1predict和AIC值都是最小的,分别是2和852.4. MSE1predict值第二小的是Delay S-shaped(DSS),为2.4.AIC值第二小的是Inflection S-shaped with a single CP(ISSMSC),为861.4.MSE1predict和AIC值都最大的是Delay S-shaped model with logistic TEF(DSSMLT),为184.7和885.4.因此我们能够得出:PM与其他模型相比,预测能力均是最强的,并且拥有最低的AIC值;
· 在100%的数据集中,与其他模型相比,PM的MSE1fit和AIC值都是最小的,分别是26.6和945.6.MSE1fit值第二小的是Delay S-shaped(DSS),为34.3.AIC值第二小的是Inflection S-shaped with a single CP (ISSMSC),为949.1.MSE1fit值和AIC值都最大的是Delay S-shaped model with logistic TEF(DSSMLT),分别是244.7和973.1.这可以充分地说明,PM与其他模型相比具有很强的故障拟合能力.
图6(a)~图6(d)分别给出了PM使用数据集6的50%,75%,90%和100%进行故障拟合和预测的95%的置信区间,从中我们也能看出,PM很好地拟合和预测了实际的软件测试中软件故障发生的行为.从图6可以清晰地看到,PM的95%的上下界从图6(a)~图6(d)逐渐更好地包括了实际观察到的故障数量发生情况.
4) 数据集7(DS7)
从表8可以看到:
· 在50%的数据集中,与其他模型相比,PM具有最小的MSE1predict值和AIC值,分别为51.4和511.2.第二小的MSE1predict值是Inflection S-shaped(ISS),为80.5.最大的MSE1predict值是Delay S-shaped model with logistic TEF(DSSMLT),为783.7.第二小的AIC值为G-O with logistic TEF(GOLT),为517.最大的AIC值是Delay S-shaped model with logistic TEF(DSSMLT),为531.1;
· 在75%的数据集中,与其他模型相比,PM的MSE1predict和AIC值都是最小的,分别是8.2和982.9. MSE1predict值第二小的是Generalized Goel model(GGO),为9.3.AIC值第二小的是Inflection S-shaped (ISS),为986.9.MSE1predict值和AIC值都最大的是Delay S-shaped model with logistic TEF (DSSMLT),分别是470.5和1 062.4;
· 在90%的数据集中,与其他模型相比,PM的MSE1predict和AIC值都是最小的,分别是1.6和1 155.4. MSE1predict值第二小的是G-O with logistic TEF(GOLT),为2.4.AIC值第二小的是Generalized Goel model(GGO),为1 160.1.MSE1predict值最大的是Goel-Okumoto(G-O),为659.5.AIC值最大的是Delay S-shaped model with logistic TEF(DSSMLT),为1 250.1.因此我们可以合理地得出:PM与其他模型相比,预测能力均是最强的,并且拥有最低的AIC值;
· 在100%的数据集中,与其他模型相比,PM的MSE1fit和AIC值都是最小的,分别是41.6和1 250.4. MSE1fit值第二小的是Inflection S-shaped(ISS),为55.8.AIC值第二小的是Generalized Goel model (GGO),为1 251.2.MSE1fit值最大的是G-O with logistic TEF(GOLT),为404.7.这可以充分说明,PM与其他模型相比具有很强的故障拟合性能.
图7(a)~图7(d)分别给出了PM使用数据集7的50%,75%,90%和100%进行故障拟合和预测的95%的置信区间,从中我们也能看出,PM很好地拟合和预测了在实际的软件测试中软件故障发生的情况.图7(a)~图7(d)都显示出,PM的95%置信区间均较好地包括了实际观察到的故障数量发生情况.
5) 数据集8(DS8)
相似地,从表9可以看到:
· 在50%的数据集中,与其他模型相比,PM具有最小的MSE1predict值和AIC值,分别为51.4和511.2.第二小的MSE1predict值是Inflection S-shaped(ISS),为80.5.最大的MSE1predict值是Delay S-shaped model with logistic TEF(DSSMLT),为783.7.第二小的AIC值是G-O with logistic TEF(GOLT),为517.最大的AIC值是Delay S-shaped model with logistic TEF(DSSMLT),为531.1;
· 在75%的数据集中,与其他模型相比,PM的MSE1predict和AIC值都是最小的,分别是24.6和742.1. MSE1predict值第二小的是Goel-Okumoto(G-O),为25.9.AIC值第二小的是G-O with logistic TEF (GOLT),为744.MSE1predict值最大的是G-O model with a single CP(GOMSC),为710.7.AIC值最大的是Delay S-shaped model with logistic TEF(DSSMLT),为760.6;
· 在90%的数据集中,与其他模型相比,PM的MSE1predict和AIC值都是最小的,分别是7.4和901.6. MSE1predict值第二小的是Delay S-shaped(DSS),为8.5.AIC值第二小的是Goel-Okumoto(G-O)和G-O with logistic TEF(GOLT),它们都是906.7.MSE1predict值最大的是G-O model with a single CP(GOMSC),为370.AIC值最大的是Delay S-shaped model with logistic TEF(DSSMLT),为932.7.因此我们可以合理地得出:PM与其他模型相比有较好的预测能力,并且拥有最低的AIC值;
· 在100%的数据集中,与其他模型相比,PM的MSE1fit和AIC值都是最小的,分别是10.5和955.MSE1fit值第二小的是Inflection S-shaped(ISS),为11.9.AIC值第二小的也是Inflection S-shaped(ISS),为962. MSE1fit值最大的是Inflection S-shaped model with a single CP(ISSMSC),为185.8.AIC值最大的是Delay S-shaped model with logistic TEF(DSSMLT),为982.5.这可以充分地说明,PM与其他模型相比具有很强的故障拟合性能.
图8(a)~图8(d)分别给出了本文所提出模型使用数据集8的50%,75%,90%和100%进行故障拟合和预测的95%的置信区间,从中我们也能看出,PM能够在实际的软件测试中很好地拟合和预测软件故障发生的情况.
图8(a)~图8(d)都显示出,PM的95%置信区间均很好地包括了实际观察到的故障数量发生情况.
总之,从以上的实验可以合理地得出:虽然有些模型在测试的某些阶段和PM有相似的拟合和预测结果,但是总体来说,PM在测试的整个过程中都有很好的拟合和预测性能;并且能够精准地拟合和预测故障数量,而且还能够很好地适应复杂的测试情况.因此,与其他模型相比,在实际的软件测试中,利用PM进行相应的软件可靠性评估更具有重要的指导意义.
4 结束语在本文中,我们给出了一个考虑故障检测率不规则变化的NHPP软件可靠性增长模型.特别是,我们假设故障检测率在故障检测过程中随时间发生不规则变化,这种假设符合实际的故障测试过程中故障检测率受到各种因素的影响而发生不规则变化的客观规律.为了验证PM的性能,我们选用了不同软件可靠性模型、多种在不同条件下收集的故障数据集以及3种不同的模型评比标准,并进行了PM与其他模型的故障拟合和预测能力比较.实验结果表明:与其他模型相比,PM有更好的故障拟合和预测能力;并且在实际软件测试中用来评估软件可靠性更具有重要的指导意义.
在未来的研究中,我们准备在完美调试的基础上进一步研究故障检测率在不完美调试中的不规则变化情况,以及由此来建立相应的故障检测率,为不规则变化的不完美软件调试模型.
致谢 在此,我们向对本文的工作给予支持和建议的老师和同行表示感谢.
[1] | Musa JD, Iannino A, Okumoto K. Software Reliability: Measurement, Prediction, Application. New York: McGraw-Hill, 1989. 32-241. |
[2] | Goel AL, Okumoto K. Time-Dependent error-detection rate model for software reliability and other performance measures. IEEE Trans. on Reliability, 1979,28:206-211. doi: 10.1109/TR.1979.5220566 |
[3] | Yamada S, Ohba M, Osaki S. S-Shaped reliability growth modeling for software error detection. IEEE Trans. on Reliability, 1983, 32:475-484. doi: 10.1109/TR.1983.5221735 |
[4] | Ohba M. Inflection S-shaped software reliability growth models. In: Osaki S, Hatoyama Y, eds. Proc. of the Stochastic Models in Reliability Theory. Berlin: Springer-Verlag, 1984. 144-162. doi: 10.1007/978-3-642-45587-2_10 |
[5] | Misra PN. Software reliability analysis. IBM Systems Journal, 1983,22:262-270. doi: 10.1147/sj.223.0262 |
[6] | Hossain SA, Dahiya RC. Estimating the parameters of a non-homogeneous Poisson process model for software reliability. IEEE Trans. on Reliability, 1993,42:604-612. doi: 10.1109/24.273589 |
[7] | Huang CY, Lyu MR, Kuo SY. A unified scheme of some nonhomogenous Poisson process models for software reliability estimation. IEEE Trans. on Software Engineering, 2003,29(3):261-269. doi: 10.1109/TSE.2003.1183936 |
[8] | Zhang X, Pham H. Software field failure rate prediction before software deployment. Journal of System Software, 2006,79(3): 291-300. doi: 10.1016/j.jss.2005.05.015 |
[9] | Wang WL, Pan D, Chen MH. Architecture-Based software reliability modeling. Journal of System Software, 2006,79(1):132-146. doi: 10.1016/j.jss.2005.09.004 |
[10] | Hu QP, Xie M, Ng SH, Levitin G. Robust recurrent neural network modeling for software fault detection and correction prediction. Reliability Engineering & System Safety, 2007,92(3):332-340. doi: 10.1016/j.ress.2006.04.007 |
[11] | Jeske DR, Zhang X. Some successful approaches to software reliability modeling in industry. Journal of System Software, 2005, 74(1):85-99. doi: 10.1016/j.jss.2003.10.024 |
[12] | Goel AL. Software reliability models: Assumptions, limitations and applicability. IEEE Trans. on Software Engineering, 1985,SE- 11(12):1411-1423. doi: 10.1109/TSE.1985.232177 |
[13] | Amman PE, Brilliant SS, Knight J. The effect of imperfect error detection on reliability assessment via life testing. IEEE Trans. on Software Engineering, 1994,20(2):142-148. doi: 10.1109/32.265635 |
[14] | Pham H, Nordmann L, Zhang X. A general imperfect software debugging model with S-shaped fault detection rate. IEEE Trans. on Reliability, 1999,48(2):169-175. doi: 10.1109/24.784276 |
[15] | Xie M, Yang B. A study of the effect of imperfect debugging on software development cost. IEEE Trans. on Software Engineering, 2003,29(5):471-473. doi: 10.1109/TSE.2003.1199075 |
[16] | Zhang X, Teng X, Pham H. Considering fault removal efficiency in software reliability assessment. IEEE Trans. on Systems, Man, and Cybernetics—Part A: Systems and Humans, 2003,33(1):2241-2252. doi: 10.1109/TSMCA.2003.812597 |
[17] | Yamada S, Hishitani J, Osaki S, Software-Reliability growth with a Weibull test-effort: A model & application. IEEE Trans. on Reliab, 1993,42(1):100-106. doi: 10.1109/24.210278 |
[18] | Huang CY, Kuo SY. Analysis of incorporating logistic testing effort function into software reliability modeling. IEEE Trans. on Reliab, 2002,51(3):261-270. doi: 10.1109/TR.2002.801847 |
[19] | Kapur PK, Goswami DN, Gupta A. A software reliability growth model with testing effort dependent learning function for distributed systems. Int'l Journal of Reliability, Quality and Safety Engineering, 2004,11(4):365-377. doi: 10.1142/S02185393040 01579 |
[20] | Huang CY, Kuo SY, Lyu MR. An assessment of testing-effort dependent software reliability growth models. IEEE Trans. on Reliability, 2007,56(2):198-211. doi: 10.1109/TR.2007.895301 |
[21] | Zhao M. Change-Point problems in software and hardware reliability. Communication in Statistics-Theory and Methods, 1993, 22(3):757-768. doi: 10.1080/03610929308831053 |
[22] | Chang YP. Estimation of parameters for nonhomogeneous Poisson process software reliability with chang-point model. Communications in Statistics-Simulation and Computation, 2001,30(3):623-635. doi: 10.1081/SAC-100105083 |
[23] | Shyur HJ. A stochastic software reliability model with imperfect debugging and change-point. Journal of System Software, 2003, 66(2):135-141. doi: 10.1016/S0164-1212(02)00071-7 |
[24] | Zou FZ. A change-point perspective on the software failure process. Software Testing, Verification & Reliability, 2003,13(2): 85-93. doi: 10.1002/stvr.268 |
[25] | Huang CY. Performance analysis of software reliability growth models with testing-effort and change-point. Journal of System Software, 2005,76(2):181-194. doi: 10.1016/j.jss.2004.04.024 |
[26] | Zhao J, Liu HW, Cui G, Yang XZ. Software reliability growth model with change-point and environmental function. Journal of System Software, 2006,79(11):1578-1587. doi: 10.1016/j.jss.2006.02.030 |
[27] | Huang CY, Lyu MR. Estimation and analysis of some generalized multiple change-point software reliability models. IEEE Trans. on Reliability, 2011,60(2):498-514. doi: 10.1109/TR.2011.2134350 |
[28] | Wong E. Stochastic Processes in Information and Dynamical Systems. New York: McGraw-Hill, 1971. |
[29] | Arnold L. Stochastic Differential Equations—Theory and Applications. New York: John Wiley & Sons, 1974. |
[30] | Huang CY, Huang WC. Software reliability analysis and measurement using finite and infinite server queueing models. IEEE Trans. on Reliability, 2008,57(1):192-203. doi: 10.1109/TR.2007.909777 |
[31] | Xiao X, Dohi T. Wavelet shrinkage estimation for non-homogeneous Poisson process based software reliability models. IEEE Trans. on Reliability, 2013,62(1):211-225. doi: 10.1109/TR.2013.2240897 |
[32] | Wang J, Wu Z, Shu Y. Analysis of the debugging model based on probabilistic state transaction. Journal of Software, 2013,8(11): 2697-2705. doi: 10.4304/jsw.8.11.2697-2705 |
[33] | Musa JD. Software Reliability Engineering: More Reliable Software, Faster and Cheaper. 2nd ed., Bloomington: Author-House, 2004. |
[34] | Xie M. Software reliability models—Past, present and future. In: Proc. of the Recent Advances in Reliability Theory: Methodology, Practice and Inference. Birkhauser, 2000. 323-340. doi: 10.1007/978-1-4612-1384-0_21 |
[35] | Tamura Y, Yamada S. Optimization analysis for reliability assessment based on stochastic differential equation modeling for open source software. Int'l Journal of Systems Science, 2009,40(4):429-438. doi: 10.1080/00207720802556245 |
[36] | Kanoun K, Martini M, Souza J. A method for software reliability analysis and prediction application to the TROPICO-R switching system. IEEE Trans. on Software Engineering, 1991,17(4):334-344. doi: 10.1109/32.90433 |
[37] | Jeske DR, Zhang X, Pham L. Adjusting software failure rates that are estimated from test data. IEEE Trans. on Reliability, 2005, 54(1):107-114. doi: 10.1109/TR.2004.842531 |
[38] | Ohba M. Software reliability analysis models. IBM Journal of Research and Development, 1984,28(4):428-443. doi: 10.1147/rd. 284.0428 |
[39] | Musa JD. Software reliability data. Report, Rome: Data and Analysis Center for Software, Rome Air Development Center, 1980. |
[40] | Lyu MR. Handbook of Software Reliability Engineering. New York: McGraw Hill, 1996. |
[41] | Akaike H. A new look at statistical model identification. IEEE Trans. on Automatic Control, 1974,AC-19(6):716-723. doi: 10. 1109/TAC.1974.1100705 |