首页/开发/软件测试速查/error、defect 与 failure 的区别

error、defect 与 failure 的区别

ISTQB 术语区分:error(人的失误)、defect/fault(代码或文档中的缺陷)、failure(运行时的失效表现);缺陷可以长期潜伏而不立即引发失效,测试通过不等于不存在缺陷。

软件测试速查开发更新于 2026-10-13

三个术语的区别

ISTQB 术语体系区分三个层次:error(人的失误,如理解错需求)、defect/fault(工作产物中的缺陷,如代码写错条件)、failure(运行时的失效表现,如用户看到错误结果)。三者构成因果链:失误引入缺陷,缺陷在特定条件下触发失效。缺陷可以长期潜伏而不立即引发失效,所以「测试通过」不等于「不存在缺陷」。

基本信息

术语来源ISTQB 标准术语表
因果链error 失误 → defect 缺陷 → failure 失效
关键认知缺陷潜伏期可很长,未触发不等于不存在
沟通价值缺陷记录指向原因而非现象

术语对照

术语含义示例
error(失误)人产生的错误行为需求理解错、条件写反
defect(缺陷)工作产物中的问题代码错误条件、设计缺失
failure(失效)运行时的错误表现金额算错、接口返回 500
root cause(根因)缺陷背后的引入原因缺少评审、需求歧义、赶工期

典型使用场景

  • 缺陷报告:把现象(失效)与原因(缺陷)分开记录,修复指向缺陷本身
  • 根因分析:连续追问为什么,定位引入环节(需求、设计、编码或配置)
  • 缺陷分类统计:按引入阶段归类,指导过程改进
  • 复盘会议:用统一术语描述问题,避免各说各话
  • 测试结论沟通:说明「通过」只代表采样范围内未观察到失效
团队内「bug、问题、异常」混用时先对齐定义:一句话说清「谁做错了什么、产物哪里有问题、运行时表现是什么」。
潜伏缺陷(未被执行到的分支、低频路径)靠评审、静态分析与覆盖分析发现,而不是等失效出现后再补救。
缺陷报告的最小要素:环境与版本、复现步骤、预期与实际结果、数据与日志附件;缺少任何一项,修复者都要反复往返确认,平均修复时长被拉长。

易错点

  • 把失效现象当作缺陷本身记录,根因线索丢失,同类问题反复出现
  • 只在失效出现后才登记缺陷,潜伏缺陷长期无人跟踪
  • 缺陷标题只写「页面报错」,缺少触发条件与复现数据
  • 根因分析停在「人为失误」,不追问流程为何没能拦截
  • 缺陷报告缺少环境与版本信息,修复者在错误的环境里复现,浪费双方时间

数据来源与参考

  • ISTQB CTFL 4.0 大纲(术语与缺陷相关章节)
  • ISTQB 术语表
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