软件测试

一、软件测试的本质与第一性原理(Why)

1.1 软件测试的根本目标

软件测试不是为了证明系统正确,而是为了:

以有限成本,最大化暴露系统风险,并为产品与工程决策提供可靠的质量信号。

由此引申出测试与调试的本质区分:


1.2 测试的第一性原理

  1. 不完全性原理

    • 测试永远无法穷尽所有输入与状态
    • 测试的本质是“抽样 + 风险选择”
  2. 免疫性原理

    • 测试行为本身会改变系统状态
    • 系统会对已覆盖路径产生“免疫”
  3. 反馈周期原理

    • 测试越靠前,反馈越快,修复成本越低
  4. 风险优先原理

    • 测试资源应优先投入高风险、高变化区域
  5. 可测性原理

    • 系统是否“好测”,取决于设计与代码质量

二、测试的分类维度与稳定认知模型(What)

2.1 测试分类的多维视角

测试不是单一维度划分,而是多个正交维度的组合:


2.2 测试层级模型:测试金字塔

测试金字塔揭示的是成本与反馈速度的结构性规律:

核心结论

测试越靠上,反馈越慢,数量应呈数量级递减。


2.3 测试关注面模型:敏捷测试象限

该模型从两个维度组织测试认知:

象限核心价值
Q1支持开发的技术测试
Q2业务验收与功能验证
Q3用户体验与探索
Q4非功能与质量属性

三、测试的生命周期与流程体系(How)

3.1 测试全生命周期模型

测试贯穿整个软件生命周期,而非独立阶段:

阶段核心关注主要产出
需求阶段风险、可测性测试策略
设计阶段覆盖模型测试用例设计
实现阶段自动化、数据测试资产
执行阶段反馈、监控质量信号
上线后回归、演进质量闭环

3.2 测试流程的建模视角

测试本质上是一个“建模—验证—反馈”的闭环:

三类模型共同驱动测试执行,并通过结果不断修正自身。


四、测试设计方法与覆盖体系

4.1 测试用例设计原则


4.2 经典测试设计方法


4.3 覆盖率的工程化理解

覆盖率是信号,而非目标本身。


五、测试工程化与质量基础设施

5.1 测试基础架构

测试架构的目标不是“跑测试”,而是:


5.2 测试数据工程

测试数据是测试系统的“燃料”:

测试数据需要:


六、测试类型体系(System View)

6.1 系统级测试类型


6.2 非功能性测试


6.3 移动端专项测试


七、质量工程的演进路径(Where)

7.1 测试能力成熟度模型

等级特征
L1事后手工测试
L2阶段化测试流程
L3自动化 + 平台
L4数据驱动 + 服务化
L5智能测试 + 决策支持

7.2 先进测试范式


八、优秀测试工程师的思维模型

关联内容(自动生成)