methodology · I · P1 · active

测试类型

Test Types
P1基础verified方法论 methodology方法I · 测试质量属性GL-METHOD · 方法论层

§1摘要与结论

TL;DR · 一句话结论

测试类型是与特定质量特性相关的一组测试活动,如功能测试与非功能测试,也可按是否依赖内部结构分为黑盒、白盒与经验型;大多数测试类型可应用于每一个测试层次,层次与类型是两个正交的坐标。

别名:test type、test types、测试类型、功能与非功能测试、黑盒白盒 | 英文:Test Types | 类型:方法 / process

§2局部关系图

测试类型 的 1-2 跳邻域关系图前置依赖(prerequisite):可测试性是有效测试得以进行的前提前置依赖(prerequisite):认识测试方能理解其不可穷尽性对照(contrasts):可测试性提升不等于测试可以穷尽依据推导(derives_from):测试层次以测试的验证与反馈本质为依据依据推导(derives_from):测试类型设计以可测试性为结构前提依据推导(derives_from):测试金字塔依据测试的验证与成本本质前置依赖(prerequisite):测试层次是应用测试类型的结构前提依赖关联(dependency):测试金字塔按测试层次组织测试分布实现(implements):29119-5 关键字驱动测试实现分层测试过程模型实现(implements):xUnit 框架族支撑组件级单元测试层次实现(implements):xUnit 单元测试构成测试金字塔底层实现(implements):关键字驱动测试作为规格化黑盒测试类型的实现组合(combination):单元测试框架接入持续集成流水线自动执行组合(combination):关键字驱动测试用例在 CI 流水线中调度回归对照(contrasts):关键字表驱动与代码驱动自动化测试范式对照测试类型测试类型(MTH-I-02)可测试性本质可测试性本质(ESS-I-02)测试层次测试层次(MTH-I-01)关键字驱动测试框架关键字驱动测试框架(TEC-I-02)测试作为验证与反馈机制本…测试作为验证与反馈机制本质(ESS-I-01)测试金字塔与反模式测试金字塔与反模式(MTH-I-04)持续集成服务与流水线持续集成服务与流水线(TEC-I-01)xUnit 测试框架族xUnit 测试框架族(TEC-I-03)测试的不可穷尽性测试的不可穷尽性(ESS-I-04)软件测试过程模型软件测试过程模型(MTH-I-07)
前置依赖实现依据推导案例印证对比冲突
以本节点为中心,静态内联 1–2 跳邻域:内环 3 个直接邻接、外环 6 个二跳节点,共 10 个节点;连线按边类型着色(六类配色见下)。构建期计算,无运行期脚本。

§3原理 · 为什么

测试类型回答的是「测什么性质」,而测试层次回答的是「在什么范围测」,二者正交。按质量特性划分,功能测试验证系统是否完成了规定的功能,非功能测试验证性能、可靠性、安全、可用性等质量特性在不同条件下的表现。按对内部结构的依赖划分,黑盒测试仅依据外部规格设计用例,白盒测试依据代码或结构信息设计用例,经验型测试则依赖测试者的经验、知识与直觉。类型正交于层次意味着:同一个质量特性可以在不同层次被验证,同一个层次也可以执行多种类型的测试。把类型与层次分开,能避免把某一类测试错误地绑定到某个层次,也能帮助团队检查质量维度的覆盖是否完整——只做功能测试会遗漏非功能风险,只做黑盒测试会遗漏结构性的实现缺陷。类型的选择应由要降低的风险决定,而非由习惯或工具便利决定。

§4机制 · 如何运作

测试设计技术是把测试类型落为具体用例的手段。规格型(黑盒)技术依据需求与接口设计用例,如等价类划分、边界值分析、决策表、状态迁移与用例场景;结构型(白盒)技术依据代码结构,如语句覆盖、分支覆盖与路径覆盖;经验型技术依赖测试者判断,如错误推测、探索性测试与清单式检查。不同类型技术对缺陷的揭示能力不同:黑盒更易发现规格与需求层面的偏差,白盒更易发现实现层面的结构性缺陷,经验型则擅长发现规格未言明、难以形式化的风险。非功能测试通常需要专门的负载、故障注入或安全探测手段来构造其触发条件。因此有效的测试方案会依据目标缺陷类型混合使用多种技术,并为每类技术设定相应的覆盖度量,用以判断抽样是否触及了预期的区域,而不是把某一种技术当作普遍适用的答案。

