做软件测试需要懂代码吗?

陈哥聊测试
• 阅读 305

随着大数据、机器学习时代的到来,不少人有了“测试不需要懂代码,那我就试试”的想法。这就引发了一系列疑问:不懂代码可以做测试吗?测试人员到底需不需要懂代码?测试人员需要写代码吗?

其实,在软件测试初级阶段,测试人员确实不需要懂代码。但如果想要追求月薪20k、30k,接口、自动化等是避免不了的,这就必然涉及到了代码层面。

正如《mob编程指南》的作者Llewellyn Falco回应“QA工程师应该学习编码吗”这个问题时,曾说:“每个人都应该知道如何编写代码,这就像阅读和写作。你可能没有写过书,但你应该知道如何阅读和写作。”

一、软件测试的Q&A

作为测试人员,我们可以一起考虑几个问题。

问题一:哪些测试需要懂代码?

软件测试人员会使用各种测试技术来执行此操作,包括手动测试、自动测试等。不同的测试策略要求不同的测试技术,我列举了一部分: 做软件测试需要懂代码吗?

问题二:软件测试的门槛高吗?

近年来,经济下行加速功能测试转向自动化测试,软件测试的求职门槛确确实在提高。

研发流行敏捷开发,运维部署逐渐自动化,版本高速迭代。这意味着过去“点点点”的手动测试已经跟不上互联网行业产品的更新迭代速度,已经逐渐被自动化测试技术接管。原本手动测试需要10个人完成的工作量,现在的自动化测试团队只需要不到5个人就能完成。

当前各企业正在想尽办法建设自动化测试体系,实现手动测试到自动化测试的升级,通过提高测试流程的有效性和效率来消除测试瓶颈。因此,企业对测试人员的要求已经基本上过渡到了自动化测试要求。除了要懂功能测试,还需要懂代码、接口自动化、UI自动化等。

在求职门槛大大提高的情况下,测试人员仅凭借手动测试的技能,很难找到工作,也很难晋升。

问题三:不懂代码在实际工作中会出问题吗?

有一定的代码知识可以帮助测试人员更好地理解软件的内部逻辑,进而设计更有效的测试用例,但并非所有测试工作都需要深入理解代码。如果测试人员看不懂代码,实际工作会出现哪些问题?

(1)当测试人员无法准确解析代码时,报告的Bug描述可能含糊不清,导致开发人员难以复现问题或误解问题的严重性。即便是较为表面的错误,也可能被测试人员误判为关键缺陷。

(2)如果测试人员对开发知识掌握不足,可能会将有争议的问题错误地标记为Bug,或者提出的改进建议难以实施,且无法提供切实可行的解决方案。、

(3)在发现Bug时,若测试人员无法精确定位其根源,可能会导致与开发团队沟通成本增加。频繁的交流不仅浪费时间,过多的沟通也可能引发其他问题。因此,测试人员对开发知识的掌握显得尤为重要。

(4)缺乏开发知识可能会使测试人员在讨论Bug时处于劣势,面对开发人员的解释,如果测试人员不了解背后的技术细节,可能无法有效回应。

(5)在自动化测试、性能测试和项目管理等领域,对软件开发有深入的理解是必不可少的。设计高效的自动化测试框架、性能测试案例,或管理开发团队,都需要对软件开发有一定的掌握。

问题四:软件测试人员需要掌握什么技能?

除了沟通技巧、分析思维、团队协作等必备的软技能,软件测试人员又需要具备哪些硬技能:

(1)全面了解软件开发生命周期 (SDLC) 随着软件项目的复杂性不断增加,测试人员必须精通从规划和设计到部署和维护的每个阶段。这些知识使我们能够预测潜在问题,设计有效的测试策略,并确保测试活动与总体项目目标保持一致。

(2)熟练掌握自动化测试工具 自动化继续改变测试领域的游戏规则,熟练掌握自动化测试工具是我们测试人员的一项关键技能。掌握 Selenium、Appium、Jenkins、禅道ZTF等工具可让测试人员自动执行重复任务、增加测试覆盖率并提高效率。随着越来越多的组织采用 DevOps 和持续集成/持续部署 (CI/CD) 实践,能够将自动化测试集成到 CI/CD 管道中的测试人员将在加速产品发布并保持质量标准方面发挥重要作用。

(3)测试设计和执行方面的专业知识 测试设计和执行方面的专业知识仍然是软件测试人员的一项基本技能。在 2024 年,制定全面的测试计划、编写清晰简洁的测试用例并有效执行测试的能力比以往任何时候都更加重要。测试人员必须确保他们的测试是稳健的、可扩展的,并且能够有效地识别缺陷。那些擅长设计和执行模拟真实场景的测试的人将为开发可靠且用户友好的软件产品做出重大贡献。

(4)编程和脚本语言知识 熟悉Java、Python、PHP等语言使测试人员能够编写自动化测试、了解代码库并与开发人员更有效地协作。随着开发人员和测试人员之间的界限越来越模糊,具有编程技能的人可以参与单元测试、审查代码以查找潜在问题,甚至修复错误,从而提高软件的整体质量。 做软件测试需要懂代码吗?

二、软件测试人员懂代码的好处

1.可视化和测试

测试人员可以更好地可视化和理解应用程序背后的代码,从而帮助测试人员识别更多有用的测试用例。例如,软件测试人员知道某个页面元素正在使用 if/then 逻辑,他们能够确保测试该算法的两条路径。对于循环也是如此,众所周知,循环的终点通常是发生错误的地方,因此通过了解循环构造的逻辑,软件测试人员可以更准确地查看边界条件。

