作为测试工程师,在日常工作中接触最多的当然是团队中的开发工程师,如何和开发工程师进行有效的交流是测试工程师面对的重要问题。一般来说,在一个团队中,总是有开发人员喜欢和不喜欢的测试工程师,这两者之间的工作效率和效果都有很大的差异。
当然,不能武断地说测试人员不喜欢的测试工程师就一定是效率低下的测试工程师,或者说是不合格的测试工程师,但一般来说,那些容易得到开发人员认可的工程师在测试时总能够更好地发现缺陷和敦促开发人员解决缺陷。
测试工程师和开发工程师承担的是开发工作的两个不同方面,说得极端一点,一个是创建,一个是破坏,虽然两者的最终目的都是一样的,但在达成目标的方式上却有很大的差异。因此,在为同一个目标奋斗的过程中,发生冲突也是难免的,但通过下面的一些建议,换个视角看看开发人员的生活和工作,可能很多的冲突就能化解于无形了。
Cem Kaner在《Testing Computer Software》书中有一段话:“The best tester is not the one who finds the most bugs or who embarrasses the most developers. The best tester is the one who gets the most bugs fixed.”(最好的测试人员不是发现最多BUG或是使得最多开发人员不自在的人,而是能够“说服开发人员”修正最多BUG的人),建议大家好好理解这句话。
至于我个人,是从开发工程师转为测试工程师的,对于开发工程师的处境和想法也曾有过切身的体会,或许是这个原因,让我在和开发工程师交流的过程中还算是比较顺利,和他们相处得也还不错。在我的测试经历中,也接触过相当多的开发工程师,这里我把和开发人员交流的经验归结为“五要四不要”:
五要
1、要耐心和细心
细心是测试工程师的一个基本素质,测试工程师是对质量负责的人,涉及到质量问题,就不能含糊,因此一定要细心,细心对待每一个可能的BUG、细心对待每一段被你检查的代码,细心对待每一个你撰写的BUG报告,细心对待你发出的每一封邮件。细心是一种态度,你的态度迟早会感染和你合作的开发人员,而这往往是合作愉快的基础。
至于说到耐心,在我的工作经历中,不厌其烦地向开发人员解释一个BUG,让他认识到BUG的重要性是经常的事情,其实想想也很正常,对任何人来说,被人指出自己的缺点和不足都不是让人舒服的事情,因此,一点不耐烦的情绪就可能引起对方很大的反感,给自己的工作带来不必要的麻烦。
2、要懂得尊重对方
开发是一件需要全面和综合考虑的工作,开发工作中,由于各种原因导致程序中出现问题是很正常的现象,作为测试工程师,发现了这些问题并不值得你夸耀,也不能说明你比开发工程师聪明。一个好的测试工程师一定是懂得尊重开发工程师的人,尊重对方的技术水平,尊重对方的代码。我接触过的开发人员都是挺和善的,一般来说,对他们最大的尊重就是承认他的专业水平,承认他的代码。对他们来说,代码就像是自己的孩子一样:)因此,记得在合适的时候表达你对他的尊重,赞扬一下他代码的精妙之处。
3、要能设身处地为对方着想
开发工程师一般都处在较大的工作压力下,他的上司直接考核他们的指标很大程度上是已完成的代码,所以在工作任务紧张的时候,对于测试工程师报上来的BUG会拖延解决甚至是推脱,给测试工程师的感觉就是很不合作。那么在这个时候,就需要设身处地的为对方着想了,每个人都会为自己的工作在内心排定优先级,如果他认为解决你发现的BUG不是重要的事情,那么最大的可能就是你并没有向他解释清楚这个BUG的严重程度。
发现BUG是我们的责任,敦促BUG得到解决是我们更重要的责任,因此,我们可以心平气和地和开发人员坐下来讨论一下BUG的严重程度,和他一起排定BUG的优先级别并确定解决的时间。
4、要有原则
不要忘记,测试工程师需要对产品的质量负责,在这一点上一定要有原则。测试工程师可以和开发工程师建立良好的个人关系,但在具体的事情上,一定要按照公司的相关流程来处理。当然,在坚持原则的同时,可以采用一些委婉的表达方式,可以在允许的情况下尽量体谅开发工程师,但请记住,一个有原则的测试工程师才能真正帮助开发工程师,才能赢得开发工程师的尊重。
5、要主动承担
如果开发工程师要求你承担部分不属于你的责任,比如,定位你发现的BUG到代码一级,或者是帮助他编写部分文档和代码(不要不相信,真的有这样的事情),那么你会怎么做呢?在我的测试经历中,这些事情都遇到过,我的原则是在可能的情况下尽量多承担。其实都是工作上的事情,有能力的话,多做一点也无妨。当然,肯定有人不同意我的意见,在这里我也不想争辩,个人意见而已,仅供参考:)
在我的测试经历中,我会根据自己的进度和时间安排尽可能地提供更多的关于BUG的参考意见,甚至是定位到代码一级,这种方式不是正规的方式,但对于提高自己被信任的程度是非常有益的。但在主动承担时,一定要明确是在自己确有余力的情况下才能去承担,否则,婉拒是最好的对策。
四不要
1、不要嘲笑
不要嘲笑你所发现的BUG,即使是非常愚蠢的错误也绝对不要嘲笑,说不定那个错误是因为开发工程师联系加班24小时犯下的,对别人的工作始终应该尊重。如果你觉得有必要提醒他不再犯一些经常犯的错误,可以采用这样的方式:编写一份测试过程中发现的开发人员常犯错误的文档(记住,千万不要写上谁犯了这些错误),用轻松的口气调侃一下,发送给开发人员。这种方法我采用过,开发人员都能很快接受。
2、不要在背后评论开发工程师
永远不要在背后评论开发工程师的技术能力,这个绝对是非常忌讳的事情,一时的口舌之快或许会使你永远不再能同他良好地合作,要知道,开发工程师最在意地就是别人对他的技术能力的评价。其实这个不仅仅是作为测试工程师的准则,也应该是做人的准则。
3、不要动辄用上层来压制对方
在出现和对方的意见分歧的时候,应该采用什么方式说服对方呢?直接向上层求助当然是一个办法,但这种办法带来的负面左右也是很明显的,首先是作为上层的处理结果可能不一定符合你的愿望(在很多公司,开发工程师的地位高于测试工程师的地位,这种地位的不平等导致上层在处理分歧时会有一定的偏向性);其次是动辄拿出上层来压制对方只能给他人留下无用的印象。所以在出现分歧时,尽量尝试通过沟通解决吧,实在不行,再动用最后的手段。
4、和开发人员的沟通不要只有BUG
除了在BUG记录单上,在其他的地方也让和你合作的开发工程师接触到你吧:),午餐或是集体活动的时候多和对方聊聊天,一方面可以增进彼此的感情,混个脸熟,打交道的时候也方便;另一方面,从他那里了解业务的知识和他负责模块的方方面面,对自己也是提升。我个人就很喜欢和开发工程师沟通,开发工程师其实一般都是比较健谈的,尤其是对自己程序的精妙之处,多了解一些,多接触一些,对自己总是有益的。
写了这么多,其实关键的就是两点:多从别人的角度去想想,所谓“换位思考”,多尊重对方就一定能得到对方的尊重与配合;其次是加强和开发工程师的沟通,让他清楚地认识到你的工作对他的价值,你发现的每一个BUG的重要性。
我一直认为,一个好的测试工程师一定是在公司里被所有人尊重的快乐分子,而不应该是一个“铁面判官”:)当然,作为我个人来说,绝对不敢说自己做的已经很好了,不过,我经常都记得提醒自己:尊重对方。