一、软件可靠性测试概述
- 目标与定位
- 通过模拟真实使用场景暴露缺陷,评估软件可靠性水平,支持高安全/高可靠性系统开发。
- 与传统测试区别:面向失效统计(非单纯缺陷发现),需结合可靠性模型分析数据。
- 核心活动流程
确定可靠性目标 开发运行剖面 设计测试用例 实施测试 分析测试结果 - 局限性
- 无法保证零缺陷,但可提升可靠性至可接受水平;
- 实际应用需解决工程化问题(如成本控制、环境模拟)。
二、定义软件运行剖面
- 建模方法
- 马尔可夫链模型:以状态转移表示用户操作路径,弧线标注转换概率(基于硬件/人机交互等激励)。
- 分层定义 :
- 用户级分层:按用户类型划分行为(如管理员 vs 普通用户);
- 用法级分层:按系统功能划分操作场景。
- 概率分配依据
- 历史系统数据 > 用户调研 > 原型测试 > 专家经验 > 平均分配(最差方案)。
- 关键场景处理
- 高风险操作单独建模(如飞机起降阶段);
- 补充边界/异常用例,避免仅依赖统计模型(例:表9-4强化输入用例)。
三、可靠性测试用例设计
-
设计原则
- 镜像真实运行剖面,优先高频/高影响功能;
- 覆盖常规、边界、极限值场景(如最大负载、异常输入)。
-
用例结构要素
plaintext标识符 | 被测对象 | 环境条件 | 输入数据 | 操作步骤 | 预期输出 | 结果判定标准
-
特殊场景强化设计
测试目的 设计重点 屏蔽用户操作错误 验证误操作提示与容错机制 错误提示准确性 检查错误描述的明确性 系统异常退出防护 测试操作错误是否引发崩溃 数据可靠性 冗余校验/清洗机制有效性验证 硬件/网络故障恢复 评估系统受损程度及补救工具可用性
四、可靠性测试实施
- 前置检查
- 文档一致性(需求/设计/代码);
- 环境合规性(软硬件支持配置)。
- 受控测试要求
- 固定软件版本(新版本需重启测试);
- 非统计测试(如覆盖测试)需在可靠性测试前完成。
- 数据记录规范
- 四类时间数据:失效时间、失效间隔、分组失效数、累积失效数;
- 记录字段:测试时间、用例标识、结果(含失效数据)、执行人员。
- 输出文档
- 《软件可靠性测试报告》需包含:产品标识、环境配置、测试结果、问题清单、时间日志。
五、软件可靠性评价概述
- 目的:量化可靠性水平(如发布决策、维护成本预估);
- 三阶段流程 :
- 选择/建立可靠性模型;
- 收集失效数据;
- 评估与预测(如可靠度、MTTF)。
六、可靠性模型选择
四大选择标准:
标准 | 关键考量点 |
---|---|
模型假设适用性 | 是否符合实际场景(如缺陷是否立即修复) |
预测能力与质量 | 成熟度>理论新颖度(优先广泛验证模型) |
输出值匹配需求 | 需覆盖核心指标:可靠度、MTTF、故障密度、达标时间/成本 |
使用简便性 | 数据易收集>数学复杂性(避免需专业统计知识的模型) |
考点提示:Jelinski-Moranda模型假设缺陷即时修复,若实际存在修复延迟则不适用。
七、可靠性数据收集
-
数据来源
- 测试阶段失效记录(核心);
- 需求/设计阶段的可靠性活动数据(补充)。
-
五大挑战与对策
问题 解决方案 术语规范不统一 提前明确定义(如失效/时间)、制定标准表格 连续性难以保证 专岗负责+跨角色协作(开发/QA/用户) 工具支持不足 利用数据库存储分析(减少人工处理) 数据不完整 重点整理可靠性测试数据(模拟真实场景) 数据质量低 建立错误报告分析系统(如SARACS)
八、可靠性评估与预测
- 核心问题
- 是否达到发布可靠性目标?
- 未达标时需追加的资源量?
- 运维后能否维持可靠性?
- 零失效处理
- 二项分布法:保守估计可靠性(例:1000次无失效 → 置信度90%时可靠度≥99.9%);
- 无法验证场景采用形式化证明。
- 辅助分析方法
- 图形法:累积失效数图、失效间隔时间图;
- EDA技术:探测数据异常(如集中失效时段→新缺陷引入)。
高频考点总结
- 运行剖面定义:马尔可夫链建模 + 用户/用法分层(优先级:实际数据 > 专家经验)。
- 强化测试用例:聚焦五类特殊情况(如错误屏蔽、数据清洗)。
- 模型选择冲突点:假设不匹配(如非即时修复缺陷)导致模型失效。
- 数据收集痛点:术语标准化与连续性保障(占考题30%)。
- 零失效预测 :二项分布保守估计(公式:R≥(1−C)1/nR \geq (1-C)^{1/n}R≥(1−C)1/n,C=置信度,n=用例数)。