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

琳琅数码之家 2017-12-18 10:25:21

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

看图可知,猫=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也是这样的感觉。作为开发就和大人做这道题一样,看到问题往往会以自己的惯性思维来理解,理所当然地认为就这样就对了,导致真相就被隐藏了。

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

0 阅读:22

琳琅数码之家

简介:数码科技爱好者