1. 概述

  • 其主要活动:可靠性目标的确定、运行剖面的开发、测试用例的设计、测试实施、测试结果的分析

2. 定义软件运行剖面

2.1 软件的使用行为建模

  • 建模过程:
    • 马尔可夫链输入域编码为一个代表用户观点的软件使用的状态集
    • 连接两个状态,它表示由各种激励导致的状态转换
    • 转换概率分配给每个弧

2.2 输入域分层

  • 两种类型的分层形式:
    • 用户级分层:依赖于谁能激励系统
    • 用法级分层:依赖于在测试状态下,能做什么

2.3 弧上的概率分配

  • 分配考虑因素:

    • 从现有系统收集到的数据
    • 与用户的交谈或对用户进行观察获得的信息
    • 原型使用与测试分析的结果。
    • 相关领域专家的意见。
  • 分配方法

    • 最佳方法:使用实际的用户数据

    • 其次:是由该软件应用领域的用户和专家提供的预期使用数据

    • 最差情况(无数据情况):将每个状态现有的弧分配相同的概率

2.4 其他注意点

  1. 运行剖面的开发与定义必须充分分析和考虑软件的实际运行情况
    • 软件可靠性行为是相对于软件实际的运行剖面而言的
    • 同一软件在不同运行剖面下其可靠性表现可能大不相同
  2. 剖面上很小比例的操作可能占很大的故障比例
  1. 一个产品有可能需要开发多个运行剖面
    • 边界、跃迁情况、关键功能通常单独定义运行剖面

3. 可靠性测试用例设计

  • 测试用例的选择方法:

    • 在运行剖面中的每个元素都定量地赋予一个发生概率值和关键因子
    • 根据这些因素分配测试资源,挑选和生成测试用例
  • 测试用例考虑因素:

    • 既要有一般情况,也应有极限情况、最大和最小的边界值情况
    • 易于发现缺陷的测试用例和数据
  • 测试用例的组成部分

    • 测试用例标识
    • 被测对象
    • 测试环境及条件
    • 测试输入
    • 操作步骤
    • 预期输出
    • 判断输出结果是否符合标准
    • 测试对象的特殊需求
  • 可靠性测试用例考虑的特殊情况

《系统架构设计师教程(第2版)》第9章-软件可靠性基础知识-05-软件可靠性测试-LMLPHP

4. 可靠性测试的实施

4.1 测试前检查

  • 检查软件需求与设计文档是否一致
  • 检查文档的准确性、完整性以及与程序的一致性
  • 检查所交付程序和数据以及相应的软件支持环境是否符合要求

4.2 注意点

  • 要补充的非统计性测试,需要在可靠性测试之前
  • 开发方交付的任何软件文档中与可靠性质量特性有关的部分、程序以及数据都应当按照需求说明和质量需求进行测试
  • 在项目合同、需求说明书和用户文档中规定的所有配置情况下,程序和数据都必须进行测试。
  • 获得更多的可靠性数据,可使用多台计算机同时运行软件,以增加累计运行时间

4.2 可靠性测试的难点

  • 其难点是:判断测试用例的运行是否成功
  • 原因如下:

1)失效判断的主观性

2)计算的错误结果不易被发现

  • 解决方案一:将测试分成两个阶段进行
    • 第一阶段运行较少量的测试用例,并对照规范进行仔细检查
    • 第二阶段再运行大量测试用例,仅找出失效现象
  • 解决方案二:把输出记录到文件中,采用搜索或过滤方法进行处理
    • 条件:软件有足够的可测试性
    • 优点:不会遗漏错误

4.3 用时间定义的可靠性数据

可分为以下四类:

  • 失效时间数据:记录发生一次失效所累积经历的时间
  • 失效间隔时间数据:记录本次失效与上一次失效间的间隔时间
  • 分组时间内的失效数:记录某个时间区内发生了多少次失效。
  • 分组时间的累积失效数:记录到某个区间的累积失效数。

4.4 测试记录包含的信息

  • 测试时间
  • 含有测试用例的测试说明或标识
  • 所有与测试有关的测试结果,包括失效数据
  • 测试人员。

4.5 测试报告

  • 软件产品标识
  • 测试环境配置
  • 测试依据
  • 测试结果
  • 测试问题
  • 测试时间

《系统架构设计师教程(第2版)》第9章-软件可靠性基础知识-05-软件可靠性测试-LMLPHP

04-17 08:47