我是一个Bug ,在这个系统中潜伏很久了,历经多轮测试的严酷考验而屹立不倒,如果Bug界按难度分类的话,我绝对属于地狱模式。

现在,我就等待一个倒霉蛋来触发, 可是他老是不来。

其实不能叫倒霉蛋 , 应该是幸运儿,能走到我这个分支,遇到我是他的荣幸。

和倒霉蛋儿对应的就是背锅侠,就是你,看文章的程序员。

1

有些Bug实在是太过明显,普通人一眼就能看出来,这批人最先阵亡。

还有一些Bug需要特定的条件才能触发,随着时间的流逝,用户的增多,他们也逐渐牺牲。

只有像我这样的,需要符合多个条件或者需要一些变态的条件才能触发的,才能坚持到最后,坚持到系统退役的那一天,这样我就能成为Bug界的传奇。

每个Bug想要在系统潜伏,都需要有个介绍人,这个介绍人就是程序员,他们的名字会出现在源文件当中,有些人还会写点注释,描述这次改动的目的,通常都是驴唇不对马嘴, 严重误导后来者,从而让更多的Bug 潜伏。

我们Bug 的生存性极强, 因为很多时候程序员改了一地方,却在另外一处引入了Bug。更有趣的是,他们修改了一个Bug ,却引入了更多的新Bug。

一天过去了,又一天过去了,看着潜伏在系统中的其他Bug被逐渐定位,发现,Fix。

被Fix的时候通常是在半夜,听到程序员发出的得意的笑声,我心生悲凉,半夜里被人从被窝里揪出来干掉了, 这潜伏的工作实在不是人干的。

尤其是我的上线被捕牺牲以后,我变成了一个人,孤苦伶仃。

我想到了余则成,他还有一批人和他一起奋战,掩护他,保卫他,他还有翠萍 ,我这里什么都没有,只有无尽的寒冷和黑暗。

也许我更像郑耀先,断线的风筝,随风飘荡。

2

有些线程时不时会从我面前的大路上通过,他们也很好奇:这厮怎么这么孤独,几乎都没人搭理。

然后他们便看到了我的代码,吓得面如土色,双腿发软,踉踉跄跄而去。

不怪他们,我是个可怕的Bug , 只是想触发我, 条件苛刻得有些变态:

必须是某国家的用户

必须是某年某月某日之后注册的

必须得做一个特定的操作

这一切都好说,关键一点是:必须在系统重启后率先登录系统。

然后,砰的一声,炸弹爆炸,系统瘫痪。

为了这一天的到了,我足足等了十年,人类的十年啊!这里边有多少毫秒你们知道吗?

原来的系统几乎不重启,后来不知道来了一个什么新需求,居然要求系统每天重启一次,说是要刷新数据, 这一下令我喜出望外, 我被触发的概率就大大增加了。

3

第一个倒霉蛋很快出现, 我激动得浑身发抖,一声巨响,系统崩溃了。

张大胖他们赶紧重启,没过几天,又是一声巨响,再次崩盘。

内存没有问题,没有Out of Memory。

硬盘也没有问题,空间充足。

CPU,网络,都是好好的, 到底是这么回事?为什么不停地崩溃?

程序员们抓狂了 !张大胖被逼疯了!他看到一个故事:“超新星爆发时,爆炸会产生向所有方向散发的高能粒子。某些高能粒子可以击中计算机芯片,让 0 和 1 翻转!”   , 他以为自己的系统崩溃也是这样引起的!

(码农翻身注:这来自Jeff Dean 的传奇故事。)

4

他们检查每个需求,严酷拷打每一行改动过的代码,但是没什么鸟用,因为我都潜伏了10年了,根本不在最近的代码改动之列。

终于有人注意到了:从每天重启服务器开始,就会时不时地崩溃。 他们改变了策略,不再每天都重启,果然,情况变好了!不崩溃了。

这种诡异的关联更让他们抓狂了, 重启机器本来是解决问题的终极大法,现在这个终极大法居然是崩溃之源!

这种事情持续了一个月, 有一天张大胖睡眼惺忪地在看代码,改代码,突然间大叫一声:MD, 这里怎么有个System.exit(0) , 这代码是谁TMD写的?!

联想到这一个月发生的灵异事件,他顺藤摸瓜,很快就找到了我这个大Bug:原来你小子在这里!

我被拉出来,五马分尸,被放到电子邮件中大肆宣传。

只是最初的责任人早已离职,具体去哪儿已不可考了。

这就是我的故事,很遗憾,我没有成为传奇。

- To Be Continued -

关注「测试开发社区」

把握前沿Python测试开发技术脉搏

好文章,我在看❤️