§5工程 · 怎么落地

实践中先明确要被降低的风险,再选择测试类型与技术。为功能维度,用规格型技术覆盖正常路径、边界与异常路径;为结构维度,用覆盖度量驱动白盒技术补充实现层面的用例;为经验维度,安排探索性测试与基于缺陷历史的错误推测。为质量特性维度,把性能、可靠性、安全、兼容性等非功能目标转写为可度量的场景,并设计能构造相应条件的测试。类型选择应覆盖不同层次:单元级多用白盒与经验型,集成级侧重接口与契约,系统级侧重端到端功能与非功能,验收级侧重业务价值。应用时应避免重复与遗漏:用用例来源矩阵检查每个需求与质量特性在哪些层次、由哪类测试覆盖,识别空档。最后应让测试类型随风险变化调整,在缺陷分布或业务重点改变时重新平衡投入,而不是固定一套技术长期不变。对关键质量特性应明确其验收场景与判定依据,使非功能测试同样具备可比较、可复现的结论,而非停留在主观感受。

§6权衡卡

代价 · 风险

测试类型的多样化带来覆盖,也带来成本与选择困难。

白盒测试依赖对实现的了解,容易写出与实现细节耦合的脆弱用例,使重构成本上升;黑盒测试贴近需求,却可能遗漏只有内部结构才能暴露的缺陷;经验型测试灵活但不可重复、难以度量,过度依赖会削弱测试的可预测性。

因此类型选择应以目标缺陷与风险为依据,衡量每类测试的边际收益,删除重复与低价值用例,在覆盖广度与维护成本之间取得平衡,而不是无条件追求类型的全面。

最终应以是否覆盖了关键风险来判断测试类型是否足够,而不是以使用的技术或工具种类多少来衡量。

反例 · 误区

反例之一是把测试类型等同于工具类别,用「用了某类工具」代替「覆盖了某类风险」,导致类型齐全而风险空档仍在。

反例之二是只追求功能测试的通过率,忽略非功能特性,直到上线后在高负载或攻击下才暴露问题。

原文要点
  • 技术越多、用例越多,测试套件的维护负担越重,且不同类型测试可能彼此重复,消耗资源却不增加有效覆盖。
  • 类型与层次的组合应在覆盖矩阵中被显式登记与复核。

权衡原文仅按显式标记词归栏引用(收益 / 代价 / 反例),其余句子按原序列为「原文要点」;内容逐字引用未改写。

§7学习路径条

MTH-I-01测试层次→MTH-I-02测试类型

§8案例带

CAS-X-06 · 2 跳派生:当前节点 → TEC-I-02 → TEC-I-01

插件 DAG RC5→RC7 升级

一次知识库随上游源码版本升级的级联维护:以三层差异分析把 219 个包收敛为 26 个实质变更包,经编译、运行时、组合三类依赖判定更新 DAG 数据后全量重生成页面,并以静态门控加渲染验证收口。

§9信源与核验

核验状态True(verified)
置信度high
复核日期2026-09-10
生命周期active
规范信源OFF-018、STD-017、OFF-019、OFF-017
勘误
常见误解:测试类型只能绑定在某个特定测试层次上执行
核验结论:测试类型与测试层次是两个正交坐标,大多数测试类型可应用于每一个测试层次;不同类型技术对缺陷的揭示能力不同,应依据目标风险混合选用 [OFF-018]

§10原始关系清单

展开:本节点的全部原始关系边(3 条,含边 ID 与方向)
关系方向对端节点说明
依据推导→ ESS-I-02可测试性本质
E-486
测试类型设计以可测试性为结构前提
实现← TEC-I-02关键字驱动测试框架
E-820
关键字驱动测试作为规格化黑盒测试类型的实现
前置依赖← MTH-I-01测试层次
E-490
测试层次是应用测试类型的结构前提