一,测试工程师的历史
我算是接触互联网测试工作比较早的一批人了,在2010年研二实习的时候就开始在一家加拿大的企业做测试开发工程师了。2012年毕业的时候,貌似互联网行业开始有专职的测试人员,而且不少中小型公司还没有专职的测试人员,程序的质量由开发人员保证,产品进行简单的验收。就算是公司有专职的测试人员,地位还是比较低的,貌似各种人都能来指挥测试人员的。产品来压测试时间,开发也来压测试时间,总感觉到测试人员什么都不会,而且没有什么好测试的。可是一旦出了问题,都会怪测试工程师没有测试到。随着用户对产品的质量要求越来越高,公司也就注重测试工作了,各个公司开始组建自己的测试团队,对测试人员要求也开始变得越来越高。测试人员在不少公司的地位有所提高,能把控项目进度,提出不同的意见。慢慢的就和国外的企业接轨了,我实习的时候加拿大的公司的测试地位非常高,测试说测试通不过,谁也不能上线了。
二,测试工程师的来源
由于测试一般是根据产品的需求,从用户角度来验证开发做出来的程序或是产品是否符合需求,要求门槛比较低。也由于要借鉴不同行业的人来验证产品,所以功能测试人员来自己各行各业,也没有高学历的要求。一般应届毕业生是新加入测试行业的主力军,他们年轻有活力,还是比较合适的。后来大家看到互联网的测试工资待遇还是不错的,而且门槛比较低,所以很多考虑着转行来做测试;或是其他工种,如泥瓦工,厨师,销售等等都通过上几个月的培训班,来加入到测试工程师这个行业。此处不是说其他的工种不能做测试工程师,只是在说明各个行业目前都有转测试的趋势,竞争压力还是挺大的。
三,测试工程师的分类
网上或是书上我们会看到很多类似于黑盒测试,白盒测试,灰盒测试等等吧,实际上这些儿只是书面上的分类,真正的公司中完全不是这么回事?在互联网公司中,测试工程师的分类如下:
(1)功能测试工程师
(2)性能测试工程师
(3)安全测试工程师
(4)自动化测试工程师
(5)测试开发工程师
(6)高级测试开发工程师
(7)测试专家
当然,如果按层次来分的话,应该是如下:
第一层:(1)功能测试,按需求检测开发的产品是否符合需求。
第二层:(2)(3)(4),这层的测试人员需要熟悉使用一些儿工具,开源的框架,借助于简单的脚本来完成对被测对象做性能,安全和回归测试工作。
第三层:(5)(6),这层测试工程师需要通过编码,或是对开源的框架,工具进行二次开发,开发测试工具,测试平台等来解决前两层测试人员工作中遇到的问题,提高工作效率。
第四层:(7)测试专家,就是能够发现测试领域问题并解决某个领域的问题的人,同时还需要具有这个领域的系统化的知识体系。这个比较难达到这个级别,需要的掌握的东西还是比较多的。
行情分析:
(一)目前第一层测试人员最多,从12年加入到测试行业,到现在为止已经具有相当一部分人了。而且先前加入的人员,已经工作了三四年了,已经达到了瓶颈,业务比较熟悉,技术上没有提升。同时,不断有应届生或是年轻的小伙伴加入,对老人冲击很大,而想换工作的时候,又没有优势,非常麻烦。
(二)第二层的测试人员,貌似很高大上,借助于一些儿常用的工具,开源的框架,来录制脚本,编写自动化测试用例,然后接于到jenkins中实现持续化集成。好牛的感觉哟,其实不是这么回事,不管我们是使用工具还是开源框架,我们都是在使用工具的。一旦工具出了问题,或是消失了,收费了等不可控制的原因吧,我们就失去了优势。而且入手还算比较快的,通常牛人带你,或是参加一个专项的培训班,一两周就能入手。此类人正在慢慢地变多,而且也渐渐地失去了优势。
(三)第三层人现在的需求量比较大,但是相应的人员比较少。因为这类人需要有一定的编码能力,而普通的测试人员具有编码能力的不太多,计算机专业的人员有了编码能力就去做开发了。结果留下了这个真空地带,这个地带的人待遇相当不错,人员少,建议大家往这个方向发展。
(四)第四层人就比较凤毛麟角了,也是我们所有的测试人员努力的方面,我们就不过多介绍了。
四,目前的测试技术介绍
目前自动化测试比较热,我们就先介绍自动化测试,然后再去简单地介绍一下其他的测试。
自动化测试:
(1)WEB UI自动化测试:主流的开源框架是Webdriver2.0,先前还是selenium 1.0,Htmlunit,经过社会上的实践,现在就只剩下Webdriver2.0。而且这个开源的框架支持主流的语言,如python,java,php等,借助于Selenium IDE,Firebug等工具,完成对Web UI的自动化测试。
(2)API或是服务的自动化测试:接口自动化测试主流技术是python的urllib2和requests模块,phpunit也可以用来做接口自动化测试,java在支持接口自动化测试方法有点儿弱,需要做一下二次封装。由于服务出于安全考虑,各大公司都会自己开发相应的服务框架,所以服务的自动化测试则是公司自己开发的框架比较多。如58赶集的SCF服务框架下开发的服务,则需要ATF框架来进行测试,所以就不能列举出服务的自动化测试技术了。
(3)移动自动化测试:移动自动化测试指的是APP UI自动化测试,后端已经由上面的接口和服务自动化来保证了。而APP UI自动化测试主流的框架是Robotium和Appium,因为Robotium只支持java语言,并且只能对Android系统进行测试,所以没有Appium应用的广。Appium支持IOS和Android系统,支持java和python语言,是主流的框架。
性能测试:
性能测试我不太了解,不过目前主流的工具是LoadRunner和Jmeter。利用这些儿工具来根据需求,录制脚本,进行压力测试。还有需要对Jmeter进行二次开发,以完成对自己业务的完美支持。
以后对移动端的性能要求也比较高了,新出的App需要支持各种型号的机器。高端的机器需要支持,低端的机器也同样需要支持。以后移动端的性能,应该算是性能测试的新方向。
测试开发:
测试开发是介于测试和开发之间的工种,测试开发是针对测试的开发,也就是说测试人员是测试开发的产品,他们有任何工作中的需求。测试开发人员需要积极响应,通过开发相应的工具,平台来解决他们遇到的问题。
当然测试开发要求也比较高,上述的开源框架都需要深入了解,java,python,shell,ruby等语言的使用已经不是问题,CSS,jS,HTML等前端的东西也要熟练使用,接口,服务的开发也是常事。在此阶段各种技术应该就不是问题了,你需要的就是解决问题的能力。
好了,就闲扯到这些儿吧,这是我在工作中得到的一些儿经验吧!现在功能测试已经饱和,自动化测试人员日渐增多,测试开发需求量变大。一个好的测试人员,要有明确的发展方向,有计划地发展自己,不能跟着需要求走,走高消耗的路线!