日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python 和Java 哪个更适合做自动化测试?

發布時間:2023/12/9 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python 和Java 哪个更适合做自动化测试? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大家好。

從事軟件測試很多年了,從各個大廠一路摸爬滾打,現在我有幸供職于字節跳動

。個人也是從功能測試慢慢爬到了自動化測試這條路上。所以針對這個問題,我還有點發言權。

記得我一開始從功能準備轉型到自動化測試,和很多“涉事未深”的同學一樣,也面臨首選語言的選擇性障礙。在詢問行業大佬到底是選Python還是Java時,基本能得到的答案無外乎:“你想干啥”,“你會啥”,“你想怎么做” 。

后來自以為想清楚了這三個問題,大佬們卻像范大將軍似的一頓訓:“哎,謝天謝地,實用主義點,我勸你們,先弄明白自己的本職工作,把自動化的這個理念先搞懂。你測試基礎不牢固,技術棧又不熟,一說全會,一做全廢。連普通功能點都評估不好,到時候你問我要怎么寫?”

帶著這些問題,我以懵懂的心,才由深入淺的把這個“首選語言”搞明白。

軟件產品自動化測試流程圖

要想說透冰山上“自動化首選語言”這個表層問題,其實我們應該鉆到冰山下,去了解另外兩個問題:1、測試為什么要使用自動化,2、目前企業主流上是使用什么方法來實現自動化。了解了冰山下的2個問題,再來聊冰山上的問題,就能由深入淺知道答案了..

所以分享內容會稍長,我接下來的文章主題結構,就圍繞這3個問題展開:

1)為什么要使用自動化測試?
2)目前企業主流上是使用什么方法來實現自動化測試
3)Python 和Java 哪個更適合做自動化測試?

好,文章正式開始....


一、軟件測試為什么要使用自動化?

在回答這個問題之前,我們要先把自動化的理念搞清楚!

1、什么是自動化測試?

所謂自動化測試,指的是使用獨立于待測軟件的其他軟件,來自動執行測試、比較實際結果與預期并生成測試報告這一過程。

在測試流程已經確定后,測試自動化可以自動執行的一些重復但必要測試工作。也可以完成手動測試幾乎不可能完成的測試。對于持續交付和持續集成的開發方式而言,測試自動化是至關重要的

2、為什么測試工作要使用自動化?

自動化測試的工作原理其實本身粗略的講就是代替手工測試,但究竟代替的是什么?

我們以傳統手工測試舉例,我們寫一條case有前置,有步驟,有預期結果,然后人工操作,將實際結果同預期結果比對。

而自動化則是由計算機來代替我們將自動比對預期結果和實際結果的過程。

我們拿計算器舉例子:

[暫不支持下載該格式的圖片]

我們去計算加法,1+1=2

手工:a輸入1 b輸入1 預期結果為2 執行后 2=2 測試通過

程序:a=1 b=1 判斷:2==a+b 執行后 2=2 測試通過

恭喜你!現在你擁有一個僅僅能計算1+1=2正確的計算器!但凡換一種你都不能保證它對!

于是有一天機緣巧合的把a=1改成a=2 這個時候執行結果 判斷: 2==a+b 執行后 2==3 測試不通過

于是我們引入了參數化的概念。

a,b,c 加法時對應 第一組:1,1,2 現在 a=1 b=1 c=2 判斷:c==a+b 執行后 2=2 測試通過

這個時候我們通過手工測試的基礎,我們考慮我們的測試點,從傳統手工測試角度出發,我們通過等價類劃分,將數字分為,整形,浮點型,0。再根據邊界值劃分為比如最長就到3位也就是結果=999

這樣來我們將更改我們的測試參數

第2組1.1 ,1.2 ,2.3 將參數 帶入a+b=c中 執行 c==a+b c==2.3 執行后2.3==2.3 測試通過

第3組1,0,1 將參數 帶入a+b=c中 執行 c==a+b c==1 執行后1==1 測試通過

第4組100,200,300 將參數 帶入a+b=c中 執行 c==a+b c==300 執行后300==300 測試通過

上面都是正常的場景,現在來一些異常的場景,在原有的基礎上進行劃分

細化分第2組數據讓兩個浮點數相加往前進一位 1.89,1.33,3.22 將參數 帶入a+b=c中 執行 c==a+b c==3.22 執行后3.3.2199999999999998==3.22 測試不通過 這個時候就造成了精度問題可以讓研發進行修復,如保留2位小數。

當然我么還可以細化分第4組數據讓它超出邊界值999,1,超出邊界,結合第2組細分和第4組細分既是浮點型,又讓它結果超出邊界 555.55,444.55,超出邊界 等加減乘除的運算都驗證一遍,通過參數輸入,計算機輸出,結果比對。從而得到一個加法的自動化用例集,在此基礎上我們還可以有其他運算的用例集。

以上這就是最原始的一種測試方式。無論你是測試接口還是Web端,移動端,UI,歸根結底,請求方后,返回值同預期值做比較。所以每種語言幾乎都可以進行自動化測試。

既然每種語言幾乎都可以進行自動化測試,Python 和Java 哪個更適合做自動化測試?

我們以程序員第一句話 Hello World!為例:

1. 這是java的HelloWorld:

public class HelloWorld {public static void main(String args[]) {System.out.println("Hello World!");} }

2. 這是python的HelloWorld

print("HelloWorld!")

python 語言比較簡潔,開發起來比較快。 java 語言也很簡潔,但相對 python 而言比較復雜。很明顯python的簡潔不是浪得虛名。

二、目前企業主流上是使用什么方法來實現自動化測試

隨著業務不斷的積累,case逐漸增加,人員不斷調整,我們無法草率的刪除過往的case。

