根据(4)式可推知缺陷影响因子为γi的发生概率Pγ为:Pγ=1-PFi,从而可计算出软件可靠度RFi如式(5)所示:?
推论2测试用例在无缺陷下运行的概率为:?
证明测试向量F1,F2,…,Fn相互独立, 则可推出测试用例F的可靠度为各个测试向量可靠度的交集,表示为(7):?
据推论1知测试用例的可靠度Rc=∏ni=1RFi, 从而可得出测试用例在无缺陷下运行的概率为?
3软件可靠性评估?
3.1最大概率的EM算法?
在文献[5]中论述了EM算法在假设检验中的应用,本文将该方法引申到软件测试可靠性评估计算上。?
假设输入点集为I,通过输入和输出的映射函数关系,观测到I服从概率分布Pd(I), I?d。随机变量I只是观测数据的一部分,假设A表示与I有关的随机事件,即A={R(I)>Rα},R(I)表示通过随机输入I观测到的似然统计量,Rα表示测试人员的期望值,且Rα∈[0,1]。这里所要求的是最大概率sup{Pd(A):d∈D0},这里D0是D的子集。在假设检验中,最大概率可以是真实的检验水平,也可以是犯第1类或第2类错误的概率。?
EM算法是用来求解似然函数最大值点的工具,所以,如果能够将概率Pd(A)看成似然函数的值,则可以利用EM算法得到最大概率sup{Pd(A):d∈D0}。?
EM算法的基本步骤:?
设f(y|d)是Y的概率函数。从一个初始点d∈D开始,则寻找sup{Pd(A):d∈D0}的算法由下面的两步迭代而成(t=0,1,…):?
E步:给定现在的值d(t)后,对未知的对数似然函数l(d|Y)=log f(Y|d)求条件期望:?
M步:最大化函数Q(d|d(t)),求取最大值点d(t+1)作为下一步迭代的值,即使得:?
3.2基于测试用例的软件可靠度检验?
软件测试是一个反复测试的过程,一个测试软件包含多个测试用例,各个测试用例之间的关系是相互独立的,假设测试软件P包括m个测试用例,并且对该软件进行了k次测试,根据推论2可计算出一个关于测试用例的观测数据矩阵R如(8)式所示:?
其中Rij表示对第i个测试用例进行第j次测试所得到的结果。其中经过k次测试后,每个测试用例的可靠度可以取其算术平均值作为最后结果,其结果可表示为式(9)。?
根据(8)、(9)式可推导出测试软件P的最终矩阵表达式为式(10):?
下面利用R={R(c)1,…,R(c)m}对软件可靠度RP进行检验。检验的问题是:?
这里的R?P表示测试员或者软件使用者对软件可靠度的期望值,如果测试软件可靠度大于该期望值,则认为测试软件的可靠度达到要求,否则,认为没达到要求。根据式(8)可推出软件的可靠度的极大似然估计为式(11)。?
对于给定的检验水平α,假设A={R^p>Rα},通常的检验方法应该选取R尽可能的小,对给定的水平α,其中临界值Rα可以表示为式(12)。
通过上文分析,可得出RP的对数似然函数为式(13)。?
其中,c是一个与Rij无关的常数且c=-m log k。?
给定(R1,…,Rm)的一个初值(R(0)1,…,R(0)m),则在已知l步迭代后,EM算法的E步是:?
EM算法的M步是在RP=R1…Rm=R?P下求出 Q(R1,…,Rm,R(l)1,…,R(l)m)关于(R1,…,Rm)的最大值。其中可以利用Lagrange乘子法得到最大值点为 R(l)ij=R(l)ij+λ,其中λ是方程∏mi=1∑kj=1(R(l)ij+λ)=R?P的解。?
这样可得到一个序列{(R(l)1,…,R(l)m),l=1,2,…}。根据EM算法的一般原则,这个序列使得R(l)P{R^P>R}是单调不减的。如果初值选得适当,则方程也收敛得较快。?
4试验模拟?
软件可靠性模型主要是改进软件开发过程和软件可靠性的度量。基于测试用例的软件可靠性评估模型是根据在在改善测试用例设计过程中通过对失效数据进行建模,并且通过EM算法来求其最小置信下限,真实地描述了软件失效特征,理论上具有较高的预计精度和较好的适用性。?
4.1测试用例可靠度计算?
下面给出一个有关登录原为:登陆系统的测试用例试验数据,该用例包括3个测试向量,即,Fc={F1,F2,F3},根据定义4将其按照缺陷等级分成5个类别,其相关测试数据见表1。?
缺陷因子对软件本身的影响的情况下可计算出功能向量的可靠度RF=[0.9415,0.9658,0.962]和测试用例的可靠度Rc=0.9564。从测试结果来说,用户和测试人员更容易接受包含缺陷影响因子的测试结果。?
原文转自:http://www.uml.org.cn/Test/200903242.asp