很多测试开发工程师尤其是刚入行的同学对编程语言和技术栈选择问题特别关注,毕竟掌握一门编程语言要花不少时间成本,也直接关系到未来的面试和就业(不同企业/项目对技术栈要求也不一样),根据自身情况做一个相对正确的选择确实要比盲目投入更明智也更高效。

目前最常见的情况是纠结选择 Java 还是 Python?关于这个问题,我搜索了之前的相关博客,也特意请教了几位资深的测试技术专家,在这里做一个汇总整理,集“各家”之言供大家参考。也欢迎各位朋友根据自己的经验回帖补充意见。

P.S. 有一点需要强调,关于编程语言的选择和对比,不存在唯一正确的答案,也没有一劳永逸的全局解决方案。这里列举的也仅代表个人意见,仅供参考,大家还需要结合自身情况做选择。在保证大方向正确的前提下,快速学习,努力提升自己才是王道。


  • 测试工程师该如何选择合适的编程语言?
  • Java or Python?这两种语言在一线测试工作中实际应用是怎样的?有哪些优劣势对比?
  • 对测试新人和有一定经验的从业者有哪些建议?

---- 艾辉 饿了么高级测试技术经理

Java 和 Python 这两种语言在测试开发的工作中应用都很广泛,如果非要分主次,Java 相对来说更多。服务端用 Java 开发的项目居多。

关于测试工程师如何做技术栈选择?有几点需要注意:

1. 业务团队的技术栈,即公司服务端用什么语言做开发;
2. 自身技术基础,对编程语言熟悉程度,个人兴趣等;
3. 相关语言背后的技术生态是否完善,比如做服务端自动化测试,Java 的工具库、Python 的工具库,哪个更能解决痛点问题? 对于零基础和刚入行的同学,建议从 Python 入手,因为 Python 语法简单,相对容易上手;有一定经验的测试工程师则要从解决什么问题方面考虑,然后建议 Python、Java 都熟悉掌握,能紧跟行业技术趋势和要求,比如
近几年 Go 越来越火,不排除测试开发工程师之后要学习掌握 Go 语言。 测试开发的技术广度要求相对更高一些,因为你不知道下份工作中,公司业务会用到的技术栈情况,所以需要掌握迅速迁移学习的能力。但就目前来看,Java 和 Python 两门语言能熟练应用基本就可以满
足大部分测试开发工作的需要,其他 Case 根据实际情况来看。

---- 方程无解 美团资深测试技术专家、Python 自动化测试技术专家

很多同学都有这个困扰。Java 和 Python 是现在开发和测试行业的两大主流语言。目前 Java 的市场占有率是第一,Python 还是第四,但 Java 的占有率在走下坡路,尤其是在 Oracle 宣布新版 JDK 收
费后,会加速这种趋势。Python 作为大数据工程和 AI 的主流开发语言,一直保持强劲的上升趋势,即使目前 AI 还没有大量的成功的商业案例(盈利的)就已经很火爆了,一旦成功的商业模式建立起来,Python 开发
和测试的需求更会爆发性增长。
Java 和 Python 通常在大厂里面都是并行存在的,但在创业型公司里面,Python 做测试开发的比例比 Java 高,创业型公司里面要求快速推进,推进速度会比大公司更激进。
Java 目前在市场上毕竟还是占有率第一的,Java 测试开发的绝对需求量会比 Python 多,但会 Python 的人相对比较少,竞争也会小一些。Java 用来做测试开发,还是太重了点,技术点比较复杂,学习曲线长,编写测试代
码的速度慢,Python 编写速度快,非常适合测试资源不充足的情况下,快速开发测试工具。通常实现一个功能,Python 的代码量是 Java 的 1/3-1/5。
很多大厂之所以一直还用 Java 做测试开发,主要前几年积累下来的工具都是 Java 的,前几年会 Python 做测试开发的人太少了,但现在大厂新工具的开发,更多人选择了 Python。
对于小白和刚入行的同学,毫无疑问,直接学 Python,这个没有其他要讨论的。对于 Java 开发一年经验以上,或者写过 1W 行以上代码的同学,在继续深入学习 Java 的同时,也要开始学 Python。在实际工
作当中,用Python 写小工具,很方便。Python 对 Java、C、 C++ 的调用都有成熟的框架,而 Java 没有。另,除了 Python 和 Java,如果大家还想学习一门新的语言,我建议大家学习 Go,那也是一个明日之星。
关于测试开发工程师如何做技术栈选择的建议:关于测试技术,建议初级测试人员(1-2年),先在一个专项测试技术上发展,然后再扩展到全栈(API、Web、App、后台、安全性测试、性能测试、数据库、Linux、中间件等)。
你的技术体系应该是 T 型结构,测试人员的知识体系应该比开发人员更全面,要学的东西很多。除了测试技术外,测试人员也要不停的学习开发技术,公司用什么开发技术,你就要跟进学习。和开发人员的交流保持在一个频道下,理解
其设计就会更顺畅。

