首页 > 技术文章 > 读《发现的乐趣》

laislabonita 2018-03-14 09:53 原文

偶然读到邰晓梅的《读<发现的乐趣>》,解答了我内心的很多困惑,坚定了我内心的坚持,说出了我内心很多想说却总结不出来的话。深有同感,顾摘录至此,作为未来努力的方向和目标。

 

1.介绍

《发现的乐趣》时费曼先生的演讲和访谈录。正如序中对费曼先生的描述:“他看重的是诚实、独立以及坦然承认自己的无知。他留给我们的宝贵财富是他科学的逻辑架构和研究方法,拒绝教条主义,还有对质疑精神的无限包容。”

我一直认为测试人员与自然科学家,两者有很多相似之处,这包含他们的思维、做事方法和具备的一些特质,只不过一个是在探索软件,一个是在探索世界。

2.不教条主义

学习知识不能太过教条主义,测试也是一样,只要明确你的目标,比如“找到重要的bug,提供质量相关的信息”,就不必拘泥于形式。

这个世界上没有这么一回事:

一定要先做测试设计,再做测试执行;

没有清晰明确的需求文档,测试就做不好;

没有可以执行的软件,就无法开展测试;

一定要先执行测试用例,再补充探索性测试;

如果你在做测试的时候,不是以“发现新的、未知的信息为目的去探索”的话,那就不叫Testing。也许你的目的只是在checking

海盗派测试法则的前三条对应了不教条主义:

不循规蹈矩,不拘泥于外在形式;而不是 随意测试,无拘无束

基于上下文测试;而不是 迎头乱撞

基于风险(根据当下形势不断调整目标);而不是 Waterfall Testing(确定目标和步骤,然后完全按照计划行事)

 

遵循Waterfall Testing的企业一般还会把测试设计与测试执行分离,分别由专人负责。我认为除非情非得已不建议这样做,这种强行把一个本应连续的过程拆分开来的过程及其低效。文章举了“曼哈顿计划”为例,“设计人员指导执行人员学习如何确定其中铀235的含量,指导他们怎么做,他们却总是做不到。最后发现高层管理人员知道他们在分离铀,却不知道那颗炸弹的威力;执行人员根本不知道自己在分离铀”

 

不教条主义,就是要提倡理性思考,一定要把 测试 测试的形式 区分开来。文中提到“你一定要把科学 和 科学研究的形式 区分开。说出科学研究的流程,比如写报告、做实验、观察,等等,这个很容易,但是我们可能注重的只是科学的形式,还把他当初科学,实际这只是伪科学。”我们可以依据这个思路区分一个测试专家是否是伪专家。

3.不功利主义

各个圈子都有一些沽名钓誉追求功利的人,测试圈也不例外。海盗派Tester的原则里加了下面两句话,就是在表达作为一名海盗派tester,要关注的是磨练自己的测试匠艺,这样才能发现测试的乐趣所在。

注思维和技能   而不是  关注分数和头衔

敬仰测试匠艺   而不是  盲目崇拜权威

海盗派tester不盲目崇拜权威,对一切结论会心存疑惑,想去亲自验证。人们不确定流传下来的东西是否真的正确,想重新亲自验证事情的真相,不想盲目相信学到的东西。这就是科学,经过重新检验的知识才是可信的,而不是一味相信前人留下来的知识。认为先辈大师们字字珠玑,说的都是绝对真理,这样的信念是很危险的。

4.对未知和挑战充满好奇

测试中,我们经常这样做,去理解一个又一个原先不知晓的事情和规律。需求不可能一次性的、全面的给你,bug在哪里有待你去发现和探索,并且很多是很我们对被测对象的认知只是停留在某一个层次,再继续测试下去,你会有新的发现,更新之前的认知和理解。那些不合理、出乎你意料的事情才是最有意思的。

测试就是在解决一个又一个未知问题,克服一个又一个新的挑战,扩大已知领域,缩小未知领域,但同时要保持一颗谦卑的心,因为我们知道不管如何努力,我们只能无限接近真实的质量,却无法绝对的知道它。前方永远有未知的信息等待我们进一步挖掘。而在探索过程中,保持好奇心很重要,那些不合理的、出乎我们意料的事情绝对是我们最感兴趣的。

对未来和挑战充满好奇   而不是   只关注确定性的事物,对未知充满恐惧

5.质疑和提出问题

Lee Copeland在《A Practitioner’s Guide to Software Test Design》这本书中曾经把软件测试描述为是比较what ought to be what it is的过程。这里的what it is指的是真实的软件是什么样的,包括他的质量究竟是什么样的,这是测试人员一直努力寻找的目标,这个目标一直存在在那里,我们永远都无法绝对的掌握它。但是我们可以不断探索,增进对它的认识和了解,当然这个过程并不easy,需要 一边流泪一边剥洋葱。重要的是,在探索这个终极法则的时候,不可以事先设定好它是什么样子的,而是要心存质疑,不断提出问题,这样探索性测试才更有效。

在真正开始探索性测试执行之前,所有的测试分析和测试设计都是在探索 what ought to be的答案,而不是what it is.

就像费曼所述:“质疑和提出问题是我灵魂里最本能的一部分--当你怀疑并去追问的时候,你就不那么轻易去相信任何东西了。我们可以忍受这些不确定性,也接受自己的无知。我觉得,不知道答案,要比得到一个错误的答案有意思很多。对于不同的事情,我或是有近乎正确的答案,或是可能相信他,对他们的确信程度不同,但我对任何事都没有绝对的确信。不懂一些东西,漫无目的的迷失在神秘的宇宙中,这些没有让我感到恐慌,这是很自然地状态。坦然面对各种可能性就会带来机会,怀疑和讨论是探索未知世界的关键。”

6.客观公正的记录结果

 

7.学习知识而不是记住概念

检测你究竟是传授了一个思想还是教了一个概念,简单的方法是不要使用新词,使用自己的语言复述一下刚学到的知识。这与James Bach关于如何教一个测试新手学习测试的观点如出一辙,那些概念不是最重要的,一股脑倒给他们反而会让他们丧失兴趣。比较好的办法是,给他一个测试的challenge,让他尝试去做,他一定会遇到很多问题,然后有一个有经验的coach指导他需要改进的地方。

实际上,测试和科学都要做很多实验,观察的重要性不言而喻。

推荐阅读