软件测试自动化

第一讲 软件质量标准体系概述

软件工程系

2025-2026学年第一学期

学习目标

完成本讲学习后,你将能够:

  1. 理解软件质量的基本概念和重要性
  2. 掌握ISO/IEC 25000系列标准体系架构
  3. 了解GB/T 34943质量模型的8个质量特性
  4. 熟悉GB/T 34944质量要求的制定方法
  5. 认识GB/T 25000.51 RUSP标准的应用场景
  6. 分析三个标准之间的关系和协同作用

本讲是整个课程的基础,请认真听讲

真实案例:2018年英国TSB银行系统大崩溃

事件经过

2018年4月,英国TSB银行进行IT系统迁移,从Lloyds银行的旧系统迁移到母公司Sabadell的新平台。升级后系统完全崩溃。

具体影响

  • 190万客户无法访问网上银行
  • ATM取款功能瘫痪持续一周
  • 客户看到其他人的账户信息
  • 37万客户的按揭贷款利息计算错误
  • 移动APP完全无法使用

损失统计

  • 直接损失:3.3亿英镑(约30亿人民币)
  • CEO Paul Pester被迫辞职
  • 客户流失:80,000个账户关闭
  • 监管罚款:4,800万英镑

软件质量问题造成的重大损失案例

1. 波音737 MAX的MCAS系统(2018-2019)

  • 软件逻辑缺陷导致两起空难
  • 346人死亡
  • 波音损失超过180亿美元

2. 东京证券交易所系统故障(2020年10月)

  • 硬件故障后备份系统切换失败
  • 全天停止交易
  • 影响交易额6万亿日元

3. Facebook全球宕机(2021年10月)

  • BGP配置错误导致全球服务中断6小时
  • 影响35亿用户
  • 市值蒸发470亿美元

结论:软件质量问题不仅造成经济损失,更可能危及生命

软件质量的经济账

全球软件质量成本报告(CISQ 2022)

美国市场数据

  • 软件缺陷造成的损失:2.41万亿美元/年
  • 占GDP比例:10.2%
  • 平均每个程序员产生的缺陷成本:51,000美元/年

中国市场估算

  • 软件缺陷年度损失:约1.5万亿人民币
  • IT项目失败率:31%
  • 超预算项目比例:52%

行业分布

  • 金融服务业:4,850亿美元
  • 医疗健康:3,920亿美元
  • 制造业:2,670亿美元
  • 零售业:1,960亿美元

数据来源:Consortium for Information & Software Quality (CISQ)

什么是软件质量?

ISO/IEC 25000:2014 标准定义:
"软件产品在规定条件下使用时,满足明确和隐含需求的能力的总和"

关键词解析

规定条件

  • 运行环境(操作系统、硬件配置)
  • 使用场景(用户类型、使用频率)
  • 负载条件(并发用户数、数据量)

明确需求

  • 功能需求规格说明书中的内容
  • 合同条款规定的性能指标
  • 法律法规的强制性要求

隐含需求

  • 行业惯例
    如银行系统24小时可用
  • 用户期望
    如电商网站快速响应
  • 安全基线
    如密码加密存储

软件质量 = 功能质量 + 结构质量

功能质量(做正确的事)

  • 需求的完整实现
  • 业务流程的准确性
  • 计算结果的正确性
  • 用户任务的完成度

示例:银行转账功能

✓ 金额正确扣减和增加
✓ 交易记录准确保存
✓ 余额实时更新

结构质量(正确地做事)

  • 代码的可维护性
  • 系统的可扩展性
  • 性能的可伸缩性
  • 安全的可靠性

示例:银行转账实现

✓ 代码模块化设计
✓ 数据库事务保证一致性
✓ 加密传输敏感数据

越晚发现,代价越大

IBM系统科学研究所的研究数据

发现阶段 相对成本 实际成本示例
需求阶段 1,000元
设计阶段 6,000元
编码阶段 10× 10,000元
单元测试 15× 15,000元
集成测试 22× 22,000元
系统测试 50× 50,000元
生产环境 100× 100,000元
真实案例:某电商平台优惠券计算bug
• 开发阶段修复:2人天
• 生产环境修复:200人天(含数据修复、用户补偿、公关处理)

