Java or Python?測(cè)試開(kāi)發(fā)工程師如何選擇合適的編程語(yǔ)言?

很多測(cè)試開(kāi)發(fā)工程師尤其是剛?cè)胄械耐瑢W(xué)對(duì)編程語(yǔ)言和技術(shù)棧選擇問(wèn)題特別關(guān)注,畢竟掌握一門(mén)編程語(yǔ)言要花不少時(shí)間成本,也直接關(guān)系到未來(lái)的面試和就業(yè)(不同企業(yè)/項(xiàng)目對(duì)技術(shù)棧要求也不一樣),根據(jù)自身情況做一個(gè)相對(duì)正確的選擇確實(shí)要比盲目投入更明智也更高效。

目前最常見(jiàn)的情況是糾結(jié)選擇 Java 還是 Python?關(guān)于這個(gè)問(wèn)題,我特意請(qǐng)教了幾位資深的測(cè)試技術(shù)專家,在這里做一個(gè)匯總整理,集“各家”之言供大家參考,也歡迎各位朋友根據(jù)自己的經(jīng)驗(yàn)回帖補(bǔ)充意見(jiàn)。

P.S. 有一點(diǎn)需要強(qiáng)調(diào),關(guān)于編程語(yǔ)言的選擇和對(duì)比,不存在唯一正確的答案,也沒(méi)有一勞永逸的全局解決方案。這里列舉的也僅代表個(gè)人意見(jiàn),僅供參考,大家還需要結(jié)合自身情況做選擇。在保證大方向正確的前提下,快速學(xué)習(xí),努力提升自己才是王道。

image
  • 測(cè)試工程師該如何選擇合適的編程語(yǔ)言?

  • Java or Python?這兩種語(yǔ)言在一線測(cè)試工作中實(shí)際應(yīng)用是怎樣的?有哪些優(yōu)劣勢(shì)對(duì)比?

  • 對(duì)測(cè)試新人和有一定經(jīng)驗(yàn)的從業(yè)者有哪些建議?

---- @艾輝 餓了么高級(jí)測(cè)試技術(shù)經(jīng)理

Java 和 Python 這兩種語(yǔ)言在測(cè)試開(kāi)發(fā)的工作中應(yīng)用都很廣泛,如果非要分主次,Java 相對(duì)來(lái)說(shuō)更多。服務(wù)端用 Java 開(kāi)發(fā)的項(xiàng)目居多。

關(guān)于測(cè)試工程師如何做技術(shù)棧選擇?有幾點(diǎn)需要注意:

1. 業(yè)務(wù)團(tuán)隊(duì)的技術(shù)棧,即公司服務(wù)端用什么語(yǔ)言做開(kāi)發(fā);
2. 自身技術(shù)基礎(chǔ),對(duì)編程語(yǔ)言熟悉程度,個(gè)人興趣等;
3. 相關(guān)語(yǔ)言背后的技術(shù)生態(tài)是否完善,比如做服務(wù)端自動(dòng)化測(cè)試,Java 的工具庫(kù)、Python 的工具庫(kù),哪個(gè)更能解決痛點(diǎn)問(wèn)題?

對(duì)于零基礎(chǔ)和剛?cè)胄械耐瑢W(xué),建議從 Python 入手,因?yàn)?Python 語(yǔ)法簡(jiǎn)單,相對(duì)容易上手;有一定經(jīng)驗(yàn)的測(cè)試工程師則要從解決什么問(wèn)題方面考慮,然后建議 Python、Java 都熟悉掌握,能緊跟行業(yè)技術(shù)趨勢(shì)和要求,比如近幾年 Go 越來(lái)越火,不排除測(cè)試開(kāi)發(fā)工程師之后要學(xué)習(xí)掌握 Go 語(yǔ)言。

測(cè)試開(kāi)發(fā)的技術(shù)廣度要求相對(duì)更高一些,因?yàn)槟悴恢老路莨ぷ髦?,公司業(yè)務(wù)會(huì)用到的技術(shù)棧情況,所以需要掌握迅速遷移學(xué)習(xí)的能力。但就目前來(lái)看,Java 和 Python 兩門(mén)語(yǔ)言能熟練應(yīng)用基本就可以滿足大部分測(cè)試開(kāi)發(fā)工作的需要,其他 Case 根據(jù)實(shí)際情況來(lái)看。

---- @方程無(wú)解 美團(tuán)資深測(cè)試技術(shù)專家、Python 自動(dòng)化測(cè)試技術(shù)專家

