四、软件可靠性评估
4.1 最大概率的EM算法
本文将该方法引申到软件测试可靠性评估计算上。
假设输入点集为I,通过输入和输出的映射函数关系,观测到I服从概率分布Pd(I), Id。随机变量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)作为下一步迭代的值,即使得:
4.2 基于测试用例的软件可靠度检验
软件测试是一个反复测试的过程,一个测试软件包含多个测试用例,各个测试用例之间的关系是相互独立的,假设测试软件P包括m个测试用例,并且对该软件进行了k次测试,根据推论2可计算出一个关于测试用例的观测数据矩阵R如(8)式所示:
其中Rij表示对第i个测试用例进行第j次测试所得到的结果。其中经过k次测试后,每个测试用例的可靠度可以取其算术平均值作为最后结果,其结果可表示为式(9)。
根据(8)、(9)式可推导出测试软件P的最终矩阵表达式为式(10):
下面利用R={R(c)1,…,R(c)m}对软件可靠度RP进行检验。检验的问题是:
这里的RP表示测试员或者软件使用者对软件可靠度的期望值,如果测试软件可靠度大于该期望值,则认为测试软件的可靠度达到要求,否则,认为没达到要求。根据式(8)可推出软件的可靠度的极大似然估计为式(11)。
对于给定的检验水平α,假设A={R^p>Rα},通常的检验方法应该选取R尽可能的小,对给定的水平α,其中临界值Rα可以表示为式(12)。