《系统分析师教程(第2版)》笔记——第 14 章 软件实现与测试 📅 2026/7/18 4:01:17 第 14 章 软件实现与测试【版权声明与学习说明】本文系笔者学习《系统分析师教程第2版》第14章后结合个人理解整理的原创学习笔记。文中所有表格、通俗化举例及箭头式总结均为本人消化后重新归纳表述不代表原书官方立场。整理初衷仅为交流学习、备考记录无意侵犯原作者版权。若您认为存在不当引用请通过CSDN私信联系我会第一时间处理。推荐备考的朋友购买正版教材尊重知识成果。软件实现是将设计方案转化为可运行程序的落地阶段核心是程序设计与编码软件测试则是贯穿全生命周期的质量保障环节目的是尽早发现并修复缺陷。本章围绕 “软件实现怎么编” 和 “软件测试怎么查” 两大核心展开从实现方法、编码规范到测试概念、方法、类型、组织管理再到最终的软件部署形成完整的 “开发 - 验证 - 交付” 闭环是确保软件功能达标、质量可靠的关键指南。14.1 软件实现概述软件实现的核心任务是程序设计即将软件设计结果翻译成程序代码关键在于选择合适的方法、语言和规范提升代码的可靠性、可维护性和可复用性。14.1.1 程序设计方法主流程序设计方法有三种适配不同开发场景结构化程序设计核心思想自顶向下、逐步求精使用单入口、单出口的控制结构基本控制结构顺序结构、IF-THEN-ELSE 选择结构、DO-WHILE 循环结构经典结构化可扩展 DO-CASE 多分支、DO-UNTIL 循环或补充 LEAVE/BREAK 结构修正结构化优势程序结构清晰静态结构与动态执行一致可读性强。面向对象程序设计OOP核心思想问题域中有什么事物程序中就有什么对象事物间的关系对应对象间的关系核心机制支持类、对象、继承、多态、消息通信优势显著提升软件可靠性、可维护性和可复用性是 “OOA-OOD-OOP” 软件工程流程的最终落地环节。可视化程序设计VP核心思想像 “搭积木” 一样用工具提供的控件构造应用界面少写或不写代码核心概念表单程序窗口、部件按钮、复选框等构件、属性部件的显示 / 状态特征、事件对部件的操作如点击、方法事件触发后的响应程序优势极大提高开发效率常用工具如 Eclipse、Visual Studio。14.1.2 程序设计语言与风格程序语言的选择选择原则优先选能减少测试量、易读易维护的语言同时考虑用户要求、软件工具、工程规模、程序员知识、可移植性、应用领域等限制。程序设计风格核心目标提升可理解性、可复用性、可扩展性、健壮性关键要点可理解性有意义的标识符、详细注解、清晰的视觉组织、规范的数据说明可复用性高内聚、小规模功能、一致的接口、分离接口与实现、避免全局变量可扩展性封装实现策略、利用多态、避免多分支语句健壮性预防用户误操作、检查参数合法性、先测试后优化。14.1.3 编码规范编码规范是团队协作和长期维护的基础核心涵盖四方面命名规范标识符变量、函数、类名命名统一、有意义注释原则详细但不冗余说明代码意图而非实现细节编程风格规则代码格式化缩进、换行、语句构造简洁版本管理规则代码提交、分支管理、冲突解决的统一流程其他规范函数长度限制、错误处理统一、冗余代码清理、通用开发模式遵循。14.1.4 代码生成针对重复性高、有固定规律的代码如用户认证、权限管理用代码生成器自动生成减少重复劳动实现步骤准备模板文件→准备关键数据→定义数据置换占位符的合成机制→遍历数据和模板→生成代码文件。14.1.5 代码重用代码重用是提高开发效率的关键需基于高质量代码无错、不复杂常用方法使用函数抽象重复逻辑为函数多处调用使用对象 / 类封装复杂代码为对象或类通过继承、多态实现高度复用使用模块抽象代码为独立模块调用即可实现功能利用算法解构和分解组合算法减少重用损耗。14.2 软件测试概述软件测试是保障软件质量的核心手段目的是在软件投入运行前尽可能发现潜在错误和缺陷避免后期损失。14.2.1 软件测试的概念常见误解测试是证明软件无错、验证软件做了该做的事正确定义通过手动或自动方式运行 / 测量软件检验是否满足需求找出预期与实际结果的差异核心是 “找错” 而非 “证对”发展趋势测试前移覆盖需求、设计阶段、多角色协作、测试职业受重视、独立测试部门成为共识、测试外包全球化。14.2.2 软件测试的基本问题核心是验证功能实现与可用性检查程序错误最终提高用户体验降低商业风险同时度量软件质量为用户接收软件提供依据。14.2.3 软件测试的对象及目的测试对象源程序 / 目标代码、各阶段文档需求规格说明、设计文档等、配置数据测试目的用户视角发现隐藏错误判断是否接受产品开发者视角验证软件实现所有需求证明产品无错测试人员视角发现并预测错误评估软件可靠性。14.2.4 软件测试的原则测试用例必须包含预期输出程序员避免测试自己的程序思维定式难发现错误编写软件的组织不测试自己的软件缺乏客观性耐心检查每一个测试结果测试用例覆盖有效输入和无效 / 意外输入避免重复设计测试用例保留并复用不默认程序无错不进行穷举测试成本过高追求最大覆盖率测试尽早执行贯穿全生命周期测试追溯到需求。14.3 软件测试方法软件测试方法按 “被测程序是否可见” 和 “是否执行程序” 分为两大类各有适用场景。14.3.1 按照被测程序是否可见分类黑盒测试功能测试核心特点把程序看作 “黑盒”不关心内部结构仅基于需求规格说明书测试功能测试角度用户视角关注输入输出对应关系可发现错误功能错误 / 遗漏、输入输出错误、数据结构 / 外部信息访问错误、初始化 / 终止错误用例设计方法等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法等局限性无法发现规格说明本身的设计错误。白盒测试结构测试核心特点清楚程序内部逻辑结构对所有逻辑路径进行测试测试角度开发者视角关注代码逻辑覆盖覆盖标准由弱到强语句覆盖每条语句至少执行一次→判定覆盖每个分支至少执行一次→条件覆盖每个条件取所有可能值→判定 / 条件覆盖→条件组合覆盖→修改条件判断覆盖测试方法代码检查法、静态结构分析法、逻辑覆盖法、基本路径测试法等适用场景高可靠性要求的软件军工、航天、工业控制“三步法”人工设计基本功能测试用例→统计覆盖率补充未覆盖用例→自动生成大量用例捕捉特殊错误。灰盒测试核心特点介于黑盒与白盒之间关注输入输出正确性同时了解部分内部运行状态优势增强黑盒测试的效率和错误分析能力局限性比白盒测试难发现潜在问题依赖部分内部知识。14.3.2 按照是否需要执行被测程序分类静态测试核心特点不运行程序仅分析源程序语法、结构、接口或文档测试内容代码检查走查、桌面检查、静态结构分析、代码质量度量优势发现缺陷早、降低返工成本、覆盖重点局限性耗时长、技术要求高。动态测试核心特点运行被测程序检查运行结果与预期的差异组成部分构造测试用例→执行程序→分析输出结果常见类型单元自动化测试、接口自动化测试、UI 自动化测试。14.4 软件测试类型软件测试按 “测试对象” 和 “测试阶段” 分类覆盖软件全生命周期的质量验证。14.4.1 按测试对象划分功能测试核心目标验证软件功能是否符合需求规格说明测试步骤需求分析→编写测试用例→准备测试数据→执行用例→对比结果→提交报告特点数据驱动不关心内部结构。性能测试核心目标测试系统响应时间、稳定性等性能指标细分类型负载测试系统性能达瓶颈后继续运行观察指标压力测试逐步加压直到系统性能达瓶颈如 CPU 占 100%并发测试增加并发用户数测试系统并发处理能力容量测试测试系统能承受的极限值如最大并发用户、数据库记录数可靠性测试验证软件满足可靠性要求发现影响可靠性的缺陷。安全测试核心目标验证软件保护机制防范非法侵入测试内容应用程序本身安全性漏洞、后门、数据安全性存储 / 传输加密专业要求需掌握网络协议、防火墙、SQL 注入、跨域攻击等知识。兼容性测试核心目标验证软件在不同环境下的协调工作能力测试内容不同操作系统 / 版本、与其他软件、数据共享、向前 / 向后兼容。易用性测试核心目标验证软件是否易操作、易理解、易学习测试方式对照 “易用性检查表”按正常缺陷流程管理。稳定性测试耐久性测试核心目标验证软件长时间运行的稳定性测试点长时间运行、反复开启关闭、长时间执行单一业务后切换、长时间闲置后操作、监控内存占用是否溢出。AI 测试核心特点需测试算法健壮性、模型评估、模型安全应对 AI 系统的不确定性和概率性测试内容传统测试性能、安全 独特测试算法偏差、模型透明度。小程序测试与 App 测试的区别获取渠道微信直接打开 vs 下载安装、测试周期更短测试内容权限测试、UI 测试、功能测试、兼容性测试不同屏幕适配、网络 / 接口测试。14.4.2 按测试阶段划分单元测试测试对象软件中最小可测试单元如函数、类、窗口测试人员开发人员测试方法白盒为主黑盒为辅测试内容模块接口测试、局部数据测试、路径测试。集成测试子系统测试 / 组装测试测试对象模块间的接口测试阶段单元测试之后测试人员白盒测试工程师或开发工程师测试层次模块内集成、子系统内集成、系统集成测试内容模块间数据传输、功能冲突。系统测试测试对象整个系统软件 硬件 操作人员测试阶段集成测试之后测试人员黑盒测试工程师测试内容功能、界面、可靠性、易用性、性能压力、负载测试等典型类型恢复测试验证故障恢复能力、安全测试、压力测试。验收测试测试目标验证软件是否满足用户原始需求向用户展示可用性测试阶段系统测试通过后测试人员最终用户或需求方测试策略正式验收测试管理严格测试用例为系统测试子集非正式验收测试无固定用例测试内容由测试员决定Beta 测试用户在实际环境测试开发者不在现场管理最少。14.4.3 其他重要测试类型回归测试核心目标修改旧代码后验证未引入新错误或影响其他代码常用策略再测试全部用例最安全但成本高、基于风险选择测试、基于操作剖面选择测试、再测试修改部分优势自动化回归测试可大幅降低成本。冒烟测试核心目标验证新编译版本的基本可用性消除表面错误减少后期测试负担测试时机正式测试前如单元集成前、集成版本形成后、缺陷修正后特点注重通过性轻细节。14.5 软件测试的组织软件测试需有规范的流程和管理确保测试有序、高效覆盖所有风险点。14.5.1 测试过程项目需求分析阶段明确测试范围、预期结果制订测试计划阶段确定测试模块、方法、人员安排、目标设计测试文档阶段编写测试用例核心阶段搭建测试环境阶段按产品要求配置硬件、软件环境执行测试阶段开展单元、集成、系统、验收、回归测试缺陷管理阶段收集、跟踪、沟通缺陷直至修复。14.5.2 测试管理配置管理核心目标控制测试活动变更建立基线记录跟踪变更请求关键承诺责任明确、贯穿全测试过程、覆盖所有测试配置项、建立配置库和基线库。过程管理核心内容测试项目启动确定负责人、获取文档培训→测试计划确定范围、策略、风险→测试设计制定技术方案、设计用例→测试执行搭建环境、执行用例、缺陷跟踪→结果审查分析编写测试报告。缺陷管理缺陷分类按测试种类界面类、功能类、严重程度严重、一般、次要、建议、优先级立即解决、高优先级等、发生阶段需求、编码等管理流程确定优先级→制定修复计划→修复后同步状态。风险管理核心流程风险识别→风险评估→风险应对规避、转移、减轻、接受→风险上报关键策略高风险如版本发布前测试不充分优先规避低风险可接受。14.6 软件部署软件部署是将开发完成的软件交付给用户使用的最后环节核心是确保软件正常运行并满足用户需求。14.6.1 部署目标保障软件系统正常运行和功能实现简化部署操作提高执行效率满足用户在功能和非功能属性上的个性化需求支持软件长期稳定运行契合用户核心需求。14.6.2 部署步骤环境准备在目标机器上安装软件依赖项、配置网络、搭建运行环境如操作系统、数据库软件安装将软件组件复制到指定位置配置文件权限、注册表项等数据库和文件配置对需数据库 / 文件存储的软件配置数据库连接、初始化数据、设置文件存储路径。