大家好,我是陶朱公Boy,一个认真生活,总想超越自己的程序员。
前言
知乎上有一个提问:Bug是如何产生的?
↓↓↓
今天,我们就这个话题,一起来做个讨论。
个人觉得程序员与BUG的关系,就像空气中的细菌与人的关系一样。
我们不能完全杜绝与它接触,唯一能做的,就是提高我们自身的”免疫力“(俗称可用性或健壮性),让它尽可能的远离我们,影响不了我们。
我的回答
早些时候,我写过一篇文章:趣图|为什么祖传代码被称为“屎山”?
那篇文章我的观点认为,那种一个类成百上千行代码堆在一起,经过一个又一个接盘侠维护后的“屎山代码”,是很容易产生bug的。
那产生bug具体涉及到哪些场景呢?在这里,我深度总结了以下10种场景,与你分享:
- 编程错误: 最常见的Bug产生原因之一是编程错误。本质原因还是程序员代码写的不规范或有漏洞,导致逻辑错误和数据错误。编程错误可能导致程序无法正常执行或返回错误的结果。
- 不完善的测试: 如果程序没有经过充分的测试,某些情况下可能会出现未被检测到的问题。测试覆盖率低、测试用例不全面或测试数据不准确都可能导致Bug。
- 需求变更: 在开发过程中,项目需求可能会发生变化,但这些变化可能会导致现有的代码出现Bug。未能适应新需求的代码可能会出现问题。
- 并发和同步问题: 在多线程或多进程环境中,竞争条件和同步问题可能会导致Bug。例如,两个线程同时访问共享数据可能导致数据损坏或不一致。
- 外部因素: 程序可能会受到外部因素的影响,如网络故障、硬件故障或操作系统错误,这些因素可能导致程序异常或崩溃。
- 第三方组件: 使用第三方库、框架或组件时,这些组件本身可能包含Bug,从而影响整个应用程序的稳定性。(比如早些时候发现的log4j漏洞)
- 内存管理问题: 内存泄漏、访问已释放内存或者指针错误可能导致程序崩溃或产生不确定的行为。
- 安全漏洞: 安全漏洞也是一种Bug,可能被黑客用于攻击系统。例如,缓冲区溢出漏洞、SQL注入漏洞等都是安全相关的Bug。
- 不一致的环境: 不同的操作系统、浏览器和硬件环境可能对程序的行为产生影响,特别是在跨平台开发中。
- 压力测试不足: 当系统在高负荷下运行时,可能会出现性能问题或崩溃。压力测试不足或未能模拟真实世界的使用情况可能导致Bug的出现。
为了减少Bug的出现,开发者通常会采取严格的质量控制措施,包括代码审查(Code Review)、单元测试、集成测试、用户验收测试等。
还有稍具规模的公司,还会搭建完备的监控体系,每当指定窗口时间内业务异常数(error)达到指定阈值或一些性能异常(比如磁盘空间不足、内存不足、CPU100%、GC频繁、各种中间件异常等)都会触发应用告警,告知应用Owner,及时干预,进行处理。
OK,接下来向大家分享三则,我们可爱的知友关于这个问题的精彩答复,一个比一个精彩,一定看到最后哦!
知友答复
回答一
回答二
回答三
客户是这样描述需求的
项目经理是这样理解的
设计出来是这样的
开发出来的是这样的
测试的时候是这样的
顾问是这样形容的
实施是这样的
顾客得到的是这个样子的
顾客真正想要的是这个样子的
写到最后
感谢您一路陪伴着我,探索编程的奇妙世界。如果您对程序员日常趣事、编程技巧和技术干货等充满兴趣,那么不要错过未来我为大家奉上的精彩内容!点击关注,让您的程序员之旅更加丰富多彩,我们一同成长,一同前行!