转自:http://blog.csdn.net/han_yankun2009/article/details/7647439
有这样一个脑筋急转弯的题目,不要试图去网络上寻找答案,思考一下,然后告诉我你的思考过程,不一定要有结果,找到答案不一定是最重要的,我更关心你的思考过程: 以下是文章原文出处 http://www.taixiaomei.com/archives/94 。文章回答的很精辟,不敢独自保留,在此分享出来,供大家欣赏。
这一个等式 很奇怪,0比2大 .2比5大 .5比0大.为什么?
When you see the following inequality, what will be the reasone, in your opinion? Don’t try to find the answer from the internet. Just tell me your thinking process.
0>2, 2>5, 5>0
Responses to 说一下你的思考过程 Tell me what you think
看到这个等式首先想到的是为什么是反的。然后就想肯定不是代表普通的数学比大小,因为有计算机背景,初步就想到是不是asc编码符的比大小。但是继续验证ASCII编码是不正确的,其本质还是数字的比大小,没有摆脱那个思维,换种思路,上面这个等式的0,2,5其实并不是看做数字来理解而是一种图形,比如0代表圆圈,那2和5又代表什么呢? 还是说不通,但是可以肯定的是0,2,5各自代表着某种已定的特殊含义,这种含义又有某种特殊的联系,现在就是要找出这种联。
有了新的数据,推翻了上一次的猜测。并且推出新的猜测:“0,2,5其实并不是看做数字来理解,0,2,5各自代表着某种已定的特殊含义,这种含义又有某种特殊的联系”,现在需要用新的数据来证明这种猜测是正确的。
这种既定联系的范围太广了,光从这个等式提供的信息量有点少啊。
这种状态是否似曾相识?你测试的时候,是否有过这样的时候,感觉毫无头绪,感觉效率很低,感觉没有思路。。。
这个时候,不妨试着运用Defocused Thinking,尽量拓宽自己的思路、找更多的数据(data)。或者运用Alternative Thinking,先做些别的事情,过一些时间再回来接着测试,也许就有新的思路了
很好,你找到了题目与圆在某一方面的相似性。但是这个就是那个“答案(bug)”了吗?你需要找到更多的数据,证明它就是你要找的
“答案”是我们最终要找的东西;我们测试的时候,bug不也是我们要找的东西吗?答案,事先你并不知晓在哪里,你也事先不知道bug藏在哪里,否则就没有必要测试了。都是在解决问题,都是在找寻未知,测试的乐趣也在于此了!
可以从软件质量和软件测试的角度来思考这个问题: 0、2、5分别表示软件测试中发现的bug数。0>2, 2>5:没有bug的程序固然比有2个bug的程序的代码质量高;类推,2个bug的比5个bug的代码质量高;5>0:0个bug不代表程序没有bug!而只能说由于个人测试方法、测试思维和知识的局限性导致了某些bug无法发现。从这个角度来讲,发现5个bug的测试用例和方法显然比没发现bug的用例和方法对保证软件测试质量的价值和意义重大。从某种角度来说0bug意味着测试方案的失败而非程序质量的成功。事实上,世界上最优秀的程序员,也不敢保证他的代码100%正确无误! 这是不是软件测试的博弈?
Well, I think I’ve got the key.0:石头;2:剪刀;5:布。
非常棒!终于找到了答案。说说我能想到的启发吧: - 做这种题目就是一个寻找未知的过程,测试也是一个寻找未知的过程。这个未知可能是bug、可能是系统真实的表现 - 当你知道答案时,你可能觉得这也没有什么高深的,很容易理解,剪刀、石头、布嘛,换句话说,正向思考还是很容易的出这道题的,可是让你找答案时,就不是那么容易了,因为这时你得利用反向思考的方法,这就是测试的思维 - 不同的人思维方式区别很大,决定是否能找到这个答案和人的思维方式、知识经验都有很大关系,思维方式可以通过训练提高、知识经验可以通过学习和实践累积。【是的,我是在说,思维方式可以后天训练提升,而不是先天就决定了的】 - 所以多做做这种动脑筋的题目、多解解各种谜题、多做做拼图游戏、多玩玩魔法和数独等,都可以训练你的思维,包括边际思考能力、系统思考能力、逆向思考能力等等,这些都是你的学习能力 - 学习能力提高了,不管是产品知识还是测试知识,当然都对你来说不是什么难事了,你也能区分出来何时学习产品知识、何时补充测试知识、应该补充什么知识、应该补充多少知识了 - 测试中,我们经常可以使用溯因推理法(adbuctive inference),也就是假设性诱导法
1. 你获得一些数据,希望能够解释这个数据 2. 你想到数个可能的解释 3. 你寻求更多的数据帮助你解释或反驳每一个解释 4. 你选择最能帮助你解释所有其中重要的数据的解释 5. 或者,你没有找到一个最合理的解释,那么继续寻找更多的数据 - 科学家们会经常使用溯因推理法,测试人员也经常使用溯因推理法,实际上有些研究表明科学家们的思考方式与测试人员非常相似,他们经常质疑其他人习以为常的 东西、他们经常做各种可能的假设然后去验证、他们会时而想到其他人想不到的方面,科学家们的发现发明不是因为科学家们都是天才、都有超人的智慧,而是因为 他们的思维方式。所以多读读科学、社会学、人文学、认知学,了解发现问题、解决问题的思考过程,对测试大有裨益
“答案”是我们最终要找的东西;我们测试的时候,bug不也是我们要找的东西吗?答案,事先你并不知晓在哪里,你也事先不知道bug藏在哪里,否则就没有必要测试了。都是在解决问题,都是在找寻未知,测试的乐趣也在于此了!
可以从软件质量和软件测试的角度来思考这个问题:
0、2、5分别表示软件测试中发现的bug数。0>2, 2>5:没有bug的程序固然比有2个bug的程序的代码质量高;类推,2个bug的比5个bug的代码质量高;5>0:0个bug不代表程序没有bug!而只能说由于个人测试方法、测试思维和知识的局限性导致了某些bug无法发现。从这个角度来讲,发现5个bug的测试用例和方法显然比没发现bug的用例和方法对保证软件测试质量的价值和意义重大。从某种角度来说0bug意味着测试方案的失败而非程序质量的成功。事实上,世界上最优秀的程序员,也不敢保证他的代码100%正确无误!
这是不是软件测试的博弈?
Well, I think I’ve got the key.0:石头;2:剪刀;5:布。
非常棒!终于找到了答案。说说我能想到的启发吧:
- 做这种题目就是一个寻找未知的过程,测试也是一个寻找未知的过程。这个未知可能是bug、可能是系统真实的表现
- 当你知道答案时,你可能觉得这也没有什么高深的,很容易理解,剪刀、石头、布嘛,换句话说,正向思考还是很容易的出这道题的,可是让你找答案时,就不是那么容易了,因为这时你得利用反向思考的方法,这就是测试的思维
- 不同的人思维方式区别很大,决定是否能找到这个答案和人的思维方式、知识经验都有很大关系,思维方式可以通过训练提高、知识经验可以通过学习和实践累积。【是的,我是在说,思维方式可以后天训练提升,而不是先天就决定了的】
- 所以多做做这种动脑筋的题目、多解解各种谜题、多做做拼图游戏、多玩玩魔法和数独等,都可以训练你的思维,包括边际思考能力、系统思考能力、逆向思考能力等等,这些都是你的学习能力
- 学习能力提高了,不管是产品知识还是测试知识,当然都对你来说不是什么难事了,你也能区分出来何时学习产品知识、何时补充测试知识、应该补充什么知识、应该补充多少知识了
- 测试中,我们经常可以使用溯因推理法(adbuctive inference),也就是假设性诱导法
1. 你获得一些数据,希望能够解释这个数据
2. 你想到数个可能的解释
3. 你寻求更多的数据帮助你解释或反驳每一个解释
4. 你选择最能帮助你解释所有其中重要的数据的解释
5. 或者,你没有找到一个最合理的解释,那么继续寻找更多的数据
- 科学家们会经常使用溯因推理法,测试人员也经常使用溯因推理法,实际上有些研究表明科学家们的思考方式与测试人员非常相似,他们经常质疑其他人习以为常的 东西、他们经常做各种可能的假设然后去验证、他们会时而想到其他人想不到的方面,科学家们的发现发明不是因为科学家们都是天才、都有超人的智慧,而是因为 他们的思维方式。所以多读读科学、社会学、人文学、认知学,了解发现问题、解决问题的思考过程,对测试大有裨益