草庐IT

2023年软件测试就业现状分析,到底是卷还是润?

起码@有故事 2023-07-13 原文

[内部资源] 想拿年薪30W+的软件测试人员,这份资料必须领取~

Python自动化测试全栈+性能测试全栈,挑战年薪40W+

一、当前软件测试的现状是什么?

网络上大量人唱衰,测试就业不行了

2022年5月后,越来越多人网络发声“互联网行业不行了”。贴吧、知乎、小红书上,也有大量人反馈软件测试就业惨淡……,篇幅有限,仅列举贴吧的声音:

总结网络上的声音大概是这么两种:

吐槽a):相比去年,测试岗位数下跌,几个月都找不到工作

现在很多大厂、中厂人员编制都锁定了,基本不怎么招人。猎头们也都很安静了,主动沟通岗位的很少。

求职网站如Boss直聘,上面的岗位大多只是挂着。很多都是发了消息没人回复,好不容易有人回复,也是需要等待评估。

吐槽b):有限的测试岗位,应聘者多,要求变高

有的企业一天简历收到一万份都不夸张。应聘人多了自然要求也高了起来。学历和技术全部卷起来。


深圳一家不到20人的小公司半天收到的简历量


二、深度思考:为什么软件测试就业会出现上述各现象?

1、外部诱因:经济不好,导致就业市场招聘需求不旺

疫情、美元经济周期加息、俄乌战争,导致各公司盈利普遍低于预期,对未来的展望均呈现悲观。企业出于生存本能,会勒紧裤腰带,通过停招、裁员等手段,提高人效比。让公司的运营成本、人力效率和业务质量达到最佳平衡点。

举例:2019 年初,任正非的公开信《全面提升软件工程能力与实践,打造可信的高质量产品》,宣布华为投入 20 亿美元全面提升软件质量。但今年,华为也无奈收紧了项目,任正非在华为内部发文说“要把寒气传递给每个人”。

 若华为都如此,网上吐槽的软件测试岗位减少,不奇怪。

2、本质原因:软件测试产业近几年一直在技术升级,经济寒冬加速推进

近年来,研发流行敏捷开发,版本高速迭代;运维部署也在逐渐自动化。但软件测试领域,企业却有两大无法忽视的痛点:

痛点1、互联网行业产品对产品质量和速度的诉求;
痛点2、市场上占比最多的功能测试工程师在工作常常出现的瓶颈。

当前各企业正在实施的办法,是持续建设自动化测试体系,将软件测试从手工密集升级到自动化测试体系中,通过提高测试流程的有效性和效率来消除测试瓶颈。

随着“点点点”的手工测试,逐渐被自动化测试技术接管,原来需要10个手工测试完成的工作量,现在自动化测试团队不到5个人就能完成。

业务价值不变,人数下降就意味着薪酬变高。近年来,测试平均薪资一路上扬,背后就是自动化测试正在逐步取代手工测试。

经济寒冬放大了软件测试工程师职业危机,也加速推动了测试行业从劳动密集(点工)逐渐转变为技术密集(自动化)

3、重要原因:测试培训机构太多,学历卷到本科起

这几年,因为软件测试好就业,还好培训,以培养测试人员为主业的培训机构,在全国各地纷纷建立起来。

这些机构,培训两月的时间,就敢让学员去找工作,上1休1三个月时间,就敢称自己主打自动化测试。“保证就业”协议掩盖下的,是课程实质教的是手工测试这类皮毛。

培训机构已累计培训了大量手工测试人员,测试行业又在升级过程中,正在淘汰了大量手工测试人员。二者相加,手工测试数量惊人。

所以才导致HR抱怨:“刚开放3分钟,就有200多份测试相关的简历,可是实际只招1个。这让我们不得不在5分钟以内赶紧关,根本回复不过来。”

市场行情好时,HR会精准招聘,毕竟学历高用工成本也高,开发招本科,测试用专科。

但当前行情下,为减少工作量,HR招聘往往简单粗暴,采用一刀切。比如:没有打三针不行!不是统招本科不要!高水平但大专学历求职者也会无辜躺枪。


三、软件测试从业者该怎么办,卷or润?

1、心态上:看下面这4点,治愈焦虑

a)互联网不倒,软件测试就不会消亡

2016年左右,阿里搞过一次全栈工程师运动,一项很重要的环节就是去掉测试岗,测试工程师必须转岗做开发。而不管是后端还是前端,所有人都必须掌握测试技能。