标准化 - 质量管理的基石

没有标准的困境

A公司说:"我们的软件质量很高"

B公司说:"我们的软件质量更高"

客户困惑:"如何比较?标准是什么?"

有了标准后

A公司:"我们达到GB/T 34943的可靠性4级"

B公司:"我们达到GB/T 34943的可靠性3级"

客户明确:"A公司的可靠性更好"

标准的四大作用

1. 统一语言
消除沟通歧义
2. 量化评价
从定性到定量
3. 持续改进
明确改进方向
4. 商业价值
投标资质证明

从ISO 9126到ISO/IEC 25000

第一代:ISO/IEC 9126系列(1991-2001)

发布时间:1991年首版,2001年修订

核心内容:6大特性,27个子特性

局限性:

  • 只关注产品质量
  • 缺乏度量方法
  • 未考虑使用质量

第二代:ISO/IEC 25000系列(2005-现在)

正式名称:SQuaRE (Software product Quality Requirements and Evaluation)

发布历程:

  • 2005年:25000基础标准
  • 2011年:25010质量模型
  • 2014年:完整体系形成

改进之处:

  • 增加使用质量和数据质量
  • 提供具体度量方法
  • 完整的评价流程

GB/T软件质量标准族谱

采标情况(等同采用ISO/IEC标准)

GB/T标准号 对应ISO/IEC 中文名称 发布年份
GB/T 25000.10 ISO/IEC 25010 系统与软件质量模型 2016
GB/T 25000.12 ISO/IEC 25012 数据质量模型 2017
GB/T 25000.51 ISO/IEC 25051 RUSP质量要求 2016
GB/T 34943 ISO/IEC 25010 质量模型(本地化) 2017
GB/T 34944 ISO/IEC 25030 质量要求(本地化) 2017

中国特色补充

  • 增加了中文示例
  • 补充了本土化案例
  • 强调了安全性要求(等保2.0)
  • 适配了国内行业规范

ISO/IEC 25000 系列 - 五大模块

2500n - 质量管理

(总指挥部)

  • 25000:指南(总纲)
  • 25001:规划与管理

2501n - 质量模型

(设计图纸)

  • 25010:产品质量模型
  • 25011:服务质量模型
  • 25012:数据质量模型

2502n - 质量测量

(测量工具)

  • 25020:测量参考模型
  • 25021:质量测量元素
  • 25022-25025:具体度量方法

2503n - 质量要求

(需求规格)

  • 25030:质量要求框架

2504n - 质量评价

(评审标准)

  • 25040:评价过程
  • 25041:评价指南
  • 25045:可恢复性评价

每个标准都是一份独立文档,总计超过2000页

SQuaRE的三大核心理念

1. 多视角质量观

传统观点:"质量就是没有Bug"

SQuaRE观点:"质量是多维度的综合体现"

  • 开发者视角:代码优雅、架构清晰
  • 用户视角:好用、快速、稳定
  • 运维视角:易部署、易监控、易扩展
  • 商业视角:成本可控、风险可管

2. 全生命周期覆盖

需求→设计→开发→测试→部署→运维→退役

每个阶段都有对应的质量活动和标准

3. 可度量可验证

"不能度量就不能管理" - Peter Drucker

每个质量特性都有:

  • 度量指标 • 计算公式
  • 目标值 • 评价方法

本课程的三个支柱

为什么选这三个标准?

GB/T 34943

质量模型

作用:回答"什么是质量"

地位:所有质量工作的基础

比喻:质量管理的"元素周期表"

GB/T 34944

质量要求

作用:回答"如何定义质量"

地位:需求工程的核心

比喻:质量管理的"语法规则"

GB/T 25000.51

RUSP标准

作用:回答"产品如何达标"

地位:商用软件的准入门槛

比喻:质量管理的"合格证"

三者关系:模型 → 要求 → 实现

GB/T 34943 - 产品质量模型概览

标准定位:定义"什么是质量"

