APP下载

基于失效数据的软件可靠性测试方法

2018-02-02顾吉堂

电脑知识与技术 2018年1期
关键词:软件可靠性

顾吉堂

摘要:结合软件可靠性测试流程,分析了软件可靠性数据获取、处理办法,最后提出一种基于软件失效数据进行软件可靠性测试的方法。

关键词:软件可靠性;软件失效;可靠性测试

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)01-0122-02

Abstract:Combining software testing process, the paper studies software reliability data acquisition and processing methods, a way of testing software reliability Based on its failure data is proposed.

Key words:software reliability; software failure; reliability test

计算机软件日趋复杂,影响其质量的因素也越来越多,尽管人们采用了软件工程、软件质量保证等一系列技术提高其可靠性水平,但在当前技术下做到软件零缺陷几乎是不可能的,用户对运行稳定、交互顺畅、性能良好的计算机软件的不断追求为深入开展软件可靠性测试研究提供了不竭动力。

可靠性作为衡量软件质量的重要指标,越来越受到人们的重视,软件可靠性测试已成为软件可靠性工程的核心内容。

美国IEEE计算机学会软件工程技术委员会于1983年对软件可靠性作出如下的定义:

1) 在规定条件下和规定时间内不引起系统失效的概率;

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

其中,“规定条件”包括软件运行环境、运行剖面;“规定时间”分为执行时间、日历时间和时钟时间等。

当软件失效时,就说明软件不可靠,软件失效次数越多或者发生失效时间间隔越短,认为软件越不可靠。软件失效的机理可用图1表示。

其中:

错误(error):指软件生存期内出现的不希望或不可接受的人为错误,其结果导致软件缺陷产生,相对于软件本身,错误是一种外部行为;

缺陷(defect):指存在于软件文档、数据、程序中的偏差导致软件运行于特定条件下出现故障;

故障(fault):指软件在运行过程中出现的系统不能够执行规定功能的状态,故障是一种动态行为,具有较强的不确定性;

失效(failure):指程序的运行偏离了需求,产生了一种不希望或不可接受的外部行为结果。

软件失效机理可概括为:软件错误通常是人为原因造成的,一个软件错误必定会产生软件缺陷;软件缺陷被激活时,软件故障就会随之而来;软件故障若未及时处理便会导致软件失效。

1 软件可靠性测试流程

软件可靠性测试指的是对特定时间和环境下软件无故障运行概率的分析判断,一般情况下,可按软件运行剖面随机检查其各项指标,通过收集测试数据并运用可靠性模型确定软件的可靠性水平。

软件可靠性测试流程通常分可靠性测试准备、可靠性测试执行和可靠性结果分析三个阶段,软件可靠性测试的一般流程如图2所示。

1) 构造运行剖面:“软件的运行剖面”是指由软件所有可能的输入值构成的软件运行的输入空间及其分布概率。粗略地说,运行剖面是用来描述软件实际使用情况的,可根据软件的需求规格说明及设计文档确定软件功能点、提取操作点、明确操作点相互关系和操作概率等。

2) 选取测试用例:测试用例一般包括测试项功能、输入数据和预期结果等,要使其输入环境与软件典型使用环境在统计特性上尽可能保持一致,也要根据软件运行剖面随机选取与用户的使用概率分布相吻合的测试用例,确保软件可靠性估计的准确性和客观性。

3) 测试执行:即在实装真实条件下或模拟生成的仿真测试环境中,按软件操作流程运行测试用例,记录软件运行期间的失效时间、失效间隔、累积失效数等测试数据。

4) 结果分析:根据软件运行结果判断被试软件是否失效并对其中原因定位,除此之外,还要根据软件失效数据评价其可靠性指标是否满足预定要求,为管理决策提供依据。

5) 纠错与回归测试:在结果分析基础上,针对导致软件失效的程序要通过纠错措施进行纠正,才能实现软件可靠性的增长;回归测试是指对修改错误程序后的软件按照测试流程和运行剖面再次进行的测试,其目的是确认纠错措施没有产生新的错误。

2 软件可靠性数据采集

软件可靠性数据不仅要满足软件可靠性模型要求还要满足软件全寿命、全周期可靠性分析要求,数据采集的质量、数量直接影响到软件可靠性测试结果的准确性和可信度。为便于研究,这里将软件的错误、缺陷、故障及引起软件差错的其他数据统称为软件可靠性数据。

对于一个计算机软件来说,发生软件失效一般是因为运行了某一包含缺陷的软件模块的原因。为了讨论方便,这里把那些驱动系统软件模块运行的因素为操作,并用操作序列来表达系统进行的所有活动。同时,软件失效又具有相对独立性,其發生的时间与系统先前工作状态、运行时长及累积失效等因素均无关。

一般来说,可以把软件在某一次可靠性测试过程中的所有操作用一个操作序列来表示,其失效时间序列为,这里为系统开机时间。为方便研究,我们在时间轴上用操作轴和操作序列、失效轴和失效序列来直观反映软件在一次测试过程中发生失效的情况,如图3所示。

引入操作序列的概念,有利于按时间先后顺序获取软件在实际使用中的失效数据,该数据能直观反映出测试周期中的软件可靠性数据,有利于开展软件的可靠性分析。

所谓失效序列,通常认为其中的任意一次失效,意味着运行了某个包含缺陷的软件模块,测试中可以通过记录失效时间来构建其失效序列。

当软件进行修改后,其失效数据的获取可以根据修改缺陷模块的运行反推出该模块操作可能失效现象,在先前失效序列中去掉已修改的失效数据,加上该操作在更新后发生的失效数据就可以获得新的、可利用的软件可靠性数据了。

3 软件可靠性测试模型

现有的软件可靠性测试模型有很多种,这里采用G-O非齐次Poisson过程模型,根据软件可靠性测试中采集的软件失效数据预测其最终的失效总数,为可靠性分析奠定基础。

作如下假设:

1) 时刻t被发现的软件失效数据服从泊松分布;

2) 软件错误相互独立且被发现概率基本相同;

3) 软件纠错过程中不会产生新的错误。

累积错误数m(t)为软件运行到t时刻的累积错误总数,a为最终可能被检测出的错误总数,则有:

对于一个被测软件,在获取软件失效数及失效间隔时间基础上,可通过上述模型计算出软件累积错误,为该软件的可靠性测试奠定基础。

4 结束语

本文从软件失效数据采集、分析入手,结合软件可靠性评估模型,针对软件可靠性测试技术进行了研究,对提高计算机软件可靠性测试水平具有指导意义。

参考文献:

[1] 李丽清.软件缺陷数据的分析和预测[J].中国工程物理研究院科技年报,2003(6):160-162.

[2] 张广梅.软件测试与可靠性评估[D].北京:中国科学院研究生院,2006:21-22.

[3] 扬玥.软件可靠性评测的多因素决策模型[J].计算机应用研究,2015(4):1110-1111.

[4] 乔辉.软件缺陷预测技术研究[D]. 北京:信息工程大学,2013:3-4.endprint

猜你喜欢

软件可靠性
软件可靠性耦合度量的测试用例约简优化
嵌入式应用软件可靠性自动测试方法研究
软件可靠性工程综合应用建模技术研究
软件可靠性设计技术应用研究
数控系统软件可靠性设计与故障分析技术
基于GQM的装备软件可靠性参数选取方法
简谈使用BoundsChecker进行计算机联锁系统人机界面软件可靠性测试
基于多准则决策的软件可靠性模型选择方法
IEEE软件可靠性系列标准分析*
软件可靠性数据预处理研究