3.3 可靠性数据分析
  表1所示失效数据是一组完全失效数据,首先用自行开发的软件可靠性分析工具(SRAT)对数据进行了趋势分析,分析表明,软件的可靠性呈现稳定趋势,即软件具有不变的失效率,失效时间服从指数分布。因此可计算失效率和平均失效间隔时间分别为:
  λ=总失效数/总运行时间=60/21 783.7=0.002 75(失效数/s);MTBF=1/λ=363 s。
  事实上,在测试中,每次失效发生后,并没有对软件进行失效纠正,因此,失效率应该是不变的,数据分析结果也验证了这一点。分析结果表明,该软件的可靠性尚需进一步提高。事实上,上述失效数据中,许多失效是由相同的缺陷造成的。如果对相同的失效只考虑首次发生的失效,亦即首次发现加以纠正的话,软件的可靠性将得到很大的提高。需要强调的是,该分析结果是在给定的运行剖面下、在给定的运行环境下进行测试得到的分析结果。不同的运行剖面,不同的运行环境(如不同的机器速度)会得到不同的可靠性估计。另外,所收集的失效时间数据的类型也会影响数据分析的结果。

  4 结论
  软件可靠性测试是面向可靠性要求的测试,是软件可靠性工程中的一项重要工作,它能有效地发现影响软件可靠性的缺陷,通过软件可靠性测试,可以有效地实现软件可靠性的增长,估计软件的可靠性水平,验证软件可靠性是否达到要求。但是对于软件可靠性测试的困难和局限性,也应有充分的认识。
  (1) 软件可靠性测试是一项高投入的测试工作:进行软件可靠性测试必须要了解软件过去的使用历史,或估计可能的使用,构造软件的运行剖面,准备测试环境,且要进行大量的测试运行。
  (2) 软件可靠性测试不能代替其他测试和验证方法:从有效发现缺陷角度出发,软件可靠性测试可能不是有效的方法,必须结合其他的测试和验证方法、手段发现软件中存在的各种缺陷。
  (3) 难以验证具有极高可靠性要求的软件:对于有极高可靠性要求的软件,如失效率为10-9,用软件可靠性测试的方法进行验证所需的时间是不切合实际的,必须采用如形式化验证等方法来加以解决。