主要内容

产品质量模型

• 8个质量特性
• 31个质量子特性

使用质量模型

• 5个质量特性
• 11个质量子特性

数据质量模型

• 15个质量特性

作用:为质量评价提供维度框架
8 + 5 + 15 = 54个质量特性

产品质量的8大特性

质量特性 定义
1. 功能适合性
(Functional Suitability)
产品功能满足明示和隐含需求的程度
2. 性能效率
(Performance Efficiency)
相对于所用资源量,产品执行功能的性能
3. 兼容性
(Compatibility)
产品与其他产品交换信息和执行功能的程度
4. 易用性
(Usability)
用户使用产品达到目标的有效性、效率和满意度
5. 可靠性
(Reliability)
产品在规定条件和时间内执行规定功能的程度
6. 安全性
(Security)
产品保护信息和数据的程度
7. 维护性
(Maintainability)
产品被修改的有效性和效率
8. 可移植性
(Portability)
产品从一个环境迁移到另一个环境的有效性和效率

每个特性下还有3-6个子特性,共31个子特性

功能适合性 - 软件能做什么

功能适合性的3个子特性

1. 功能完备性 (Functional Completeness)

  • 定义:功能集覆盖所有指定任务和用户目标的程度
  • 度量:已实现功能数 / 需求规定功能数 × 100%
  • 示例:ERP系统需求100个功能点,实现95个,完备性:95%

2. 功能正确性 (Functional Correctness)

  • 定义:产品提供满足需求的正确结果的程度
  • 度量:正确执行的功能数 / 总功能数 × 100%
  • 示例:计算器应用1000个测试用例,通过998个,正确性:99.8%

3. 功能恰当性 (Functional Appropriateness)

  • 定义:功能促进完成指定任务和目标的程度
  • 评价:用户任务完成的便捷程度
  • 示例:批量操作功能减少重复工作

性能效率 - 软件有多快

性能效率的3个子特性

1. 时间特性 (Time Behaviour)

  • 响应时间:用户操作到系统响应的时间
  • 处理时间:完成特定任务所需时间
  • 吞吐率:单位时间内处理的事务数

典型指标:网页加载 < 3秒、API响应 < 200ms、数据库查询 < 100ms

2. 资源利用性 (Resource Utilization)

  • CPU使用率:正常负载 < 70%
  • 内存占用:不超过可用内存80%
  • 网络带宽:峰值不超过80%
  • 磁盘I/O:队列深度 < 4

3. 容量 (Capacity)

  • 最大并发用户数:如10000
  • 最大数据处理量:如100TB
  • 最大事务处理量:如10000 TPS

可靠性 - 软件有多稳定

可靠性的4个子特性详解

1. 成熟性 (Maturity)

定义:正常运行时满足可靠性需求的程度

度量指标:

  • MTBF(平均故障间隔时间)> 720小时
  • 缺陷密度 < 1个/千行代码

2. 可用性 (Availability)

计算公式:可用性 = MTBF / (MTBF + MTTR)

行业标准:

  • 99.9%(一年停机8.76小时)- 三个9
  • 99.99%(一年停机52.56分钟)- 四个9
  • 99.999%(一年停机5.26分钟)- 五个9

3. 容错性 (Fault Tolerance)

  • 硬件故障容错:RAID、冗余电源
  • 软件故障容错:异常处理、降级服务
  • 示例:Redis主从切换、数据库读写分离

4. 易恢复性 (Recoverability)

  • RTO(恢复时间目标):< 4小时
  • RPO(恢复点目标):< 1小时数据

安全性 - 软件有多安全

安全性的5个子特性(CIA+)

1. 保密性 (Confidentiality)

  • 数据加密:AES-256、RSA-2048
  • 传输加密:TLS 1.3、HTTPS
  • 存储加密:透明数据加密(TDE)

2. 完整性 (Integrity)

  • 数据校验:MD5、SHA-256
  • 数字签名:RSA、ECDSA
  • 区块链:不可篡改性

3. 抗抵赖性 (Non-repudiation)

  • 数字证书:CA认证
  • 审计日志:完整操作记录
  • 时间戳:可信时间源

