作为一只从事软件测试将近10年的老鸟,如今在腾讯某测试团队任职测试主管一职。回首过往,从事软件测试这十年也有些许体会,写出来供大家思考,欢迎大家留言交流。
首先,先谈谈软实力,一个优秀的测试技术专家,我认为需要具备以下几个特性:
持续学习能力:
计算机技术的发展可谓日新月异,如果不持续学习,那么不出2年,你就会发现你只能当一个廉价的手工测试人员。所以如果能在工作中学习最好,不能的话,下班后保证2个小时的自学时间。几年下来,你就能发现自己的进步有多大。
沟通能力:
日常工作的沟通能力,和开发、产品、运维、客服同事的沟通要及时,表达要准确,多微笑、多倾听、保持良好轻松的同事关系。
正式场合的沟通能力,如项目周会、评审会议、总结会议,一定要提前做准备,讲什么、怎么讲,自己私下里先练习一下,这样在正式场合才能表达清楚、气定神闲、落落大方,给领导和同事留下一个好的印象。
团队合作能力:
首先从心态上,要强调整体的概念,放下单打独斗的想法。在实际项目中,体现为团队成员之间的相互协作、资源共享、共同进退。这个时代已经不是一个英雄创造神话的年代了,只有团队的齐心协力才能把项目做好,这样的人往往也是公司最喜欢,最愿意去培养的人。
与优秀的人为伍:
所谓近朱者赤,近墨者黑。跟对一个老大、和优秀的人共事,找一个优秀的伴侣、经常去参加一些牛人讲座、技术论坛,通过这些人的耳濡目染,一定会让你少走很多弯路。
其他还有很多软实力,但我个人认为以上几点比较重要。
在谈谈软件测试职业发展的思考。软件测试让你的发展可以分为两条路,第一条路是测试管理,第二条路就是测试技术专家,而在测试技术领域里,无外乎就是性能测试专家和自动化测试专家这两个方向。
明确了软件测试职业规划的三个方向,接下来就是如何选择一条适合自己的方向。
下面是我对于各个发展方向的几条建议和思考。
关于选择测试管理:
首先、你一定不是一个喜欢技术,对技术敏感的人,这个很容易判断。
第二,你一定是个善于沟通,组织协调能力强的人。
第三,你的长期抗压能力较强,上能顶住领导批评,下能顶住下属埋怨。能受得了委屈,吃的了亏。
第四,你对管理工作充满持续的激情,如果过去你是一个学生干部,那更加没问题。
总之,相对你的IQ,你的EQ更高。那么从性格上来说你比较适合做测试管理工作。
想要成为测试管理人才:
首先你一定要成为一个功能测试专家;通过参与至少2个完整项目的测试工作,你对测试理论、一个完整项目的测试流程、测试活动、测试输出了如指掌。
第二,尽量选择一个行业如电信、支付、网购、通讯等深入做下去,成为该领域的业务专家。因为测试经理的角色往往也是半个需求人员的角色。
第三,尽量在头三年的时间里,亲自参与功能测试、性能测试、自动化测试工作,为后面测试管理的招聘工作、测试计划、人员分配、任务安排打下一个良好的技术基础,说白了,测试管理工作也是一个技术管理岗位,没有一定的技术功底,很难开展后续的管理工作。
关于管理类思考:
不要不懂装懂。你不懂不会,不足以让组员瞧不起你;你不懂装懂,所有组员都会瞧不起你。管理就是管理,是把项目做好,不是让你练擒拿格斗,一定要制服组员。勇于上问、不耻下问,快速学习,这才是团队学习之道。
作为Lead,如果没什么重要事情,到点就走人——不然你的组员会碍于面子而陪着你。你有没有想过他还有可能要陪父母、妻子和儿女呢?如果你经常这么干,建议你看一看《二十美元的故事》这则小寓言。
要做权威,不要做学霸。我想说的是:下属进谏的速度和广度决定于你的心胸与宽容度。正因为大多数初级管理人员心胸狭窄、宽容度低,才导致了团队习惯性的“绝对上下一致”。据我所知,印度程序不是这样的风格,属下和领导、新手和权威可以心平气和地讨论分歧而不必面红耳赤。我的建议是:在团队中,不要等级观念,要平等;不要讽刺刻薄,要尊重;不要放不下架子,要宽容;不要目中无人,要谦虚。总之一句话:大家都是普通人,谁能跟谁差哪儿去呢?
关于选择测试技术专家:
选择技术这条路正好和测试管理人员具备的性格相反。
首先,你不喜欢组织协调这样的工作,你性格有些孤傲,不喜欢管理其他人,第二,你不一定是个技术狂热者,但你不排斥技术,你的动手能力较强,喜欢实践,能静下心来学习,那么你有成为一个技术专家的潜力。如果你掌握一门编程语言,或者有信心学好一门编程语言,那么恭喜你,你有成为自动化测试专家的潜力。通常,性能测试专家和自动化测试专家在技术上是相通的。
关于技术类思考:
软件工程的任何一个部分——从需求分析、架构设计到最后的Debug——都能引入Bug,有时候是单个引入,而有时候则是一窝一窝地引入。所以,优秀的测试员理应掌握丰富的软件工程知识。很难想象一个不懂材料力学和结构力学的工程师能够验收刚刚建好的大厦。
测试员不但需要学习编程,而且需要学习各种编程。初级测试员可以站在用户的角度上去观测和使用软件,以期找出Bug所在,但高级程序员更需要借助程序的原理来剖析更深刻的东西。毫不夸张地说:如果想深度测试Web程序,你应该学学Hacker;如果想研究.NET的程序,你应该学会MSIL;如果想深度Debug原生代码,你应该学习汇编、了解PE文件格式;如果想深度测试软件的安全性,你应该学学破解。总之,理想的测试员应该比程序员更深一个层次。
如果你确定了自己想要在测试领域发展下去并取得成就,那么无论是技术能力、管理能力还是其他软能力都是要不断学习和练习的。有一个著名的小时定律理论,即一个人想要成为某个领域的专家,需要经过1万个小时的锤炼。
道法自然,没事多学点东西;选择你所爱的,爱你所选择的;使自己和家人过的开心快乐,比什么都强!