很多同學(xué)都有這個(gè)困擾。Java 和 Python 是現(xiàn)在開(kāi)發(fā)和測(cè)試行業(yè)的兩大主流語(yǔ)言。目前 Java 的市場(chǎng)占有率是第一,Python 還是第四,但 Java 的占有率在走下坡路,尤其是在 Oracle 宣布新版 JDK 收費(fèi)后,會(huì)加速這種趨勢(shì)。Python 作為大數(shù)據(jù)工程和 AI 的主流開(kāi)發(fā)語(yǔ)言,一直保持強(qiáng)勁的上升趨勢(shì),即使目前 AI 還沒(méi)有大量的成功的商業(yè)案例(盈利的)就已經(jīng)很火爆了,一旦成功的商業(yè)模式建立起來(lái),Python 開(kāi)發(fā)和測(cè)試的需求更會(huì)爆發(fā)性增長(zhǎng)。

Java 和 Python 通常在大廠里面都是并行存在的,但在創(chuàng)業(yè)型公司里面,Python 做測(cè)試開(kāi)發(fā)的比例比 Java 高,創(chuàng)業(yè)型公司里面要求快速推進(jìn),推進(jìn)速度會(huì)比大公司更激進(jìn)。

Java 目前在市場(chǎng)上畢竟還是占有率第一的,Java 測(cè)試開(kāi)發(fā)的絕對(duì)需求量會(huì)比 Python 多,但會(huì) Python 的人相對(duì)比較少,競(jìng)爭(zhēng)也會(huì)小一些。Java 用來(lái)做測(cè)試開(kāi)發(fā),還是太重了點(diǎn),技術(shù)點(diǎn)比較復(fù)雜,學(xué)習(xí)曲線長(zhǎng),編寫(xiě)測(cè)試代碼的速度慢,Python 編寫(xiě)速度快,非常適合測(cè)試資源不充足的情況下,快速開(kāi)發(fā)測(cè)試工具。通常實(shí)現(xiàn)一個(gè)功能,Python 的代碼量是 Java 的 1/3-1/5。

很多大廠之所以一直還用 Java 做測(cè)試開(kāi)發(fā),主要前幾年積累下來(lái)的工具都是 Java 的,前幾年會(huì) Python 做測(cè)試開(kāi)發(fā)的人太少了,但現(xiàn)在大廠新工具的開(kāi)發(fā),更多人選擇了 Python。

對(duì)于小白和剛?cè)胄械耐瑢W(xué),毫無(wú)疑問(wèn),直接學(xué) Python,這個(gè)沒(méi)有其他要討論的。對(duì)于 Java 開(kāi)發(fā)一年經(jīng)驗(yàn)以上,或者寫(xiě)過(guò) 1W 行以上代碼的同學(xué),在繼續(xù)深入學(xué)習(xí) Java 的同時(shí),也要開(kāi)始學(xué) Python。在實(shí)際工作當(dāng)中,用Python 寫(xiě)小工具,很方便。Python 對(duì) Java、C、 C++ 的調(diào)用都有成熟的框架,而 Java 沒(méi)有。另,除了 Python 和 Java,如果大家還想學(xué)習(xí)一門(mén)新的語(yǔ)言,我建議大家學(xué)習(xí) Go,那也是一個(gè)明日之星。

關(guān)于測(cè)試開(kāi)發(fā)工程師如何做技術(shù)棧選擇的建議:關(guān)于測(cè)試技術(shù),建議初級(jí)測(cè)試人員(1-2年),先在一個(gè)專項(xiàng)測(cè)試技術(shù)上發(fā)展,然后再擴(kuò)展到全棧(API、Web、App、后臺(tái)、安全性測(cè)試、性能測(cè)試、數(shù)據(jù)庫(kù)、Linux、中間件等)。你的技術(shù)體系應(yīng)該是 T 型結(jié)構(gòu),測(cè)試人員的知識(shí)體系應(yīng)該比開(kāi)發(fā)人員更全面,要學(xué)的東西很多。除了測(cè)試技術(shù)外,測(cè)試人員也要不停的學(xué)習(xí)開(kāi)發(fā)技術(shù),公司用什么開(kāi)發(fā)技術(shù),你就要跟進(jìn)學(xué)習(xí)。和開(kāi)發(fā)人員的交流保持在一個(gè)頻道下,理解其設(shè)計(jì)就會(huì)更順暢。

---- @孫高飛 第四范式資深測(cè)試開(kāi)發(fā)工程師

建議初學(xué)者先掌握 Python,而高級(jí)的測(cè)試開(kāi)發(fā)者兩個(gè)都要會(huì)。一般高級(jí)工程師主 Java,副 Python。