4. 可核查性 (Accountability)

  • 操作日志:谁、何时、做什么
  • 合规审计:满足监管要求

5. 真实性 (Authenticity)

  • 身份认证:多因素认证(MFA)
  • 生物识别:指纹、人脸、虹膜

易用性 - 软件好不好用

易用性的6个子特性

1. 可辨识性

用户能否快速判断软件是否满足需求
度量:新用户识别主要功能的时间 < 30秒

2. 易学性

学习曲线的陡峭程度
度量:新用户掌握基本操作的时间 < 2小时

3. 易操作性

操作的便捷程度
原则:常用功能3次点击内可达

4. 用户差错防护

防呆设计:删除前确认
撤销机制:Ctrl+Z
自动保存:防止数据丢失

5. 用户界面美观性

符合设计规范:Material Design、iOS HIG
视觉一致性:颜色、字体、间距

6. 易访问性

无障碍设计:屏幕阅读器支持
WCAG 2.1标准:AA级别

维护性 - 软件好不好改

维护性的5个子特性

1. 模块化 (Modularity)

定义:组件化程度

最佳实践:

  • 单一职责原则(SRP)
  • 微服务架构
  • 依赖注入(DI)

2. 可重用性 (Reusability)

  • 代码复用率 > 30%
  • 组件库建设
  • API标准化

3. 易分析性 (Analysability)

  • 问题定位时间 < 2小时
  • 日志完整性 > 95%
  • 调试工具支持

4. 易修改性 (Modifiability)

  • 简单bug修复 < 4小时
  • 中等需求变更 < 2天
  • 回归测试通过率 > 95%

5. 易测试性 (Testability)

  • 单元测试覆盖率 > 80%
  • 集成测试自动化率 > 70%
  • Mock工具支持

兼容性与可移植性

兼容性的2个子特性

1. 共存性 (Co-existence)

与其他软件共享资源而不产生负面影响

  • 不占用常用端口(80、443、3306)
  • 不修改系统关键配置
  • 不与杀毒软件冲突

2. 互操作性 (Interoperability)

与其他系统交换和使用信息

  • 标准协议:REST API、SOAP、GraphQL
  • 数据格式:JSON、XML、Protocol Buffers

可移植性的3个子特性

1. 适应性 (Adaptability)

  • 支持多操作系统:Windows、Linux、macOS
  • 支持多浏览器:Chrome、Firefox、Safari、Edge
  • 支持多设备:PC、平板、手机

2. 易安装性 (Installability)

  • 一键安装、Docker容器化
  • 安装时间 < 10分钟
  • 安装成功率 > 99%

3. 易替换性 (Replaceability)

  • 数据导入导出、标准化接口、平滑迁移方案

使用质量 - 用户体验的5个维度

使用质量模型(Quality in Use)

1. 有效性 (Effectiveness)

  • 用户完成任务的准确度和完整度
  • 度量:任务完成率、错误率
  • 示例:在线购物成功下单率 > 95%

2. 效率 (Efficiency)

  • 完成任务所需的资源
  • 度量:任务完成时间、步骤数
  • 示例:注册流程 < 3分钟

3. 满意度 (Satisfaction)

  • 有用性:解决实际问题
  • 信任度:用户信赖程度
  • 愉悦性:使用过程愉快
  • 度量:NPS(净推荐值)> 50

4. 免于风险 (Freedom from Risk)

  • 经济风险:财产损失风险
  • 健康安全风险:人身伤害风险
  • 环境风险:环境破坏风险

5. 覆盖性 (Context Coverage)

  • 完备性:覆盖所有使用场景
  • 灵活性:适应不同使用环境

数据质量 - 15个关键维度

数据质量模型的15个特性

准确性维度

  1. 准确性:数据值的正确程度(误差<0.1%)
  2. 精确性:数据的精度级别(小数位数)
  3. 可信性:数据来源的可靠程度

完整性维度

  1. 完整性:必填字段填充率>99%
  2. 现时性:数据更新及时性<24小时
  3. 一致性:跨系统数据一致率>99%

