易君召
发布于 2026-08-11 / 作者:易君召 / 1 阅读
0

系统分析师第 2 版教材 第 14 章 软件实现与测试 全解析

本章是软件工程核心实施章节,第 2 版教材在第 1 版基础上新增了软件实现概述体系、多维度测试分类、软件测试组织、软件部署四大模块,是软考高级系统分析师考试的高频分值区,选择题稳定 3-5 分,案例分析与论文也常结合测试策略、质量保障出题。

一、章节主要内容

本章共 6 大节,完整覆盖从代码实现到测试执行、组织管理、上线部署的全流程。

14.1 软件实现概述

本小节为第 2 版新增内容,核心是将软件设计转化为可执行代码的全流程方法论。

  1. 程序设计方法

    • 结构化程序设计:采用自顶向下、逐步求精的设计思路,遵循单入口单出口的控制结构。经典结构包含顺序、选择、Do-while 循环;扩展结构新增 do-until 循环;修正结构再补充 LEAVE 跳出结构。

    • 面向对象程序设计(OOP):以问题域中的事物映射为程序对象,事物关系映射为对象关系,核心优势是提升软件可靠性、可维护性、可复用性。

    • 可视化程序设计:借助开发工具的控件库,以 “搭积木” 方式快速构建程序界面,降低 UI 开发成本。

  2. 程序设计语言与风格

    • 语言选择三大原则:具备理想的模块化机制与可读的控制 / 数据结构;编译程序可尽可能多地发现错误;具备良好的独立编译机制。

    • 良好程序设计的四大特性:可理解性、可复用性、可扩展性、健壮性。

  3. 编码规范

    从命名规范、注释原则、编程风格规则、版本管理规则四个维度制定统一标准,保障团队协作效率与代码可维护性。

  4. 代码生成

    针对用户认证、权限管理等重复度高的代码,通过 “模板 + 数据” 的方式自动生成,核心步骤为:准备模板、准备数据、定义合成机制、批量生成文件。

  5. 代码重用

    分为三个层次(由低到高):代码重用、设计结果重用、分析结果重用;常见实现方法包括函数复用、对象复用、模块复用、类复用、算法复用。

14.2 软件测试概述

  1. 核心定义

    IEEE 标准定义:使用人工或自动的手段运行或测量软件系统的过程,目的是检验软件是否符合规定需求,找出与预期结果的差异。

  2. 测试对象

    不仅包含源程序、目标代码,还覆盖全生命周期文档(需求规格说明书、概要 / 详细设计文档等)、配置数据,实现全对象测试。

  3. 三方视角的测试目的

    • 用户视角:发现隐藏缺陷,判断产品是否可接受

    • 开发者视角:证明软件无错误,验证功能全部实现

    • 测试人员视角:发现 / 预测错误,评估软件可靠性,给出质量评价

  4. 10 大测试原则

    测试用例必须包含预期输出;程序员 / 开发组织不自测自有程序;用例需覆盖有效 + 无效输入;不穷举测试;测试尽早开展并贯穿全生命周期;测试需追溯到需求等。

14.3 软件测试方法

本章核心技术小节,是计算与案例题的核心出题点。

  1. 按被测程序代码可见度分类

    分类

    核心定义

    典型方法

    适用场景

    黑盒测试(功能测试)

    不关注内部代码,只验证输入输出是否符合需求

    等价类划分、边界值分析、错误推测、因果图、判定表、场景法

    系统测试、验收测试

    白盒测试(结构测试)

    基于代码内部逻辑设计用例,追求逻辑覆盖

    语句覆盖、判定覆盖、条件覆盖、判定 - 条件覆盖、条件组合覆盖、基本路径测试

    单元测试

    灰盒测试

    介于两者之间,同时关注输入输出与内部状态

    接口测试、模块交互测试

    集成测试

  2. 按是否执行被测程序分类

    • 静态测试:不运行程序,通过人工或工具检查代码、文档的缺陷,包括桌前检查、代码审查、代码走查、静态结构分析。可发现 30%-70% 的逻辑设计与编码缺陷。

    • 动态测试:实际运行程序,通过构造测试用例、执行程序、分析输出结果发现缺陷,包含自动化测试(单元自动化、接口自动化、UI 自动化)。

