二、软件可靠性测试中需注意的问题

软件可靠性测试一般可分为四个阶段:制定测试方案,制定测试计划,进行测试并记录测试结果,编写测试报告。制定测试方案时需要特别注意被测功能的识别和失效等级的定义。制定测试计划时需设计测试实例,决定测试时要确定输入顺序,并确定程序输出的预期结果,这时也需注意测试覆盖问题。

1、功能识别

软件可靠性测试的第一步是进行功能识别,确定使用剖面。功能识别的目标是:识别所有被测功能以及执行这些功能所需的相关输入,识别每一个使用需求及其相关输入的概率分布。为达到第一个目标,需要分析软件功能的所有集合,这些功能之间全部的约束条件,功能之间的独立性、相互关系和相互影响,还需分析系统的不同运行模式、失效发生时系统重构策略等对软件运行方式有较大影响的因素。第一个目标也是一般软件功能测试需要达到的目标,但第二个目标则是软件可靠性测试特别强调的。为了得到能够反映软件使用的有代表性的概率分布,测试人员必须和系统工程师、系统运行分析员和顾客共同合作。需要指出的是,由于可靠性的要求,输入数据的概率分布应包括合法数据的概率分布和非法数据的概率分布两部分。有时为了更好地反映实际使用状况,还需给出那些影响程序运行方式的条件,如硬件配置、负荷等的概率分布。

2、定义换效等级

定义失效等级主要是为了解决下面两个问题:

? 对发生概率小但失效后危害严重的功能需求的识别。

? 对可不查找失效原因、并不做统计的功能需求的识别。

在制定测试计划时,失效及其等级的定义应由测试人员、设计人员和用户共同商定,达成协议。一般的等级定义如表所示@@16115000。GIF;表1 失效等级定义@@如果存在1级和2级失效可能性,那么应该进行故障树分析,标识出所有可能造成严重失效的功能需求和其相关的输入域、外部条件和发生的可能性对引起1级和2级失效的功能需求及其相关的输入域必须进行严格的强化测试。对引起3级失效的功能可按其发生概率选择测试实例。第4级失效可不查找原因,可在以后的版本中处理。

3、可靠性测试覆盖

可靠性测试必须保证输入覆盖和环境覆盖,这是准确估计软件可靠性的基础。

输入覆盖包括下面几个内容:

? 输入域覆盖,即所有被测输入值域的发生概率之和必须大于软件可靠度的要求。

? 重要输入变量值的覆盖。

? 相关输入变量可能组合的覆盖,以确保相关输入变量的相互影响不会导致软件失效。

? 设计输入空间与实际输入空间之间区域的覆盖,即不合法输入域的覆盖。

? 各种使用功能的覆盖。

环境覆盖是指测试时必须覆盖所有可能影响程序运行方式的条件。