可用性维度

  1. 可用性:数据可被访问和处理
  2. 可移植性:支持标准格式导入导出
  3. 可恢复性:数据备份和恢复能力

理解性维度

  1. 可理解性:数据含义清晰
  2. 可追溯性:数据血缘关系明确

安全性维度

  1. 保密性:敏感数据加密
  2. 可访问性:权限控制完善
  3. 符合性:满足法规要求
  4. 效率:数据处理性能

GB/T 34944 - 如何正确定义质量要求

质量要求 vs 功能要求

功能要求示例:
"系统应提供用户登录功能"
→ 描述做什么

质量要求示例:
"登录响应时间应小于2秒,并发1000用户时成功率>99%"
→ 描述做得多好

质量要求的SMART原则

Specific
具体
❌ "系统要快"
✅ "查询响应时间<500ms"
Measurable
可测量
❌ "用户体验要好"
✅ "用户满意度评分>4.5/5"
Achievable
可达成
❌ "100%可用性"
✅ "99.9%可用性"
Relevant
相关
❌ "代码行数>10万"
✅ "代码测试覆盖率>80%"
Time-bound
有时限
❌ "将来要支持"
✅ "6个月内上线"

质量要求的MoSCoW优先级

Must have(必须有)- 60%

  • 核心功能的正确性
  • 关键数据的安全性
  • 法规要求的合规性

示例:"支付功能必须符合PCI-DSS标准"

Should have(应该有)- 20%

  • 重要但非关键功能
  • 用户体验优化
  • 性能改进

示例:"页面加载应小于3秒"

Could have(可以有)- 15%

  • 锦上添花的功能
  • 额外的便利性

示例:"支持深色模式"

Won't have(这次不要)- 5%

  • 记录但延后实现
  • 未来版本考虑

示例:"支持AR/VR界面"

冲突处理原则:安全性 > 可靠性 > 功能性 > 性能 > 易用性

GB/T 25000.51 - 商用现货软件产品的质量要求

什么是RUSP?

Ready to Use Software Product(商用现货软件产品)

典型RUSP产品:Microsoft Office、WPS、Windows、Oracle、MySQL、Photoshop、AutoCAD

RUSP vs 定制软件

特征 RUSP 定制软件
用户群体 大量未知用户 特定已知用户
需求来源 市场调研 用户提供
更新方式 版本发布 按需修改
文档要求 完整详细 按合同约定
安装部署 标准化 定制化
技术支持 通用支持 专项支持

RUSP质量要求的四层结构

第一层:产品描述(20%)

必须包含:

  • 产品名称和版本号
  • 功能清单(至少覆盖80%主要功能)
  • 运行环境要求(硬件/软件)
  • 已知问题和限制

第二层:用户文档(30%)

必须提供:

  • 安装指南(成功率>95%)
  • 用户手册(覆盖所有功能)
  • 快速入门指南(30分钟内上手)
  • FAQ(至少50个常见问题)
  • 在线帮助系统

第三层:程序质量(40%)

必须达到:

  • 功能测试通过率>98%
  • 无1、2级严重缺陷
  • 性能达到声明指标
  • 安全漏洞为零(高危)

第四层:支持服务(10%)

必须提供:

  • 技术支持热线
  • 补丁更新服务
  • 许可证管理

标准协同 - 1+1+1>3

实际应用流程

Step 1:使用GB/T 34943选择质量特性

→ 识别产品类型 → 确定关键质量特性 → 设定优先级

Step 2:使用GB/T 34944定义质量要求

→ 将特性转化为具体要求 → 设定可测量的指标 → 明确验收标准

Step 3:使用GB/T 25000.51规范产品

→ 完善产品文档 → 执行质量测试 → 准备交付物

案例:开发在线教育平台

  1. 34943:重点关注易用性、可靠性、兼容性
  2. 34944:定义"视频播放流畅度>95%"等要求
  3. 25000.51:提供教师手册、学生手册、管理员手册

协同效果

  • 方向明确:知道做什么
  • 目标清晰:知道做多好
  • 交付完整:知道怎么交