另,語(yǔ)言跟某些業(yè)務(wù)場(chǎng)景也有綁定關(guān)系,比如 RPC 協(xié)議測(cè)試,在國(guó)內(nèi)Dubbo 這個(gè)框架很流行,就是基于 Java 調(diào)用的。很多 2B 企業(yè)提供的 SDK 測(cè)試,也大都是基于 Java 的 SDK 測(cè)試。

而且,大型自動(dòng)化項(xiàng)目通常是團(tuán)隊(duì)多人協(xié)作的,Java 由于靜態(tài)語(yǔ)言特性不容易出錯(cuò),而 Python 容錯(cuò)性相對(duì)來(lái)說(shuō)就要差一些,代碼多了容易 hold 不住。

主要就是開(kāi)發(fā)圈子里 Java 太流行了,導(dǎo)致測(cè)試?yán)锩?Java 系比較有好處。

---- @徐實(shí) 知乎測(cè)試技術(shù)專家

對(duì)于語(yǔ)言,第一選擇是最好和研發(fā)的語(yǔ)言技術(shù)棧一致。

在測(cè)試過(guò)程中,如果只是接口自動(dòng)化,或者基礎(chǔ)平臺(tái)開(kāi)發(fā),Java 與 Python 兩者差異并不大。建議優(yōu)先選擇更熟悉的語(yǔ)言。

一些開(kāi)源自動(dòng)化框架用 Python 的相對(duì)多些,在日常工作中一些腳本工具用 Python 寫(xiě)會(huì)快很多。

其實(shí)個(gè)人覺(jué)著代碼技術(shù)棧的選擇方面,通過(guò) Java 入門(mén)要比 Python更面向?qū)ο笠恍瑢?duì)一些設(shè)計(jì)模式的學(xué)習(xí)也更友好一些。另外,從開(kāi)發(fā)角度來(lái)講,Java 的穩(wěn)定性和可靠性及現(xiàn)有解決方案會(huì)更好一些。

如果面向平臺(tái)開(kāi)發(fā),第一門(mén)入門(mén)語(yǔ)言可以選 Java,語(yǔ)言一通百通,Java 上手后學(xué)習(xí) Python 的成本也不高。

但如果只是自動(dòng)化測(cè)試框架,工具,兩者都可以,我個(gè)人更傾向Python,新手寫(xiě)起來(lái)很快~。另外,如果是大數(shù)據(jù)方向的測(cè)開(kāi),最好用 Java。而如果策略算法領(lǐng)域的測(cè)開(kāi),Python 則更好。

---- @思寒 測(cè)試專家

Java 和 Python 都不錯(cuò)。這是最大眾的語(yǔ)言。
Python 最直接,生態(tài)強(qiáng)大,但是沒(méi)有 Java 強(qiáng)大。
Java 的話是分兩層的。JVM + JVM 之上的各種語(yǔ)言。也就是說(shuō)你用Python、Ruby、Java、Groovy、Kotlin、Scala 等都可以調(diào)用Java 編寫(xiě)的庫(kù),生態(tài)上有優(yōu)勢(shì)。

但這個(gè)原因還是次要的,主要還是將來(lái)要做測(cè)試左移和測(cè)試右移,分析代碼、統(tǒng)計(jì)覆蓋率等都得跟研發(fā)保持一致,而國(guó)內(nèi)用 Java 的公司可能占了 90%;

另可參考 測(cè)試行業(yè)的編程語(yǔ)言之爭(zhēng) by 思寒

---- @范令凱 58 到家測(cè)試專家

1. 針對(duì)沒(méi)有接觸過(guò)代碼的小白,建議從 Python 入手,門(mén)檻低,學(xué)習(xí)成本比較低;
2. 針對(duì)大數(shù)據(jù)的測(cè)試建議 Python;
3. 本身 Python 和 Java 沒(méi)有特別大的優(yōu)劣之分,都有足夠的庫(kù)和插件可以完成我們的測(cè)試。遇到問(wèn)題也都可以從網(wǎng)上快速的找到解決方案。所以選擇 Python 還是 Java,最主要思路還是跟公司的技術(shù)棧保持一致。

比如我這邊有 Dubbo 的接口,建議選擇 Java,從接口測(cè)試到后續(xù)的代碼走讀,都比較方便(當(dāng)然 Python 也可以實(shí)現(xiàn) Dubbo 的接口測(cè)試,但可能成本比較高)。

---- @恒溫 測(cè)試專家

