本技术属于软件分析领域,更具体地,涉及一种离散型软件的可靠性贝叶斯验证方法、系统及设备。
背景技术:
1、伴随着智能网联时代的高速发展,软件在人类生活中的应用越来越广泛和深入,由软件故障引起的系统崩溃、瘫痪事件频发。可靠性是软件质量体系中的一项重要指标,为确保投入使用的软件安全可靠,许多软件订购方尤其是安全关键领域的订购方会在一开始就规定可靠性指标。如何在最后的产品验收阶段制定可靠性验证方案,客观、高可信地验证软件是否达到规定的可靠性指标要求,就是软件质量工作的一项重要问题。
2、目前,国内外借鉴硬件可靠性验证试验标准已经提出了生命周期测试、概率比序贯测试、贝叶斯验证测试等一系列软件可靠性验证测试方案,根据规定的可靠性指标类型,可划分为离散型方案(可靠性指标为成功率或失效率)和连续型方案(可靠性指标为故障率、平均故障前间隔时间或平均故障间隔时间)两大类。然而,现有验证方案大都适用于连续型软件。kapur指出因为以离散时间(例如每时/日/周)记录失效数据更加方便,许多软件失效数据都是离散型数据,因此建立离散时间域模型更符合客观实际,但由于数学处理难度较大,离散型模型的研究成果偏少。蔡开元、kumaran等人很早就呼吁应加强对离散型软件可靠性的研究,因为许多软件如导弹发射软件、控制开关软件都需要以一次任务的执行成败来衡量其可靠性。
3、由于安全关键领域的软件可靠性指标往往规定得非常高,可靠性验证需要大量测试用例,贝叶斯验证方法利用产品先验数据和现场验证测试数据两部分信息综合给出验证结论,能减少验证测试用例数量、改善可靠性验证期过长的问题,因此是离散型软件可靠性验证研究中成果最多的一类方法。在贝叶斯方法中,先验分布的确定是基石。然而,离散型软件在交付前积累的是离散型可靠性增长测试数据,现有贝叶斯方案的先验分布确定方法对该先验信息的加工仍偏理想和主观。例如,无先验信息先验分布确定方法假设软件成功率服从0与1之间均匀分布,然而增长测试末期的软件成功概率应增长到了一定值,不会服从均匀分布;wu构造了一种连续时间域上的减函数模型作为软件失败率的先验分布,然后通过样本转换将离散型增长测试样本转化为连续型样本实现模型求解,这种先验分布确定方法反映了可靠性增长的特征,但是所提供样本转化方法的参数设置过于主观,计算结果差异较大;动态先验信息贝叶斯整合法将软件成功率的先验分布确定为贝塔分布,并用矩估计法来估计贝塔分布的两个参数值,充分利用了离散型先验信息,但参数估计方法对增长测试数据的加工不够合理。
技术实现思路
1、针对现有技术的缺陷,本技术的目的在于提供一种离散型软件的可靠性贝叶斯验证方法、系统及设备,旨在解决现有离散型软件的可靠性验证方法效果不佳的问题。
2、为实现上述目的,第一方面,本技术提供了一种离散型软件的可靠性贝叶斯验证方法,所述离散型软件以离散时间记录任务执行失败的数据;包括:
3、获取对所述离散型软件进行可靠性增长测试的离散数据集;所述离散数据集包括:各组测试执行的测试用例数量和成功执行的用例数量;结合所述离散数据集和离散时间域上的非齐次泊松过程,确定离散型软件可靠性增长模型;以及基于所述离散型软件可靠性增长模型,估计所述可靠性增长测试之后所述离散型软件再成功执行预设规定任务的概率;
4、将所述离散型软件在可靠性验证测试阶段可靠度的先验分布设为贝塔分布,基于所述再成功执行预设规定任务的概率和最大熵法估计所述贝塔分布的参数;所述可靠度为可靠性验测试证阶段离散型软件成功执行所述规定任务的概率;
5、基于估计参数后的所述先验分布和贝叶斯定理确定所述可靠度的后验分布;根据所述后验分布确定预设可容忍失效次数下对所述离散型软件进行可靠性验证测试所需的测试用例数量;
6、根据所述测试用例数量和预设可容忍失效次数对所述离散型软件进行可靠性验证测试。
7、需要说明的是,不同于安全关键软件等连续型软件,离散型软件通常为以离散时间(例如每时/日/周)记录失效数据更加方便,其失效数据大多是离散型数据,因此建立离散时间域模型更符合客观实际。上述离散型软件例如是发射控制软件、机载逃生软件、舰载逃生软件或控制开关软件等。
8、本技术基于离散型软件的可靠性增长测试建立可靠性增长模型,随着测试的增长,离散型软件的缺陷逐步被检测出来,其中包含的缺陷数量将逐步减少,因此对应可靠性验证通过的概率也将逐步增加,避免了现有技术建立的离散型模型偏理想的情况。本技术结合离散型软件在离散时间域上的缺陷检出过程为其建立对应的可靠性增长模型,与离散型软件的检测过程更加匹配;之后以离散型软件的可靠性增长测试信息为先验信息,利用离散型软件可靠性增长模型和最大熵法求得的先验分布也更准确;由于最大熵法更能够贴近可靠性增长模型的可靠度逐步提升的真实情况,能够大大避免主观因素影响,给出一种更加真实和客观的离散型软件成功率的先验分布确定方法,以提出一种从保护使用方利益的角度设计软件可靠性贝叶斯验证方案。
9、在一种可能的实现方式中,确定离散型软件可靠性增长模型,包括:
10、采用离散时间域上的计数函数表示所述可靠性增长测试中已执行测试用例中检出的缺陷个数;所述检出缺陷个数为所述已执行测试用例个数与成功执行测试用例个数的差值;
11、其中,执行失败的用例个数等于检出的缺陷个数,即每执行失败一次用例,检出一个缺陷。
12、结合所述离散时间域上的计数函数,采用离散时间域上的非齐次泊松过程表示所述可靠性增长测试中缺陷检出函数;所述缺陷检出函数与累积缺陷函数有关,所述累积缺陷函数为所述计数函数的期望函数;
13、结合所述缺陷检出函数确定离散型软件可靠性增长模型;其中,所述离散型软件可靠性增长模型为离散型软件的可靠度函数;所述可靠度函数为离散型软件累计执行多个测试用例后,再执行至少一个测试用例不再检出缺陷的概率;每个缺陷一经触发所述离散型软件执行失败。
14、在一种可能的实现方式中,所述可靠性增长模型包括初始缺陷总数和缺陷检出率两个参数,所述两个参数基于所述离散数据集采用极大似然估计法估计得到;所述可靠度函数和累积缺陷函数均与所述两个参数有关。
15、在一种可能的实现方式中,所述缺陷检出函数为:
16、
17、
18、其中,p{n(n)=k}表示所述离散型软件执行n个测试用例时检出k个缺陷的概率;d(n)表示累计执行n个测试用例的累积缺陷函数,d(n)为n(n)的期望函数;n(n)为离散时间域上的计数函数,表示已执行的n个测试用例中检出的缺陷个数;exp[]表示自然指数函数;a表示初始缺陷总数,b表示缺陷检出率;r(h|n)为离散型软件的可靠度函数,指离散型软件累计执行n个测试用例后,所述离散型软件再执行h个测试用例不再发现缺陷概率。
19、在一种可能的实现方式中,采用极大似然估计法估计所述两个参数,包括:
20、
21、其中,所述可靠性增长测试包括l组测试,(ni,xi)表示第i组测试执行ni个测试用例,有xi个用例执行成功,检出的缺陷个数为ni-xi;(ni-1,xi-1)表示第i-1组测试执行ni-1个测试用例,有xi-1个用例执行成功;(nl,xl)表示第l组测试执行nl个测试用例,有xl个用例执行成功,1≤i≤l;所述数据集ω={(n1,x1),(n2,x2),...,(nl,xl)};a表示初始缺陷总数,b表示缺陷检出率。
22、在一种可能的实现方式中,所述离散型软件可靠性增长模型为:
23、r(h|n)=exp{-[d(n+h)-d(n)]}
24、其中,r(h|n)为离散型软件的可靠度函数;exp{}表示自然指数函数;d(n)表示累计执行n个测试用例的累积缺陷函数,d(n+h)表示累计执行n+h个测试用例的累积缺陷函数;所述可靠性增长测试包括l组测试,第i组测试执行ni个测试用例,当n取所述可靠性增长测试中执行的所有测试用例总和1≤i≤l;h取1时,表示所述可靠性增长测试之后所述离散型软件再成功执行一次规定任务的概率。
25、在一种可能的实现方式中,所述先验分布π(r)为:
26、
27、其中,be(u,v)为贝塔分布,b(u,v)为贝塔函数,u,v为先验分布的超参数;r表示离散型软件在可靠性验证阶段可靠度,为随机变量;
28、通过以下二元方程组采用最大熵法确定贝塔分布的超参数:
29、
30、其中,hb(u,v)为所述贝塔分布的信息熵函数;
31、求解上述二元方程组,估计得到的超参数数值解为(u0,v0),则估计参数后的所述先验分布π(r)=be(u0,v0)。
32、在一种可能的实现方式中,所述后验分布π(r|n,s)为:
33、π(r|n,s)=be(u0+s,v0+n-s);
34、其中,n为所述可靠性验证阶段执行的测试用例个数,s为n个测试用例中执行成功的测试用例个数;
35、在预设可容忍失效次数为c时,通过如下不等式确定所述测试用例数量:
36、p{r<r0|r=c,n}=be(r0;u0+n-c,v0+c)≤γ
37、其中,p{r<r0|r≤c,n}为r的增函数,r表示可靠性验证阶段离散型软件执行n个测试用例时检出的缺陷个数;γ为用户可承受的最大风险;r0表示用户可接受的可靠度下限;
38、将上述不等式成立时的最小n作为所述测试用例数量。
39、第二方面,本技术提供了一种离散型软件的可靠性贝叶斯验证系统,所述离散型软件以离散时间记录任务执行失败的数据;包括:
40、增长测试数据集获取模块,用于获取对所述离散型软件进行可靠性增长测试的离散数据集;所述离散数据集包括:各组测试执行的测试用例数量和成功执行的用例数量;结合所述离散数据集和离散时间域上的非齐次泊松过程,确定离散型软件可靠性增长模型;以及基于所述离散型软件可靠性增长模型,估计所述可靠性增长测试之后所述离散型软件再成功执行预设规定任务的概率;
41、先验分布确定模块,用于将所述离散型软件在可靠性验证测试阶段可靠度的先验分布设为贝塔分布,基于所述再成功执行预设规定任务的概率和最大熵法估计所述贝塔分布的参数;所述可靠度为可靠性验证测试阶段离散型软件成功执行所述规定任务的概率;
42、后验分布确定模块,用于基于估计参数后的所述先验分布和贝叶斯定理确定所述可靠度的后验分布;根据所述后验分布确定预设可容忍失效次数下对所述离散型软件进行可靠性验证测试所需的测试用例数量;
43、可靠性验证测试模块,用于根据所述测试用例数量和预设可容忍失效次数对所述离散型软件进行可靠性验证测试。
44、第三方面,本技术提供一种电子设备,包括:至少一个存储器,用于存储程序;至少一个处理器,用于执行存储器存储的程序,当存储器存储的程序被执行时,处理器用于执行第一方面或第一方面的任一种可能的实现方式所描述的方法。
45、第四方面,本技术提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,当计算机程序在处理器上运行时,使得处理器执行第一方面或第一方面的任一种可能的实现方式所描述的方法。
46、第五方面,本技术提供一种计算机程序产品,当计算机程序产品在处理器上运行时,使得处理器执行第一方面或第一方面的任一种可能的实现方式所描述的方法。
47、可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
48、总体而言,通过本技术所构思的以上技术方案与现有技术相比,至少具有以下有益效果:
49、本技术提供一种离散型软件的可靠性贝叶斯验证方法、系统及设备,针对现有离散型软件可靠性贝叶斯验证方法对离散型软件可靠性增长测试先验信息的加工方法偏理想、主观的问题,利用离散型软件可靠性增长模型和信息熵原理给出了一种软件成功率的先验分布确定方法,在此基础上从保护使用方利益的角度设计了基于最大后验风险的贝叶斯可靠性验证方案。经实例验证,所提方案对软件可靠性增长测试先验信息的挖掘更准确,能在保证验证方案可信性的前提下缩减测试用例数量,具备经济使用价值。
50、本技术提供一种离散型软件的可靠性贝叶斯验证方法、系统及设备,由于本技术利用离散型软件可靠性增长模型给出软件成功率的点估计,在样本量较大的情况下具备较高的评估精度,而有着高可靠指标要求的软件通常在交付前都会经历高强度的可靠性增长测试、积累丰富的测试数据,因此在方法的适用性方面,本技术所提贝叶斯验证方案对于有着高可靠指标要求的软件如安全关键领域软件的可靠性验证具备较好的适用性。最后,现有的软件可靠性贝叶斯验证方案大多数都适用于连续型软件。随着智能网联时代的迅速发展,离散型软件越来越普及,比如智能家居、无人驾驶汽车、无人飞机、智慧医疗等许多智能产品的开关控制功能都不再由传统的机械开关完成,而是由手机或计算机来远程遥控完成。因此,本技术提出的离散型软件可靠性验证方法能更好的满足工程现实需求。
1.一种离散型软件的可靠性贝叶斯验证方法,所述离散型软件以离散时间记录任务执行失败的数据;其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,确定离散型软件可靠性增长模型,包括:
3.根据权利要求2所述的方法,其特征在于,所述可靠性增长模型包括初始缺陷总数和缺陷检出率两个参数,所述两个参数基于所述离散数据集采用极大似然估计法估计得到;所述可靠度函数和累积缺陷函数均与所述两个参数有关。
4.根据权利要求2或3所述的方法,其特征在于,所述缺陷检出函数为:
5.根据权利要求3所述的方法,其特征在于,采用极大似然估计法估计所述两个参数,包括:
6.根据权利要求1或2所述的方法,其特征在于,所述离散型软件可靠性增长模型为:
7.根据权利要求1或2所述的方法,其特征在于,所述先验分布π(r)为:
8.根据权利要1或7所述的方法,其特征在于,所述后验分布π(r|n,s)为:
9.一种离散型软件的可靠性贝叶斯验证系统,所述离散型软件以离散时间记录任务执行失败的数据;其特征在于,包括:
10.一种电子设备,其特征在于,包括: