APP下载

软件可靠性模型中的知识度量

2018-11-15杨春晖

信息安全研究 2018年11期
关键词:软件可靠性测试人员软件测试

杨春晖

(工业和信息化部电子第五研究所 广州 510610)

在将软件产品提供给用户使用时,可以通过软件可靠性理论和方法对该软件产品的可靠性和潜伏故障进行预测和估计[1-3].这种估计主要有2个原因:1)作为产品质量的客观声明;2)用于软件维护阶段的资源计划.研究中的标准变量是在规定时间区间(如星期、月等)中的缺陷个数(或按代码行数规格化了的缺陷率)或失效间隔时间.可靠性模型中的静态模型[4-5]是指通过软件系统或模块的某些属性来估算软件中潜在的缺陷数量.可靠性模型中的动态模型[6-8]是指基于已知故障模式通过概率和统计分布的方法来估算软件产品的可靠性.

静态模型中的系数是通过以往软件产品的数据估计得到.将感兴趣的软件产品或项目当作以往软件产品或项目总体中的补充观测.动态模型的参数是基于从感兴趣产品至今所收集来的多重数据点估计出来的,是真正意义上的可靠性模型.所以,产生的模型专用于试图对其可靠性作出预测的这个产品.

动态软件可靠性模型用于开发过程和后期测试阶段.其中Rayleigh模型是用于开发过程的典型模型.而指数模型和其他可靠性增长模型则用于后期测试阶段.动态可靠性模型的相同之处在于它们都采用开发过程中的时间或其逻辑的函数来表示.

知识能够为软件测试过程提供指导.Xu[9]提出了基于知识的软件测试方法,将导致软件错误的原因归结为软件系统中所使用知识的错误以及对相关知识的使用方式错误,并基于实践分析提出了基于知识的软件测试方法,能够有效弥补现有测试技术充分性和适度性方面的不足.Vijaykumar等人[10]提出了软件测试参考本体(ROost)的概念,通过识别和重用软件测试过程中的本体模式,能够为大量的软件测试信息赋予语义,从而更好地支持软件测试过程中的知识管理.

然而,软件知识对软件可靠性影响的研究很少.如何描述软件知识与软件可靠性之间的关系,以实现高质量的软件测试,提高软件的质量和可靠性,科学和定量分析是必要的.因此,本文对软件知识与软件可靠性之间的关系进行了估计和研究.

1 软件可靠性分布

Weibull分布[11-12]在各种工程领域中用于可靠性分析已经有十几年,从深槽球型轴承的疲劳寿命到电子管失效和河流泛滥的发生.它是3个著名的极端值分布之一.Weibull分布的概率密度逐渐趋向于0,这是它的标志性特征.

图1展示了形状参数m取不同值的Weibull概率密度曲线:

图1 Weibull函数的几种典型分布

Weibull分布累计分布函数和概率密度函数表示如下.

CDF:

F(t)=1-e-(t c)m;

(1)

(2)

其中,m是形状参数,c是尺寸参数,t是时间.

Rayleigh模型是Weibull分布家族的一个成员.Raileigh模型是Weibull分布m=2的特殊情况.其CDF和PDF表示如下.

CDF:

F(t)=1-e-(t c)2;

(3)

(4)

指数模型也是Weibull家族的另一个特例,它的形参m=1.它最适用于单调下降到渐进值的统计过程.它的累积分布函数(CDF)和概率密度函数(PDF)如下.

CDF:

F(t)=1-e-(t c)=1-e-λ t;

(5)

(6)

其中,c是尺度参数,t是时间.

在实际工程应用中,上述公式需要乘以总缺陷数量或总积累缺陷率概率K.K是从数据集合推导具体模型时用于估计的参数.

2 知识与软件可靠性关系分析

2.1 理论推导

从工程实践观察到,测试团队的经验和知识水平可以影响测试效率和测试发现的问题数,一般经验知识水平高的团队能更快更多地发现问题.而测试发现问题的规律是服从一定的数学分布的.

Weibull函数在软件可靠性领域的应用,经常用到2个特殊分布,m=2的Rayleigh分布常用于描述开发阶段的缺陷分布,m=1的指数分布常用于描述系统测试或产品交付后使用阶段的故障分布.因为从工程实践能够观察到测试效率和测试发现问题数与测试团队的经验和知识水平显著相关,所以,要探索从Weibull分布出发,分析测试者的知识水平与故障分布的定量关系.

假设1:有2个测试团队A和B,团队A的知识量为SA,团队B的知识量为SB.

假设2:A和B分别对同一个软件模块进行系统测试,且最终2个团队经过经验积累和学习,均能找出软件模块的全部缺陷.

假设3:被测软件系统的故障分布服从软件可靠性领域应用的Weibull分布.

为计算简便,以系统测试阶段,Weibull函数的形状参数m=1,即指数分布函数为分析案例.

设故障集合X为测试时间t发现各类故障模式失效数之和,即:

(7)

其中,K表示总缺陷数量,c表示尺度因子.

由于从工程实践观察到,测试团队的经验和知识水平可以影响测试效率和测试发现的问题数.因此,测试团队的知识量与其能发现的缺陷总量正相关,即:

K=K(S)∝S.

(8)

将式(8)代入式(7)中,得到:

(9)

即,对于某时间t发现的缺陷个数X主要与知识量S和尺度因子c有关,即X可通过S和c表达:

X=X(S,c,t).

(10)

对于团队A和团队B,设团队A的故障概率分布是f1(t),团队B的故障概率分布是f2(t),则有:

(11)

(12)

将式(11)和式(12)分别取对数后相减,可得:

(13)

