计算机软件论文:软件可靠性及其测试分析

  • 格式:doc
  • 大小:165.00 KB
  • 文档页数:8

计算机软件论文:软件可靠性及其测试分析
摘要:系统分析了软件的可靠性以及目前软件可靠性测试的完整流程,重点介绍了软件可靠性评估的方法和步骤。

随着信息技术的发展,软件产品在社会生活的各个领域应用越来越广泛,其质量好坏所产生的潜在影响也越来越大。

关键词:软件可靠性;可靠性测试;可靠性评估
0引言
随着计算机和软件在各行业中应用的日益广泛和深入,软件故障正逐渐成为导致计算机系统失效和停机的主要因素。

一些重要领域,例如军用作战系统、民航指挥系统、银行支付系统等,一旦发生严重级别的软件失效,轻则造成经济损失,重则危及人们的生命安全,甚至国家安全。

因此,发展以发现软件可靠性缺陷为目的的可靠性测试技术迫在眉睫。

1软件可靠性的定义
在规定的条件下,在规定的时间内,软件不引起系统失效的概率,该概率是系统输入和系统使用的函数,也是软件中存在的缺陷函数。

系统输入将确定是否会遇到已存在的缺陷。

在规定的时间周期内,在所述条件下程序执行所要求的功能的能力。

2软件可靠性测试
软件可靠性测试是软件测试的一种形式,是针对软件的某个重要质量特性,使用一定的测试用例对软件可靠性进行测试的过程,其目的可归纳为三个方面:①发现软件系统在需求、设计、编码、测试、实施等方面的各种缺陷;②为软件的使用和维护提供可靠性数据;③确认软件是否达到可靠性的定量要求。

软件可靠性测试由可靠性目标的确定、运行剖面的开发、测试用例的设计、测试实施、测试结果的分析等主要活动组成,完整的可靠性测试过程如图1所示。

2.1定义运行剖面
要得到准确的软件可靠性估计必须像在现场真实使用一样对软件进行测试,运行剖面就是定量地刻画软件使用的方式。

软件运行剖面(欧空局):对系统使用条件的定义,即系统的输入值用其按时间或者它们在可能输入范围内的出
现概率的分布来定义:运行剖面={运行,发生的概率}。

如X、Y为两个不相交的元素,发生的概率分别为0.8、0.2,则剖面为:{X,0.8}、{Y,0.2}。

以银行的ATM系统为例,剖面定义如图2所示。

2.2可靠性测试用例设计
一个典型的测试用例包括以下组成部分:①测试用例标识;②被测对象;③测试环境及条件;④测试输入;⑤操作步骤;⑥预期输出;⑦判断准则;⑧测试对象的特殊需求。

可靠性测试的主要目的是评估软件系统的可靠性,因此除了一般情况之外,还要着重考虑和可靠性密切相关的一些情况,如表1所示。

2.3可靠性测试的实施
可靠性测试的难点在于判断测试用例的运行成功与否。

在控制系统及其类似的软件中,失效通常由详细说明、CPU 时间或者时钟时间来客观定义。

而一般应用系统,失效的定义需要引入主观性因素,不仅取决于程序是否符合需求说明的要求,也取决于指定的性能是否能达到用户的期望。

软件的可靠性数据是可靠性评价的基础,应使用多台计算机同时运行软件,增加累计运行时间,来获得更多的可靠性数据。

用时间定义的软件可靠性数据主要有以下几类:①失效时间数据,发生一次失效所积累经历的时间;②失效间隔时间数据,两次失效的时间间隔;③分组时间内的失效数,某个时间段内发生的失效数;④分组时间累积失效数,到某个区间的累积失效数。

此外,要在测试过程中如实、规范地记录这些数据,以便为得到客观的可靠性评价奠定基础。

2.4软件可靠性评估
软件可靠性的评估过程包括三个阶段的内容:选择可靠性模型、收集可靠性数据、可靠性评估和预测。

2.4.1软件可靠性模型
软件可靠性模型的基本组成有:模型假设、性能度量、参数估计方法和数据要求。

下面以广义指数模型为例进行详细介绍。

广义指数模型,是GB/T 15532-2008《计算机软件测试规范》推荐的四种软件可靠性模型之一,它将几个众所周知的模型表归纳为一个形式,用一组公式来表示有指数危险的若干模型,以简化建模过程。