该运动的结果最后以失败告终。

阿里大厂聚集了大量高水平开发人员都失败了,小厂若想继续想维持开发团队,去掉测试岗那更是痴人说梦。

这充分说明,只要互联网不倒,软件测试就不会消亡。

b)软件测试需求量不仅会稳健,还会放大

疫情前,人们的“吃、穿、住、用、行”方方面面都有对应APP软件。疫情后,复工最快最迅速的企业也都是通过互联网技术实现。

所以马云说:”疫情后,中国经济发生巨大变化。过去,互联网技术只是让某些企业活的好;未来,互联网技术是很多企业能够活下去的关键点。互联网技术必须成为新的基建”。互联网基建化就决定了软件测试行业的缺口会一直扩大。

c)软件测试在所有互联网岗位中,不用担心吃青春饭

软件测试劳动强度相比后端开发低,技术更新速度相比前端开发慢,而且还有业务测试经验护身,可做到“越老越吃香”,不惧35岁危机。

软件测试还有足够的技术纵深和广阔的发展前景,能足够让从业者遨游。职业发展更不用焦虑。

d)不要因为网络说测试没有前途,就轻易转行

如果去百度搜索就会发现,从2017年开始,每一年都在说互联网寒冬。但互联网行业却一直都在持续发展中,给出的工资依旧是所有行业中具有竞争力。

所以不要因为网上的负面声音就轻易放弃了互联网,放弃了软件测试。若软件测试行业都缺前途,生化环材、土木机械、历史考古就能有阳光和面包?

疫情下,互联网行业可算是被影响不大的行业了,至少我们还可以在家办公。

2、技术上:自动化测试是趋势,是机遇,列出学习内容

目前手工测试已被初级测试工程师占满,若技术还停留在该阶段不知进步,只能去卷。现在要找到工作,软件测试工程师必须同时具备一定的开发能力和运维能力,要倒逼自己往自动化测试+测试开发领域发展。


接口自动化测试流程

a)手工测试阶段要学会抓重点:

熟悉系统框架,能够梳理业务流程,掌握测试用例的设计。不要把宝贵的测试时间浪费在纠结细枝末节上。

b)一定要掌握一些主要的测试工具:

接口自动化测试所常用的Jmeter、Postman,UI自动化常用的Robotframework、Airtest,App自动化常用的Appium。这些工具的应用一定要落到实际工作,才能够越用越熟练,为工作产出更多的价值。

c)一定要掌握Python这门编程语言

现在行业内的高薪职位,基本90%以上都是与Python自动化测试技能相关。所以若要尽快突破薪资瓶颈,这个技能太关键了。

d)要努力成为高级测试,提升个人的人效比,打造不可替代

高级测试人员可以通过测试左移,提前与开发人员一起制定测试计划,推动代码评审,代码审计,单元测试,自动化冒烟测试,测试精准化分析以及研发自测,来保证研发阶段的质量。同时,高级测试人员也会参与配置部署,通过测试右移,将自动化测试用例,配置到持续交付链中,全程监控发布后的应用质量。

3、业务方向:建议在某个方向上深挖,积累丰富测试经验

为什么公司的开发人员没法直接做自动化测试?
为什么研发人员编写的自动化测试框架会达不到预期效果?
为什么16年阿里取消测试部门会失败?

那是因为测试人员除了技术要求外,还要关注业务细节、关注产品使用场景,要站在客户的维度设计用例。经过长时间的历练后,测试人员的思维就有那么一点特殊,他设计的用例就是能发现BUG。

所以软件测试岗位是有业务门槛的,这也是测试部门能长期存在的重要原因。所以测试人员若不能满足业务需求,技术再高也是不能实现到提升测试效率这个核心目的,也会被淘汰出局。

所以如果产品或者项目前景比较好,不建议频繁换工作。建议在这个行业深挖,产生质量的积累。举个栗子:通过深度测试一款稀缺的金融软件,从而掌握了它的结构设计与功能。这名测试还仅仅是功能测试人员吗?


金融行业某订单流程业务图


四.打造“数字中国”,测试稳了

2022年10月召开的二十大,已明确指出:坚持把发展经济的着力点放在实体经济上,推进新型工业化,加快建设制造强国、质量强国、航天强国、交通强国、网络强国、数字中国。

