背景:公司刚成立一个产品线,自然同时需要组建一个对应的测试团队,这个时候公司选择了小A来负责组建和管理该测试团队,并且当前就小A一个人。那么问题来了,作为一个新任命的测试经理,小A应该一步一步怎么去做呢?都需要哪些技能才能够承担这样的责任呢?
寻找队友:所谓巧妇难为无米之炊,第一步肯定就是要招人了(这个时候对于团队的目标应该也有个大概的方向,后面详细说明);当然, 公司也不是土豪,给的预算也有限,一般很牛逼的人估计也不愿意过来。在这样的情况下,如何找到合适的队友呢?不错:找潜力股,然后在团队里面培养起来(后面再考虑培养后如何留住的问题)。
这个时候,去网上找下或者自己分析下一个优秀的测试人员应该具备的一些素质和硬技能,于是小A根据自己的搜集和理解罗列了如下几点,作为寻找队友的几个条件:
1、熟悉一门语言,有编码经验,最好是科班出身,这些对于后面的自动化和持续集成是很有用的;
2、逻辑思维能力和发散思维能力比较好,这个是一个优秀测试人员很重要的素质;
3、主动性比较好,有一定的上进心(团队之初,千万别招到混日子的,这样对于团队肯定是毁灭性的打击);
当然,招聘要求是不能够这样写的,而是应该写的更加简单点,这样能够收到大量简历的机会(因为已经证明自己牛逼的人一般也不会去投简历),然后就要开始不断的根据该要求去筛选简历,面试的工作了....
Ok,经过一段时间的努力和谈判后(这段时间小A的沟通能力应该得到了空前的提高),我们总算是组建了一个最初的团队,尽管这个团队当前只有5-6个人(老大说了,后面随着业务扩大后团队也会继续扩大的)。而且,这5-6个人也不是都满足上面的几个条件(招到合适的队友实在是太难了,只能后面慢慢看)。
团队目标:接下来要做的就是如何将团队按照期望的那样运作起来呢?不管做什么事情,都需要有个目标,团队也一样,首先要整明白团队的目标是什么?当然,自己yy还是不行的,这里提供几个方法来确认团队的目标:
1、找相关责任人确认他们的期望,包括:上级、开发人员、测试人员、技术支持人员等等,因为每个人关注的点是不一样的,比如:测试人员期望看到自己的进步。
2、思考如何去更好的支撑产品未来的发展。
3、从公司的愿景里面(如果有的话)去想测试团队如何去做好自己的一环,比如:一个游戏团队如果有1亿用户的话,我们的性能测试可能就是一个挑战?
4、在网上以及行业等方面看看其他优秀的测试团队是怎样的
通过上面的几个方法,小A确认了团队的目标,如下(大家是不是发现,测试团队除了保证质量和节省成本外其实还是有很多其他目标的):
- 发布有价值的、高质量的、有竞争力的产品(公司的期望);
- 更快的去反馈产品的质量,并且及时发现产品的问题(开发的期望)
- 持续的技术改进来更好的支撑产品未来的发展(上级的期望);
- 人员的技术能够得到持续的提高并且有清晰的发展方向(测试人员的期望);
- 整个测试的工作更加有技术含量(测试人员的期望);
- 团队气氛比较好,大家能够在轻松的环境下面工作(测试人员的期望);
- 团队稳定,骨干员工流失率比较低(上级的期望);
形成团队目标后,后面就是将目标的分解,并且形成具体可以实施的计划来支撑对应的目标;比如:针对如何实现发布有价值的,高质量的,有竞争力的产品这个目标,我们可以做哪些事情呢?这块就需要测试经理具备对应的目标分解能力了,下面可以提供几个方面供参考:
1、提高大家的业务理解能力,这个是保证一个产品质量的基础吧;
2、提高大家的需求理解能力,保证我们的产品是客户想要的;
3、功能的自动化和持续集成,保证产品的最后的基本功能通过自动化保证;
4、基于代码和业务逻辑的测试,更好的保证产品的代码质量;
然后针对每个分解的目标制定具体的实施计划,比如:提高大家的业务理解能力;我们要达到的目标是什么(尽量能够定的可以量化点,满足smart法则,否则不好去评估)。我们假设小A通过分析确定按照下面的计划来达成目标(这里体现了测试经理的计划管理能力):
1、每个人划分自己的责任模块,小A自己负责整个产品的模块划分,将每个模块能够串起来(这里体现了测试经理的业务分析能力)。
2、每个人都需要跟对应的开发一起确认对应的模块业务逻辑,并且自己将负责模块的业务逻辑产出来。
3、轮流安排讲解自己负责的模块,并且安排提问,保证每个人都能够对其他模块的业务都比较熟悉。
计划确定后,安排对应的时间,然后自己分析下达成目标可能存在的风险,并且自己去提前想办法解决掉,比如:这个过程中可能碰到的几个风险和对应的解决方法为(这里体现了测试经理的风险分析和控制能力):
1、模块太多,而每个人的精力和时间有限,可能没有办法去搞定所有模块;对应的解决办法为:自己根据模块的重要程度来进行分配,其他的 让对应的开发进行培训。
2、开发不配合,导致沟通不顺畅,无法达到预期的效果;对应的解决办法为:自己跟他们的老大进行沟通,寻求配合。
3、部分测试人员能力不足,导致自己负责的模块业务理解能力一般,无法达到预期;解决的办法为:提前识别,过程跟踪,让优秀的人承担更多的责任。
4、模块太过复杂,分析难度很大,很多开发也不清楚;解决办法为:提前识别,发现搞不定的马上终止或者换模块,节省大家的时间,避免打击大家的积极性。
当然,我们可能无法去预判所有的风险,后面发现问题及时解决就可以了。
团队流程和制度:所谓无规矩不成方圆,我们为了让团队更好的去朝目标去前进,需要通过一系列的制度来确保这点,避免每个人的目标不一致导致团队目标无法完成,那么我们应该去如何制定团队的整个流程和制度呢?这里提供几个建议作为参考:
1、制度一定是为目标而服务的,否则就不需要这个制度(当然,也可能目标需要完善);
2、制度不宜多,需要给大家一定的自由空间;
3、每个制度都需要有对应的奖惩机制,否则跟没有一个样;
4、确定制度后要一视同仁,自己也要以身作则,否则没有人会遵守;
5、制度要跟团队成员一起讨论出来,这样才会更有公信力,也更容易形成部门文化;
6、不要跟公司的制度冲突;
我们假设小A通过上面的分析方法形成了下面的团队制度(其他的根据需要进行完善):
1、部门考核流程和制度
2、导师制度
3、请假和加班制度
4、技术改进制度
5、分享和交流制度
6、部门活动制度
7、测试人员的工作指导和制度
完成后,跟大家一起讨论和完善,并且最终达成一致,以后每次的完善都跟大家一起确认下(不建议经常去更新制度,这样会让制度没有公信力,也不要出现头痛医头脚痛医脚的情况)
人员分工:团队目标和具体计划确认后,全部靠自己一个人肯定是搞不定的,所以就需要将合适的工作安排给合适的人员。这样既能培养大家的能力,也能够让自己更加专注于整个团队的方向和一些关键事件(这里需要测试经理具备知人善用的能力,能够发现团队每个人的优点,并且合理的去利用)。这里网上也有一些方法了,大家自行脑补。那么一个团队都需要哪些人呢?笔者根据自己的经验提供下参考:
1、项目经理(后面培养成团队管理人员)
2、技术牛人(后面负责团队的技术改进和规划)
3、产品专家(能够对产品的业务和需求等非常熟悉)
4、测试人员(完成部门的日常测试任务,并且不断提高自己的测试技能)
人员培养: 招到合适的人或者将合适的人安排到合适的位置后,就需要我们对这些人员进行培养,来提升他们的胜任度了;这里要求测试经理本身也能够具备对应的技能;比如:如果一个测试经理自己不会自动化,甚至没有接触过自动化相关,那么除非另外找一个自动化方面的专家,否则该团队的自动化肯定会走很多的弯路;那么具体如何去培养对应的人员呢?那自动化人员的培养来举例子吧(其他方面也是采取类似的方法)!
1、选择2-3个编码能力比较好的人员;
2、根据自己以前的经验选择一个适合自己产品的自动化框架。
3、让大家挑选一些最基本功能(需要经常测试的)的用例,尝试进行自动化(因为上面不一定给予时间,这块时间建议利用额外时间,或者自己去挤出时间来做,否则失败了不好向上面交代);
4、完成后快速的运行起来,让大家看到效果(不成功的话也能快速发现),这样能够提高大家的信心;
5、认定该方案后,持续的投入额外时间和展示效果,直到让开发和上面觉得自动化已经带来价值了,这个时候上面自然就会主动要求投入人员进去了(这个时候自动化的黄金时代就来了),同时上面对自己的工作应该也会比较认可吧;
6、从自动化人员里面找到一个能力比较好的,重点进行培养,让其开始负责整个自动化项目;等到其能够完全胜任了,自己也能够解放出来做其他规划工作了;
OK,等到整个团队的人员能力都培养起来能够胜任对应工作后,自己就只需要负责整个团队未来发展的方向,并且不断的去激励大家,提高整个团队的战斗力就可以了。