测试人员路在何方?| 践行者第25期

2023-11-09 13:12:35
践行者
原创
311
摘要:测试在各类IT角色中到底处于什么位置?当今的测试和以前有什么不同


测试在各类IT角色中到底处于什么位置?当今的测试和以前有什么不同?测试人员如何才能提升自己的影响力?测试人员学点儿啥可以让自己更滋润?


本期践行者邀请到了资深测试专家、测试运维架构师陈霁老师,和我们分享关于测试人员的职业发展的种种问题!

一、直播实录

Q1:如何走上测试的道路?

在选择职业发展时,大家常常会先参考别人的职业发展,从而找到自己的发展方向。这存在两种情况:第一种是有自驱力,选择适合自己的事情就一直坚持下去;另外一种是天赋型选手,有些人不努力也能学得很快、做得很好。


在计算机技术方面,我还算是有些幸运。在高中时期,我对计算机产生了浓厚的兴趣,因此在打字和写代码方面已经具备了一定的基础,那时候我已经算走在前面了。我大学是计算机系,很早就有了自己的电脑。我本身是属于喜欢折腾的性格,当时也是写一些代码,阴差阳错就走到测试这个赛道上面。实际上,我对测试这份工作不了解,因为大学时期更多是在写代码。2000 年毕业时,互联网的第一代开始流行,掌握HTML编程就会获得相对较高的薪资。当年开发岗位不太好找,我口袋里的钱付不起大城市的房租,正好碰上公司招聘测试,就这样进入了测试行业。


人生中需要贵人,他们能够为我们开拓视野,指导我们如何做得更出色。我一直对我的第一个项目经理心存感激,他会帮我指出许多我的不足之处。因为,我认为人生中第一个贵人就是他。他告诉我:测试不仅仅是简单的测试工作,而是需要有自己的想法,要将工作做得有深度。这句话直到现在一直影响着我,现在我仍然会重新审视许多关于测试的问题。其实,我带过的一些学生为了找工作而选择测试,因为测试的门槛相对较低、容易入门。他开始工作后,发现测试要一天几个小时找“麻烦”。例如告诉别人界面没有对齐等,但如果能找到好的表达方式,双方沟通就变得顺畅。


当我们发现测试充满乐趣,并且我们愿意花时间深入研究时,这会使得我们将测试变得与众不同,逐渐拉开与其他人的差距。此外,获得成就感和他人认可非常重要。对于大多数人来说,在职业发展的初期,从大学毕业后进入工作,获得正面回报是非常重要的。像现在很多大厂,如果不会算法、自动化、性能测试等,对刚毕业的学生来说是一个巨大的打击。其实,大学所学的内容与职场所要求的相差很大,市场很容易对你进行负面评价,这很容易让人产生厌恶情绪。所以,我走上测试这条职业道路算是一种巧合。


Q2:怎么看测试在各类IT角色中的位置?

第一,每个职位的定位是不同的,比如开发职位是要求实现代码。在过去,开发者很稀缺是因为能写代码的人很少,而且他们需要负责自己的开发、运维和测试工作,所以开发职位的地位相对较高。


第二,每个人的出发点是不同的,但最终目标是相同的。无论是从开发、测试、运维还是产品经理的角度出发,最终的职业发展方向都是以技术为基础。在大多数情况下,你可能会面临走向复合岗位,而测试领域的复合岗位非常多。因此,在职位上,测试、开发、运维甚至产品经理都处于同一级别。


其实运维比测试更惨,因为运维基本上是装系统、装硬件。提到云原生、DveOps等,运维才得以翻身。开发、前端、后端如今的处境差不多。所以,在开发内卷完后,测试才会重新洗牌,彻底地从入门级到被AI或质量内建淘汰掉,到达一个更加高级的阶段。


其实,这只是一个时代发展的过程。在刚开始,我们追求的是生存和减少生产故障,但随着时间的推移,我们会意识到一个重要的事实:质量在最后一个环节扮演着关键角色。就像购物一样,我相信大家有了一定收入之后,购买物品的质量变得至关重要。那时候,测试的价值将会得到重视。


Q3:如何理解“运维比测试更惨”这话?测试转型运维的前景会是怎样?

