对于单元测试和接口测试的概念,我想即便是刚刚毕业参加工作的测试工程师都能在面试的时候说得出个一二三,市面上也有大量的书籍介绍单元测试接口测试,有些甚至还介绍了具体工具的使用方法。但是真正在项目中,对于习惯了按部就班地进行手工黑盒测试的测试部门而言,单元测试接口测试这种牵涉到代码的“高技术含量”的测试方式往往让人有望而却步的感觉。虽然主观上非常希望能接触和开展这类测试工作,但是团队整体代码技能,与开发人员沟通配合的渠道经验,执行结果的考量等,都成为阻碍测试经理在项目中普及单元测试和接口测试的瓶颈。以下便是结合自己的实际经验,谈谈如何在项目中开展单元测试,接口测试工作。
做为项目测试经理,开展单元测试和接口测试工作时,需要依次做到三点:1、分析单元测试和接口测试在实际项目中的收益和可行性。2、与项目经理,开发经理沟通,使其理解单元测试接口测试的价值,并获取相应的资源和支持。3、结合测试团队实际能力,制定切实可行的测试策略。
一、分析单元测试和接口测试在实际项目中的作用,可行性以及收益。
在项目设计评审阶段,测试经理就应当主动思考项目中能否进行单元测试和接口测试,思考的角度应当是“如何通过单元/接口测试提升测试质量,扩大测试覆盖面,节省测试资源”,因为只有从这个角度思考才能真正做到有利于项目本身,同时也更能得到和项目经理开发经理的认可。切忌不要“为了单元测试而单元测试,为了扩大部门和个人影响力而单元测试”,这样做的结果不仅不能提高项目质量,同时浪费大量测试资源(当然,这种情况非常普遍,不是么?)。
在分析收益时同时也需要考虑实际的可行性和资源的消耗。测试经理首先应当考虑一个往往很容易被忽视的因素——测试工程师本人的主观意愿。我们总是过多关注一个人现阶段的“能力”,用“能力”的高低决定谁能做什么事情,但事实上在一般互联网IT企业中,不管他们面试的门槛有多高,真正在项目中做的事情,也都是一个经历过一般高等教育的人能学得会,做得来的事情,哪怕就是看似难度很高的单元测试和接口测试,对于没有代码经验的同学,经过一定的培训,分工和帮助,也能参与到其中去从而逐渐积累经验。真正决定一个测试工程师能不能做好单元测试接口测试的因素是在于自己的主观能动性和学习意愿。
这话题扯远了可能就会扯到测试人员的选拔甚至招聘上,我在面试的时候基本不会去会问“你为什么想来阿里巴巴”,因为大多数人找工作无非是为了混口饭吃,希望自己单位好点待遇高点是人之常情,但是我一定会问“你为什么想来做测试”,如果说“找工作混口饭吃”由不得我们选,那么从这么多混饭吃的行当里选择了测试,那么多少都要对他有点兴趣,有了兴趣很多以前不会的东西自己就能学得会。其实我也见过很多人并不喜欢做测试,也有些人是因为开发部门投不进简历就转投测试部门,这样“人在曹营心在汉”的同学,即便有一定的技术功底,缺乏兴趣和主观能动性,最多也只是能完成每天分配的任务,很难做出超出期望的成果。
二、与项目经理,开发经理沟通,使其理解单元测试接口测试的价值,并获取相应的资源和支持。
明确了目标和可行性之后,测试经理就需要向项目经理,开发经理阐述自己的想法并获得支持。如果说之前的分析更多立足于测试团队自身的角度,那么在获取支持时就要注意站在对方的角度阐述单元测试接口测试的收益。
1、对于项目经理而言,不仅关注项目质量,也关注项目资源消耗,时间安排。测试经理可以从测试资源投入产出比的角度向项目经理阐述单元测试和接口测试的优势:进行单元测试和接口测试可以在项目早期发现关键问题,在底层发现并处理问题可以节省开发和测试大量的时间;进行接口测试可以使测试提前介入,不必在等到UI等功能全部完成的情况下才仓促开始测试,既增加测试的时间,同时不会影响项目发布时间;自动化形式的单元测试接口测试在相同时间内的效率远远超过在测试工程师在UI层手动执行,并且准确率更高。
2、对于开发经理而言,则更多强调在单元测试接口测试层面,开发人员定位问题解决问题的难度大大降低;测试覆盖率大大提高,实际减少后期bug数和故障数。
在得到项目经理和开发经理“官方层面”的认可和支持后,千万不要忘记还要争取获得项目中每个开发工程师的“个人层面”的支持。因为即便有官方的授权,如果开发工程师个人并不理解单元测试和接口测试的意义,主观上不愿意配合,那么真正运作起来执行成本会大大增加。对很多开发工程师而言,普遍存在着轻视测试工程师,认为测试工作没有技术含量的观念,对于这样的偏见,不要试图用书本概念或者规章制度去与之辩驳,而是就从技术角度入手,谈单元测试接口测试的重要性,解铃还须系铃人,用他们熟知的角度入手说服对方,方能以理服人。除此之外,测试经理平时也应当和开发人员保持联系,在关键时刻,规章制度的约束力比不上个人关系的影响力。
三、结合测试团队实际能力,制定切实可行的测试策略。
在获得各个层面的支持后,接下来测试经理就需要针对项目,测试团队的实际情况制定切实可行的方案了。
1、制定合理,可行的目标
在决定单元测试接口测试策略,特别是第一次实践时,目标最好是越小越细,不仅能够实现,也能够系统衡量产出。切忌不要一开始就制定很大的目标,如在没有相关经验和先例的情况下在一个项目里就要做覆盖所有功能点的单元测试,一开始就制定一大箩筐规范,或者一夜之间就要搞出像微软那样的每日自动化集成体系。相反,从最小,最细的东西开始,选定几个具有代表性的方法和接口,用Junit等成熟的框架先写出一个能“跑得通”的Case,然后再在次基础上逐渐添加完善。
2、合理分工,人尽其用
即便是大公司的测试团队中,也不可能每个都是有开发经验的代码高手,在团队里,根据代码能力,工作经验的不同,测试经理要制定好合理的分工。选择代码能力最强的同学负责和开发沟通,搭建环境和框架,写出可供参考和复制的脚本模板,主持必要的培训工作;让熟悉业务的同学在明确方法和接口的作用后设计测试数据;同时让开发同学处理一些环境,代码依赖相关技术问题。
3、随时跟踪,考量产出
作为测试经理认真观察测试团队学习和执行情况,及时发现问题和短板。对于单元测试和接口测试发现的bug,认真分析并记录,随时改进测试方法。例如被测试的方法或接口最好本身是在业务上起到重要功能的方法或接口,这样测试工程师就可以更多发挥自身在业务熟悉度上的优势,相反一些涉及到开发框架和技术细节的方法或接口,一般的测试工程师很难设计出好的用例来发现问题,对于这样投入产出过低的模块可以果断放弃。最后在项目结束后根据这些数据对单元测试接口测试工作进行总结,获取更多的认可和支持。
对于很多高深的技术,我们常常被迷惑,常常被吓唬,常常喜欢用“这不是那么简单”这样的话来敷衍别人和自己。勇敢地去尝试,如果成功了,就会发现这没什么大不了的;如果失败了,嗯,其实也没什么大不了的。
|