在AI技术日益渗透到各行各业的今天,软件测试领域也不例外。上回《别再做“点点点”测试了!AI时代测试工程师的隐形技能树,你点亮了几个?》提到测试人员也该学门语言、懂点代码,这话题在圈里激起千层浪,反响强烈。
之所以用“争议”形容,是因为不少小伙伴觉得测试人员学代码,要么难如登天,要么性价比太低。非计算机专业出身的,压根没接触过;计算机专业但没深造好的,基础薄弱;从开发转行测试的,隔行如隔山,时间一长也都忘得差不多了。
今天,我就专门针对这个争议点,和大家好好聊聊。
先说说我自己的经历。我在测试领域摸爬滚打快10年了,是从硬件行业跨界过来的。刚入行时,我对数据库、Linux这些概念一窍不通,是个彻头彻尾的小白。可如今,我不仅精通多个核心系统的业务,还能熟练搞定数据库调优、服务器监控这些技术活。
最开始,我做测试就是打开界面,这儿点点,那儿戳戳,发现个问题就像捡到宝一样兴奋,赶紧记下BUG。后来,我学会了通过日志定位问题。再到现在,面对新业务或迭代更新,我的第一反应是打开GIT,查看程序的变动,仔细review代码的修改是否全面、能否真正解决问题。
很多时候,我会结合自己对系统整体代码的理解,对比研发人员的修改思路和我的预期,分析哪种更优,是否存在被忽视的漏洞。如果review代码时发现明显问题,我会直接找开发讨论;要是有疑问,就会在后续的功能测试中重点留意。
这种基于代码review的测试方式,目前是我最常用的。当然,我知道这未必适合所有人,但我坚信,透过代码洞察本质,开展更接近白盒测试的测试工作,绝对是未来测试行业的一大发展方向。尤其是在AI技术的辅助下,测试人员通过代码分析可以更快速地识别潜在问题,利用机器学习模型预测软件缺陷,甚至自动化生成测试用例。
所以,我坚定地站在正方阵营,认为测试人员看懂代码不仅重要,更是十分必要。接下来,我就从几个关键点,详细说说看懂代码的必要性。
一、生产问题复现
作为一名测试人员,经常要和生产环境中的问题打交道,很多时候需要第一时间去排查。这些问题大多是通过客服或者运维人员反馈过来的,但客户提供的信息往往并不完整,这就给问题的重现带来了很大的困难。比如:
有一天,客服团队向测试组反馈了一个客户投诉:客户在下单过程中,支付成功后发现除了有一笔付款成功的订单外,还出现了一笔待支付的订单。客户担心可能会被重复扣款,所以进行了投诉。
针对这样的投诉,测试人员首先尝试在灰度环境进行复现。下单并支付成功后,查看订单情况,发现只有一笔付款成功的订单,复现失败。
由于客户反馈的情况比较特殊,测试人员决定从代码逻辑入手进行分析。通过查看代码,可以确定客户调用的是购买接口。顺着代码的执行路径进行跟踪,发现了一个潜在的问题:如果第一次扣款操作超时或者失败,客户换卡重新支付时,由于幂等校验逻辑存在缺陷,系统可能会重新创建一笔订单并发起支付。这样一来,之前的订单就会一直处于待支付状态。
基于这一发现,测试人员通过客服与客户进一步沟通确认,得知客户第一次选择的银行卡余额不足,因此换卡支付时出现了上述问题。
由此可见,如果测试人员能够读懂代码,就可以更快地定位问题,而不是像无头苍蝇一样盲目地重复测试。即使你具备出色的探索式测试技能,在这种情况下也可能会浪费大量的时间。在AI的帮助下,测试人员可以利用自然语言处理技术分析客户反馈,快速定位问题代码段,从而提高问题复现的效率。
二、提升测试效率
在测试工作中,最让人头疼的莫过于频繁的返工。开发可能只修改了一小部分代码,但对测试来说,每次回归测试都意味着巨大的工作量。
如果能在开发提交修改后,第一时间通过代码变化来评估修改的完整性,那效率提升可不是一星半点。这也是我经常先读代码的原因之一。
除了review代码,阅读代码还能帮助我们完善测试用例。很多时候,我们可能会因为不熟悉开发的组件而忽略一些潜在的错误。比如我们系统的设计思路是这样的:如果支付调用银行超时,就会通过消息队列异步发送异常信息,同时有监听程序实时监控队列,一旦发现超时消息就重新调用,成功就继续后续业务,继续超时就再推回队列。
针对这种基于队列设计的异常情况,我们可能会因为不了解而漏掉相关的测试用例。这时候通过代码review,就能更好地发现这些关键点,从而完善用例中对消息异步推送的验证,更好地保证系统稳定运行。
更重要的是,在阅读代码的过程中,我们会带着对代码设计的不确定性和疑问,这使得我们在测试时更有针对性。根据我个人的经验,这种方式在测试中发现问题的概率也会更高。
AI技术,如代码分析工具和机器学习模型,可以帮助测试人员更快速地识别代码中的变化,预测可能引入的缺陷,从而提前准备测试用例,进一步提升测试效率。
三、定位问题
咱们之前就提到过,提BUG的最高境界不仅仅是发现问题和描述问题,更重要的是能够定位问题并给出解决方案。
对于一些相对简单的问题,如果测试人员能够读懂代码,完全可以借助日志中的报错信息,快速定位到代码出错的具体位置,并进行进一步的分析,而不是仅仅把截图和日志一股脑儿扔给开发人员。
在实际工作中,有时会遇到日志信息缺失的情况,这给问题定位带来了不小的麻烦。在这种情况下,测试人员甚至需要自己动手增加一些日志打印语句,以便更好地定位问题。
因此,掌握程序日志的写法,对测试人员来说是非常有帮助的。AI技术,如智能日志分析工具,可以帮助测试人员自动分析日志信息,快速定位问题原因,减少手动分析的时间。
四、后续进阶
过去那种测试人员无需编写代码的日子已经一去不复返了。如今,无论是从事自动化测试、测试开发,还是接口测试等工作,都需要你亲自动手编写大量代码。
无论是开发小工具、构建测试框架,还是搭建测试平台,都离不开扎实的代码能力。从这个角度来看,学习代码的重要性不言而喻。
关于如何学习代码,我想多分享一些个人经验。在之前的文章中,我已经介绍了一些我认为必须学习的内容。而在真正开始开发实践时,我特别推荐“边做边学”的方式。
很多同学一听说要学写代码,就立刻去购买一堆诸如《从零开始学PYTHON》《20天JAVA速成》(书名纯属虚构,如有雷同纯属巧合)之类的书籍,然后从头到尾认真学习,结果却感觉什么都没学会。
相反,在有一定基础之后,通过实际项目来学习代码,可以在实战过程中更深刻地理解代码知识。
这也是我总是强调大家不要只是看,一定要动手去实战的原因。这也是为什么我更愿意去做一些大型的实战课程,因为这样可以避免大家对知识的理解仅仅停留在表面。
五、提升业务能力
代码能力对于提升业务理解至关重要。代码是业务逻辑的基石,深入理解代码层面的细节,能让你对业务的掌握达到更高的境界。
这样,你就能在项目的需求阶段就积极参与,准确评估需求的可行性及其对现有系统的潜在影响。
以我们自己的项目为例,无论测试用例设计得多么全面,当涉及到一些复杂的业务细节时,最终还是需要通过代码来梳理和验证。只有这样,我们才能确保测试覆盖到所有关键点,从而更有效地保障系统的稳定性和可靠性。
AI技术可以帮助测试人员更好地理解业务逻辑,通过自然语言处理技术分析需求文档,自动识别潜在的业务风险,从而在需求阶段就参与进来,提升业务能力。
六、完善思维方式和提升个人形象
深入理解代码,不仅能帮我们完善思维方式,还能让与开发人员的沟通更加顺畅。
当我们关注代码逻辑时,我们能更好地理解开发的设计思路和架构理念。这种深度的理解不仅能提升我们的技术水平,还能在开发团队中树立我们的专业形象,让我们在开发人员眼中更具价值。
AI技术可以帮助测试人员更好地理解代码逻辑,通过机器学习模型分析代码结构,预测代码行为,从而提升测试人员的思维方式。同时,AI辅助的代码分析工具可以提高测试人员在团队中的形象,展示其专业能力。
总结来说,我们认为对于测试人员而言,具备读代码的能力是非常重要的!那么,你对此有何看法呢?你认为测试人员是否有必要理解代码?欢迎在评论区留言,分享你的观点。在AI时代,测试人员掌握代码能力不仅是提升个人技能的需要,更是适应行业发展的必然趋势。
☑️转岗软件I测试/野路子技能提升
☑️想了解更多涨薪技能提升方法
✔️可以到我的个人号:atstudy-js
即可加入领取 ⬇️⬇️⬇️
转行、入门、提升、需要的各种干货资料
内含AI测试、 车载测试、AI大模型开发、BI数据分析、银行/游戏测试、AIGC
热门跟贴