自动化测试,这几年行业内的热词,也是测试人员进阶的必备技能,更是软件测试未来发展的趋势。特别是在敏捷开发模式下,产品迭代速度快,市场不断调整,客户需求不断变化,单纯的手工测试越来越无法适应整个过程。
测试人员如何快速响应并保证产品在上线后的质量能够满足客户要求,如何在上线一个新功能的同时快速对旧功能进行回归,保证旧功能不被新功能影响而出现严重的 Bug。
针对以上问题,采用自动化测试无疑是一个不错的选择,能够做到在保证产品质量的同时提升测试效率。
那么,学习一门编程语言必不可少,同时,学习一门编程语言也是你成为自动化测试工程师乃至测试开发工程师的基本准入门槛。
目前,市面上的编程语言五花八门,比如:很多人大学时学过的面向过程 C 语言,C 语言的扩展升级 C++,面向对象语言 Java 或者 Python,.NET 开发和游戏开发常用的 C# 语言,当时号称世界上最好的语言 PHP,更为方便的脚本语言 Shell,以及近些年很火的 Golang 语言等。
基本上能叫上名字的语言都能做自动化。
Java 和 Python 自动化测试技术栈对比:
名称 | Python | Java |
---|---|---|
接口自动化测试 | Python+Requests+Unittest/Pytest+HTMLTestRunner/Allure | Java+HttpClient/OKHttp+TestNG |
Web 自动化测试 | Python+Selenium++Unittest/Pytest+HTMLTestRunner/Allure | Java+Selenium+TestNG |
App 自动化测试 | Python+Appium++Unittest/Pytest+HTMLTestRunner/Allure | Java+Appium+TestNG |
测试平台 | Python+Django/Flask | Java+SpringBoot+MyBatis |
Java VS Python?
对于测试行业来说,绝大多数从业者都会选择两门语言来学习,就是 Java 和 Python。
企业里面做自动化测试大多数也是选择这两门语言,并且很多培训班也会选择这两门语言作为主语言进行教学,比如各种 Python/Java 全栈自动化测试,因此网上的学习资源也是比较多的,方便我们自学。
那么,自动化语言选择 Java 还是 Python 呢?
首先,语言本身无优劣,只不过是一种工具手段而已,无论是 Java 还是 Python 都能做自动化测试,没有最好的语言,只有最合适的语言,不能简单的说哪门语言好哪门语言不行,而要基于实际应用场景进行分析。
测试行业学习编程语言的用途主要是用来做自动化测试,比如 Python 技术栈会使用 Requests、Unittest/Pytest 等框架结合公司业务实现一套覆盖公司系统绝大部分接口的自动化测试框架,然后做持续集成,例如将代码部署到 Jenkins,每天定时执行,并将测试报告发送到邮箱,以及上线前的回归测试等。
这样做的目的主要是用来监控哪些接口服务或者环境挂了,以及版本迭代过程中上了新功能、修改了代码可能影响关联到其他接口导致异常发生,所以上线前要把系统或者模块的接口自动跑一遍,以便于测试人员第一时间发现问题,并交给开发人员进行修复解决,减少线上 Bug 率。
学习编程语言还可以编写一些测试工具来提高整个测试团队的工作效率。比如造大量的测试数据,就可以写个循环自动执行。毕竟提高效率也是我们的工作职责之一。
如果你是刚入行软件测试并且之前没有编程经验,那么毫无疑问就选择 Python,因为它上手特别快,整个功能也是非常强大的,通过简单代码就能实现很多实用的功能,有强大的标准库以及非常丰富的第三方库,能够辅助你去做 UI、接口等自动化测试。
不建议新人同时学习两门语言,这样会导致每个都是浅尝辄止,反而不利于深入学习。其次,编程思维和解决问题的思路都是相通的,当你熟悉掌握一门语言时,也能快速掌握另一门语言。
对于有编程基础的同学,可以选择 Java 进行学习。Java 语言难度系数较高,更有挑战性;Java 在企业的应用比较广泛,处于龙头老大的地位,适合中大型项目,性能较好,执行速度较快,适合高并发场景;
很多服务端开发人员都使用 Java,如果你也使用 Java,大家就是同一类人,有更多的共同语言,可以很好地和开发进行无缝衔接,便于交流,减少沟通成本。
甚至可以拿开发代码进行学习,参与 CodeReview,进一步加深对业务的理解,也有利于之后测试过程中进行问题的定位,以及从代码逻辑的角度发现更多的缺陷。
两门语言,不管是 Java 还是 Python,都能做自动化测试,如果非要从中选择一种,我更倾向于 Python,也推荐初学者从 Python 入手。
主要有两点原因:第一,自动化测试的目的是为了提升测试效率,将更多重复繁琐的工作交给程序自动执行,我们就有更多的时间去测试那些新功能,毕竟手工测试是发现 Bug 最快和最多的一种途径。
第二,自动化测试脚本或测试平台一般是内部使用,使用的人数一般比较少,不会涉及高并发这种场景,即使 Python 性能较差,也不耽误我们做自动化测试。
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
每个人都有自己的天赋和能力,只要不放弃,坚持不懈地努力,就一定能够在未来取得成功。无论遇到什么困难和挑战,都要勇敢面对,相信自己的实力和潜力,付出就会有回报!
每一天都是一个宝贵的机会,用心去追求自己想要的生活和事业,无论成功与否,都会成为你人生中的宝贵经历。不要害怕失败,坚持下去,你终将收获成功的喜悦。
每个人都有无限的潜力和机会去追求自己的梦想,只要你勇于面对挑战,坚持不懈地追求,就一定能够在人生路上走得更远,做得更好。别忘了,只有不停奋斗,才能绽放出真正的自我光芒!