笔记 I:测试策略与实战战术

[Senior Test Architect's Note] (资深测试架构师按): 抛弃“证明程序能正常运行”的执念吧!测试的本质绝不是为了证明程序是正确的,而是为了“证明程序是有错的 (executing a program with the intent of finding an error)”。一次成功的测试,是发现了一个尚未被发现的错误。

模块一:测试策略纵深 (Strategic Breadth) —— 由内向外的螺旋

软件测试不是“大爆炸 (Big Bang)”式的盲目乱点,而是一个自底向上、由内向外的螺旋形过程。

  1. 单元测试 (Unit Testing):测试的最小物理单位。在这个阶段,开发者必须专注于模块的内部处理逻辑。核心要检查:模块接口(数据能否正确进出)、局部数据结构、边界条件(Boundary conditions)以及错误处理路径。
  2. 集成测试 (Integration Testing):解决“积木拼装”的问题。即使单个组件完美,组合在一起时也可能发生接口数据丢失或全局数据结构冲突。
    • 策略:抛弃“大爆炸”集成,采用自顶向下 (Top-Down)(使用桩模块 Stubs 替代底层)或自底向上 (Bottom-Up)(将底层模块组合为构建块 Clusters/Builds,使用驱动模块 Drivers 调用)的增量式策略。
    • 敏捷实践:持续集成 (Continuous Integration) 和每日冒烟测试 (Smoke Testing),用来尽早暴露“阻碍性 (Show-stopper)”的集成错误。
  3. 系统与确认测试 (Validation & System Testing):跳出代码细节,站在需求和整个计算机系统(硬件、网络、数据库)的视角,验证软件是否满足了客户的真实期望(包括性能、安全等非功能性需求)。

模块二:测试战术 (Tactical Techniques) —— 寻找缺陷的探照灯

测试战术分为两大流派,它们相互补充,用于发现不同类型的错误。

模块三:回归测试与调试心理学


架构师的深度思考维度

[Engineering Mindset] (工程权衡逻辑)

[AI-Era Mapping] (AI 时代的演进与实战)

[Memory Trigger] (记忆触发器)


特别模块:Cursor 自动化测试围栏指令 (Automated Testing Fence Prompt)

当你用 Cursor 或 Copilot 写完一个复杂的业务函数后,千万不要直接去页面上点点点。请直接使用以下 Prompt,让大模型为你生成一张高密度的测试防护网:

# [Role]: 资深自动化测试架构师 (Senior QA Architect)

**Context**: 我刚刚完成了以上核心组件的业务代码。现在,我需要你为它编写极度严苛的自动化单元测试(使用 Jest/PyTest 等目标框架)。请坚信“所有输入都是有毒的,所有外部调用都会失败”。

**Task**: 请应用“黑盒边界值分析 (BVA)”和“白盒基本路径测试”,生成结构化的测试代码。测试用例必须包含以下三大类:

1. **[Happy Path - 正常流]**:
   - 验证等价类中的标准有效输入,确保核心功能 (Functional Requirement) 闭环。

2. **[Boundary & Edge Cases - 边界与极限流]**:
   - 针对数值类型:测试 最大值、最小值、0、负数、极长数字。
   - 针对集合类型:测试 空数组、单元素数组、超大数组。
   - 针对状态机:测试处于临界状态时的行为。

3. **[Exceptions & Anti-Requirements - 异常与反向要求流]**:
   - 强行注入错误类型的数据(如:要求数字却传入 null 或 Object)。
   - 模拟协作者/外部依赖失败(使用 Mock/Stubs 强制抛出网络超时或数据库断开异常)。
   - 验证 Error Handling 逻辑是否正确捕获并抛出了易于理解的异常说明,而不是让系统崩溃。

**Action**: 请先列出这三类测试用例的清单(用一句话描述每个用例的测试目的),等我确认覆盖率无误后,再输出具体的自动化测试代码。

拿着这套测试武器库,去驯服你项目里的野马代码吧。


下一章:software-03-J:安全工程与防御性设计
首页:Software Engineering MOC