我是从开发半道转去做测试的,当时刚从事测试这个行业的时候也是意气奋发,对未来充满无限憧憬,但是在这个行业摸爬滚打了十多年后,渐渐发现这个行业不像当初描绘的那么美好,特别是网上看了一篇文章,文中对软件测试前景和发展方向的分析,真是给我们泼了一盆冷水,但比起很多粉饰测试行业多么有前景,鼓吹自动化测试、性能测试多么有前途的文章,我更喜欢这些引人反思的内容,我现在把这篇文章的关键部分转出来(做了一些改动,加些自己的想法)。
目前入门的门槛很低,不少人可能都不是计算机专业毕业的,对计算机一窍不通,或者不是大学毕业的,进入测试岗位,通过中介机构的几个月的培训,良莠不齐的基础,进入某些外包公司,每天去点点,这就是功能测试的现状,入门低。
在具体在工作中,还是点(即使有需求分析和测试设计,可能也被抛到脑后了),每个迭代跟进需求,去发现开发人员没有实现的功能,提出问题。
且看他们的未来趋势?
在国外,科技公司的构成很简单,技术骨干,产品经理,其他开发,测试全部外包,为什么?
因为成本太高,如招聘1人每月工资1万,一年加上保险啥的支出最少15万,如果招聘2人,就得30万支出,那公司想倒不如出20万外包给其他公司,这就是功能测试的未来,将来会类似国外,有大批的外包公司,招聘大量的功能测试人员,然后一批测试人员每天在一起点,就好比服装加工厂,他们只做设计加工,而不会自己去织布,布匹去买就好了,以前大家都自己种田,但是后面发现这种成本太高,现在米这么便宜,谁还会去种田呢,直接买啊。(把功能测试人员等同于普通工人和农民,心都要凉了,但也事实就是这样)
工作越来越专业化,分工越来越明确,公司的职能更清晰,开发岗位,测试岗位,更多会被外包,有人说不会,其实简单看来,你是开发会java,会php,你是测试会做功能测试,其实你就是有一门手艺啊,你是木匠,你会造房子,谁家天天需要你,都是需要用时才找你,工期结束你就走人,这就是行业的趋势。
总之,功能测试可能会被外包公司垄断,公司的功能测试业务会更多的有外包人员介入,模式会是1个公司方管理+n个外包测试,或全部是项目打包给外包测试。
补充说明:关于功能测试会被外包垄断,也不是绝对的,这方面一定是两级分化的,对于集中度和测试规模高的项目,偏向于外包出去,因为节约成本,适合打团战、快速化操作。而对于很多中小型公司的项目,功能测试还将会以作坊式的存在(当然也可能是外包驻场形式),并且项目周期长,测试团队相对固定,但项目一结束,也难免得解散或在别的项目中重新组队;如果是中小型公司的产品团队,测试团队也还会相对固化,因为这时候的测试工程师大都是一专多能,测试任务少的时候是可以补位到质量管理或其他岗位任务中去(当然专业化就会差一些)。
功能测试除了外包化的倾向,其实还有外延化的倾向,即测试的外围工作者(不属于测试行业)也开始加入,而且这种角色会更多的出现,主要是很多产品众测的需求,他们会替代原来纯手工测试者,由真实的用户去使用和评测产品对企业有更大的好处。而且不会产生人力成本,这些人的测试行为以及触发的问题都会被很多的云测服务和监控sdk进行收集分析。另外大量的基础工作逐渐被测试服务或一些测试产品代替。比如最典型的原来的浏览器兼容性测试,需要耗费很多的人力去做,现在已经有了完整的云测服务,可以很容易的缩减成本。而且还配有更好的云监控分析等产品。这将成为测试行业的重要力量,所以测试内容和职责发生了转移,那么测试的地位也会相应的随之变化。
性能测试听起来高大上,但是他有致命的弱点,就是性能测试的活儿太少,一家公司不可能天天搞性能测试,性能测试最多是在有大型活动或版本迭代时进行一次,所以招聘一个性能测试人员的成本非常大,非常非常大,因为一年也干不了几次活儿,所以大家可以看到,即便在招聘网站上,性能测试的岗位已经非常少,非常非常少...
那么未来性能测试是什么方向呢?
运维团队会接手性能测试,性能测试岗位更多的会编入运维团队,基于服务端,接口等架构运维会更有发言权,同时基于服务的优化,运维团队可以更高效的运作,基于时间结果,做出快速响应。
更多的云服务,云监控出现,如听云,App端,直接植入SDK,更精细的埋点监控,比任何性能测试Loadrunner、Jmeter等工具更具说服力,直接后端看报表实时监测,实时模拟加压,不需要啥性能测试。
对于服务端接口有更强大的全链路性能监测,如博睿监控,可以实时在全国埋点,真实用户,真实网络,全链路,全节点,实时加压监控,实时投射在大屏幕,比单点的性能测试工具更有力度,更详细。
总之,未来性能测试岗位越来越少,性能测试更多在运维团队开展,云监控,Nginx等监控平台大量使用,更强大的监控体系,更便捷的压力测试操作。
性能测试工作的未来,结合目前的趋势有几个方面:
性能将更关注架构设计,因为好的性能主要靠设计出来的不是调优出来的,所以架构师得懂性能,性能工程师得懂架构;
运维监控将受更多公司重视,性能测试人员需具备更多监控平台的应用和性能数据的分析能力;
全链路压测与监控、终端用户体验监控将成为互联网公司的高端配置;
以其说我们需要一个性能测试工程师,不如说我们需要一个基础架构工程师(并具备性能分析和性能调优能力)。
自动化是有一个老生常谈的话题,不懂的同学希望自己能学会自动化,觉得很牛x,已经学会自动化的同学,会感觉自动化也只是那样,说自动化很牛逼也是自欺欺人罢了,现在自动化行业就是,护士想做医生的事,以为自己沾点边,就是医生,其实你的title还是护士,你那么牛,那就去做医生。
自动化测试经历了几代的发展,最开始qtp对基于c/s架构的项目,可以录制一些脚本,可是作用也不大。后来有了b/s架构,出现了各种driver,如seleium,webdriver等,其实也就那样,在实战中不堪一击。再进入到无线互联时代,monkey猴子乱点,那是扯淡,米有什么操作性可言,robotium官网好久没更新了,似乎已倒闭,appium噱头,实战中也是低效........这些说的是UI层的自动化,那单元自动化又如何能?可以说没有多少公司做到单元测试,因为懂单测不就是懂开发了,那基本就是开发人员干的事,可是你发现能有几个开发人员去写单元测试,本来开发人员就讨厌做测试(只要跟测试沾点边的事都会认为是测试人员的事),而中小公司的项目紧任务重人还少,怎么去投入单元测试。至于接口自动化的问题,下面会提到,在这不说了。
业内包括世界范围,都没有很强有力的自动化框架去支撑实时的迭代项目,总是后知后觉,缺乏实战之功效,归根一句:自动化没啥意思,就是噱头,各领导的政绩工程。
自动化投入产出比太低,在实际工作中没法很好的应用;
移动互联网行业迭代速度快,自动化无法跟上迭代速度;
运维团队服务端监控比测试团队的自动化更便捷,更高效。
至此一系列的驱动工具,自动化框架等其他的,请问在实战中有啥战绩,有啥效率?
技术是为业务服务,提升业务效率,业务也需要技术,自动化测试,说实话没有哪家公司做的很牛逼,即便是google,facebook,大部分硅谷的公司,都没有很强调去搞自动化。
至于自动化的未来,结合目前的趋势有几种可能:
小公司快速迭代,不会去组建自动化团队,甚至弱化自动化概念;
自动化是需要发展的,就像从原始社会进入到工业化社会,需要自动化提升人力,但这由谁去搞呢,绝对不会是测试工程师,这将有开发工程师去完成,也就是说将来会有开发人员去开发一款巨牛逼并适合自己公司或项目的自动化软件,想做自动化简单录制回放就可以完成而不是招一批所谓的自动化测试人员,说是要改变自动化的现状,自动化人员说真的你这么牛,你咋不去做开发呢,说白了,以后不需要人人造车,造车有开发去完成,测试学会怎么操作就行,啥自动化都会,你说把司机当好就行,天天想我不仅要开好车,还要自己造出法拉利,自动化请交给牛逼的开发去完成,你觉得自己很牛,请去做开发;
自动化内容会更加集约化,各种云平台产生,专业的公司提供定制化服务,更加高速便捷。
接口测试目前来说意义也不大(虽然接口自动化号称是性价比最高的自动化),首先架构团队会有各种接口监控工具,每天24h自动化监控,实时报警,对接口的访问测试,流量等信息实时回调,那么对于新增的接口呢,新增的接口其实不会很多,每次迭代可能就新增3、5个接口,测试接口联通很简单,链接往浏览器一丢就实现,其他的借助一些插件啥的,也是秒秒就能实现,所以专门招聘一个人来做接口测试也不现实,现在招聘网站上,搜索接口测试也更是非常非常的少。
未来接口这方面的内容,大多会在架构团队,借助监控体系快速的搞定,同时接口监控也会同时进行,实时投射大屏,接口测试工程师的一些工具就显得很鸡勒。
当然,对于以上说的传统意义的接口测试可能是鸡肋了(大部分可交由接口监控工具来完成),因为这样的接口测试都是基于成型的应用模块或外接系统或HTTP访问而进行,而实际上还有很多接口测试是需要在编码完成前就要开展了,这部分的接口测试先于功能测试,而且要比功能测试发现更为隐蔽的问题,这也是接口测试的真正意义所在,所以不懂开发,要想做好这部分的工作也是有困难的。
未来接口测试的方向:
测试虚拟化:提供接口测试虚拟机,构建测试虚拟化层。将被测系统运行在虚拟机中,与外部系统剥离,进行内部代码检测、内存检测、数据校验与逻辑检测;
测试智能化:智能分析系统代码,智能生成测试代码,智能mock外部系统,智能执行测试代码,智能分析测试结果,智能定位缺陷,智能修复缺陷;
监控持续化:新增接口测试通过后,将从功能测试到实施运维阶段都保持持续化监控,不只监控接口的连通性,还监控接口的性能,并提供趋势图分析和异常预警,一但发现接口问题能够及时处置。
大数据时代,安全测试似乎很火很受关注,但实际中请问有几家公司,会招聘一个专职的安全测试人员。基于服务端的安全,会有各种安全软件,安全监控搞定,基于网站的,app的,请问公司真的会招一个人在那里搞漏洞注入吗?测试漏洞吗?no,更好的选择是交给一家安全公司,让他们去扫描,提供更专业的服务至此安全测试的未来很明晰。而对于日常的代码级安全扫描,通过Sonar-Scanner或一些安全扫描工具就能实现,能满足基本需求就够了,不需要专人投入(而对于大型互联网公司有专门的安全团队或安全协会组织,人家的业务面向社会,相当于安全公司,这已跳出我们说的一般公司范围)。
未来会有大量安全公司成立,专门负责安全方面的服务,专业便捷;
安全测试对个人知识和技能要求越来越高,能专职从事这方面工作的基本属于专家级了;
互联网公司也会更多的选择第三方产品,做个性化定制服务。
最后说说测试经理这个岗位,这个岗位也会越来越少,招聘的需求也会越来越少,现在的公司都在推行扁平化管理,以项目为单位,以业务划分事业部,团队小而精,人人都是干事的,要求所有人都参与实际工作,不会说找一个测试经理下面管理一批人,现在这个模式行不通。说白了,现在不少公司开始把测试团队拆分成一个个测试组,服务于一个个项目(领头人是项目经理或产品经理),面对这样灵活机动的测试组织,现有测试经理的职能会被进一步的弱化。
所以管理扁平化是测试管理的灾难,但是小公司增多对这个岗位也有正向作用。尤其是很多传统公司也在IT化,成立的IT部门会为整个IT行业带来大量的岗位(已经看到不少非IT公司也成立起了自己的IT部门)。所以测试管理未来仍然是可以保住饭碗的岗位,在技术、业务、管理之间需要做到非常微妙的平衡。这种角色独立于产品研发周期,但是却会影响整个测试团队的发展。一个不及格的管理者会毁掉一个测试团队以及拖慢产品研发节奏。目前行业中的大部分测试管理者是从业务+管理的方式中发展起来的,未来行业更期望的是从技术+业务方向起来的测试管理。所以目前的测试管理者可能需要谨慎的保住饭碗,而具备一些测试架构师的思维会带来更多的晋升机会,懂点持续集成持续交付,以及devops推广,新技术研究,以及更深入的测试实践研究也是必要的。
说到这里,也给测试行业的伙伴一些建议:
如果你对测试感兴趣,首先要学好学精功能测试,别想学东学西,最后啥也没学会,把自己搞得很累;
如果你对性能测试或安全测试感兴趣,那你要做好苦行僧式的修炼准备,不懂开发不懂架构,基本上注定你走不远,想当成铁饭碗更是不可能;
如果你对自动化测试有些研究,请更深入一些,把java或其它语言学透,去做开发吧,做一款牛逼的app或网站;
如果你对开发有兴趣,想入门简单,请转行前端;
如果你觉得测试没啥意思,请趁早选择转行,运营、产品等一大堆岗位等着你;
如果你还想深耕测试这一行,那就多看看未来的趋势,开发、测试、运维的流程边界开始模糊,跨界学习也许是你面对未来变化的有效方法(前提是得系统化,东学一套西学一套只能是吃力不讨好)。
作者:smooth-z
原文链接:https://blog.csdn.net/smooth00/article/details/87792965