Bug(程序缺陷)是程序员和网友常说的软件错误,指程序因自身缺陷导致功能异常、卡死、闪退或数据出错等现象。本词条通俗介绍 Bug 的含义、词源、常见类型,以及它与漏洞(Vulnerability)的区别。

| 类型 | 软件开发术语 / 网络流行语 |
| 英文名 | Bug |
| 中文译法 | 程序错误、程序缺陷、漏洞(安全类) |
| 相关概念 | Debug(调试)、Patch(补丁)、漏洞 |
| 使用领域 | 软件开发、游戏、互联网文化 |
Bug(程序缺陷)是软件开发中的常用术语,指程序代码中存在的错误或缺陷,会导致软件运行时出现功能不正常、结果不对、卡死闪退、数据丢失或异常中断等问题。
Bug 的英文原意是「虫子」。业界流传较广的说法是,早期计算机工程师曾在机器故障时发现一只飞蛾卡在继电器里,从此用「捉虫(debug)」来形容排查故障,这个叫法便沿用至今。不过用 bug 表示机器故障的用法在更早的工程领域就已存在,飞蛾故事更多是让它广为流传的趣闻。
Bug 几乎不可避免:软件由人编写,需求理解偏差、逻辑疏漏、边界情况没考虑到、不同环境差异等都会引入缺陷。因此软件开发流程中普遍设有测试、代码审查、灰度发布等环节,专门用来在上线前后发现和修复 Bug。修复 Bug 的过程称为调试(Debug),发布的修复更新常被称为补丁(Patch)。
在中文互联网语境里,Bug 早已超出编程圈:游戏玩家用「卡 Bug」形容利用游戏漏洞获利,日常聊天里「这人是个 Bug」则引申为强得不合常理、像开了挂一样的存在。
漏洞(Vulnerability)是 Bug 的一个子集:当某个缺陷能被人恶意利用,造成越权、窃取数据、远程控制等安全风险时,就称为漏洞。普通 Bug 影响的是「好不好用」,漏洞威胁的是「安不安全」,后者通常需要更紧急地修复,许多公司还会通过漏洞赏金计划奖励发现者。
问:Bug 能被彻底消灭吗?答:实际做不到。测试只能证明存在 Bug,无法证明没有 Bug,工程上的目标是把严重缺陷控制在可接受范围内,并快速响应修复。
问:Bug 和漏洞是一回事吗?答:不完全是。所有漏洞都是 Bug,但只有会带来安全隐患、可被恶意利用的 Bug 才叫漏洞。
问:为什么软件更新后反而出现新 Bug?答:修改代码本身就可能引入新缺陷,一处修复可能牵动其他功能,这类问题称为「回归」,所以正规团队每次更新都会做回归测试。

| 类型 | 软件开发术语 / 网络流行语 |
| 英文名 | Bug |
| 中文译法 | 程序错误、程序缺陷、漏洞(安全类) |
| 相关概念 | Debug(调试)、Patch(补丁)、漏洞 |
| 使用领域 | 软件开发、游戏、互联网文化 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