首先,編程語(yǔ)言本身沒(méi)有優(yōu)劣之分,每種語(yǔ)言的粉絲都認(rèn)為自己用的語(yǔ)言是最好的,就像 PHP 是世界上最好的語(yǔ)言一樣。在工業(yè)界,我們可以看[ TIOBE 的語(yǔ)言排名]

(http://www.cncms.com.cn/hardware/20181109/11091503.html)。

一般來(lái)說(shuō) Java 和 C 都是高居版首的。至于為什么,網(wǎng)上的說(shuō)法比較多,總結(jié)來(lái)說(shuō)就是 Java 跨平臺(tái),C 語(yǔ)言和底層匯編最接近。但是其實(shí)有一個(gè)林迪效應(yīng),對(duì)于會(huì)自然消亡的事物,生命每增加一天,其預(yù)期壽命就會(huì)縮短一些。而對(duì)于不會(huì)自然消亡的事物,生命每增加一天,則可能意味著更長(zhǎng)的預(yù)期剩余壽命。Java 和 C語(yǔ)言感覺(jué)就是這樣。

Python 其實(shí)還算門(mén)新語(yǔ)言,1991年出來(lái)的吧,在互聯(lián)網(wǎng)和移動(dòng)互聯(lián)網(wǎng)兩個(gè)時(shí)代,也沒(méi)有太大的亮點(diǎn),所以一直被人當(dāng)做腳本語(yǔ)言使用。直到 Python 作者加入了谷歌,然后谷歌大力推 Python,你也知道,中國(guó)的技術(shù)都是熱鬧驅(qū)動(dòng)和老外驅(qū)動(dòng),老外搞啥,就搞啥,然后慢慢地帶起了 Python,到了大數(shù)據(jù)時(shí)代,更是厲害,一躍到了前10,這主要得益于 Python 的學(xué)習(xí)曲線比 Java 簡(jiǎn)單平滑,然后因?yàn)橐郧耙恢痹诳茖W(xué)計(jì)算這塊使用,有大量的數(shù)據(jù)生態(tài)庫(kù)。

至于在公司的使用情況呢,國(guó)外不知道,國(guó)內(nèi)來(lái)看的話,據(jù)我所了解的公司來(lái)看,Java 居多,尤其是進(jìn)入 IOT 時(shí)代,Android 稱王的時(shí)代又回來(lái)了,那用 Java 的更是多了。再去看看測(cè)試相關(guān)的開(kāi)源項(xiàng)目或者類庫(kù),也大部分是 Java 的。那最近最火的 Appium 來(lái)說(shuō),Java Client 是更新最快,實(shí)現(xiàn)最好的。WebDriver 也是如此。

如果讓我推薦用什么語(yǔ)言的話,我會(huì)說(shuō),

1. 你的公司大部分人用什么,你就用什么。
2. 如果你精通 Python,那么學(xué)個(gè) Java 也不難。
3. 如果你精通 Java,學(xué) Python 也很容易。
4. 如果你都不會(huì),建議 Java 和 Python 都學(xué)一下。多一個(gè)技能,多一口飯。
5. 認(rèn)真學(xué)一門(mén)語(yǔ)言,別撿芝麻丟西瓜。

---- @大貓 測(cè)試技術(shù)專家

這兩門(mén)語(yǔ)言都是必須要學(xué)的,并且大部分自動(dòng)化都支持雙版本,Python 更高級(jí),Java 更底層點(diǎn)。二者都依賴生態(tài)庫(kù),小型項(xiàng)目用 Python,其他用 Java。學(xué)習(xí)難度是 Java 高于Python。Java 反射和工程性高于 Python。常規(guī)的效率上都差不多。Python 和 Java 都有推導(dǎo)表達(dá)式。

建議就是都學(xué),二門(mén)語(yǔ)言加一起認(rèn)真學(xué)一年就很好了。只要有耐心。:)

---- @曉光 測(cè)試技術(shù)專家

跟被測(cè)物同語(yǔ)言最好。

1. interop 不會(huì)有坑。
2. 開(kāi)發(fā)能讀懂,溝通不會(huì)有坑。
3. 如果是單元測(cè)試或者結(jié)合很緊的接口測(cè)試可以跟生產(chǎn)代碼放在一起。加入 CI 經(jīng)常跑,保持有效性。

(文章來(lái)源于霍格沃茲測(cè)試學(xué)院)

點(diǎn)擊領(lǐng)?。鹤詣?dòng)化+側(cè)開(kāi)+性能+簡(jiǎn)歷+面試核心教程資料
http://qrcode.testing-studio.com/f?from=jianshu&url=https://ceshiren.com/t/topic/3595

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容