StarWest 2010 - Day 1 - Critical Thinking for Testers

今天是StarWest 2010 正式开始的第一天。

有些人可能对这个conference不是很了解,这边简单介绍一下。
StarWest 是一个专注在软件测试的业界的conference,而且是最著名和有影响力的,看看历年presentor的name list就知道了。run by SQE(Software Quality Engineering ),对应的还有StarEast。顾名思义,通常分别是在西部和东部。西部通常在下半年,9月10月的样子,东部一般是上半年,3,4月份。一般一次 conference持续大概一周,event有几种形式
    full day或者half day的tutorial。 前面两天是这个,翻译过来叫辅导课,或者我称为专场。一个instructor负责一个整天或者半天的session。选择太多了,而且有好几个都很想去,但是只能选一个。James Bach的名气比较大,选他了。事实证明还是比较明智的选择。
    concurrent session。 这种比较短,一个小时左右,有很多并行的session可以选。
    Bonus session。 时间不是很好,比较早或者比较晚,但是其实有些还很不错,建议不要错过。
    keynote。 主题演讲,所有人那个时间都去听同一个。
    Expo,展会。 很多相关的厂商会来布置booth,展台,宣传自己的产品。
    book store。 专 卖testing相关的书籍,不错,比较方便。不过没有任何discount,tax也照收不误。美国的书还是很贵的,不少时$49.99。买了两本,一 本是James Whittaker的How to Break Software,被引用无数而且期待已久的,奈何国内买不到,而且似乎也下不到。另外一本是James Bach,今天的讲师的新作,Secrets of A Buccaneer-Scholar。问我有没有弄到签名? 你说呢。
    Reception。 不知道怎么翻译,招待会? 就是有自助食物和饮料的大家一起聊天的活动。Give me a heineken please, thanks!
      
好吧,这就是我了解的一些情况,Find more information from below:
http://www.sqe.com/starwest/

------------------------  和第一天session 的分割线 ----------------------------------

OK, James的session开始了。
首先有个问题,他的名字怎么念,James Bach (巴克,not 贝奇,至少他自己这么念,汗,以前我一直念成后者,sorry, James.)

James 的session叫做Critical Thinking for Testers。直译过来大概叫做测试人员的批判性思维。既然是关于Thinking,那么肯定是思维密集型,要跟着他飞速转动大脑,一天结束之后,头很晕,不过也觉得很过瘾。James说他就喜欢puzzle,或者是很难的问题,所以对他很轻松,而且发现他思维反应超快。

下面说一些我印象比较深的points。

1. A tester is someone who knows that things can be different.
这是James引用G. Weinberg的话。他给了一个图,是他做过的一个项目的bug submission曲线,总共17周,前面15周只有4个bug被提交,后面两周有190个。然后问大家为什么会发生这样的情况。

关于这个bug曲线的解读,现场大家想出了差不多二十种解读。我觉得很surprise,因为大家的思维非常的活跃和发散。
这是critical thinking的第一步,想到不同的可能,然后去问为什么。

some of the reasons that tester was employed is that they don't want to be fooled, or ship something that shouldn't be shipped.
想起之前另一个James的话,“我们之所以被称之为测试人员是因为我们以验证假设为生”。我想意思是一样的,如果一个测试人员很轻易的相信而不去加以思考,怀疑,挑战和验证,那么what's the value? 这大概是这项工作所需要的特质之一。
James就是典型的这样的人,别人告诉他一种,他会想出另外五种。我想这种怀疑精神大概是做tester最基本的要求。怀疑并不代表不去trust,而且如果只是怀疑也不够,所以Trust and Verify。


2. 从负面经验中学习

经验,特别是印象深刻的负面经验其实是很好的学习的来源,而且会学得很快,不容易忘记。很多时候,我们被这种经验伤害,觉得很upset或者embarrassed,然后想忘记。James分享了几个他的故事。
     a. 飞速骑摩托车的经历。之前他开车看到这种人的时候都很鄙视,并且觉得这是找死。但是有一次他因为lp可能得cancer赶去医院的时候,也被别人bs。后来再看到这样的人,他会想,也许他有急事。是的,有时候同理心就是这样来的,推己及人。
    b. 错把screenshoot当成产品请developer来看。又一次他发现产品hang 在那么不动了,什么都不动了,然后请developer来看,后来发现是自己吃饭前做的screenshoot。很丢人是吧,确实,不过really learn from that。

很认同这种观念,很多时候不是刻意的去找负面经验,但是总会遇到,是很难过或者suffer。但是回头去看,却是最陡的learning curve,而且很多knowledge comes from problem。如果一切运转顺利,大家都不会去探究更深的东西,难以学到detail的knowledge。

所以不要害怕失败,soon back from the bad mood, and then found what you've learned.

他还提到他和他儿子的例子,觉得很有启发性,也反映出典型的美式家长的思路。
tie a big fish with a light line.  用一条很细的线连接一条很大的鱼。要给他犯错误的机会,但是这种错误的后果不至于那么严重,拽得太紧就会断线。这也是对家长很好的启发吧。



3. Focus和De-focusing
有些时候我们需要专注在一个点上去深挖,比如测试某一个东西的东西,想到一个方面去测,就深入找出有意义的可能,但是也要学会de-focus,发散你的思维。去challenge每一个前提和constraints。
嗯,有启发。觉得好像我们平时focus比较不错,但是de-focus不够,有一个心理的原因是大家似乎觉得focus是好的东西,发散是不好的。之前听一个朋友所,灵感来自放松。是的,可以自己试试看,当你紧张,适度紧张 ,的时候,很容易专注。这很好,思维很深入,效率也不错。但是放松的时候,de-focus可以让你想到很多不同的可能,没有那么多的限制,有时候反而有很多不错的新想法。所以问题是什么时候focus,什么时候de-focus。这个,我也没有答案。