我认为运维“惨”的原因是,运维经历了一波大规模淘汰,将比如简单的机房维护工作变成了云原生的过程。因此,我们会发现之前每家公司可能需要几个运维人员,但现在可能一个公司都不需要,因为开发团队已经能够自行管理运维工作。


不论是阿里云还是亚马逊,相比雇佣一个全职运维人员,他们只需花一点点钱,就可以不用做机房托管等一系列工作。从这个角度来看,这是一种成本节约。只不过随着访问量的增加,我们需要更大的集群或分布式系统,成本会再增加一些。


从这个角度来说,运维面临的困境在于它经历了一轮洗牌,导致入门级运维岗位被淘汰。现如今,公司对于运维的需求量非常低。以前的运维人员会解决公司电脑中毒、家庭网络问题以及新电脑系统安装等工作,但现在这些事情基本上不再由运维人员负责,而测试领域还未经历这轮洗牌。


如果我们观察外包公司,会发现大学刚毕业一两年的测试人员,只懂得一些简单的业务逻辑,还能幸存下来。从这个角度来说,测试的门槛相对较低,因此相对于测试人员,运维人员可能面临更大的困境。不过,现在的运维面临的好处是,由于淘汰了大部分初级人员,剩下的都是中高级人员。现如今的运维人员基本掌管着公司的生杀大权,比如管理公司的GitHub或GitLab、流水线、发布流程以及核心账号密码等。从这个角度来看,现在的运维负责人,通常被称为DevOps工程师,他们的地位和身份非常高,薪水基本在中层以上。包括现在的运维人员也要负责生产环境的监控性能等方面,他们也在向左转型,朝着更加全面的方向发展。


经过洗牌之后才会有新的升级。从这个角度来说,运维的困境只是在于初级人员被淘汰,换了新的技术栈。测试领域同样会经历这样一个过程,入门级的测试用例和测试执行过程将会被人工智能淘汰掉。淘汰之后,测试人员会在困境后,开始走向升级之路。开发领域也会经历类似的过程,那些只会基本的复制粘贴CRUD工程师很快会被大规模淘汰,淘汰之后剩下的开发人员会减少Bug的产生。当减少了Bug后,测试人员就不再那么需要了。然后再淘汰测试人员,我们整体就迈向了一个新的阶段,重新回到了一个平衡的状态。不会再出现测试人员看不起开发人员,开发人员看不起测试人员,或产品人员看不起开发人员,运维人员看不起产品人员等不必要的情况。实际上,这只是因为不同层次上的认知和能力不同而已,当这种能力得到普遍提升后,我们就不会再有这样的问题了。


Q4:测试如何提升在公司的影响力?

在很多公司里,可能都会有这种情况:当测试做事情,可能无法做出积极贡献,反而会产生负向影响或增加问题。


增加问题是指:测试人员向产品部门反馈,为什么产品没有某个需求,而产品部门回答称已经考虑到了,只是你没有看到;测试人员向开发人员问这么做的时候有没有考虑技术问题,开发人员称已经考虑到了,只是你没有想到。当一个测试人员不断这么问问题时,实际上是产生了负面效果。多次提问之后,人们可能认为该测试人员能力不足,影响工作效率。


我认为,我们在做事情之前,要深入了解这件事的复杂度和注意事项,而不是头脑发热冲上去。


第二,可以在私下场合找机会单独聊。用“我希望更好地帮助团队做事,我有哪些能够帮助到团队”的态度去沟通,而不是站在制高点上说“你们为什么不考虑这件事”。


我们做教练或顾问,都会说“说一句话很简单,落地很困难”,我们要考虑哪件事对团队最合适或更有价值,做Backlog排序,做最有价值、性价比高的事情,先构建信任。


在公司里面,如果要提升影响力,最简单的方法就是在工作5年之内,某一天告诉开发人员,代码某一部分的线程管理有问题,或者日志写法不正确、某个方法存在错误等等,你的影响力就会提升了。因为IT人用技术说话,这也是为什么大多数测试人员觉得一旦掌握了自动化测试和性能测试,会觉得自己在团队中有话语权。


当你能够对产品和开发流程有更深入的理解,并能提供有价值的反馈和建议时,你的影响力就会增加。


影响力是很综合的事,比如学历、穿着打扮、技术能力、沟通协调等等,都是影响力的一部分。我们也可以在不同的方面做到“只有你会,别人不会”。包括积累我们的经验写文章、做视频、做分享等等,锻炼我们的表达能力、思维能力,这种用观点说服别人的能力也是影响力的一部分。