14.4 软件测试类型

第 2 版大幅扩充了分类维度,是选择题高频考点。

  1. 按测试对象划分

    功能测试、性能测试(含负载、压力、并发、容量、可靠性测试)、安全测试、兼容性测试、界面测试、易用性测试、稳定性测试。

  2. 按测试阶段划分(核心辨析点)

    测试阶段

    测试依据

    核心方法

    执行者

    核心目标

    单元测试

    详细设计文档、代码

    白盒测试为主

    开发人员

    验证最小模块的功能正确性

    集成测试

    概要设计文档、单元测试结果

    黑盒 + 白盒 + 灰盒

    测试人员

    验证模块间接口与交互的正确性

    系统测试

    需求规格说明书

    黑盒测试为主

    测试人员

    验证完整系统是否满足全部需求

    验收测试

    用户需求、合同文件

    黑盒测试

    用户 / 第三方机构

    确认软件可交付上线

  3. 按被测软件形态划分(第 2 版新增)

    App 测试、Web 测试、物联网测试、车联网测试、大数据测试、AI 测试、小程序测试。

  4. 其他通用测试类型

    • 回归测试:代码修改后重新执行测试,防止修改引入新缺陷。

    • 冒烟测试:版本更新后快速验证核心功能是否正常,不通过则终止后续测试,提升效率。

14.5 软件测试的组织(第 2 版新增)

  1. 完整测试过程:需求分析→测试计划→测试设计→测试环境搭建→测试执行→缺陷管理→测试总结。

  2. 测试管理四大模块

    • 配置管理:管理测试计划、用例、版本、工具、结果的版本一致性。

    • 过程管理:管控测试进度、质量、成本。

    • 缺陷管理:缺陷提交、定级、分配、修复、验证、关闭的全流程。

    • 风险管理:识别测试进度、用例覆盖、环境风险并制定应对方案。

14.6 软件部署(第 2 版新增)

  1. 部署目标:将软件产品正确安装到目标环境,完成配置与验证,保障系统可稳定运行。

  2. 标准部署步骤

    1. 环境准备:服务器、网络、数据库、依赖组件的搭建与校验。

    2. 软件安装:程序包部署、服务启动。

    3. 数据库与文件配置:参数配置、数据初始化、权限配置。

    4. 测试与验证:功能验证、性能校验、可用性确认。

二、主要考点与考情分析

1. 分值与题型分布

  • 上午选择题:3-5 分,以概念辨析、分类区分、基础计算为主。

  • 下午案例分析:高频出题点,常结合流程图考察白盒覆盖用例设计、McCabe 环路复杂度计算,或结合项目场景考察测试策略选择、缺陷管理流程。

  • 论文写作:可结合 “软件质量保证”“测试自动化”“项目质量管理” 等主题出题,需结合本章测试方法、组织管理展开论述。

2. 高频考点盘点

选择题核心考点

  1. 程序设计三类方法的核心特征与区别,程序设计风格四大特性。

  2. 软件测试的 10 大原则,三方视角的测试目的,测试对象范围。

  3. 黑盒 / 白盒 / 灰盒测试的定义、适用场景、典型方法区分;静态测试与动态测试的核心差异。

  4. 白盒逻辑覆盖的 6 个等级强度排序(语句覆盖 < 判定覆盖 < 条件覆盖 < 判定 - 条件覆盖 < 条件组合覆盖 < 修改条件判定覆盖)。

  5. 四类测试阶段(单元 / 集成 / 系统 / 验收)的依据、目标、执行者辨析。

  6. 性能测试子类(负载 / 压力 / 并发)的核心差异;回归测试与冒烟测试的区别。

  7. 运维核心指标:MTTR(平均故障修复时间)、MTBF(平均故障间隔时间)、MTTF(平均无故障时间)、MTTA(平均应答时间)的区分。

  8. 第 2 版新增内容:软件测试组织流程、软件部署步骤、多形态软件测试特点。

