第7章02 开发者测试
4.1 本章定位
本章说明开发者在软件交付前如何组织测试活动。重点是 V 模型、各测试阶段的目标和对应开发阶段、集成测试策略、桩模块与驱动模块。
4.2 开发者测试
开发者测试(Developer Testing, DT)是开发者所做的测试,有别于专职测试人员或测评机构进行的测试。目标是在软件交付或验收测试前发现并解决绝大多数==代码缺陷==。
理论依据是:前端发现问题的代价远小于后端。
4.3 V 模型
客观题重点,第二次小测已考详细设计对应单元测试。
4.4 测试阶段对比表
4.5 单元测试
单元测试验证代码中最小可独立测试单元,确保测试关注当前单元逻辑。若依赖其他模块,可使用桩技术模拟依赖。
常见检查内容:
- 接口;
- 局部数据结构;
- 边界条件;
- 独立路径;
- 错误处理路径。
可以利用工具统计代码覆盖率,但要避免盲目追求 100%,应注重关键逻辑覆盖。
单元测试可以是黑盒测试,也可以是白盒测试。
单元测试主要内容汇总
单元测试内容
- 单元接口;
- 数据结构;
- 边界条件;
- 独立执行路径;
- 错误处理。
4.6 集成测试
集成测试是软件测试的关键阶段,旨在验证多个模块、组件或服务在协同工作时的交互是否符合预期。
集成测试验证多个模块协作,位于单元测试和系统测试之间。
为什么需要集成测试:
- 可能发现单元测试未发现的接口错误;
- 单元测试难以发现时序问题;
- 单元测试难以发现资源竞争问题。
集成测试核心目的
- 暴露接口问题:发现参数格式不符、返回值丢失;检测资源竞争、死锁或并发问题;
- 验证模块组合后的功能逻辑:发现异常或边界条件处理不当;
- 支持持续集成 CI,在代码合并时快速反馈问题。
集成测试方法
自顶向下集成
步骤:
- 主控模块作为测试驱动,与主控模块直接相连的模块先用桩模块替代。
- 按深度或广度逐步用真实模块替换桩模块。
- 每个模块被集成前应已完成单元测试。
- 集成新模块后进行回归测试,确认未引入错误。
桩模块(Stub):模拟被测模块所调用的下级模块,解决依赖模块未完成或不可用的问题。
自底向上集成
步骤:
- 编制驱动模块,协调测试用例的输入与输出。
- 从底层构件开始测试。
- 按程序结构向上集成,同时移除驱动模块。
驱动模块(Driver):模拟被测模块的上一级模块,用于调用被测模块、传递数据并输出结果。
第二次小测已考:自顶向下集成测试中,需要用桩模块替代未完成的底层模块。
4.7 系统测试
系统测试在所有==集成测试完成后、用户验收测试前执行==,验证完整软件系统是否满足规定需求。
核心目的包括:
- 验证系统完整性;
- 评估非功能性指标;
- 发现集成测试未覆盖的全局场景;
- 为验收测试铺路。
第二次小测选择题已考“系统测试核心目的包括验证系统完整性、评估非功能性指标”。
4.8 验收测试、Alpha 与 Beta
Beta 测试是一种验收测试,是软件发布之前的测试。
4.9 回归测试
回归测试是软件开发过程中确保代码修改不会破坏现有功能的一种测试方法。
例如修复登录 Bug 后,需要确认注册、支付等相关功能没有被破坏。
4.10 易混淆点
测试计划
测试目标
测试设计
测试方法分类
- 静态测试和动态测试;
- 黑盒测试和白盒测试;
- 开发者测试、第三方测试、用户测试等。
4.11 小测关联
第二次小测已考:
- 软件测试按实施者分类;
- 系统测试核心目的;
- V 模型中详细设计对应单元测试;
- 自顶向下集成测试需要桩模块;
- 集成测试包含非增式和增式,增式又包括自顶向下和自底向上。
4.12 本章复习检查题
填空题
- 集成测试包含________和________两类方法,其中增式集成又包含________和________。
- 自顶向下集成测试通常需要________模块,自底向上集成测试通常需要________模块。
- V 模型中,详细设计阶段对应________测试。
选择题
- 用于模拟被测模块下级依赖的是:A. 驱动模块 B. 桩模块 C. 主控模块 D. 配置模块
- Beta 测试通常发生在:A. 开发方环境 B. 真实用户环境 C. 编译阶段 D. 代码审查阶段
判断题
- 系统测试通常在集成测试之前执行。
- 自底向上集成测试需要驱动模块。
- 回归测试只在软件首次开发时执行一次。
参考答案
- 填空:非增式集成、增式集成;自顶向下增式集成、自底向上增式集成;桩、驱动;单元。
- 选择:B;B。
- 判断:错;对;错。
第7章02 客观题必背清单
A. 填空题重点
- 开发者测试 DT 是开发者所做的测试。
- DT 目标是在软件交付前发现和解决绝大多数代码缺陷。
- V模型中的测试包括单元测试、集成测试、系统测试、验收测试、Alpha/Beta测试、回归测试。
- 单元测试验证最小可独立测试单元,如函数、方法、类。
- 单元测试 FIRST 原则:Fast、Isolated、Repeatable、Self-Validating、Timely。
- 单元测试内容:单元接口、数据结构、边界条件、独立执行路径、错误处理。
- 集成测试关注模块接口、数据传递、依赖关系和整体功能逻辑。
- 非增式集成也叫大爆炸集成。
- 增式集成包括自顶向下和自底向上。
- 自顶向下集成需要桩模块。
- 自底向上集成需要驱动模块。
- 系统测试通常在集成测试之后、验收测试之前执行。
- 验收测试是 V 模型中测试的最后一道工序。
- Alpha 测试在开发环境或模拟实际环境中进行,开发者通常在场。
- Beta 测试在实际使用环境中进行,开发者通常不在现场。
- 回归测试目标是验证修改部分正确,并且未引起其他部分错误。
- 测试需求定义“测什么”。
- 测试需求表达方式包括测试需求列表和 RTM。
- 测试计划是测试过程的蓝图。
- 测试报告是测试阶段的最终交付物。
- 静态测试不运行被测程序。
- 动态测试需要运行被测程序。
- 黑盒测试又称功能测试、数据驱动测试或基于规格说明的测试。
- 白盒测试又称结构测试、逻辑驱动测试或基于程序的测试。
- 语句覆盖是最弱的逻辑覆盖准则。
- 程序插装可用于取得测试覆盖。
- JUnit 是 Java 语言单元测试框架。
B. 选择题重点
C. 判断题易错点
第7章02 主观题可能考法
情景1:给一个开发项目,让你安排开发者测试流程
答题模板:
- 根据 V 模型,将测试活动与开发阶段对应;
- 详细设计后进行单元测试;
- 体系结构设计对应集成测试;
- 软件需求对应系统测试;
- 用户需求对应验收测试;
- 修改后进行回归测试;
- 对发布前版本进行 Alpha/Beta 测试;
- 强调越早发现缺陷,修复代价越低。
情景2:给模块结构图,让你选择集成测试策略
答题模板:
- 若希望早期看到系统框架,可选自顶向下集成;
- 自顶向下需要为未完成下层模块编写桩模块;
- 若底层关键模块较多,可选自底向上集成;
- 自底向上需要编写驱动模块;
- 若模块很多,不建议大爆炸集成,因为错误发现晚、定位难;
- 每集成一个模块后都应进行回归测试。
情景3:给一次代码修改,让你设计回归测试
答题模板:
- 识别被修改部分;
- 确定原基线测试用例库 T;
- 根据策略选择测试用例 T0;
- 策略可选全部再测试、按风险再测试、按修改再测试、按依赖再测试;
- 如果 T0 不充分,则生成新用例 T1;
- 执行测试,验证修改本身正确;
- 验证没有破坏既有功能。
情景4:给测试任务,让你写测试过程
答题模板:
- 测试需求:明确测什么;
- 测试计划:明确目标、范围、项目、方法、工具、资源、交付物;
- 测试设计:设计测试用例、脚本、覆盖准则;
- 测试开发:搭环境、写脚本、开发驱动/桩、准备数据;
- 测试执行:执行脚本并记录情况;
- 结果比较:实际结果与预期结果比较;
- 测试评估:分析覆盖率、缺陷、是否达到停止/成功标准;
- 测试报告:输出结论和建议。
第7章02 最终记忆主线
本章可以用一句话记住:
开发者测试是开发者在交付前发现代码缺陷的测试活动,以 V 模型为主线,包括单元、集成、系统、验收、Alpha/Beta 和回归测试;具体执行时按照测试需求、计划、设计、开发、执行、结果确认、评估和报告生成的任务流程推进,并结合静态/动态、黑盒/白盒等测试方法和多种测试工具完成质量保障。
本章最需要优先背的是:
- 开发者测试 DT 的定义和目标;
- V模型中开发阶段和测试阶段的对应关系;
- 单元测试定义、FIRST原则、五类测试内容;
- 集成测试必要性;
- 非增式集成 vs 增式集成;
- 自顶向下用桩模块,自底向上用驱动模块;
- 系统测试、验收测试、Alpha/Beta测试区别;
- 回归测试目标、方法和典型过程;
- 面向测试任务的八步测试过程;
- 静态测试/动态测试、黑盒/白盒测试对比。