原子标签索引:[概念×14 | 机制×3 | 流程×4 | 分类×5 | 判据×4 | 数据×3 | 案例×3] 上游:第2章(质量属性)、第7章(软件测试) 下游:第10章(架构可靠性演化操作)、第16章(可靠性设计)

标准表述

蒸馏笔记

概念

软件 vs 硬件可靠性 4 个不同点:

角度 软件 硬件
复杂性 高,设计错误是失效主因 相对简单
物理退化 不存在;正确的软件任何时刻均可靠 失效主要因物理退化
唯一性 唯一,复制不改变本身(概率方法不适用) 无两个绝对相同(概率方法成功)
版本更新 较快,评估难度大 定型后一般不更改

机制

流程

可靠性测试主要活动:①确定可靠性目标 → ②开发运行剖面 → ③设计测试用例 → ④测试实施 → ⑤测试结果分析。

可靠性评价三方面:①选择可靠性模型 → ②收集可靠性数据 → ③可靠性评估和预测。

各阶段可靠性管理活动要点(案例题答点): 1. 需求分析:定可靠性目标、分析影响因素、定验收标准、定管理框架与文档规范、订活动计划、定数据收集规范。 2. 概要设计:定可靠性度量、定验收方案、可靠性设计、收集数据、调整计划、编文档。 3. 详细设计:可靠性设计、可靠性预测(确定度量估计值)、调整计划、收集数据、编文档。 4. 编码:可靠性测试(含于单元测试)、排错、调整计划、收集数据、编文档。 5. 测试:可靠性测试(含于集成/系统测试)、排错、可靠性建模、可靠性评价、调整计划、收集数据、编文档。 6. 实施:可靠性测试(含于验收测试)、排错、收集数据、调整模型、可靠性评价、编文档。

运行剖面开发(用马尔可夫链建模): 1. 将输入域编码为状态集,弧表示激励导致的转换,弧上分配转换概率。 2. 开发使用模型,对输入域分层:用户级分层(谁/什么激励系统)、用法级分层(系统能做什么)。 3. 分配弧上概率:最优用实际用户数据 → 次优用用户/专家预期数据 → 最差为各弧均分概率。 4. 为关键操作单独定义运行剖面;边界、跃迁和关键功能应构造专门运行剖面补充测试。

分类体系

规定时间三概念:日历时间 / 运行时间 / 执行时间(CPU),可按经验比例折算。

可靠性模型 10 大类(封闭集合,考试常考): 1. 种子法模型——播种"种子"错误,按原始错误与诱导错误比例估计残留错误。 2. 失效率类模型——Jelinski-Moranda、Schick-Wolverton、几何泊松等。 3. 曲线拟合类模型——回归分析方法,分参数/非参数法。 4. 可靠性增长模型——Duane、Weibull、Gompertz 增长曲线等。 5. 程序结构分析模型——按模块调用关系建可靠性网络(Littlewood 马尔可夫结构等)。 6. 输入域分类模型——Nelson 模型等,难点是输入域概率分布的确定。 7. 执行路径分析方法模型——Shooman 分解模型。 8. 非齐次泊松过程模型(NHPP)——Musa 指数模型、Goel-Okumoto 等。 9. 马尔可夫过程模型——线性死亡模型等。 10. 贝叶斯模型——利用失效率试验前分布+当前测试失效信息评估。

可靠性模型的组成 4 部分:模型假设、性能度量、参数估计方法、数据要求。

软件容错设计 3 种技术: 1. 恢复块设计——若干功能相同、设计差异的文本,故障时备份替换(动态冗余)。 2. N 版本程序设计——多版本对相同输入实行多数表决;要求需求说明完全且精确、设计全过程不相关(不同人员、算法、语言、编译器、工具、测试方法)。 3. 冗余设计——不同路径/算法/实现方法的备份;相同两套软件互为备份意义不大。

检错设计 4 要素:检测对象(检测点+检测内容)、检测延时、实现方式(判返回值/运行时间/状态标志位)、处理方式(查错→停机→报警 或 不停机)。

软件复杂性分类:模块复杂性(内部数据流向+程序长度)、结构复杂性(模块间关联程度)。

用时间定义的可靠性数据 4 类(可互相转化):失效时间数据、失效间隔时间数据、分组时间内的失效数、分组时间的累积失效数。

系统配置容错技术: - 双机热备 3 模式:双机热备模式(Active/Standby,备机浪费资源)、双机互备模式(两应用互为备份,对性能要求高)、双机双工模式(两机均活动,负载均衡+互备,Web/FTP 常用)。 - "心跳":主从系统按一定时间间隔互发通信信号表明运行状态。 - 服务器集群:一组独立服务器组合成单一系统模式管理,故障自动接管。

判据

好模型的 5 特性:基于可靠的假设;简单;计算有用的量;给出未来失效行为的好的映射;可广泛应用。

模型共同假设 3 条:代表性假设(测试用例代表实际运行剖面)、独立性假设(失效独立发生)、相同性假设(不区分失效严重等级)。

选择可靠性模型的 4 方面: 1. 模型假设的适用性(假设须符合软件系统现状)。 2. 预测的能力与质量(优先选成熟、应用广的模型)。 3. 模型输出值满足评价需求(当前可靠度、平均无失效时间、故障密度、达到目标的日期和成本)。 4. 模型使用的简便性(数据易收集、简单易懂、便于用工具实现)。

可靠性测试 3 目的:①发现需求/设计/编码/测试/实施等方面的缺陷;②为使用维护提供可靠性数据;③确认是否达到可靠性定量要求。

可靠性测试实施判据:受控测试;同一测试用例须用相同软件版本(新版本=新测试开始);非统计测试在可靠性测试之前完成则统计数据仍有效,之后执行会影响评估准确性;测试中可"强化输入"(比正常更恶劣的合理输入)。

数据

公式(必须一字不差): - R(t) = 1 - F(t),其中 R(0)=1,R(+∞)=0;F(0)=0,F(+∞)=1。 - f(t) = dF(t)/dt(失效强度)。 - MTBF = MTTF + MTTR(适用于可靠度服从指数分布的系统)。

表9-1 按成本影响划分严重程度类(万元):1级>100;2级(10,100];3级(1,10];4级(0.1,1];5级<0.1。

表9-3 可靠性目标参考表:

严重程度类 可靠性要求 失效强度 平均无失效时间
1 99.9999% 10⁻⁶ 114年
2 99.99% 10⁻⁴ 417天
3 99% 10⁻² 4天
4 90% 10⁻¹ 9小时

(注:docx 提取版负号大量丢失,原书排版为 10⁻⁶/10⁻⁴/10⁻²/10⁻¹。校订依据:①可靠性要求对应失效数量级——99.9999%→10⁻⁶、99.99%→10⁻⁴、99%→10⁻²、90%→10⁻¹;②失效强度≈1/平均无失效时间——114年≈10⁶h、417天≈10⁴h、4天≈96h→10⁻²、9h→10⁻¹,两条线索互相印证。)

典型测试用例 8 个组成部分(封闭集合):①测试用例标识;②被测对象;③测试环境及条件;④测试输入;⑤操作步骤;⑥预期输出;⑦判断输出结果是否符合标准;⑧测试对象的特殊需求。

案例

易错点 / 边界情况