但也做不到上線一個夠簡單,夠獨立的功能,但每次執行自動化會回歸全部case的痛點。

于是千呼萬喚始出來了測試框架。

測試框架使得自動化測試,更便于實施處理自動化測試腳本,本身的存在的問題:如異常處理和場景恢復,彌補測試腳本本身的不足或是特殊測試需求,測試易于維護。

自動化測試框架的接口模型圖

1、Java常聽說的測試框架

1 ) JUnit

Junit可以讓您為Java代碼編寫出相應的單元測試程序。您可以將JUnit用于單元與集成測試,它還能夠支持Java 8的各種功能。

2 ) REST Assured

在Java中測試和驗證各種REST服務,Java領域帶來了語言上的簡便性。它是一種十分優秀的REST API集成測試工具。

3 ) Selenium

Selenium應該是Java UI測試中最為普遍的工具了,它允許您測試JSP頁面,甚至允許您去編寫Web應用,以驗收各種測試。

4 ) TestNG

TestNG是一種由JUnit和NUnit發展而來的測試框架,不過它引入了許多新的功能,如:annotations可以在任意大的線程池中,運行各種可用策略的測試,可以彌補JUnit和TestNG之間的差距。

2、python常見的測試框架:

1)Unittest

unittest 的一個很有用的特性是 setUp() 和 tearDown() 方法,它們提供了為測試進行準備和掃尾工作的功能,這種功能很適合用在測試對象需要復雜執行環境的情況下。當類里面定義了 setUp() 方法的時候,測試程序會在執行每條測試項前先調用此方法;同樣地,在全部測試項執行完畢后,tearDown() 方法也會被調用。

2) Pytest

目前行業內常用的就是Pytest,Pytest簡單靈活,容易上手,支持參數化。
能夠支持簡單的單元測試和復雜的功能測試,還可以用來做Selenium/Appnium等自動化測試、接口自動化測試(Pytest+Requests),Pytest具有很多第三方插件,并且可以自定義擴展。

3、企業是怎么選擇的呢?

我不說也許你不知道,其實。。。。使用JavaScript或者jQuery也可以寫一些簡單的自動化腳本~

但很多大廠都是Java開發的,對于自動化測試開發工具多數也會使用Java語言,這樣更容易溝通,思想兼容。同時面向移動端自動化對掌握Java語言工具的測試工程師來講,Java也非常對口!

當然很多大廠包括一些中小型企業,創業團隊也會使用Python進行測試。
用Python+Pytest自動化測試;
用Python+Selenium:搞定UI自動化測試,兼容性測試;
用Python Request:搞定接口測試;
用Python Locust,搞定性能測試;
用Python Scapy:搞定安全性能測試;
通過Python+mysql+Django/Flask搭建公司自己使用的自動化測試平臺。

對于移動端我所在的公司字節跳動為例,我們會使用自研Shoots方案來做全平臺自動化測試,也會通過Airtest做移動端跨平臺的UI自動化測試框架(適用于游戲和App)而這些都是基于Python語言開發的。
在數據驅動測試的情況下,在一些臨時項目,或者短期任務中,我們也常用Python這種膠水語言去寫一些腳本,生成測試數據,輔助測試任務,降低人力成本。

三、Python 和Java 哪個更適合做自動化測試?

1、先來說說Python

Python沒有很復雜的結構,前期準備也少,對人員的專項素質要求并不高,對電腦配置也沒有很高的要求,對于未經過計算機專業培訓的同學來說入門唾手可及。

尤其是Pytest框架,它的擴展也比較好:
如Pytest-selenium(集成selenium)、
Pytest-html(完美html測試報告生成)、
Pytest-rerunfailures(失敗case重復執行)、
Pytest-xdist(多CPU分發)等測試用例的skip和xfail處理,可以很好和jenkins集成,
當然report框架----allure 也支持了Pytest。
最終你將會獲得一份測試報告如Jenkins展示圖:

總結:對測試工程師而言,Python 簡單易學,龐大的充沛的生態,對現有的自動化測試框架相對完善且好用(比如 selenium,appium 等等),測試可以在框架上簡易地開發,可以定制化測試環境。

2、再來說說JAVA

Java 雖然也能做自動化測試,但相對 Python 而言并不是那么好學。但如果測試工程師想在框架上進行簡易的開發,做測試開發工作,那就必須掌握 Java 語言,需要學習更多的東西。

3、分享下我的真誠建議

Python和Java說到底是一種開發工具,一種語言,他們思想是互通的。

我們追求的本質是提高測試效率,提高測試質量,降低測試成本,降低維護成本。

語言本身無好壞。如何挑選?

要去挑你熟悉的或者周邊兒大家都在用的,這樣資源更具有優勢。因為資源越豐富學習起來的成本越低,畢竟我們不是在一個封閉的環境悶聲學技術。

可以從Python入門,等有些基礎以后也可以選擇,再往Java上面去靠,學習更多的計算機原理。

有基礎的好上手,沒基礎的好入門,就目前Python對于測試來講足夠了。


四、寫在最后

注重學習思路,測試基礎的沉淀,測試策略及測試思路的培養對自動化測試更是事半功倍。等工作的時候基本都封裝了一套自己的測試架構,大家更在乎的是使用xxxx的技術方案探討和實踐哦~~


最后感謝每一個認真閱讀我文章的人,看著粉絲一路的上漲和關注,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走

這些資料,對于做【軟件測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!凡事要趁早,特別是技術行業,一定要提升技術功底。希望對大家有所幫助…….

總結

以上是生活随笔為你收集整理的Python 和Java 哪个更适合做自动化测试?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。