第0章 软件质量保障概述
1.1 本章定位
本章是全课程的概念基础,说明为什么要做软件质量保障、软件质量如何评估、缺陷为什么是质量问题的核心,以及软件全方位缺陷检测有哪些主流方法。后续软件度量、软件测试、回归测试、性能测试都属于质量保障方法体系中的具体技术。
1.2 核心概念
软件
- 软件是按照特定顺序组织的计算机指令和数据的集合。
- 简化表达:软件 = ==程序 + 数据 + 文档==。
- 软件三种类型:编程语言,基础软件(开发或运维软件),应用软件(特定领域软件)
软件质量
客观题重点,已在第一次小测中出现。
软件质量是软件与==明确地定义的需求和隐含定义的需求==相一致的程度。
闭卷背诵时抓住两个关键词:
- 明确定义的需求;
- 隐含定义的需求。
软件质量保障
软件质量保障包含==管理和技术==两个方面,也包含先验方法和后验方法。
- 管理:ISO、CMMI、4P Model 等。
- 技术:分析、测试、监控、模拟等。
软件质量模型
客观题重点,已在第一次小测中出现。
课件列举的质量模型包括 McCall、Boehm、FURPS/FURPS+、Dromey、ISO/IEC 9126、ISO/IEC 25010 等。其中第一次小测要求背 ISO/IEC 25010 八个主要特性:
功能性、可靠性、易用性、可维护性、性能效率、安全性、可移植性、兼容性。
软件全生命周期质量保障
已在第一次小测中出现。
软件全生命周期质量保障包含两种类型
- ==单生命周期软件质量保障==;
- ==多生命周期软件质量保障==。
全生命周期软件质量如何保证?
通常情况下,软件质量包含:内部质量和外部质量两种
- ==内部质量:工作产品的质量==;
- ==外部质量:最终软件产品的质量==。
软件缺陷
软件缺陷常被称为 Bug。是计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。
课件引用 IEEE729-1983 的思想:从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷表现为系统不能满足用户需要的某种失效。
重要判断:
- 软件缺陷是导致软件质量差的重要原因。
- 软件缺陷不可避免。
- 缺陷越早发现,修复代价越小;越晚发现,修复代价越大。第一次小测已考判断题。
1.3 必背知识点
软件评审
软件评审是一种系统化质量保障活动,通过团队协作对软件相关文档、设计、代码或流程进行检查,==目的是==尽早发现缺陷、优化实现方案,并确保交付成果符合需求和质量标准。
软件评审的核心目标
- 发现缺陷;
- 验证一致性;
- 知识共享;
- 合规性检查。
第一次小测已考典型==软件评审方法==。可背诵:
- 技术评审;
- 管理评审;
- 同行评审;
- 走查;
- 结构化走查;
- 审查;
- 代码审查;
- 代码审计;
- 代码阅读。
课件中提到的评审三阶段:
程序分析
第一次小测已考。
==程序分析==中两种最根本的技术:
- ==控制流分析==;
- ==数据流分析==。
路径剖析已在第一次小测中出现:路径剖析只收集路径信息,缺少数据流信息,但开销低于程序追踪。
软件缺陷检测 9 种主流方法
客观题重点,第二次小测涉及缺陷检测、知识图谱、智能化检测。
什么是软件度量?
软件度量是指对==软件开发项目、过程及其产品==进行数据定义、收集以及分析的持续性定量化过程。
软件过程度量
包括三方面:
- 成熟度度量;
- 管理度量;
- 生命周期度量。
1.4 易混淆点
1.5 小测关联
1.6 本章复习检查题
填空题
- 软件质量是软件与________的需求和________的需求相一致的程度。
- ISO/IEC 25010 质量模型包括功能性、可靠性、易用性、可维护性、、、可移植性和兼容性。
- 程序分析中两种最根本的技术是________和________。
- 软件全生命周期质量保障包含________和________两种类型。
选择题
- 下列哪项属于静态分析?A. 程序追踪 B. 数据流分析 C. 压力测试 D. Alpha 测试
- 下列哪项最符合“缺陷预测”?A. 直接定位已有代码错误 B. 预测哪些模块未来可能发生问题 C. 执行测试用例 D. 生成测试报告
判断题
- 软件缺陷越晚发现,修复代价越小。
- 软件测试是软件质量保障中的唯一技术。
- 路径剖析与程序追踪相比缺少数据流信息,但开销更低。
参考答案
- 填空:明确定义、隐含定义;性能效率、安全性;控制流分析、数据流分析;单生命周期软件质量保障、多生命周期软件质量保障。
- 选择:B;B。
- 判断:错;错;对。
A. 必背填空
- 软件 = 程序 + 数据 + 文档。
- 软件质量是软件与明确地和隐含地定义的需求相一致的程度。
- 软件质量保障 = 管理 + 技术。
- 软件全生命周期质量保障包括单个生命周期每个阶段和多个生命周期每个阶段的质量保障。
- 全生命周期质量保障有两类方式:先验方法和后验方法。
- 早期质量保障重要,因为软件缺陷越早发现,修复代价越小。
- 软件缺陷常被称为 Bug。
- 软件缺陷检测主流方法有:评审、分析、度量、验证、仿真、测试、监测、基于知识、智能化方法。
- 程序分析按时机分为:静态分析和动态分析。
- 软件测试三个核心关注点:测试用例生成、测试结果验证/测试预言、测试覆盖充分性评估。
- 软件缺陷预测对象包括:模块级、代码变更级、版本级。
- 缺陷预测类型包括:版本内、跨版本、跨项目、跨组织/企业、跨领域/行业、跨国家/地区预测。
B. 必会判断
- 软件不仅包括程序,还包括数据和文档。 对。
- 软件质量保障只靠测试即可完成。 错。
- 软件缺陷只存在于源代码中。 错。
- 软件缺陷越早发现,修复代价越小。 对。
- 静态分析不运行程序。 对。
- 动态分析只覆盖实际执行过的代码路径。 对。
- 形式化验证没有局限性,可以解决所有系统验证问题。 错。
- 缺陷预测和缺陷检测是同一个概念。 错。
- 测试用例、测试计划、测试脚本中也可能有缺陷。 对。
- 软件测试的核心问题包括测试用例生成、测试预言和测试充分性。 对。
C. 必会选择分类
D. 第0章主观题可能怎么考
第0章本身不像第7章那样有明确计算题,但可能出情景分析题。常见形式可能是:
情景1:给一个软件开发过程,让你说明质量保障应如何做
答题思路:
- 不应只在最后测试;
- 应进行全生命周期质量保障;
- 早期需求/设计阶段使用评审、分析、度量、验证等;
- 实现阶段使用静态分析、动态分析、测试;
- 运行维护阶段使用监控、回归测试、缺陷预测;
- 结合先验方法和后验方法。
情景2:给一个软件修改场景,让你说明如何分析影响
答题思路:
- 明确修改请求;
- 得到修改集;
- 使用修改影响分析;
- 得到影响集;
- 根据影响集安排二次修改和回归测试。
情景3:给一个系统运行异常场景,让你选择检测方法
答题思路:
- 文档不一致:评审、文档缺陷检测;
- 代码潜在空指针:静态分析;
- 运行时内存泄漏:动态分析、监控;
- 性能不达标:仿真、性能测试、监控;
- 模块未来高风险:缺陷预测;
- 领域规则不一致:基于知识方法。
本轮复习小结
第0章可以概括成一句话:
软件质量保障不是只做测试,而是围绕软件全生命周期,结合管理和技术,通过评审、分析、度量、验证、仿真、测试、监控、知识方法和智能化方法,对文档、模型、数据、代码、算法等对象进行全方位缺陷检测与预测。