---- 孙高飞 第四范式资深测试开发工程师

建议初学者先掌握 Python,而高级的测试开发者两个都要会。一般高级工程师主 Java,副 Python。

另,语言跟某些业务场景也有绑定关系,比如 RPC 协议测试,在国内Dubbo 这个框架很流行,就是基于 Java 调用的。很多 2B 企业提供的 SDK 测试,也大都是基于 Java 的 SDK 测试。

而且,大型自动化项目通常是团队多人协作的,Java 由于静态语言特性不容易出错,而 Python 容错性相对来说就要差一些,代码多了容易 hold 不住。

主要就是开发圈子里 Java 太流行了,导致测试里面 Java 系比较有好处。

---- 徐实 知乎测试技术专家

对于语言,第一选择是最好和研发的语言技术栈一致。

在测试过程中,如果只是接口自动化,或者基础平台开发,Java 与 Python 两者差异并不大。建议优先选择更熟悉的语言。

一些开源自动化框架用 Python 的相对多些,在日常工作中一些脚本工具用 Python 写会快很多。

其实个人觉着代码技术栈的选择方面,通过 Java 入门要比 Python更面向对象一些,对一些设计模式的学习也更友好一些。另外,从开发角度来讲,Java 的稳定性和可靠性及现有解决方案会更好一些。

如果面向平台开发,第一门入门语言可以选 Java,语言一通百通,Java 上手后学习 Python 的成本也不高。

但如果只是自动化测试框架,工具,两者都可以,我个人更倾向Python,新手写起来很快~。另外,如果是大数据方向的测开,最好用 Java。而如果策略算法领域的测开,Python 则更好。

----范令凯 58 到家测试专家

1. 针对没有接触过代码的小白,建议从 Python 入手,门槛低,学习成本比较低;
2. 针对大数据的测试建议 Python;
3. 本身 Python 和 Java 没有特别大的优劣之分,都有足够的库和插件可以完成我们的测试。遇到问题也都可以从网上快速的找到解决方案。所以选择 Python 还是 Java,最主要思路还是跟公司的技术栈保持一致。 比如我这边有 Dubbo 的接口,建议选择 Java,从接口测试到后续的代码走读,都比较方便(当然 Python 也可以实现 Dubbo 的接口测试,但可能成本比较高)。

---- 恒温 测试专家

