北京浩鸿天业信息技术有限责任公司

首页 > 技术支持 > 软件可靠性测试

 

 

 

北京浩鸿天业信息技术有限责任公司

软件可靠性测试

周新蕾 缪峥红 石柱

测试特点

    软件可靠性测试不同于一般的软件功能测试。

    首先,软件失效是由设计缺陷造成的,其输入数据决定了是否会遇到软件内部存在的故障,所以,软件可靠性测试强调按实际使用的概率分布随机选择输入数据,并强调测试需求的覆盖度。因此,软件可靠性测试实例的采样策略与一般的功能测试不同,它必须按照使用的概率分布,随机地选择测试实例,这样才能得到比较准确的可靠性估计,也有利于找出对软件可靠性影响较大的故障。

    第二,在软件可靠性测试过程中,要比较准确地记录软件的运行时间,其输入覆盖一般也要大于普通软件功能测试的要求。

    第三,软件可靠性测试对使用环境的覆盖比一般软件测试的要求高,测试时应覆盖所有可能影响程序运行方式的物理环境。尤其是一些特殊的软件,如容错软件、实时嵌入式软件等,其中对意外情况的处理,在一般的使用环境下很难进行有针对性的测试,这时常常需要有多种测试环境。

测试步骤
    软件可靠性测试分为以下4个阶段:

    1.制定测试计划

    本阶段的目标是识别软件功能需求,触发该功能的输入和对应的数据域;确定相关的概率分布及需强化测试的功能,编写测试平台需求、可靠性测试计划和测试用例。建议采取下述步骤:

    (1)分析功能需求

    分析各种功能需求,识别触发该功能的输入及相关的数据域(包括合法与不合法两部分)。

    (2)定义失效等级

    一般的等级定义如下表所示。首先判断是否存在出现危害度较大的1级和2级失效的可能性,如果存在,那么,就应该进行故障树分析,标识出所有可能造成严重失效的功能需求和其相关的输入域,以及外部条件和发生的可能性。对引起1级和2级失效的功能需求及其相关的输入域必须进行严格的强化测试;对引起3级失效的功能可按其发生概率选择测试实例。

 

    (3)确定概率分布

    确定各种不同运行方式的发生概率,给出各种运行方式下各数据域的概率分布,判断是否需要强化测试某些功能。

    (4)整理概率分布的信息。

    (5)编写测试平台需求、测试计划和测试用例,确定测试内容和测试顺序,分配测试资源。

    2.测试准备

    本阶段进行以下两项工作:

    (1)根据前阶段的测试计划和测试用例,生成相对应的测试实例输入文件,并计算出每一测试实例所预期的输出结果。

    (2)研制软件测试平台,建立软件测试环境。具体实施方法与被测应用软件的实际功能类型、测试投入及运行环境有关,这里不再细述。

    3.测试

    按测试计划和顺序对每一个测试实例进行测试,判断软件输出是否符合预期结果。测试时应记录测试结果、运行时间和判断结果。如果软件失效,还应记录下失效现象和时间,以备以后核对。

    4.测试分析

    整理测试记录,分析测试结果,编写测试分析报告。

    测试实践

    1.测试背景

    作者曾对某航天型号软件进行测试。该软件属于要求高可靠性的安全性关键软件,它的失效会造成巨大的损失。此外,该软件的输入/输出响应时间要求较高,软件的运行环境还存在多种随机干扰信号。

    2.实际问题

    测试时曾遇到下述问题:

    (1)软件需求常常由于研制的需要而改变,而且目前对软件开发文档的质量缺乏有效的控制手段,这将直接影响软件测试的质量。

    (2)该软件为嵌入式软件,测试时需要三种测试环境:全数字仿真环境、专门的测试设备和系统联试环境。

    (3)该软件的大部分关键功能要在系统出现故障时起作用,而按照软件输入的概率分布,软件运行的大部分时间为系统的正常状态。因此,完全按照概率分布测试不能满足软件研制部门的要求。

    (4)测试要求很高,但时间很短。

    3.采取的措施

    针对该软件的特点、测试时遇到的问题和软件研制进度的具体要求,我们采取了以下措施:

    (1)软件测试人员从初样的软件需求分析阶段就开始进入该课题组,深入了解软件的功能需求和运行环境。

    该措施是为了让测试人员深入、准确、详细地了解系统的控制过程和软件运行背景,最大限度地减少文档中遗留问题的影响,减少需求改变对测试进度的影响,保证测试用例的设计质量。

    (2)在软件单元测试之前增加两项工作:第一,利用航天软件评测中心研制的汇编语言静态分析工具,对被测软件进行静态分析;第二,按照软件需求规格说明、有关文档和规范的要求,对被测软件进行代码审查,查找软件中的代码错误。

    该项措施有两个目的:

    ·审查代码结构的合理性,分析程序中可能存在的缺陷和隐患,尽可能早地发现软件设计中的缺陷;

    ·提高软件测试的效率,降低测试成本。

    这样做的理由有三:其一,对于某些软件设计缺陷来说,代码审查比动态测试更有效;其二,代码审查的成本明显低于动态测试的成本;其三,软件单元测试用于检查模块内部的编程问题和详细设计问题,不利于发现需求和设计中的遗留问题,但这些遗留问题若放到确认测试阶段解决,则很可能由于错误的相互影响而造成定位困难。特别是当模块改动较大时,还需要重新进行单元测试,延长测试时间,并增加测试和修改的工作量。

    (3)测试方负责研制专门的全数字仿真软件测试平台和专门的硬件测试设备。

    (4)考虑到测试时间和测试成本,在初样阶段分两步对软件进行确认测试:

    ·由测试方在全数字仿真测试平台上对该软件的功能和时间要求进行测试;

    ·由软件研制部门负责在系统综合试验和匹配试验中对软件进行测试。

    在试样阶段分三步对软件进行确认测试:

    ·由测试方负责在全数字仿真软件测试平台上进行测试;

    ·由测试方在专门的硬件测试设备上测试,并增加随机干扰测试,保证软件测试的环境覆盖;

    ·由系统研制部门负责在系统综合试验和匹配试验中对软件进行测试。

    (5)设计测试用例时采用软件可靠性测试的设计思想,对安全性关键功能进行强化测试,并在试样阶段增加对发生概率极小的异常情况的针对性测试,以保证软件的输入覆盖。

    (6)全数字测试平台和硬件测试设备具有自动记录和管理测试数据的功能。此外,我们还研制了测试用例数据生成软件,尽可能地减少测试人员的手工劳动,提高测试效率。

    采用三种测试环境是为了取长补短,保证测试的质量。在全数字仿真测试平台上进行测试,可以排除那些仅与软件相关的故障;在硬件测试设备上测试,可以排除那些与硬件相关的软件故障,检验软硬件兼容性,并对软件的时间特性和抗干扰能力进行准确的测试;在系统联试的环境下进行测试,可以排除由软件造成的软件接口与系统接口不一致性问题,检验软硬件复合系统的性能,并检验在特定的物理环境下系统硬件是否能保证软件的正常运行。

    4.效果

    在所发现的问题中,与需求有关的问题占31%以上;在代码审查中发现的问题占78%以上,且其中60%以上与需求和设计有关。该软件在全数字仿真测试平台上测试的累计语句覆盖率达到99.64%,累计分支覆盖率达到94.5%。初样阶段测试后的软件在系统联试时只发现了两个与硬件有关的新问题,在随后的系统试验里未发现新的软件问题;试样阶段测试后的软件在系统联试时和随后的系统试验里未发现新的软件问题。上述结果说明,用可靠性测试思想设计的测试计划和用例是比较全面和有效的。

    5.总结

    在实际测试时,由于时间、成本的限制和软件运行环境的不同,必须具体问题具体分析。优秀的软件测试人员不仅应具备快速理解和综合软件功能、结构、输入空间、使用环境及运行过程的能力,而且还应能够权衡各种情况,作出自己的判断,并按照工程要求综合运用各种测试手段,系统制定测试方案,解决实际问题,以获得满意的测试效果。



 
--- 北京浩鸿天业信息技术有限责任公司 版权所有 © 2007-2011 ---
中国北京市海淀区上地东路1号环洋大厦5F
电话:010-59875974 传真:010-59875718
京ICP备10016446号 京公网安备110108003036号