比如做测试的时候,最重要的不是告诉别人哪里错了,而是如何从快速地发现问题到快速地预防问题等等,这都是我们需要去培养的。


到了这个阶段,我们的影响力就上升了。有足够的自信,又接受自己的不足。敢于提出自己想法,并强化,当听的人也认为蛮有道理的时候,我相信我们的影响力已经很强了,因为我们有完整的自我逻辑,也愿意接收、融合别人的逻辑,形成自己的思维方式。


另外也建议大家写博客、写书,这是一个“你会什么”的最有力的证明。


Q5:测试未来会有哪些高价值的方向?

首先,你需要满足企业的基本要求。
  • 测试人员需要了解公司业务。
如何评价对业务是否熟悉?最简单的方式是你是否能够听懂产品经理所讲的业务,并能将业务梳理清楚后传递给开发。只是将产品经理的条目变成测试用例是不够的,当你比产品经理更能意识到在技术逻辑上的相关性时,那你将成为一个非常优秀的测试人员。产品经理的定位是将客户想要的需求变成我们要实现的需求,将产品变成解决方案。而作为测试,将解决方案变成有条理、实现依赖可能的风险评估或者测试要素的评估过程。
  • 测试人员必须懂技术,尤其是与研发沟通时。
一个好的测试人员能够在业务与技术之间形成参考角度,这个角度主要是实现、解决业务与技术之间的技术逻辑。


其次,当你满足这些要求后,你可以考虑公司潜在的价值方向。

  • 我告诉企业该会什么。
这是一个独立的思考过程。我们在讲测试左移、自动化、内键的时候,我们在中间过程需要考虑从功能到非功能,在功能级别有业务,那NFR( non function requirement)级别该如何处理。这时候,测试人员开始大规模地接触自动化、性能、安全,视野突然打开,原来世界的运转和软件的工作不是所想的那么简单。举个例子,“夏天能穿多少穿多少,冬天能穿多少穿多少”,计算机是理解不了这句话字面意思,因为存在语言背景,只有在特殊场景下才能理解。所以,当进入非功能级别时有许多东西需要考虑。
  • 高价值未必是高价格。
当我们工作到一定价值时,就需要开始做选择,需要从广而全的职位开始往专精方向发展。一段时间后,你会发现自己陷入了一个很专精的类目,这个专精类目非常窄且要求很高。这就会出现一个问题:所在职位工资高,但大厂进不去,这很正常。
在职场上,我们需要注意一点:有些东西具有很高的价值,但并不一定有高昂的价格。换句话说,它们可能非常有用,但市场不愿意为其付出高价。这是正常的情况。如果我们回顾十几年前,安全测试等方面的工作就属于这种情况。你可能会发现自己非常有价值,但收入并不高。学习Python也是如此,它的价格实际上相对较低,但背后的价值却很高。当一个事情开始受到重视时,它的价格就会逐渐显现。


具体未来的方向很难给出明确答案,但那些能够适应未来变化并持续学习的人一定具备很高的价值。我可以给大家几点建议:

  • 在选择方向时,重要的是有一个明确的方向,并专注于学习该方向。
  • 培养自己的适应能力,安心地、慢慢地前进,缘分到了自然就会开始突飞猛进。

IT领域的一个周期大约为十几年。如果你能够坚定地专注在一个领域上并持续发展十几年,我相信大概率你能够成功起飞。然而,你能够飞得多高,取决于你自己。首先,要学会保持持久性,不要一开始就透支自己的资源。其次,你是否能在这个领域中做到别人无法企及。我们必须能够忍受孤独,等待时机到来,适应这个时代的风口。例如,无论是过去的AI还是Python,我们都觉得它们并没有太大的潜力,但现在AI和Python都非常火,这是时间的积累。因此,你只能坚持专注于自己的专业领域,达到足够的深度甚至拉开很大的差距,只有在这个风口来临时,你才能抓住机遇,否则你将无法成功。


因此,相比于广而博,专精更加重要。对于未来高价值的方向来说,选择一件自己喜欢并且能够接受的事情,那么等风来就行了。如果没有也不要紧,自己问心无愧,只是时机不到而已。请注意任何一个成功的背后都有众多被淘汰的失败者。还有一点,绝对不推荐人创业。因为创业是一件很难的事情,创业需要天时地利人和和一点运气。