如今,随着越来越多的开发团队执行单元测试,白盒测试的实践变得越来越不重要;但测试人员仍然可以通过对代码的理解来了解应用程序的更细微的方面,并创建测试来提高测试覆盖率。

2.自动化测试

懂代码的测试人员更容易创建自动化测试脚本。这是持续集成 (CI) 的必需品,甚至 UI、API 和性能测试都可以自动化。这有助于加快测试周期,并使测试人员能够专注于探索性测试以发现新问题。

使用 Selenium IDE等软件测试工具可以轻松执行自动化测试。这类软件测试工具所提供的GUI录制回放功能,能够达到提高测试用例复用率的目的。但这些好处是有限,它们无法自动执行某些测试的步骤,并且在应用程序更新时很容易崩溃,如Selenium默认不提供测试报告和错误恢复机制。

3.与开发人员更好地沟通

懂代码的测试人员能够与开发人员更好地沟通,因为他们能够理解开发人员的思维方式和代码逻辑。这有助于他们更精确地报告Bug,深入讨论问题的解决方案,并减少误解和沟通障碍。同时,懂代码的测试人员能够更快地理解新功能或变更,设计出有效的测试用例,提高测试效率。 做软件测试需要懂代码吗?

三、软件测试人员共勉

自动化测试是趋势,只会做手动测试的人未来会逐渐失去竞争力。资深测试专家陈霁在《测试人员路在何方》中也提到了“做测试必须会写代码。如果不懂编程,从事测试工作是非常吃亏的。”具体内容,我就不多讲了,大家有兴趣可以看一下这个视频。

最后,我们测试人员共勉: 大多数人都会觉得你那么努力或做这些稀奇古怪的事情干什么,他们都觉得你像个“异类”。请耐住寂寞往前走,然后你会在路上碰到跟你志同道合的这些“异类”,当你们在一起一握手,你会发觉,原来我终于走到了别人走不到的路。

【参考资料:Brian Borg: Should QA Testers Be Able to Read Code?】

点赞
收藏
评论区
推荐文章
liam liam
2年前
高效进行接口测试,简单易懂!
前言日常测试过程中,常常需要多种工具来接力完成自己的接口测试任务。比如说,使用swagger查看接口文档,使用mock编造接口数据对前端页面做测试使用postman测试后端接口,用Jmeter来做接口自动化测试/性能测试。那有没有一款软件可以完美集成以上所有的功能?笔者发现一款叫Apifox的软件,一款完成能完成以上几乎所有软件的功能。官方给出Apifox(
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Hibernate纯sql查询结果和该sql在数据库直接查询结果不一致
问题:今天在做一个查询的时候发现一个问题,我先在数据库实现了我需要的sql,然后我在代码中代码:selectdistinctd.id,d.name,COALESCE(c.count_num,0),COALESCE(c.count_fix,0),COALESCE(c
Stella981 Stella981
3年前
RobotFramework接口自动化的设计思想
自动化终极思想:以目标为导向,不断抽象沉淀,消除冗余,做到测试数据与测试代码分离1、自动化测试对人员的要求1、对测试人员的技能要求较高,需要自己写测试代码或看得懂别人的测试代码;2、需要根据版本迭代进行更新测试用例,有一定的维护成本;3、自动化能发现的缺陷数(bug)远远少于手工测试,产出低;4、自动化测
Stella981 Stella981
3年前
Parasoft cpptestcli 指令行参数配置
ParasoftCtest  是款功能非常强大的自动化测试工具,能有效提高软件开发效率和代码质量。功能特点如下:    静态代码分析和编码策略实施;  自动代码审查的图形界面和进度跟踪;  自动化的单元测试和回归测试;  代码覆盖率分析,集成通过应用层覆盖跟踪从单元级测试;  结合静态分析、单元测试、代码评审和其他
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
灵魂发问:低代码真的会使程序过于复杂吗?
低代码继续受到大量关注和争论。许多软件开发人员仍然想知道使用低代码是否会使应用程序开发过程更好,或者它是否会干扰开发过程并导致劣质应用程序。其他人则担心低代码的安全隐患。当然,如果使用低代码的必然结果是更高的应用程序复杂性,那么低代码可能会导致安全问题的难度增加。但真的是这样吗?我最近写了很多关于应用程序复杂性的文章,还有很多关于低代码的文章。但是应用程序复
API 小达人 API 小达人
11个月前
使用 Eolink Apikit 进行 HTTP 接口测试
HTTP是互联网上应用最广泛的一种网络传输协议,所有的www文件都必须遵守这个标准。因此,在软件开发过程中,HTTP接口测试是必不可少的一环。传统的HTTP接口测试需要编写大量的测试代码,这对于开发人员来说是一项繁琐且耗时的工作。EolinkApikit是一款基于API文档的自动化HTTP接口测试工具,可以帮助开发人员快速、高效地完成HTTP接口测试。在本文中,我们将介绍EolinkApikit的HTTP接口测试流程,帮助开发人员快速入门。
陈哥聊测试 陈哥聊测试
8个月前
你在测试金字塔的哪一层(上)
在准备将软件上线到生产环境之前需要进行测试。随着软件测试方式日趋成熟,软件开发团队的测试也在取代大量手动测试,逐渐实现自动化测试。