真实案例 - 阿里云如何应用质量标准

背景:阿里云作为中国最大的云服务商

应用GB/T 34943质量模型

  • 可靠性:承诺99.995%可用性(全年停机<26分钟)
  • 安全性:通过ISO 27001、等保三级认证
  • 性能效率:单实例QPS达100万
  • 兼容性:支持所有主流开发语言和框架

应用GB/T 34944质量要求

  • 明确SLA条款,未达标按比例赔偿
  • RTO<30分钟,RPO<1分钟
  • API响应时间p99<100ms

应用GB/T 25000.51 RUSP要求

  • 提供详尽的产品文档(>5000页)
  • 7×24小时技术支持
  • 控制台全中文界面
  • 新手教程和最佳实践案例

成果

  • 市场份额:中国第一(40.1%)
  • 客户数量:400万+
  • 服务可用性:超过承诺SLA

实施标准的常见误区

误区1:追求所有指标都最优

❌ 错误:8个特性全部追求最高级别

✅ 正确:根据产品特点选择3-4个关键特性

原因:资源有限,需要权衡

误区2:照搬标准不结合实际

❌ 错误:游戏软件套用银行系统标准

✅ 正确:行业特点+通用标准

原因:不同领域差异巨大

误区3:只在测试阶段考虑质量

❌ 错误:开发完成后再对照标准

✅ 正确:需求阶段就引入标准

原因:越早越好,成本越低

误区4:重文档轻实践

❌ 错误:文档完美,产品糟糕

✅ 正确:文档和产品质量并重

原因:用户用的是产品不是文档

误区5:一次达标终身无忧

❌ 错误:通过认证后不再关注

✅ 正确:持续改进和监控

原因:需求和技术都在变化

8周学习计划

基础阶段(1-3周)

  • 第1周:标准体系概述 ← 今天在这里
  • 第2周:产品质量模型详解
  • 第3周:使用质量和数据质量模型

深入阶段(4-6周)

  • 第4周:质量要求规范方法
  • 第5周:RUSP产品描述和文档
  • 第6周:RUSP程序和数据要求

实践阶段(7-8周)

  • 第7周:质量评价工具和实践
  • 第8周:综合案例分析

学习建议

  1. 理论联系实际:每学一个概念,找一个软件对应
  2. 建立知识体系:画思维导图串联知识点
  3. 积累案例库:收集质量问题和优秀实践
  4. 动手实践:选一个开源项目做质量评估

本讲要点总结

记住这10个核心要点

  1. 软件质量是满足明确和隐含需求的能力总和
  2. 质量成本随发现阶段呈指数级增长(1→100倍)
  3. ISO/IEC 25000(SQuaRE)是现行国际标准体系
  4. GB/T 34943定义了8个质量特性和31个子特性
  5. GB/T 34944规范了质量要求的SMART原则
  6. GB/T 25000.51专门针对商用现货软件产品
  7. 产品质量、使用质量、数据质量是三个视角
  8. 质量标准提供通用语言、度量方法和评价依据
  9. 标准应用要贯穿软件全生命周期
  10. 质量保证需要标准、工具、流程、人员四要素

这10点构成了软件质量管理的基础框架

第二讲预告

GB/T 34943 质量模型 - 产品质量特性深度解析

上半场:功能与性能(30分钟)

  • 功能适合性的3个子特性详解
  • 性能效率的测试方法和工具
  • 兼容性测试矩阵设计

下半场:质量与体验(30分钟)

  • 可靠性工程和故障树分析
  • 安全性测试和渗透测试
  • 易用性测试和用户体验设计
  • 维护性度量和重构时机
  • 可移植性和容器化技术

准备工作

  1. 思考:微信最重要的三个质量特性是什么?为什么?
  2. 观察:找一个软件的质量问题并分类
  3. 预习:GB/T 34943标准第5-6章

彩蛋预告:下一讲将分享Google、Facebook、Netflix的质量工程实践

第一讲结束

软件质量标准
奠定质量基石

感谢聆听

欢迎提问与讨论

下周同一时间,我们不见不散