找 Bug
找 Bug
找 Bug 的本质是修正开发者对系统的心智模型,Bug 源于期望和现实的偏差,有人认为 Bug 是 Feature,有人认为 Bug 是缺陷。
但无论是 Bug 还是 Feature,这个过程都是去重新理解系统的行为,理解之后不一定是为了修复,而是为了更好地做出未来的决策。
心智模型
解释一下心智模型,心智模型是开发者用来管理复杂性,预测系统行为并做出的决策。简单说,心智模型就是内心和现实的映射,你把你所想的,用代码实现出来了。心智模型在软件开发中存在于多个层面:
- 代码层面,开发者对语法的理解和执行逻辑的实现。
- 框架层面,开发者对 API 和服务的设计。
- 现实层面,开发者对业务的理解和抽象。
Bug 的出现代表了心智模型与现实之间的分歧。修复 Bug 代表了对心智模型的升级,它迫使我们直面自己有缺陷的理解。
定位根因
那如何快速定位到 Bug 的根因呢?
三言两语很难说清,关键是问题能复现,数据能收集,对异常(包括功能,数据,日志,指标等)有灵敏的嗅觉,对系统有深刻的理解。
系统设计
反向推理,一个 Bug 少或者 Bug 好找的系统应该:
主动防御全,从需求出发明确定义限制和假设条件,提前预见问题并做好异常处理,不信任任何外部数据,快速失败,防止错误传播
可观测性强,日志、指标和追踪能力完备,针对异常有监控和快速定位的机制,而不是大海捞针,或者没有海也要硬捞
系统易理解,无论从代码、框架还是业务都提供了让人快速理解这个系统的路径,比如文档、架构图等等
Bug 文化
找 Bug 的最高境界是组织性学习。通过建立无指责的事后分析文化,团队能从每次故障中汲取教训,将问题转化成流程改进,从而提升系统的健壮性与可靠性。
在软件工程领域,找 Bug 不仅是一项技术活动,更是一门艺术和科学。当然,写 Bug 也一样。
This post is licensed under CC BY 4.0 by the author.