微信号:runoob

介绍:学的不仅是技术,更是梦想!

为什么程序员发现不了自己的BUG?

2017-12-17 12:28 菜鸟教程

最近在朋友圈流行了这样的一个小学数学题,当然结果是“出乎意料”。看似简单的结果,儿童一般能够做对,而大人却几乎很少有人做对,分析下来,原因无非是惯性思维下的粗心导致的完全错误。今天我们就一起来分析下思考过程。


看图可知,猫=X 猫头=Y 猫爪=Z,即

3X=30

X+Y+Y=20

Y+Z+Z=9

所以 X=10 Y=5 Z=2

故结果 Y+Z+X=5+2+10=17


一般大多数的第一结果可能都是这样!等等,注意最后一个应该是Y+Z×X=?


心中一百只草泥马奔过,再算一遍

Y+Z*X=5+2*10=25


对不起还是错的,因为猫爪从2只

变成了1只


所以应该是Y+Z/2*X=?

心中一千只草泥马奔过,再算一次

Y+Z/2*X=5+2/2*10=15


对不起还是错的,因为最后一只猫少一个爪子,所以应该是Y+Z/2*(X-Z/2)=?


心中一万只草泥马奔过,再算一次

Y+Z/2*(X-Z/2)=5+2/2*(10-2/2)=14


其实大家会发现这个题目非常的“坑爹”,不就是故意折腾人么。但是在很多系统中,开发看到测试提出的Bug也是这样的感觉。作为开发就和大人做这道题一样,看到问题往往会以自己的惯性思维来理解,理所当然地认为就这样就对了,导致真相就被隐藏了。


而儿童一般能够做对这道题的原因,一方面是老师有引导性地提示细心的重要性,另一方面是长期踩雷积累的经验。这也是测试人员和开发人员的区别之一。


 
菜鸟教程 更多文章 Chrome 浏览器快捷键 月薪5万过得像5千?听听西二旗程序员咋说 如果各个程序语言是个人的话 你的工作经验为什么不值钱? 一段 While 说明了程序员的每一天
猜您喜欢 【精华】9张思维导图带你学习Javascript (北京)京东招聘测试工程师 Folly源码分析系列(一) — ThreadLocalPtr 【干货】PHP 代码规范简洁之道 编译,性能