它的主要概念是,失效发生率正比于软件中残留的故障数,在两次失效之间失效率保持恒定,且每个故障被排除之后失效率降低相同的量,可以用来预测:①经过给定的时间将发生的失效数;②软件生存期内发生失效的最大数;③在给定时间之后将发生失效的最大数;④在给定时间以前所纠正的故障数;⑤纠正给定数目故障所需的时间。

(1)模型假设
广义指数模型的基本假设是:①失效率正比于程序当前含有的故障数;②所有失效发生概率相等且相互独立;③每个失效的严重性级别相同;④软件的运行方式与预期的使用
方式相似;⑤引起失效的故障都被立即纠正且不引入新的故障。

(2)函数表达式
从简单的软件危险函数开始,即
Z(x)=K[E0-Ec(x)](1)
其中:x是测定项目进展的时间或资源变量;E0是程序中引起失效的初始故障数;Ec是花费x单位的时间或工作量,够发现并纠正的故障数;K是比例常数:每个资源单位或者间单位,每个残留故障所引起的失效数。

则残留故障数Er可以表示为:
Er=Z(x)/K=[E0-Ec(x)](2)(3)
参数估计采用矩量法,在两个不同的x值处将均值匹配。

设总运行为n,成功运行数为r,失效前时间序列为t1、t2、…、tn-r,无运行时间序列为T1、T2、…、Tr,得到:Z(x)=失效(x)时间(x)=n-rH(3)其中:H=n-ri=1Σti +ri=1ΣTi(4)取两个不同的时刻:Z(x1)=n1-r1H1=K[E0-Ec(x1)](5)Z(x2)=n2-r2H2=K[E0-Ec(x2)](6)联立(5)、(6)方程式求解,得到参数估计量:E赞0=Ec(x1)-Z(x1)Z(x2)Ec(x2)1-Z(x1)Z(x2)=Z(x2)Ec(x1)-Z(x1)Ec(x2)Z(x2)-Z(x1)(7)K赞=Z(x1)E赞0-Ec(x1)=Z(x2)-Z(x1)Ec(x1)
-Ec(x2)(8)
受到建模计算等的限制,各个模型或多或少存在一定的缺。

比如广义指数模型,它不考虑每个失效可能依赖于其他失、假设故障纠正过程中不引入新的故障等,这些在实际软件统中是很难做到的。

因此,在选择、设计使用模型的时候我们该考虑多方面的因素,既要做合理的假设,也要避免严重不符合实际的情况。

2.4.2可靠性数据的收集
可靠性数据主要是指软件失效数据,是软件可靠性评价的基础,主要是在软件测试、实施阶段收集的,在软件工程的需求、设计和开发阶段的可靠性活动,也会产生影响较大的其他可靠性数据。

可靠性数据的收集工作必须贯穿于整个软件生命周期。

受软件开发过程中的复杂性以及潜在因素的影响,可靠性数据的收集工作往往比较困难。

首先,需要及早确定所采用的可靠性模型,以确定需要收集的可靠性数据,并明确定义一些术语和记录规范,如时间、失效、失效严重度等。

同时,还要制定可实施性较强的可靠性数据收集计划,抽取部分开发人员、质量保证人员、测试人员、用户业务人员参加。

2.4.3软件可靠性的评估和预测
软件可靠性评估和预测以软件可靠性模型分析为主,同
时作为可靠性模型的补充、完善和修正,也要在模型之外运用一些统计技术和手段对可靠性数据进行分析。

3结束语
软件可靠性是软件质量指标体系中极为重要的质量指标之一,软件可靠性指标的高低直接决定了软件是否能稳定、可靠地工作。

软件系统和软件测试过程高度复杂,影响软件可靠性行为的因素有许多。

基于数学模型的软件可靠性测试也不是万能的,目前不可能将软件系统中存在的错误都排除。

但是,经过可靠性测试的软件系统可以大大降低因软件失效而造成的损失。

参考文献:
[1]柳纯录.软件评测师教程[M].北京:清华大学出版社,2005.
[2]蔡开元.软件可靠性工程基础[M].北京:清华大学出版社,1995.
[3]徐忍佐.软件可靠性模型及应用[M].北京:清华大学出版社,1994.
[4]郑人杰.计算机软件测试技术[M].北京:清华大学出版社,1992.。