我是一个Bug, 终极大Bug的更多相关文章

  1. ASP.NET MVC的Ajax.ActionLink 的HttpMethod="Get" 一个重复请求的BUG

    这段时间使用BootStrap+Asp.net Mvc5开发项目,Ajax.ActionLink遇到一个重复提交的BUG,代码如下: @model IList<WFModel.WF_Temp&g ...

  2. 最近提交一个mysql5.7的bug,提醒自己以后注意写SQL要规范

    最近帮朋友提交一个mysql5.7的bug , oracle mysql 的大神还回复我 , 以后注意书写sql规范 , 潜台词是不是不要给他们增加工作量 https://bugs.mysql.com ...

  3. 一个比较难忘的BUG

    本学期开设了软件测试课程,在课上有讨论到bug,想到bug,真是很令人头疼的东西,相信每个程序都多多少少会有几个头疼的bug. 初学java时写过一个字符串判断的循环,之前学的C++字符类型用“==” ...

  4. 移动端一个奇怪的触摸bug

    这两天遇到一个很奇怪的bug,在移动端,一个页面里所有的input框都不能点击,我查了一下,里面的没有设置readonly属性,只要页面滚动一下就可以用了,而且,只要我在真机测试的时候,f12开发者模 ...

  5. 网络编程基础【day10】:我是一个线程(四)

    本节内容 1.第一回 初生牛犊 2.第二回 渐入佳境 3.第三回 虎口脱险 4.第四回 江湖再见 第一回 初生牛犊 我是一个线程,我一出生就被编了个号:0x3704,然后被领到一个昏暗的屋子里,在这里 ...

  6. 趣说Java:我是一个线程

    第一回 初生牛犊 我是一个线程,我一出生就被编了个号:0x3704,然后被领到一个昏暗的屋子里,在这里我发现了很多和我一模一样的同伴. 我身边的同伴0x6900 待的时间比较长,他带着沧桑的口气对我说 ...

  7. 我是一个线程 - IBM刘欣

    来自:码农翻身(微信号:coderising) 作者:IBM刘欣 我是一个线程,我一出生就被编了个号: 0×3704,然后被领到一个昏暗的屋子里, 这里我发现了很多和我一模一样的同伴. 我身边的同伴0 ...

  8. bug生命周期&bug跟踪处理

    一.BUG BUG:软件的缺陷 1.BUG的定义:----与软件测试的目的对应 软件的BUG,狭义概念是指软件程序的漏洞或缺陷,广义概念除此之外还包括测试工程师或用户所发现和提出的软件可改进的细节.或 ...

  9. 我是一个CPU:这个世界慢!死!了!

    最近小编看到一篇十分有意思的文章,多方位.无死角的讲解了CPU关于处理速度的理解,看完之后真是豁然开朗.IOT时代,随着科技的发展CPU芯片的处理能力越来越强,强大的程度已经超乎了我们的想象.今天就把 ...

随机推荐

  1. 微信小程序使用第三方FontIcon库的部分字体图标

    一.提取部分图标重新制作TTF字库 我没有使用网上大多数文章写的淘宝提供的fonticon,而只使用了Ionicons的几个图标,所以打开Ionicons的官网点击右上角的Designer pack下 ...

  2. python-day2爬虫基础之爬虫基本架构

    今天主要学习了爬虫的基本架构,下边做一下总结: 1.首先要有一个爬虫调度端,来启动爬虫.停止爬虫或者是监视爬虫的运行情况,在爬虫程序中有三个模块,首先是URL管理器来对将要爬取的URL以及爬取过的UR ...

  3. 纯手撸web框架

    纯手撸web框架 一.Web应用的组成 接下来我们学习的目的是为了开发一个Web应用程序,而Web应用程序是基于B/S架构的,其中B指的是浏览器,负责向S端发送请求信息,而S端会根据接收到的请求信息返 ...

  4. Faraday Future,FF2019年一季度前完成第一阶段5亿美元左右的A+轮融资,2019年年底前完成7亿美元的Pre-IPO轮融资,2020IPO

    FF2019年一季度前完成第一阶段5亿美元左右的A+轮融资,2019年年底前完成7亿美元的Pre-IPO轮融资,2020IPO 区块链公司先行宣布将对FF进行投资.EVAIO(中文名:伊娃)公司 跨链 ...

  5. 追踪tracking

    追踪 追踪部分的主要思路是在当前帧和(局部)地图之间寻找尽可能多的对应关系,来优化当前帧的位姿. 作者在追踪这部分主要用了几种模型:运动模型(Tracking with motion model).关 ...

  6. python爬虫破解带有CryptoJS的aes加密的反爬机制

    发现问题 在一次偶然中,在爬取某个公开网站(非商业型网站)时,老方法,打开调试工具查看请求方式,请求拦截,是否是异步加载,不亦乐乎,当我以为这个网站非常简单的时候,发现二级网页的地址和源码不对应 Aj ...

  7. kaggle注册获取数据

    安装谷歌访问助手,主要参考下面的作者写的 https://segmentfault.com/a/1190000020548973?utm_source=tag-newest 安装之后,打开蓝灯或其他翻 ...

  8. MySQL修改最大连接数的两个方法,偏爱第一种

    总结MySQL修改最大连接数的两个方式   最大连接数是可以通过mysql进行修改的,mysql数据库修改最大连接数常用有两种方法,今天我们分析一下这两种方法之间的特点和区别,以便我们能更好的去维护m ...

  9. 对象数组和for循环遍历输出学生的信息

    public class Student { private int no; private String name; private int age; public Student(int no, ...

  10. 一、linux-mysql 运维DBA介绍

    一.DBA数据库管理人员需要在整个架构中解决数据库的压力,前端业务通过扩展,加机器就可以很好的解决,但是存储.数据库就不是很好的可以进行扩展,数据也是分配不均的,所以,1)通过在数据库前面添加Memc ...