| |||||
| |||||
| |||||
| |||||
| |||||
| |||||
| |||||
一、对软件可靠性测试的认识 件不引起系统失效的概率。该概率是系统输入和系统使用 的函数,也是软件中存在故障的函数,系统输入将确定是否 会遇到存在的故障。 应用统计技术处理在系统测试和运行期间采集、观察到 的失效数据,以评估该软件的可靠性。 为进行软件可靠性估计对该软件进行的功能测试。需 要说明的是,"使用代表性"指的是在统计意义下该环 境能反映出软件的使用环境特性。 软件可靠性测试的主要目的有:
以证实软件需求是否正确实现。 估计软件可靠性一般可分为四个步骤,即数据采集、 模型选择、模型拟合以及软件可靠性评估。可以 认为,数据采集是整个软 件可靠性估计工作的基 础,数据的准确与否关系到软件可靠性评估的准 确度。 可靠性影响较大的错误。 试,这主要是因为二者失效的原因不同。硬件效 一般是由于元器件的老化引起的,因此硬件可 靠性测试强调随机选取多个相同的产品,统计 它们的正常运行时间。正常运行的平均时间越 长,则硬件就越可靠。软件失效是由设计缺陷造 成的,软件的输入决定是否会遇到软件内部存在 的故障。因此,使用同样一组输入反复测试软件 并记录其失效数据是没有意义的。在软件没有 改动的情况下,这种数据只是首次记录的不断 重复,不能用来估计软件可靠性。软件可靠性 测试强调按实际使用的概率分布随机选择输 入,并强调测试需求的覆盖面。软件可靠性 测试也不同于一 般的软件功能测试。相比 之下,软件可靠性测试更强调测试输入与典 型使用环境输入统计特性的一致,强调对功 能、输入、数据域及其相关概率的先期识 别。测试实例的采样策略也不同,软件可靠 性测试必须按照使用的概率分布随机地选 择测试实例,这样才能得 到比较准确的 可靠性估计,也有利于找出对软件可靠 性影响较大的故障此外,软件可靠性测试 过程中还要求比较准确地记录软件的运 行时间,它的输入覆盖一般也要大于普 通软件功能测试的要求。对一些特殊 的软件,如容错软件、实时嵌入式软件 等,进行软件可靠性测试时需要有多种 测试环境。这是因为在使用环境下常常 很难在软件中植入错误,以进行针对性 的测试。 可靠性测试是软件可靠性保证过程中 非常关键的一步。经过软件可靠性测 试的软件并不能保证该软件中残存的 错误数最小,但可以保证该软件的可 靠性达到较高的要求。从工程的角 度来看,一个软件的可靠性高不仅意 味着该软件的失效率低,而且意味着 一旦该软件失效,由此所造成的危害 也小。一个大型的工程软件没错误是 不可能的,至少理论上还不能证明一 个大型的工程软件能没有错误。因此, 保证软件可靠性的关键不是确保软件没 有错误,而是要确保软件的关键部分没 有错误。更确切地说,是要确保软件中没 有对可靠性影响较大的错误。这正是软件 可靠性测试的目的之 一。软件可靠性测 试的侧重点不同于一般的软件功能测试 ,其测试实例设计的出发点是寻找对可靠 性影响较大的故障。因此,要达到同样的 可靠性要求,可靠性测试比一般的功能 测试更有效,所花的时间也更少。另外 ,软件可靠性测试的环境是具有使用代 表性的环境,这样,所获得的测试数据与 软件的实际运行数据比较接近,可用于 软件可靠性估计。 总之,软件可靠性测试比一般的功能测 试更加经济和有效,它可以代替一般的功能 测试,而一般的软件功能测试却不能代替软件 可靠性测试,而且一般功能测试所得到的测试数 据也不宜用于软件可靠性估计。 制定测试方案,制定测试计划,进行测试并记录 测试结果,编写测试报告。制定测试方案时 需要特别注意被测功能的识别和失效等级的定 义。制定测试计划时需设计测试实例,决定测 试时要确定输入顺序,并确定程序输出的 预期结果,这时也需注意测试覆盖问题。 别,确定使用剖面。功能识别的目标是:识别所 有被测功能以及执行这些功能所需的相关输入, 识别每一个使用需求及其相关输入的概率分布。为 达到第一个目标,需要分析软件功能的所有集 合,这些功能之间全部的约束条 件,功能之间的独立性、相互关系和相互影 响,还需分析系统的不同运行模式、失效发生时 系统重构策略等对软件运行方式有较大影响的 因素。第一个目标也是一般软件功能测试需要 达到的目标,但第二个目标则是软件可靠性测 试特别强调的。为了得到能够反映软件使用的 有代表性的概率分布,测试人员必须和系统工 程师、系统运行分析员和顾客共同合作。需要 指出的是,由于可靠性的要求,输入数据的概率 分布应包括合法数据的概率分布和非法数据的概 率分布两部分。有时为了更好地反映实际使用状 况,还需给出那些影响程序运行方式的条件,如硬 件配置、负荷等的概率分布。 需求的识别。 需求的识别。 由测试人员、设计人员和用户共同商定,达成协 议。一般的等级定义如表所示@@16115000.GIF; 表1 失效等级定义@@如果存在1级和2级失效可能 性,那么就应该进行故障树分析,标识出所有可能 造成严重失效的功能需求和其相关的输入域、外 部条件和发生的可能性对引起1级和2级失效的 功能需求及其相关的输入域必须进行严格的强 化测试。对引起3级失效的功能可按其发生概率 选择测试实例。第4级失效可不查找原因,可在 以后的版本中处理。 盖,这是准确估计软件可靠性的基础。输入覆 盖包括下面几个内容: 生概率之和必须大于软件可靠度的要求。 相关输入变量的相互影响不会导致软件失效。 的覆盖,即不合法输入域的覆盖。 响程序运行方式的条件。 功能的输入和对应的数据域,确定相关的概率分 布及需强化测试的功能。 用中,有的步骤并不是必须的。 触发该功能的输入及相关的数据域(包括合法与不 合法的两部分)。分析时要注意下述问题: 在,那么应列出所有的系统运行模式。 如果存在,那么有多少?它们的影响程度如何 的?如果相关,是密切相关还是部分相关?如果两种 功能密切相关,那么可将两种功能合并为一种功能。 如果功能之间为部分相关,则需列出相应输入变量 的合法组合。 度较大的1级和2级失效的可能性。如果这种可能性 存在,则应进行故障树分析,标识出所有可能造成严 重失效的功能需求和其相关的输入域。 否需要对不同的运行方式进行分别测试。如果需要, 则应给出各种运行方式下各数据域的概率分布;否 则,给出各数据域的概率分 布。 送入数据库。 成相对应的测试实例集,并计算出每一测试实例预 期的软件输出结果。本阶段需要注意:在按概率分 布随机选择生成测试实例的同 时,要保证测试的 覆盖面。 试资源。由于本阶段前一部分的工作需要考虑大 量的信息和数据,因此需要一个软件支持工具, 建立数据库,并产生测试实例。另外,有时预 测软件输出结果也需要大量的计算,有些复杂 的软件甚至要用到仿真器模拟输出结 果。 能类型有关。 软件的测试环境(包括硬件配置和软件支撑环境) 应和预期的实际使用环境尽可能一致,对某些环 境要求比较严格的软件(如嵌入式软件)则应 完全一致。测试时按测试计划和顺序对每一个 测试实例进行测试,判断软件输出是否符合预期 结果。测试时应记录测试结果、运行时间和判断 结果。如果软件失效,那么还应记录失效现象和 时间,以备以后核对。 并将结果写成报告。笔者认为,软件可靠性测试 的关键在于: 率分布的确定。 测试顺序。 功应用于大量应用软件的可靠性测试,包括一些 商用软件和航空、航天电子设备中嵌入式软件的 测试,其效果很好。因此,我们有必要投入一定的 人力、物力,针对我们的实际需要,有目的地对各 类应用软件进行软件可靠性测试,从实践中逐步积 累经验。同时需要软件开发方和使用方共同合作, 进行软件可靠性测试方法的研究和有关支持工具 的开发,促进我国软件可靠性水平的提高。 |
文章评论(0条评论)
登录后参与讨论