Q6:测试人员的职业发展有哪些可能性?

如果一个人具备多项技能(开发、运维、测试等等),能力很强,那我建议你先做测试。但如果能力相对较低,比如说只会做开发,那建议你先做开发。


测试工作的门槛相对较低,但上限非常高。在从事测试工作时,你需要与各方沟通,了解产品、客户、开发和运维等各个方面的知识。作为测试人员,你首先需要进行售前工作,了解客户的需求;然后是售后工作,收集客户报告的问题并将其转化为Bug提交;还需要定位问题、整理信息。此外,还要处理内部的Bug报告,并跟踪和修复这些问题,有时甚至需要在业务流程上进行调整,预防类似问题再次发生。


我举个例子:以前有一个“为什么银行提款机中会出现假钞”的问题,这其实是一个业务逻辑的问题。当你插入银行卡进行取款时,系统会先验证你的银行卡合法性,然后扣除相应金额并吐出钱来。然而,问题出现在这里,如果你不拿走这笔钱,会发生什么?是不是这笔钱会被系统吞回去?从逻辑上看,似乎没有问题,但请注意,计算机世界里有句话是“我永远不相信任何前端给我反馈的数据”。意思是,一旦钱吐出来了,系统就不能再收回去,因为我们无法相信吐出来的钱和收回去的钱是一样的。


以前就会存在这个逻辑问题:如果有人在取款时将钱拿出来后将其替换,然后让系统将其吞回去,点钞机数钱的张数是一样的,你的钱不会少,但你成功地用一张假钞换了一张真钞。虽然现在这个问题已经通过循环验钞机和隔离方法解决了,但过去,许多测试人员都没有意识到这个问题。所以,如果你的能力很强,从测试做起,那你会了解很多东西。测试也是一个对人的综合能力要求极高的工作。


在后面的职业发展中,推荐几个比较好的发展方向:

  • 首先,如果你对业务有想法,愿意与客户和团队打交道,产品领域是一个非常好的选择。
  • 如果你对技术有追求,无论是自动化、性能还是其他技术方向,你都可以深入研究,专注于纯技术方向。
  • 如果你擅长管理和流程协调,比如过去的SQA体系或现在所谓的教练,虽然测试教练这个职位数量较少,但未来会有更多的机会,这些岗位都是偏管理、偏理念,帮助公司落地质量体系。
  • 运维领域也有发展机会,虽然相对较少,但取决于你对哪个技术领域感兴趣,愿意从事哪方面的工作。
因此,测试最好的发展路径是全方位发展。如果你能力不够,上来应该是走专精走深,如果你上来能力很强,就可以走广度,那从测试开始你想做什么都可以。
此外,不断学习和提升自己的技能也非常重要,可以通过参加培训课程、阅读相关书籍和文章、参与技术社区等方式来不断更新知识。最重要的是保持积极的工作态度,持续努力,逐步丰富自己的职业生涯。


Q7:公司如果没到一定体量,不需要测试,怎么看?

其实需要看公司自己的期望值。如果公司的客户对质量要求很高,比如医疗领域或者某些关键行业,客户对质量要求很高,这些公司往往会有严格的质检过程,缺乏质检可能会导致客户对公司的不信任。


所以在初期阶段,关键不是看公司选择。如果你有选择的机会,选择一个更注重质量的公司,可能会更有利于发挥自己的能力。因为有些岗位招聘要求越高,说明这个行业越好,大家期望值高。看测试这个行业,有哪些公司招聘的薪水最高,你就有目标了。如果这行业都没有招高薪水的,那才是没有希望。所以我觉得最重要且最简单的一个方法是:你没有办法改变公司,但你可以改变自己。


Q8:我的职业生涯如果想往前走一步,我需要学点什么?

首先,做测试必须会写代码。如果不懂编程,从事测试工作是非常吃亏的。刚从事测试工作时,我们应该已经掌握自动化测试的基础知识,且对性能测试也有一定了解。编写代码会涉及到代码自动执行过程。而代码运行时,还要涉及一些简单的算法优化或资源管理过程。如果必须选择先学什么,那肯定是先学自动化测试,然后再学性能测试。给大家一句话:自动化测试半小时或一小时就可以学会,而性能测试入门一年,小成三年,大成无望。


