Hi, 如果有任何想法与我沟通, 请用: lifr_nj 在 msn.com

发布新日志

  • Dev大哥,报不报bug是我的事,修不修bug是你的事

    2008-12-28 22:25:14

    Dev大哥,报不报bug是我的事,修不修bug是你的事

    有一天因为一个bugDev交流。这个bug其实是一个 corner case,其发现也是一个偶然的原因,所以重现也比较麻烦。所以我开玩笑的说,你看,为了这个case我做了多大的工作。他看来也很委屈,说“你看看我提交了多少code fix”,然后拦也拦不住的打开了bug对应的code check in


    我看了看,为了这个bug fix,至少有1020fix被提交,涉及78个文件。为了这么一个corner case,这个代价值得吗?对这个corner casefix,让code变得更复杂。而且涉及到的修改的地方这么多。所以我对他说:报不报bugqa的事,但你并不一定要fix。如果你觉得代价太大,应该向product managerbug做评估是否真的需要fix


    软件产品的质量不仅是QA的责任,同样也是Dev的责任。对于QA,报出所有发现的bug就是对软件质量的责任。但对Dev来说,并不是就需要fix所有发现的bug。很有可能fix一个bug对代码的修改带来的风险比bug本身的风险更大。Devbugseverity的做出正确判断是体现Dev对产品的理解,Dev的能力的一个体现,也是Dev对软件产品质量负责的体现。
  • 嘿,你该跳槽了

    2008-12-28 21:28:53

    嘿,你该跳槽了

    对一个软件测试工程师来说,多长时间应该换一个工作?


    我觉得是1~3年。其实时间不是关键,关键的是你还能不能学到新知识。或者说你还有没有足够的动力去学习新知识。当你感到每天在重复昨天,而你又没有动力去学习新知识的时候,赶快跳吧!


    我觉得QA是一个经验非常重要的工作,这里的经验既包括软件测试本身需要具有的知识,比如设计testcase,处理bug的流程等等,还包括对对计算机科学各种技术的了解。


    对技术深度的要求来说,DevQA深很多,但谈到对技术广度的要求,QA又远胜Dev。计算机行业博大精深,Dev能做到某一块的精深,QA要做到多个领域的博大。比如操作系统,网络,安全,数据库。。。这样你才能对要测试的系统有更深入的了解,你也才能更有效的测试系统,甚至在和Dev的讨论中,你才能从他们想不到的角度提出你的见解,得到尊重。


    那么如何才有动力不断学习新知识,获得新经验呢?


    在某一个岗位,无论你是多么好学,如果没有现实的驱动,你也会慢慢懒惰下来。这个时候换个岗位,或者换个公司能让你重新活跃起来。


    所以,对于软件测试工程师来说,在开始的几年,多呆几个不同的公司并不是坏事。等你跳了几家之后,你就已经是资深工程师了,那个时候找个好公司干到退休也不是坏事。:-)


    第一个公司我呆了一年,由于别的原因离开。第二个公司呆了快4年,到后面感觉日子太轻松,像温水煮青蛙,想跳也懒的跳了。幸好公司bankrupt,别无他法。当时还觉得很可惜,现在想想要是还那样下去的话,再过几年,人都废掉了。

  • 软件测试工程师的猫论

    2008-12-28 20:40:38

    软件测试工程师的猫论

    有一天team building大家在一起吃饭,不知道谈到什么,我的manager突然对我说:当初你的面试评价非常一般,要不是XXXXXXX,你就被刷掉了!我当时听了心里不禁“苦笑”,心想就用这样的面试方法,没被刷掉真是太运气了。


    可以确定的是就这个公司在行业中的地位来所,肯定是要找一流的软件测试工程师。那么他们是怎么面试的呢?我印象最深刻的一点是80%以上的内容都是知识性的,而且这个知识还和他们的产品密切相关。有些甚至是非常具体的操作知识。比如有一个问题是如何共享一个windows的目录,还有如何配置一个openldap server等等


    知识性和具体操作的东西不是不重要,而是如果占到80%那就太多了。实际这还不是最让我吃惊的面试,我还经历过面试有类似智商测试题的。用这样的方法来找优秀的软件测试工程师,我觉得是很难的。因为这些测试的目标,基本上是舍本逐末。这些面试都没有瞄准软件测试工程师需要具备的核心能力。


    软件测试工程师的核心能力很简单,我认为就是发现bug的能力。就像总设计师的猫论,无论白猫黑猫,逮到耗子的就是好猫。


    这个能力说起来简单,但并不太好恒量,因为它是一个综合能力的体现。


    在人力资源方面,一种分析个人能力的方法是C/E/T分析方法,把人的能力分成3个方面。


    C代表Competence,指表现出来的解决问题或完成某项工作的具体的能。Competence都是是需要长时间的积累的。对软件测试来说比如发散思维的能力,对bug来源的判断和追踪能力,学习新知识的能力,设计testcase的能力,控制测试进度的能力等。所有的这些能力都能影响一个软件测试工程师能否以更高的效率发现更多的bug


    E代表Experience,指工作经验,项目经验。很多公司招聘的时候非常注重工作经验,特别是本行业工作经验。原因是,如果一个行业本身的知识门槛比较高,比如通信设备的测试,那么具有相关工作经验可以节约很多培训时间。还有一个原因是更多的经验通常说明能力更强,因为能力都是从经验中总结获取的。


    T代表Technical Knowledge, 也就是掌握的技术知识。比如会QTP,会perl编程,或者获得CCNA。这些技术知识一般来说相对上面的CE来说是最容易获取的。只要脑袋不笨,经过一段时间的自学都能掌握的。


    所以,面试一个软件测试工程师,最重要的是恒量他的Competence,然后了解他的工作经验,最后才是一些具体的技术知识。


    在我面试过的所有公司中,个人觉得ebay cdc的面试是最有效的恒量软件测试工程师能力的。可惜被刷了下来。以后有机会再去面一会 *_^

     

Open Toolbar