首先,编程语言本身没有优劣之分,每种语言的粉丝都认为自己用的语言是最好的,就像 PHP 是世界上最好的语言一样。在工业界,我们可以看[ TIOBE 的语言排名](http://www.cncms.com.cn/hardware/20181109/11091503.html)。

一般来说 Java 和 C 都是高居版首的。至于为什么,网上的说法比较多,总结来说就是 Java 跨平台,C 语言和底层汇编最接近。但是其实有一个林迪效应,对于会自然消亡的事物,生命每增加一天,其预期寿命就会缩短一些。而对于不会自然消亡的事物,生命每增加一天,则可能意味着更长的预期剩余寿命。Java 和 C语言感觉就是这样。

Python 其实还算门新语言,1991年出来的吧,在互联网和移动互联网两个时代,也没有太大的亮点,所以一直被人当做脚本语言使用。直到 Python 作者加入了谷歌,然后谷歌大力推 Python,你也知道,中国的技术都是热闹驱动和老外驱动,老外搞啥,就搞啥,然后慢慢地带起了 Python,到了大数据时代,更是厉害,一跃到了前10,这主要得益于 Python 的学习曲线比 Java 简单平滑,然后因为以前一直在科学计算这块使用,有大量的数据生态库。

至于在公司的使用情况呢,国外不知道,国内来看的话,据我所了解的公司来看,Java 居多,尤其是进入 IOT 时代,Android 称王的时代又回来了,那用 Java 的更是多了。再去看看测试相关的开源项目或者类库,也大部分是 Java 的。那最近最火的 Appium 来说,Java Client 是更新最快,实现最好的。WebDriver 也是如此。

如果让我推荐用什么语言的话,我会说,

1. 你的公司大部分人用什么,你就用什么。
2. 如果你精通 Python,那么学个 Java 也不难。
3. 如果你精通 Java,学 Python 也很容易。
4. 如果你都不会,建议 Java 和 Python 都学一下。多一个技能,多一口饭。
5. 认真学一门语言,别捡芝麻丢西瓜。

---- 大猫 测试技术专家

这两门语言都是必须要学的,并且大部分自动化都支持双版本,Python 更高级,Java 更底层点。二者都依赖生态库,小型项目用 Python,其他用 Java。学习难度是 Java 高于Python。Java 反射和工程性高于 Python。常规的效率上都差不多。Python 和 Java 都有推导表达式。

建议就是都学,二门语言加一起认真学一年就很好了。只要有耐心。:)

---- 刘晓光 测试技术专家

跟被测物同语言最好。

1. interop 不会有坑。
2. 开发能读懂,沟通不会有坑。
3. 如果是单元测试或者结合很紧的接口测试可以跟生产代码放在一起。加入 CI 经常跑,保持有效性。

最后跟大家推荐一个测试学习群:747981058,里面大牛已经为我们整理好了许多的学习资料,有JAVA,python自动化,接口,性能等等的学习资料!

人生是一个逆水行舟的过程,不进则退,咱们一起加油吧!

 

