杨丽波
(淮安信息职业技术学院,江苏 淮安 223003)
软件可靠性测试技术研究
杨丽波
(淮安信息职业技术学院,江苏 淮安 223003)
文章分析了软件可靠性测试的过程、可靠性测试中涉及的基本参数及计算方法、软件运行剖面的概念和获取运行剖面的步骤、测试用例的选择方法、软件可靠性测试模型的作用和建立方法。
软件可靠性测试;软件运行剖面;软件可靠性测试模型
软件的可靠性是评价软件质量的一个重要指标,是在软件验收阶段进行的软件测试工作,通过测试可以计算出具体的软件可靠性R的值。对于安全第一和具有可靠性验收指标的软件产品来说,软件可靠性测试是必不可少的。
软件可靠性测试的过程如图1所示。
图1 软件可靠性测试的过程
为了具体的描述出软件产品的可靠性,可以采用故障率、维修率、平均无故障时间、平均维护时间、有效度和可靠性R来描述,计算方法如下:假设在测试系统A的过程中,经过时间t1以后,软件出现错误停止运行,经过时间T1排除故障,然后继续测试。如图2所示,t1,t2,…,tn是系统正常工作的时间,T1,T2,…,Tn是出现故障后的维护时间。
图2 系统测试过程状态
的单位是FIT,1 FIT=10-9/小时。
(6)可靠性:软件的运行剖面
2.1 软件运行剖面的概念
软件运行剖面的概念描述的是软件的输入域中的各点取值的分布。
假设X是软件产品A的定义域,即X={x1,x2,…,xn},用P(xi)表示xi出现的概率,那么X的运行剖面为:{(x1,P(x1)),(x2,P(x2)),…,(xn,P(xn))}。
2.2 获取运行剖面的步骤
构建软件产品的运行剖面通常要经过以下步骤实现。
(1)客户剖面:客户通常指用同一种方式使用系统的用户。客户剖面被定义客户及客户出现概率的集合,具体形式如下:
客户剖面={客户1:P(客户1),客户2:P(客户2),…,客户n:P(客户n)}
(2)用户剖面:我们将用同一种方法使用系统的用户称为一个用户组。用户剖面就是用户及其用户出现概率的集合。因为在不同客户的用户组中,有些以相同的方式使用系统,有些则不同。因此,在计算用户剖面时,要将不同客户剖面中包括的相同用户组合并。用户剖面的具体形式如下:
用户剖面={用户1:P(用户1),用户2:P(用户2),…,用户n:P(用户n)}
(3)系统模式剖面:系统模式是为便于分析系统的执行行为以及更好的管理系统,将系统划分成一组功能或者操作的集合。通常一个软件产品都有多种系统模式,系统模式剖面就是每一种系统模式及其发生概率的一个集合,具体形式如下:
系统模式剖面={模式1:P(模式1),模式2:P(模式2),…,模式n:P(模式n)}
(4)功能剖面:根据上述步骤产生的多个系统模式,将每种模式进一步分解为功能的集合,并确定每个功能发生的概率,就构成了功能剖面。功能剖面的形式如下:
功能剖面={功能1:P(功能1),功能2:P(功能2),…,功能n:P(功能n)}
(5)运行剖面:将系统的每一个具体实现功能及其发生概率的集合定义为运行剖面。因为在软件开发过程中,一个功能可能有多个不同的实现方法,而多个不同的功能又可能使用相同的实现方法,我们在测试时所采用的测试用例是根据具体实现功能的方法选择的,因此要将功能转化为具体的实现功能,构建软件的运行剖面,其形式如下:
运行剖面={实现功能1:P(实现功能1),实现功能2:P(实现功能2),…,实现功能n:P(实现功能n)}
任何一个软件产品在使用过程中,各个功能部件的使用频率是不同的,软件运行剖面详细地刻画了软件系统实际的使用情况。
在软件可靠性测试过程中,测试用例集是测试的基础。测试人员可以基于软件的运行剖面确定测试用例集,具体步骤如下:
(1)最小测试用例集。首先按照测试用例公平选择原则和功能的100 %覆盖原则,建立最小测试用例集。
(2)如果最小测试用例集所包括的测试用例不能满足可靠性测试的需求,则继续从输入域中选取新的测试用例加入到测试用例集中,从而建立新的用例集合。
(3)不断重复以上过程,直到测试用例集能够满足测试的要求。
软件可靠性模型就是利用软件测试过程中的失效数据,在一定的假设的基础上,采用某一种数学模型进行软件可靠性建模,对系统未来的可靠性进行预测。目前已建立的可靠性模型有Weibull和Gamma分布失效时间模型、Bayes模型、非均匀泊松过程模型、Musa模型等等。
4.1 软件可靠性建模的基本假设
软件的运行剖面与测试剖面具有一致性;测试过程中发现错误以后立刻修正,修正过程不引入新的错误;测试过程中发现错误和错误失效是彼此独立的;测试过程中,每个错误被发现的概率是相等的。
4.2 建立软件可靠性模型的方法
(1)根据现有的模型和经验等其他因素,对M(t),u(t),F(t),f(t),Z(t)等之一进行假设。(2)根据上述假设,推导出其他函数形式。(3)根据假设和推导出的模型的形式,估计其中参数。(4)应用可靠性数据,检验所估计参数的正确度。
软件可靠性测试是软件开发过程中的一个重要环节,其目的是对软件的可靠性进行验证,判断其可靠性是否满足用户的需求,如果通过测试计算得到的可靠性R的值满足需求,可以停止可靠性测试,否则,还需要对软件中的缺陷进行纠正,提高软件产品的可靠性。本文分析了在软件可靠性测试中使用的相关技术理论,希望对软件测试工作者有启发作用。
[1]何国伟,王纬.软件可靠性[M].北京:国防大学出版社,1998.
[2]蔡开元.可靠性工程基础[M].北京:清华大学出版社,1995.
[3]杜文洁,王占军,高芳.软件测试基础教程.[M].北京:中国水利水电出版社,2016.
[4]帕顿.软件测试[M].周予滨,姚静,译.北京:机械工业出版社,2002.
[5]PODGURSKI A, MASRI W, MCCLEESE Y. Estimation of software reliability by strati fi ed ampling[J].ACM Transactions on Software Engineering and Methodology, 1999(3):263-289.
[6]古乐,史九林.软件测试案例和实践教程[M].北京:清华大学出版社,2008.
Analysis on software reliability testing technology
Yang Libo
(Huai’an College of Information Technology, Huai’an 223003, China)
This paper analyzes the process of software reliability testing, the basic parameters and the calculation method involved in the reliability test, the concept of the software operational pro fi le and steps of obtaining operational pro fi le, selection method of test cases, the role of testing model of software reliability and establishing method.
software reliability testing; software operational pro fi le; software reliability testing model
杨丽波(1977— ),女,黑龙江牡丹江,硕士,讲师;研究方向:软件技术。