数字中国,就是互联网基建化的“宣言书”。

只要互联网不倒,软件测试就不会消亡。只要互联网基建化,软件测试的需求就会稳健。

现在网上很多人吐槽测试工作越来越难找,但仔细分析,这无非是“幸存者偏差”。找不到工作的,自然会在网上说环境不好。找到工作的,却不会在网上说自己很容易找到,更何况说测试就业环境不好的人多了,劝退的人也就更多,未来竞争就更小,何乐而不为呢?

很多测试工程师,虽然正从事测试工作,但对未来没规划、对行业没思考,很容易被网上的声音带悲观,人云亦云,这不利于测试行业的升级,也无助于自己的发展。

扪心自问,无论转行难度和还是发展前景,软件测试对于普通人来说都很友好。软件测试已经是为数不多的,适合普通人转行的职业方向了。

用比尔盖茨的话,作为文章的结尾,看看测试的地位:

有关2023年软件测试就业现状分析,到底是卷还是润?的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  3. ruby - Ruby 的 Hash 在比较键时使用哪种相等性测试? - 2

    我有一个围绕一些对象的包装类,我想将这些对象用作散列中的键。包装对象和解包装对象应映射到相同的键。一个简单的例子是这样的:classAattr_reader:xdefinitialize(inner)@inner=innerenddefx;@inner.x;enddef==(other)@inner.x==other.xendenda=A.new(o)#oisjustanyobjectthatallowso.xb=A.new(o)h={a=>5}ph[a]#5ph[b]#nil,shouldbe5ph[o]#nil,shouldbe5我试过==、===、eq?并散列所有无济于事。

  4. ruby - RSpec - 使用测试替身作为 block 参数 - 2

    我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere

  5. ruby - Sinatra:运行 rspec 测试时记录噪音 - 2

    Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/

  6. ruby-on-rails - 迷你测试错误 : "NameError: uninitialized constant" - 2

    我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test

  7. ruby - 即使失败也继续进行多主机测试 - 2

    我已经构建了一些serverspec代码来在多个主机上运行一组测试。问题是当任何测试失败时,测试会在当前主机停止。即使测试失败,我也希望它继续在所有主机上运行。Rakefile:namespace:specdotask:all=>hosts.map{|h|'spec:'+h.split('.')[0]}hosts.eachdo|host|begindesc"Runserverspecto#{host}"RSpec::Core::RakeTask.new(host)do|t|ENV['TARGET_HOST']=hostt.pattern="spec/cfengine3/*_spec.r

  8. ruby-on-rails - 如何使辅助方法在 Rails 集成测试中可用? - 2

    我在app/helpers/sessions_helper.rb中有一个帮助程序文件,其中包含一个方法my_preference,它返回当前登录用户的首选项。我想在集成测试中访问该方法。例如,这样我就可以在测试中使用getuser_path(my_preference)。在其他帖子中,我读到这可以通过在测试文件中包含requiresessions_helper来实现,但我仍然收到错误NameError:undefinedlocalvariableormethod'my_preference'.我做错了什么?require'test_helper'require'sessions_hel

  9. ruby-on-rails - Cucumber 是否只是 rspec 的包装器以帮助将测试组织成功能? - 2

    只是想确保我理解了事情。据我目前收集到的信息,Cucumber只是一个“包装器”,或者是一种通过将事物分类为功能和步骤来组织测试的好方法,其中实际的单元测试处于步骤阶段。它允许您根据事物的工作方式组织您的测试。对吗? 最佳答案 有点。它是一种组织测试的方式,但不仅如此。它的行为就像最初的Rails集成测试一样,但更易于使用。这里最大的好处是您的session在整个Scenario中保持透明。关于Cucumber的另一件事是您(应该)从使用您的代码的浏览器或客户端的角度进行测试。如果您愿意,您可以使用步骤来构建对象和设置状态,但通常您

  10. ruby-on-rails - 如何调试 cucumber 测试? - 2

    我有:When/^(?:|I)follow"([^"]*)"(?:within"([^"]*)")?$/do|link,selector|with_scope(selector)doclick_link(link)endend我打电话的地方:Background:GivenIamanexistingadminuserWhenIfollow"CLIENTS"我的HTML是这样的:CLIENTS我一直收到这个错误:.F-.F--U-----U(::)failedsteps(::)nolinkwithtitle,idortext'CLIENTS'found(Capybara::Element

随机推荐