性能入门,需要会做压测,需要知道这个东西是怎么跑起来的,要对业务和数据流、代码流了解,这大概1年左右;要了解所有的监控、基本参数、基本的优化思路,可能需要3年左右;而对完整的链路做深度优化,要跳出机制本身,可能需要5年以上时间。如果你工作了三年,觉得没什么难度了,推荐去看《性能之巅》。


到这个时候,我们才是真正地进入专业门槛,要回到最基础的C语言和汇编语言层面来处理问题。另外一个提升自己的方法就是:多看看别人在做什么,多去听听别人的经验。失败的方法有无数种,而成功的方法只有一两种情况。如果能排除一些失败的方法,那我们就大概知道自己该做什么,至少可以避免再犯一些别人曾经犯过的错误。


所以最后我想说的是:接受寂寞。当你一直往前走,你会越来越寂寞,因为跟你想法一致的人会越来越少。大多数人都会觉得你那么努力或做这些稀奇古怪的事情干什么,他们都觉得你像个异类。请耐住寂寞往前走,然后你会在路上碰到跟你志同道合的这些异类,当你们在一起一握手,你会发觉,原来我终于走到了别人走不到的路。


Q9:在不同的阶段如何保证自己不掉队?

不知道你如何定义阶段,在我看来任何时候只要你知道身边的人在做啥,能够清晰地了解我该做什么及我能做什么帮助到团队就算不掉队了。能走多远取决于你跟多好的团队,是否都不安于舒适区,都会折腾点新东西,否则你就要考虑选一个更能发挥你作用的团队,毕竟你一个人太厉害总要带着别人会很累。


Q10:QA质量指标一般是哪些?A绩效评价一般怎么做?

如果使用标准的QA指标定义其实可以看下官方文档,我个人觉得一般偏缺陷逃逸率、过程完整性等。绩效这东西仁者见仁,要么参考行业规范,要么自己评估下不同级别的ROI投资回报比,毕竟A是最高的还是S是最高的定义也没给出。所以这个问题在没有背景的前提下很难给出准确的答案。


Q11:面对需求为一句话且没有产品经理的情况,测试如何起到质控作用?应怎样更好地展开工作?

一句话需求很常见,其实一句话不是需求只是一个说明,既然产品经理的缺失那么自然测试就应该承担大部分产品经理澄清需求的工作,从业务角度帮助研发确认做什么,从技术角度帮助研发确认怎么实现才能用,当然如果测试工作本身做不好,自然承担产品经理的工作就不切实际,反之如果只要做质控,做好验收标准,从用户角度分析需求的目标,构建ATDD即可。


Q12:如果客户要求2天一个版本,如何进行有效回归测试?

其实回归测试和版本发布的周期关系不大,发布版本越频繁,回归测试的范围就越好确认。唯一的问题就是走完全回归的时间成本,如果无法隔离变化范围并且都需要做完全回归,那么自动化就不可避免,反之可以围绕变化范围进行评估,通过局部回归来解决问题,这就是个影响范围的评估,行业内的代码染色技术及需求变更覆盖都可以给出一定的参考建议。


Q13:现在适合跳槽吗?

如果你有足够的Offer,那么什么时候都是跳槽的好时候(收入、环境、工作成长),如果你不是自驱突破,而是希望通过跳槽逼自己学点啥,那么首先拿到Offer就很难,其次收入也未必满意,大概率是换个更差的公司,从这个角度来说除非你是为了积累经验,否则并不推荐。


跳槽和时间关系不大,也许你会觉得机会好的时候工资会溢价,但是要想踩到这些运气成分的概率并不高,按照自己的节奏做事情更好,不要总期待馅饼砸在自己头上。

二、送给大家的一句话

我一直坚信一件事,做 IT 其实是做技术的工作,我们热爱这份工作的原因是因为它有无限的可能性,我们在不断寻求真相,不断找到自己可以突破甚至改变事情的过程,这是我们作为工程师特别有乐趣的事情。所以作为测试来说,我觉得最重要的事情,不是说你是不是在做测试的工作,而是你是否能够跟团队一起做更好的软件,找到自己的成就感,找到自己的价值且能被别人认可,在质量或测试这个方向,能让别人觉得“确实有你真好”

    发表评论
    通过审核后显示您的意见