Selenium 4 Java的最佳測試框架
幾十年來,Java一直是開發應用程式伺服器端的首選程式語言。儘管JUnit一直在與開發人員一起幫助他們進行自動化的單元測試,但隨著時間的推移和測試行業的發展,特別是伴隨著自動化測試的興起,已經開發了許多基於Java的開源框架,它們在驗證和業務邏輯方面與JUnit有所不同。在這裡,我將討論用於使用Selenium WebDriver執行測試自動化的頂級Java測試框架,還將重點介紹這些頂級Java測試框架的優缺點和獨到之處。
JUnit
Junit是開發人員基於xUnit基礎上開發的一個實用案例。其最初主要目的是使Java開發人員能夠編寫指令碼並執行可重複的測試用例。它通常用於測試一小段程式碼。您還可以通過將JUnit與用於測試自動化的Selenium整合來執行網站的自動化測試。每當新增任何新程式碼需要發版時,都需要重新執行整個測試用例,並確保沒有不影響原有功能。
有哪些先決條件?
該框架與Selenium WebDriver for Java高度相容,因此,JUnit和Selenium WebDriver也是完全相容的,作為某些先決條件,您需要
- 在工作專案中使用較新版本的JDK。
- 下載最新版本的JUnit並設定環境。
- 對面向物件的程式語言(Java)的應用程式開發有很好的使用經驗。
使用JUnit的優缺點?
JUnit有幾個優點:
- 在受測試驅動的環境中工作的開發人員發現它非常有好處,因為他們被迫閱讀程式碼並查詢是否存在BUG。
- 儘早檢測到錯誤,從而使程式碼可靠性大大提高。
- 開發更具可讀性且無錯誤的程式碼可以增強可信度。
- 使用最新版本的JUnit(版本5),可以輕鬆識別異常,也可以執行用舊版JUnit編寫的測試用例。
- 您也可以將其與Java 5以及更高版本一起使用。
JUnit的唯一缺點是:
- 該框架無法執行依賴性測試。那就是我們需要TestNG的地方。
JUnit是您的最佳Java測試框架嗎?
JUnit和TestNG都執行相同的工作。它們的功能幾乎相同,只是在兩個框架中,JUnit無法進行依賴測試,並且引數化測試的實現過程不同。另外,由於JUnit長期使用,因此有更好的社群支援,它已被定義為使用Selenium WebDriver for Java的應用程式進行單元測試的標準。儘管TestNG的使用者很少,但社群仍然很大,並且每天都在增長。因此,我們可以得出結論,對於Java測試框架,在TestNG或JUnit之間進行選擇完全取決於應用程式的性質和要求。
JBehave
我們都知道行為驅動開發(BDD)。這種測試型別以對業務使用者透明的方式描述了驗收測試。JBehave是用於BDD測試的另一個Java測試框架,主要與Selenium WebDriver for Java一起使用。使用JBehave的主要目的是使新手可以輕鬆理解和熟悉BDD。這是一種設計理念,它使應用程式的測試階段更多地基於其行為。
有哪些先決條件?
使用JBehave的理想方法是與IDE整合。為此,除了必要的執行環境搭建配置,您還需要幾個jar檔案,例如
Junit-4.1.0.jar,Jbehave-core-3.8.jar,Commons-lang-2.4.jar,Paranamer-2.5.jar,Freemarker-2.3.9.jar,Org.apacje.commons.io.jar,Org.apache.commons.collections.jar,Plexus-utils-1.1.jar
JBehave的優缺點
像所有其他BDD測試框架一樣,JBehave在許多方面也具有優勢。
- 使規範相似的不同專案的不同開發團隊之間更好地協調,可以達到行為驅動開發的最重要目的。
- 由於規範相似,因此專案經理和利益相關者可以更好地瞭解開發團隊和質量檢查團隊的輸出。
- 由於JBehave具有詳細的邏輯推理和思考功能,因此產品具有更好的可靠性。
- JBehave使用半正式語言,並且還具助於在團隊結構中保持一致的行為的功能。
跟其他任何BDD測試工具一樣,JBehave只有一個缺點。
- BDD測試工具的成功主要取決於專案中不同成員,利益相關者,開發人員,測試人員以及組織管理層之間的溝通。缺乏溝通可能會導致無法及時發現和快速解決的問題,進而可能導致導致應用程式發生錯誤或者與實際業務需求相悖,最終導致所有各方互相指責(甩鍋)。
JBehave是適合您的最佳Java測試框架嗎?
JBehave的工作方式與Serenity相同。但是,如果您打算提高自動驗收測試的效率,則最好將Serenity與JBehave整合在一起,以利用更好的測試體驗。這是因為Serenity的核心概念基於BDD開發,並且還使使用者能夠編寫功能強大且豐富的測試報告。
Selenide
Selenide基於Selenium的測試框架,並由Selenium提供技術支援,是一種流行的工具,用於精確和更加直觀的UI測試用例。對現代Web技術(如Ajax)進行測試具有一定的複雜性,例如超時、等待和斷言等等。WebDriver是用於UI測試的流行工具,但缺少處理超時的功能。Selenide以簡單的方式處理所有這些問題。另外,它更容易掌握和學習。只需要做的只是專注於業務邏輯,僅需執行幾行簡單的程式碼即可完成您的工作。
Selenide的前提條件是什麼?
Selenide的安裝非常簡單。如果使用的是Maven,則需要在pom.xml
檔案中新增以下幾行。
<dependency>
<groupId>com.codeborne</groupId>
<artifactId>selenide</artifactId>
<version>5.1.0</version>
<scope>test</scope>
</dependency>
Selenide的優缺點
在伺服器端使用Java的應用程式的前端層中,測試人員面臨的最常見問題是超時。您編寫的測試用例目前可能工作正常,但是幾天後,也許一些Ajax請求將比現在花費更多的時間,或者某些Javascript的執行速度會變慢。另外,您的系統可能同時執行另一個程序,從而導致測試用例失敗。更不幸的是,您可能需要花費數天的時間才能找出這些問題的根源。硒化物可以幫助您
- 簡潔的測試用例編寫過程消除了超時問題。
- 支援使用AngularJS開發的應用程式的測試
- 減少了傳統Selenium工具使用的大多數呼叫函式。
到目前為止,我們還沒有發現使用Selenide明顯缺點,大概唯一勉強稱作缺點的就是語法中各種符號。
下面放一個Demo大家就懂了:
@Test
public void userCanLoginByUsername() {
open("/login");
$(By.name("user.name")).setValue("johny");
$("#submit").click();
$(".loading_progress").should(disappear); // Waits until element disappears
$("#username").shouldHave(text("Hello, Johny!")); // Waits until element gets text
}
網上有人發現這個Demo跑不起來,其實是缺少了必要的初始化步驟,如下:
Configuration.browser = "Chrome";
Configuration.baseUrl="https://www.baidu.com";
Selenide是最適合您的Java測試框架嗎?
對於UI測試,除了Selenide的父框架Selenium WebDriver之外,沒有更好的基於Java的框架。顯然,WebDriver無法解決由Ajax超時,JavaScript執行緩慢或任何需要花費時間載入的動態內容引起的問題。為了克服問題,我們先前在測試案例中使用了wait_until
或sleep
方法。使用Selenide,我們不再需要考慮那些問題。僅關注業務邏輯,測試用例就可以很好地實現其目的。
Spock
Spock是一個從JUnit派生的測試自動化框架,用Groovy編寫,允許您在JVM(Java虛擬機器)上執行DDT(資料驅動測試)。它提供了對JVM支援的所有語言的相容性。Spock提供的UI與任何其他Java測試框架相比都非常出色。程式碼的可讀性和文件簡潔明瞭,並且可以解釋簡單的句子,使其成為非常方便的Java測試框架。
Spock作為Java測試框架的優勢
Spock的優點:
- 出色的可讀性,提供與普通英語句子的相容性。
- Spock使模擬和存根比以往任何時候都容易。而且,兩者都是內建的。
- 引數化更短,更清晰。
- 提供周圍的環境,使查詢故障原因更加容易。
- 富有表現力和簡單的DSL(特定於域的語言)。
Spock的缺點:
- 您需要對Groovy有基本的瞭解。
- 如果您不熟悉Spock,則可能會覺得該框架有點不方便,但是一旦精通它,就不會使用其他Java測試框架。
- 對於其他基於Java的測試框架的高階語法相容性較差(比如Mockito)
Spock是最適合您的Java測試框架嗎?
Spock擁有如此多的優點,相信Spock會成為BDD(行為驅動開發)的最佳Java測試框架,因為它使用簡單,直觀的UI和強大的DSL。如果碰巧你的專案是基於JVM的應用程式那他絕對是你的不二選擇。
下面是之前寫過的三篇spock的文章,點選檢視詳情
- Maven和Gradle中配置單元測試框架Spock
- Groovy單元測試框架spock基礎功能Demo
- Groovy單元測試框架spock資料驅動Demo
總結
在當前的敏捷時代,開發人員還需要參與測試。不必人人都是專家,但是至少應該具備編寫自動驗證程式碼的測試用例的基本知識。本文介紹了幾種工具,這些工具為應用程式的UI測試,單元測試和BDD測試提供了開發人員的首選。如果真的想在工作表現突出,並希望成為更專業開發人員和測試人員,那麼上面提到的工具將對日常工作絕對有所幫助。
- 鄭重宣告:文章禁止第三方(騰訊雲除外)轉載、發表,事情原委測試窩,首頁抄我七篇原創還拉黑,你們的良心不會痛嗎?
技術類文章精選
- java一行程式碼列印心形
- Linux效能監控軟體netdata中文漢化版
- 介面測試程式碼覆蓋率(jacoco)方案分享
- 效能測試框架第二版
- 如何在Linux命令列介面愉快進行效能測試
- 圖解HTTP腦圖
- 將swagger文件自動變成測試程式碼
- 五行程式碼構建靜態部落格
- 基於java的直線型介面測試框架初探
非技術文章精選
- 為什麼選擇軟體測試作為職業道路?
- 寫給所有人的程式設計思維
- 成為優秀自動化測試工程師的7個步驟
- 成為自動化測試的7種技能
- 自動化測試生命週期
- 如何在DevOps引入自動化測試
- Web端自動化測試失敗原因彙總
- 如何在DevOps引入自動化測試
- 測試人員如何成為變革的推動者
- 編寫測試用例的技巧