软件可靠性测试及其实践(3)

发表于:2015-07-09来源:uml.org.cn作者:不详点击数: 标签:可靠性测试
运行剖面的构造是一个自顶向下的层次结构。通过不断细化被测软件的输入空间,即从划分系统模式剖面到功能剖面,直到各功能输入变量的取值区间在概

  运行剖面的构造是一个自顶向下的层次结构。通过不断细化被测软件的输入空间,即从划分系统模式剖面到功能剖面,直到各功能输入变量的取值区间在概率空间的划分,形成最终的运行剖面。这里一个运行如下规定:运行是由完成某一功能的一系列输入变量的某一取值区间的有序组合。各运行在概率空间的划分构成运行剖面。

  测试用例是根据运行剖面生成的,完成对某一功能进行测试,按顺序输入到被测软件的一系列输入变量值的有序组合。

  由于运行剖面描述了完成某一功能输入变量的取值区间,通过两次随机抽样,可以得到一个测试用例。第一次抽样选择运行,第二次抽样在每一个输入变量取值区间内随机抽取输入变量的具体取值。将其按照测试过程中的输入顺序组合起来形成测试用例。一个测试用例的具体形式如下:

  3.2 测试运行及数据收集

  按照上述方法生成了400个测试用例。在一台配置为Pentium 586 at 133 MHz,内存16 MB,操作系统为Windows 95中文版环境的计算机上,通过手动方式将测试用例输入到被测软件,利用一个为配合这种软件可靠性测试方法而开发的数据辅助收集软件,采集测试运行的时间与失效信息,包括测试用例序号、测试日期、测试开始时刻、测试结束时刻/失效发生时刻、测试运行时间、累计运行时间、失效现象等。通过测试记录下了60次失效。收集到的失效数据如表1所示,数据从左至右,从上至下,为每次失效发生的累计运行时间(执行时间)。

  表1 某软件可靠性测试失效数据   单位:s

  3.3 可靠性数据分析

  表1所示失效数据是一组完全失效数据,首先用自行开发的软件可靠性分析工具(SRAT)对数据进行了趋势分析,分析表明,软件的可靠性呈现稳定趋势,即软件具有不变的失效率,失效时间服从指数分布。因此可计算失效率和平均失效间隔时间分别为:

  λ=总失效数/总运行时间=60/21 783.7=0.002 75(失效数/s);MTBF=1/λ=363 s。

  事实上,在测试中,每次失效发生后,并没有对软件进行失效纠正,因此,失效率应该是不变的,数据分析结果也验证了这一点。分析结果表明,该软件的可靠性尚需进一步提高。事实上,上述失效数据中,许多失效是由相同的缺陷造成的。如果对相同的失效只考虑首次发生的失效,亦即首次发现就加以纠正的话,软件的可靠性将得到很大的提高。需要强调的是,该分析结果是在给定的运行剖面下、在给定的运行环境下进行测试得到的分析结果。不同的运行剖面,不同的运行环境(如不同的机器速度)会得到不同的可靠性估计。另外,所收集的失效时间数据的类型也会影响数据分析的结果。

  4 结论

  软件可靠性测试是面向可靠性要求的测试,是软件可靠性工程中的一项重要工作,它能有效地发现影响软件可靠性的缺陷,通过软件可靠性测试,可以有效地实现软件可靠性的增长,估计软件的可靠性水平,验证软件可靠性是否达到要求。但是对于软件可靠性测试的困难和局限性,也应有充分的认识。

  (1) 软件可靠性测试是一项高投入的测试工作:进行软件可靠性测试必须要了解软件过去的使用历史,或估计可能的使用,构造软件的运行剖面,准备测试环境,且要进行大量的测试运行。

  (2) 软件可靠性测试不能代替其他测试和验证方法:从有效发现缺陷角度出发,软件可靠性测试可能不是最有效的方法,必须结合其他的测试和验证方法、手段发现软件中存在的各种缺陷。

  (3) 难以验证具有极高可靠性要求的软件:对于有极高可靠性要求的软件,如失效率为10-9,用软件可靠性测试的方法进行验证所需的时间是不切合实际的,必须采用如形式化验证等方法来加以解决。

  参考文献

  1、Michael L,ed..Handbook of Software Reliability Engineering.McGraw Hill and IEEE Computer Society Press,1996

  2、陆民燕.软件可靠性增长测试的研究.航空学报,1995,16

  3、陈雪松.软件可靠性测试技术研究:[硕士论文].北京航空航天大学,1997

  4、GB/T 11457-89:中华人民共和国国家标准——软件工程术语

原文转自:http://www.uml.org.cn/Test/200807176.asp