随着测试在软件开发周期中越来越受到重视,国内测试的缺口一直比较大。一方面测试开发表明了对工程师有更高的要求,需要在具有测试能力的基础上兼备开发能力;另一方面自动化测试成为趋势,利用开发的技巧解决测试中的问题以提高测试效率,降低QA(quality assurance质量保证)与RD(Research and Development研发工程师)的人力比。
虽然测试是APP团队中不可或缺的重要环节,但目前国内的环境却显得有些暗淡,小型团队往往并没有测试工程师的职位,在APP上线推广之前,只是在团队内部的人员现有的手机型号上跑一遍APP就算完成了测试环节。并不是开发团队不重视测试环节,而是成本压力与APP应用市场环境造成的。与此同时,国内也并没有一个能够提供测试人员交流学习的平台。如今技术不再是移动互联网的难题,应用APP之间搏杀的一个重要环节正是APP的自身质量,而测试工程师们正在这样一片战场上战斗,可是如何成为一名合格甚至优秀的APP质量把控人员呢?
1、技术含量
如果你问及一个测试工程师当初为什么选择测试开发这个职位时,经常听到以下的回答:
“我觉得自己开发能力比较弱,但我比较细心,觉得测试职位比较适合。”
“我在实验室和实习公司呆过,做过功能测试和性能测试,我比较喜欢测试.”
“开发只能了解到项目的局部,但测试需要了解更多,我期望有更好的大局观”
无论人们内心真实的想法是什么,但潜意识里面测试的技术含量没有开发高。客观地说,在软件编码方面测试开发的技术含量确实不如纯正的开发职位,更不用说测试职位了。但是,这个职位本身所要求的技术水平应该是需要超过单纯的开发职位的,真正高水平的QA至少需要多年的开发经验的,否则他无法从软件产品设计、架构和实现方面提出实质性的意见和风险评估,充其量只是点出交付到手软件中的几个bug。所以基于现阶段国内行情,个人建议如果希望在测试的职业生涯上有所发展的人,先参与几年的研发工作,毕竟那才是软件工程中的主体,然后在开发过程中培养测试意识,这也是程序员的职业素养。Google许多工程师都有强烈的质量意识,许多代码自己不经过自己的单元测试和功能测试是没有人review的。对于投测试或者测试开发职位的目的是为了逃避开发,那么职业道路要发展顺利是很难的。
2、基本素质
测试开发工程在公司一般有两种,一种是单纯为测试团队开发测试工具或者系统(由于这部分和单纯开发职位本质上区别不大,讨论基于另一种);另一种就是在测试过程中发挥主观能动,利用自动化把重复劳动降至最低,比如开发适用于特定场景的测试工具(当然这种工具具有普遍性也能推广到整个组或者公司)、测试脚本和测试用例。
测试开发工程师应该具备两方面的知识:测试知识和开发知识。之所以把测试排在前面,因为这里的开发建立在测试实践基础之上。其中测试知识又分为两部分:一是理论知识,软件行业发展至今也就几十年,测试方面的积淀就更少了,所以要掌握这部分对于一般人来说不是难事;另外一方面是经验知识,主要在项目测试过程中积累,很多系统的测试点、风险点都需要有丰富的经验来评估,这也是资深的测试工程师价值所在。开发知识当然和开发工程师差不多了,不再多说。在软素质方面,测试开发工程师应该具有更好的组织沟通协作能力。现在许多公司都在推行全流程保证,QA为了发挥更大的影响力以及保证项目的质量,需要从需求到设计,测试到上线全方面跟踪参与,这就涉及到了许多跨部门跨小组的沟通,即便在小组内沟通也极其频繁,工程师需要很好的表达能力。同时,由于测试在软件生命周期中处于靠后的位置,所以在将许多工作推行到上游的环节中存在较多阻力,这也要求工程师有较好的统筹和协作能力,最终达到目的。
3、测试的本质
2V(Validation和Verification)是QA的基本职责,即保证两点:Validation,软件按照既定的需求开发,没有偏离产品方向;Verification,软件在满足需求的基础上保证其正确性,从功能、性能、安全等各个方面验证。传统意义上,第二点是大部分QA的意识,即找bug,认为一个软件找到的bug越多自己的价值越大,实际上QA的最高境界是软件在测试的时候找不到bug,因为在软件的启动阶段你就开始了质量保证工作,从需求、设计、编码这些前期阶段就杜绝了bug产生的可能。当然,以上说的有些理想,但本质是什么?软件背后是人,是PM(测试项目经理)制定的需求,是RD进行开发的, 那测试背后实际上测的是人而不是软件。人总是可能存在思维漏洞的,人总是可能犯错误的,所以永远会有bug,但有些人心细,有些人负责,自己开发完后会自己进行单测、功能测试,以致后续能发现他的bug已经很少了。明白了这一层就不要单纯从技术角度来思考测试。
4、走得更远
不可否认,现在许多测试理论,无论白盒测试还是黑盒测试,无论单元测试、集成测试还是系统测试,看似属于测试人员研究的专利,实际上大部分的方法论都是开发人员提出来的。再一次证明,不参与软件主体的研发工作是不可能深入理解测试的,所以开发人员需要具备的开发能力和技巧测试人员也是需要具备的。当然由于项目的安排和时间等各方面的原因,测试人员能难有较多的开发机会,但这不妨碍你不断地学习。另外,测试可以涵盖的方面很多,但人的精力毕竟有限,测试开发工程师也必须拥有自己的核心竞争力,选定一个方向是个不错的做法,致力成为某方面的专家,比如单元测试(不要认为是开发人员做的,很多开发人员没有单测意识和技巧)、性能测试、安全测试。最后是测试开发工程师需要培养自己的全局掌控能力,这个是在职业过程中有意培养的,公司现阶段的任务是什么?侧重点是什么?在大公司需要顺势而为,QA的本职工作是保证质量,需要借助与流程、工具和其他外部资源,所以在工作的时候尽量与大方向契合。
第三方测试服务平台:既是挑战,更是机遇
目前国内也有一些第三方的测试服务平台,其中最著名的比如Testin云测试最近推出的Testin众测服务,汇聚了10万名国内移动互联网顶尖的测试、QA专家,从服务对象来看,属于较大规模的专注移动App的专业众测平台。也许在测试人员看来,这种垂直型专业平台会吸引一些APP团队减少测试人员的使用,但反过来看,如果一个测试人员加入到这种类似的众测平台里,既能在不影响本职工作的同时,积累更多的测试经验,获得更多的劳动回报,又能找到一个与众多测试人员分享交流的机会。所以说第三方测试服务平台对于测试人员来说是挑战,更是机遇。
最后想说的是,无论在大公司还是小公司,测试人员想要发展,压力肯定不会小,心态就很重要了,以创业者而不是打工者的心态来工作看待很多问题就截然不同了。燕雀安知鸿鹄之志?