Java or Python?测试开发工程师如何选择合适的编程语言?的更多相关文章

  1. 《软件自动化测试开发-Java和Python测试开发实用指南》出版了

    1.关于书中下载链接的问题:出现404,页面不存在 解答:大小写要区分,l和1不能弄错了 2.关于勘误,出现极个别漏子少字错字 解答:后续版本会改进,目前能理解就好了 ---------------- ...

  2. 《软件自动化测试开发-Java和Python测试开发指南》第6次印刷

    2017年1月 第1次印刷 2017年5月 第2次印刷 2017年9月 第3次印刷 2017年11月 第4次印刷 2018年4月 第5次印刷 2018年6月 第6次印刷 欢迎留言,点赞前2名,可获2折 ...

  3. 《Python测试开发技术栈—巴哥职场进化记》—软件测试工程师“兵器库”

    上文<Python测试开发技术栈-巴哥职场进化记>-初来乍到,请多关照 我们介绍了巴哥入职后见到了自己的导师华哥,第一次参加团队站会,认识了团队中的开发小哥哥和产品小姐姐以及吃到了公司的加 ...

  4. 真香!Python开发工程师都选择这个数据库:因为它免费

    数据库类别 既然我们要使用关系数据库,就必须选择一个关系数据库. 目前广泛使用的关系数据库也就这么几种: 付费的商用数据库: Oracle,典型的高富帅: SQL Server,微软自家产品,Wind ...

  5. 【转】测试开发工程师必备软硬能力&高级测试开发工程师需要具备什么能力?

    对于测试的基本知识,可以查看软件测试相关书籍 对于在公司成为一位优秀的测试开发工程师,我觉得下面这篇文章涉及到的是我们需要的,稍微进行改动https://blog.csdn.net/sinat_210 ...

  6. 《Python测试开发技术栈—巴哥职场进化记》—前言

    写在前面 今年从4月份开始写一本讲Python测试开发技术栈的书,主要有两个目的,第一是将自己掌握的一些内容分享给大家,第二是希望自己能系统的梳理和学习Python相关的技术栈.当时我本来打算以故事体 ...

  7. 广州CVTE招聘-测试开发工程师

    内推邮箱:keweisheng@cvte.com 地点:广州 公司简介 CVTE成立于2005年,总部位于广州科学城,旗下设有多家独立的子公司,在香港设有全球服务中心,在国内设有21个营销服务中心和近 ...

  8. Poptest学员之当小厨师变成测试开发工程师

    没开玩笑,这是我们的真实案例.做培训以来,各行各业转行做测试的学员见得太多了.修车的.客服的.销售的.司机的.医护的.前台的等等.职位虽然不分贵贱,但是薪资却分多少.每个人心中都有让家人和自己过上好日 ...

  9. 【python测试开发栈】python基础语法大盘点

    周边很多同学在用python,但是偶尔会发现有人对python的基础语法还不是特别了解,所以帮大家梳理了python的基础语法(文中的介绍以python3为例).如果你已然是python大牛,可以跳过 ...

随机推荐

  1. const引用和constexpr

    1.const指针 eg: (1)  int const * p = nullptr; p = new int[10]; p[3] = 4; //error 我们发现第三行没法编译,这是因为第一行的c ...

  2. jquery 中 attr 和 prop 的区别

    问题:在jQuery引入prop方法后,什么时候使用attr,什么时候使用prop,两者区别. 判断: 对于HTML元素本身所有的固有属性,在处理的时候,使用prop方法 对于HTML元素后来我们自己 ...

  3. Springboot时间参数格式化

    @Configuration public class DateTimeFormatConfiguration extends WebMvcConfigurerAdapter { @Value(val ...

  4. [LuoguP1363]幻想迷宫

    [LuoguP1363]幻想迷宫(Link) 现在有一个迷宫,从迷宫边界的任意一点可以走到对面,即:若都是路面,则可以从\((1, i)\)走到\((N, i)\).其余情况依旧.问是否可以从指定的起 ...

  5. FLV封装格式分析

    FLV官方文档:https://github.com/jiayayao/DataSheet/tree/master/media%20format/flv 一.FLV格式 FLV包括文件头(FLV he ...

  6. sublime Text3安装 markdownediting 报错 解决记录

    看了一下官方文档,也是醉了,都怪自己的无知. 在安装时候不要打开.md的文件,因为你里面有可能有一些语法错误,所以会导致报错. 解决方法关闭其他文件,在重新安装! 官方解释: 参考文档:Trouble ...

  7. Redis全方位讲解--哨兵模式(Sentinel模式)

    前言 当按照上一篇<redis主从复制>部署好之后,我们会想,一旦redis的master出现了宕机,并且我们并没有及时发现,这时候就可能会出现数据丢失或程序无法运行.此时,redis的哨 ...

  8. sql 事务处理 与 try catch

    begin transaction tr declare @error int; ; select * from Car_Brand set @error=@error+@@ERROR set @er ...

  9. urllib库使用方法1 request

    urllib是可以模仿浏览器发送请求的库,Python自带 Python3中urllib分为:urllib.request和urllib.parse import urllib.request url ...

  10. Spark Streaming核心概念与编程

    Spark Streaming核心概念与编程 1. 核心概念 StreamingContext Create StreamingContext import org.apache.spark._ im ...