4. Huh? Really? So?
这是James推荐的critical thinking三步骤。
Huh?   you may not understand.
Really?  what you understand may not be true.
So? the truth may not matter, or may matter much more than you think.
嗯,不错的方法。
check if it works for you?


5. 两个圈,三个圈,四个圈

以前,我是说以前,we are trained that a tester's job is to verify whether the actual product meet the design spec or not.
这是两个圈,一个叫 described,一个叫actual,重合的部分就是说到做到的部分。
但是实际上还有一个圈,那就是imaged,或者叫expected的result。好吧,现在把三个圈融合在一起,试试看,应该可以弄出7个区域,3个是没有交叉的,3个两两交叉的,还有一个是三个圈交叉的。然后想一想分别代表什么意思?是不是觉得一下子思路打开很多?
James 说理想的结果是三个月完全融合。我倒是有不同的看法,不过没有跳出来讲,因为和他英文辩论还是有点底气不足。我的主要想法是很多时候image的没有办法 全部describe,因为有很多事common sense,或者叫不言自明的需求,是不可能都写在design上的。能写下来的是很小的一部分,而且我觉得有些就是不需要写的。不用举例了,例子太容易想了。
而且,更进一步(我自己瞎想的),再加一个圈,那就是requirement。 imaged,requirement,design,actual product。perfect,now think about it? try to draw all of them. 可能有很多不错的区域,要复杂不少,但是每个区域都有意义,都可能会出问题。然后再想想我们可以做什么。


6. challenge the common beliefs
Whether you know or not, there are many common beliefs about software testing. for instance,
  Every test must have an expected, predicted result.
  bugs found earlier cost less to fix than bugs found later.
  you can't manage what you can't measure.
  ....

    这些common beliefs就像是model或者pattern,会帮助我们得到很多基本的东西,或者有助于达成共识,但是和model/pattern一样,它们也会局限你的思维,或者误导。所以for critical thinking,你有时也要去challenge是不是真的这样,在你遇到的情况也是这样吗?如果你需要例子,我这里有一些,时间关系不写到这里了。


7. To be yourself
这个其实不是正题,但是觉得很受启发,真的。

每个人的性格特质都是不一样的,这大概也是common sense。James在聊到他的个性的一些特征,as a tester, and as a person.
他说自己不是charming person,而且也不是很有亲和力那种。传统上,我们可能理所当然的认为,做这样的讲师的人应该是那种soft skill 非常好的人,看来也未必。而且James思维敏捷,比较有“攻击性”,意思是很喜欢辩论,当然还比较make sense的那种。他在上课的时候也是比较有压迫性的,会追问你去思考,而且有趣的是快结束的时候还和一个学生辩论起来。因为James很 bs那种靠测试认证来挣钱的方式,他觉得花两天听一些那些东西,然后就拿一个证,比较stupid。you maybe don't think so, it's fine, that's his idea. 而作为提供方,甚至是不那么道义的,至少他是做不了这样的事情。
是的,他就是这么有个性的一个人,但是说实话我很喜欢他。对于这种专业很强,但是有些个性和偏执的人我从来不排斥,反倒觉得不错。其中一个原因是我不想听正确而无用的废话,另外有些偏执但能给你启发,激发你去思考的东西。是啊,大老远跑过来听些common sense的东西与自己也无法交代啊。另外一个方面,其实他们都有很好的底线,比如尊重他人,基本的礼貌,这样就还好。
是的,很多时候我们可以列 出一个很长的list说要去improve的地方,但是很奇怪的时候我们是拿一个不存在的完美的模型来对着看的。that won't work。就像今天Lee Copeland (SQE几个会议的chair)的bonus session里面讲到的关于presenter的例子,有些人喜欢讲joke,有些人讲故事,有些人画复杂的图,还有互动超好的。doesn't matter, if you have solid content.
And the most important, be yourself. 你可能是一个很serious的人,然后如果试图把自己改造成一个随口都可以讲笑话的人,因为大家觉得那样比较好。也许经过努力可以达成,可以意义有多大?
我在想有时候我们得去接受自己,是怎样的人,有时候这是你的backgound和经历造成的。然后知道你的weakness和strength。
现在想想,T公司的Steve先生讲的还是蛮有道理的,be yourself, be the best part of yourself。
但是不要忘记两个前提
    你在你的专业领域有自己的core competency。 这个和什么领域和专业无关。
    一个与人相处的基本的东西做得还不错。不需要多强,但是让沟通可以顺利的进行。
   



其实课程的内容很多,这些大概是一些基本的take away。如果感兴趣,可以找我要本次会议的所有的slides pdf版。

这次来US很奇怪,好几天都在suffer时差,2,3点的时候会醒。一天的密集思考还是很累的,6点多回来后感觉要倒了,没定闹钟就说了,然后10 PM就醒了,时差也是一种闹钟。

OK,就写到这里,要睡了,tomorrow's wonderful session are waiting for me.


哦,对了,上面提到的签名的事情。yeah, I got it. :)




你可能感兴趣的:(一家之言,2010,session,constraints,测试,bugs,软件测试)