案例分析核心考点

  1. 计算题:McCabe 环路复杂度计算(三种公式:判定节点数 + 1;边数 - 顶点数 + 2;封闭区域数 + 1)。

  2. 设计题:给定程序流程图,设计满足指定覆盖等级(语句、判定、条件)的测试用例。

  3. 应用题:给定项目场景,选择合适的集成测试策略(自顶向下 / 自底向上 / 三明治),设计黑盒测试用例(等价类、边界值)。

  4. 分析题:分析测试过程中的问题,优化缺陷管理流程,制定回归测试策略。

三、重难点深度解析

1. 重点内容解析

(1)软件测试基础概念

这是全章的理论基础,也是选择题必考点。核心记忆点:测试的核心目的是发现缺陷而非证明无错;测试对象是全生命周期产物而非仅代码;测试必须尽早开展,缺陷发现越晚,修复成本越高。

(2)测试阶段的分层逻辑

四个测试阶段是递进关系,核心区分依据是测试的粒度与依据文档

  • 粒度从小到大:单元→集成→系统→验收

  • 依据文档从细到粗:详细设计→概要设计→需求规格→用户需求

  • 测试方法从内到外:白盒为主→混合方法→黑盒为主→纯黑盒

(3)第 2 版新增内容

新增的软件测试组织、软件部署模块是近年考试的命题热点,侧重考察流程步骤与管理逻辑,属于记忆型考点,难度不高但丢分率高,需精准记忆核心环节。

2. 难点内容解析

(1)白盒逻辑覆盖等级辨析

6 种覆盖等级极易混淆,核心区分标准是覆盖的粒度

  • 语句覆盖:最基础,只保证每行代码执行一次,覆盖强度最低。

  • 判定覆盖:保证每个判断的真假分支都走一遍,也叫分支覆盖。

  • 条件覆盖:保证每个判断中的每个条件都取到真假值,但不保证判定分支全覆盖。

  • 判定 - 条件覆盖:同时满足判定覆盖和条件覆盖的要求。

  • 条件组合覆盖:每个判定中所有条件的真假组合都出现一次,强度高于判定 - 条件覆盖。

  • 修改条件判定覆盖(MC/DC):每个条件都能独立影响判定结果,是航空等安全关键领域的强制标准。

(2)McCabe 环路复杂度计算

这是案例题高频计算题,最简便的计算方式是数判定节点数 + 1(判定节点指 if、while、for、switch 等包含分支的节点)。

示例:一个流程图包含 2 个 if 判断(每个 if 是 1 个判定节点),则环路复杂度 = 2+1=3。

(3)易混概念对比

易混概念对

核心区别

负载测试 vs 压力测试

负载测试:验证系统在预期负载下的性能表现;压力测试:持续加压直到系统崩溃,找到性能瓶颈

回归测试 vs 冒烟测试

回归测试:修改代码后全量 / 选择性重测,防新缺陷;冒烟测试:版本构建后快速验核心功能,决定是否继续测试

代码走查 vs 代码审查

代码走查:测试人员提供用例,参会者人工走读代码执行流程;代码审查:正式评审会,按检查清单逐项审核代码

(4)黑盒用例设计实操

等价类划分与边界值分析是案例题常考内容,核心规则:

  • 等价类:有效等价类尽量用最少用例全覆盖,无效等价类每个单独设计用例。

  • 边界值:选取刚好等于、刚好大于、刚好小于边界的值作为测试用例,例如范围 0-100,测试用例取 - 1、0、100、101。


本文原创作者:易君召,详见:https://www.yijunzhao.cn/authors/yijunzhao,转载请注明出处。

原文链接 https://www.yijunzhao.cn/archives/system-analyst-2nd-edition-chapter-14-software-implementation-testing-guide

欢迎访问 小易撩挨踢

https://www.yijunzhao.cn/