(14)

经验知识水平高的团队能更快更多地发现问题,假设SA>SB,则由图2给出的指数分布函数以c为参数曲线簇可知,c1

图2 缺陷数X与尺度因子c关系图

从图2可以看出,ΔlnX与|Δlnc|成正比关系,由于c1

因此,在Weibull分布模型中,软件知识主要影响尺度参数c的变化,知识与尺度因子c存在关联关系,c越小,表明开发或测试人员已有知识越丰富,需要获取的知识越少;c越大,表明开发或测试人员已有知识越缺乏,需要获取的知识越多.c可以表示为需要获取知识量的一种量化表达,如式(15)所示:

c=λg(D,AD,R,AR,H,I),

(15)

其中,D表示软件知识的概念集,AD表示软件知识概念的属性集,R表示知识之间的关系和规则,AR表示知识之间关系的属性集,H表示软件知识概念的层次,I为实例集,λ为系数.函数g()表示软件开发或测试人员进行软件开发与测试工作所需要从知识库中获取的知识量的度量,其数值正比于尺度参数c.

2.2 关系分析

下面分别从开发阶段和测试阶段分析知识对于Weibull分布中尺度因子c变化的影响.

在软件开发阶段,假设软件开发活动和测试活动持续进行,知识量对软件开发阶段的测试影响如图3所示.软件测试人员所需的知识量对测试有着直接影响.若测试人员对于软件系统的理解越全面和深刻,所需要引进的知识量就越少,尺度参数c越小,使得软件故障发现得越及时和快速,软件故障排除率上升,有效地提高了软件可靠性.反之,若软件测试人员基础和经验较薄弱,所需要引进的知识量就大,尺度参数c相应变大,故障发现的速率会变慢,时间变长,不利于软件的开发.

图3 软件知识对软件开发阶段的影响

图4 软件知识对系统测试阶段的影响

同理,如图4所示.对于系统测试阶段的测试活动,也遵循测试人员需要引进的知识量越少,尺度参数c越小,软件故障发现得更加及时和快速,有效地提高了软件测试效率.反之,若软件测试人员基础和经验较薄弱,所需要引进的知识量就大,尺度参数c相应变大,软件故障排除率降低,不利于软件测试工作的开展.

3 实 验

针对Linux-S操作系统,连续开展10轮系统测试工作,来验证本文提出的结论.

10轮次测试的测试用例数、测试问题数、更新的故障模式数统计分析如表1所示.分析结果如图5所示.

表1 测试结果统计表

图5 测试结果统计分析

本文测试调整策略主要包括:

1) 每轮测试都是独立的;

2) 每轮测试结束后,总结发现问题数,提炼故障模式,形成知识;

3) 每轮测试根据上一轮新增故障模式,新增测试用例;

4) 每轮测试根据已有故障模式分布情况,调整原有测试用例比例.

由图5可知,随着测试过程的深入,对产品特性的理解会越来越深,即经验积累,发现的软件故障越来越多,在对缺陷进行分析之后,不断发现新的故障模式,丰富原有知识.根据每一轮测试,测试问题数和故障模式随着测试轮数的增加,增加速度逐步减少,故障模式最终趋于35,本次实验所需要的知识逐步完善.

依据缺陷分布函数式(7),利用前5轮测试的缺陷模式数(20,23,26,28,29)来估算Weibull累计缺陷分布F(t)的系数K和尺度因子c.

(16)

采用Matlab工具进行仿真和拟合,计算得到K=27.943,c=0.911.拟合结果如图6所示:

图6 前5轮测试缺陷累计分布曲线拟合示意图

图7 后5轮测试缺陷累计分布曲线拟合示意图

利用后5轮测试的缺陷模式数(32,34,35,35,35)来估算随着知识积累之后,Weibull累计缺陷分布F(t)的系数K和尺度因子c,采用Matlab工具进行仿真和拟合,计算得到K=34.841,c=0.404.拟合结果如图7所示:

将以上2个不同的c值代入式(7)中的缺陷概率密度函数中,得到如图8所示2组概率密度曲线:

图8 不同c值的概率密度函数示意图

随着知识的积累,发现的缺陷模式越来越多,测试者已有的知识量越来越多,系数K越来越大,说明测试人员已有知识量越多,需要获取的知识越少,尺度因子c越小.

4 结 论

本文通过对缺陷密度的Weibull分布分析得出,知识与Weibull分布的形态紧密相关.从工程实践观察到,测试团队的经验和知识水平可以影响测试效率和测试发现的问题数,一般经验知识水平高的团队能更快更多地发现问题,在Weibull分布模型中,软件知识主要影响尺度参数c的变化,知识与尺度因子c存在关联关系,c越小,表明开发或测试人员已有知识越丰富,需要获取的知识越少;c越大,表明开发或测试人员已有知识越缺乏,需要获取的知识越多.尺度参数c与知识量成反比关系,可以表示为知识量的一种量化表达,据此可以依据知识量与缺陷发现的分布曲线预测测试发现问题的趋势及软件的可靠性,从而确定测试结束时机.

猜你喜欢

软件可靠性测试人员软件测试
移动应用众包测试人员信誉度复合计算模型研究
基于OBE的软件测试课程教学改革探索
软件可靠性工程综合应用建模技术研究
EXCEL和VBA实现软件测试记录管理
高校分析测试中心测试队伍建设方案初探
关于软件测试技术应用与发展趋势研究
浅析软件测试中的心理学应用
软件测试工程化模型及应用研究
数控系统软件可靠性设计与故障分析技术
简谈使用BoundsChecker进行计算机联锁系统人机界面软件可靠性测试