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

发表于:2015-07-09来源:uml.org.cn作者:不详点击数: 标签:可靠性测试
2 软件可靠性测试过程 2.1 软件可靠性测试活动 软件可靠性测试的一般过程如图1所示。主要活动包括:测试数据、测试环境的准备,测试运行,可靠性数据

  2 软件可靠性测试过程

  2.1 软件可靠性测试活动

  软件可靠性测试的一般过程如图1所示。主要活动包括:测试数据、测试环境的准备,测试运行,可靠性数据收集,可靠性数据分析和失效纠正。

  图1 软件可靠性测试过程

  (1) 构造运行剖面:软件的运行剖面“是指对系统使用条件的定义。即系统的输入值用其按时间的分布或按它们在可能输入范围内的出现概率的分布来定义”[5]。粗略地说,运行剖面是用来描述软件的实际使用情况的。运行剖面是否能代表、刻画软件的实际使用取决于可靠性工程人员对软件的系统模式、功能、任务需求及相应的输入激励的分析,取决于他们对用户使用这些系统模式、功能、任务的概率的了解。运行剖面构造的质量将对测试、分析的结果是否可信产生最直接的影响。

  (2) 选取测试用例:软件可靠性测试采用的是按照运行剖面对软件进行可靠性测试的方法。因此,可靠性测试所用的测试用例是根据运行剖面随机选取得到的。

  (3) 测试环境的准备:为了得到尽可能真实的可靠性测试结果,可靠性测试应尽量在真实的环境下进行,但是在许多情况下,在真实的环境下进行软件的可靠性测试很不实际,因此需要开发软件可靠性仿真测试环境。比如,对于多数嵌入式软件,由于与之交联的环境的开发常常与软件的开发是同步甚至是滞后的,因此无法及时进行软件可靠性测试;有些系统中,由于交联的环境非常昂贵而无法用于需要进行大量运行的可靠性测试。

  (4) 可靠性测试运行: 即在真实的测试环境中或可靠性仿真测试环境中,用按照运行剖面生成的测试用例对软件进行测试。

  (5) 数据收集:收集的数据包括软件的输入数据、输出结果,以便进行失效分析和进行回归测试;软件运行时间数据,可以是CPU执行时间、日历时间、时钟时间等;可靠性失效数据包括每次失效发生的时间或一段时间内发生的失效数,失效数据可以实时分析得到,也可以事后分析得到。数据收集的质量对于最终的可靠性分析结果有着很大的影响,应尽可能采用自动化手段进行数据的收集,以提高效率、准确性和完整性。

  (6) 数据分析:主要包括失效分析和可靠性分析。失效分析是根据运行结果判断软件是否失效,以及失效的后果、原因等;而可靠性分析主要是指根据失效数据,估计软件的可靠性水平,预计可能达到的水平,评价产品是否已经达到要求的可靠性水平。为管理决策提供依据。

  (7) 失效纠正:如果软件的运行结果与需求不一致,则称软件发生失效。通过失效分析,找到并纠正引起失效的程序中的缺陷,从而实现软件可靠性的增长。

  2.2 软件可靠性增长测试过程

  软件可靠性增长测试是为了满足用户对软件的可靠性要求、提高软件可靠性水平而对软件进行的测试。是为了满足软件的可靠性指标要求,对软件进行测试—可靠性分析—修改—再测试—再分析—再修改的循环过程。软件可靠性增长测试过程如图2所示。

  2.3 软件可靠性验证测试过程

  软件可靠性验证测试是为了验证在给定的统计置信度下,软件当前的可靠性水平是否满足用户的要求而进行的测试,即用户在接收软件时,确定它是否满足软件规格说明书中规定的可靠性指标。一般在验证过程中,不对软件进行修改。软件可靠性验证测试过程如图3所示。

  图2 软件可靠性增长过程

  图3 软件可靠性验证过程

  3 某故障诊断专家系统软件可靠性测试

  《××飞机起落架故障诊断专家系统》软件是一个使用“专家系统”方法对××飞机起落架进行故障诊断的软件。该软件是用 VC+ +开发的,源代码近一万条。我们在该软件调试的后期对其进行了软件可靠性测试,主要工作包括,运行剖面的构造和测试用例的生成,测试运行及数据收集,可靠性数据分析。

  3.1 运行剖面的构造及测试用例生成

  根据被测软件功能的说明,结合软件的有关文档,以及对相关概率的估计,可构造软件的系统模式剖面、功能剖面和运行剖面。

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