幾十年來,JAVA一直是開發(fā)應(yīng)用程序服務(wù)器端的首選編程語言。盡管JUnit與開發(fā)人員一起幫助他們進行自動化單元測試,隨著時間的推移和測試的發(fā)展,當(dāng)自動化測試正在興起時,許多開源框架已經(jīng)開發(fā)出來,。在這里,我將討論2019年用于使用Selenium WebDriver和Java執(zhí)行測試自動化的前五大Java測試框架。我還將重點介紹這些頂級Java測試框架的獨特之處。
1. JUnit
Kent Beck和Erich Gamma開發(fā)的JUnit,它是xUnit的一個實例。其背后的主要目的是使Java開發(fā)人員能夠編寫腳本并執(zhí)行可重復(fù)的測試用例。它通常用于測試小塊代碼。您還可以通過將JUnit與Selenium WebDriver集成用于Java測試自動化來執(zhí)行網(wǎng)站的自動化測試。無論何時添加任何新代碼,您都需要重新執(zhí)行整個測試用例并確保沒有破損。
(1) 先決條件
該框架與Selenium WebDriver for Java高度兼容,原因是JUnit是一個基于Java的框架。作為一些先決條件,您需要:
- 在計算機中安裝最新版本的JDK。
- 下載最新版本的JUnit并設(shè)置環(huán)境。
- 熟悉面向?qū)ο缶幊陶Z言(尤其是Java)中的應(yīng)用程序開發(fā)。
(2) 使用JUnit的優(yōu)點和缺點?
JUnit 有幾個優(yōu)點:
- 在測試驅(qū)動的環(huán)境中工作的開發(fā)人員發(fā)現(xiàn)它非常有用,因為他們被迫閱讀代碼并查找是否存在異常。
- 早期檢測到錯誤,從而產(chǎn)生更可靠的代碼。
- 開發(fā)更具可讀性和無錯誤的代碼可以起到增強信心的作用。
- 使用最新版本的JUnit(版本4),可以輕松識別異常。您甚至可以執(zhí)行在舊版本的JUnit中編寫的測試用例。
- 您也可以將它與Java 5或以上版本一起使用。
JUnit的唯一缺點是:
- 該框架無法執(zhí)行依賴性測試。這就是我們需要TestNG的地方。
(3) JUnit是您的頂級Java測試框架嗎?
實現(xiàn)過程在兩個框架中都是不同的。此外,由于JUnit已經(jīng)使用了很長時間,因此有更好的社區(qū)支持,并且它已被定義為使用Selenium WebDriver進行基于Java的應(yīng)用程序的單元測試的標(biāo)準(zhǔn)。雖然TestNG的用戶很少,但社區(qū)非常龐大并且每天都在增長。因此,我們可以得出結(jié)論,TestNG或JUnit之間對Java測試框架的選擇完全取決于應(yīng)用程序的性質(zhì)和要求。
2. JBehave
我們都知道行為驅(qū)動開發(fā)或BDD。它是一種以透明的方式向業(yè)務(wù)用戶描述驗收測試的測試類型。JBehave是另一個用于BDD測試的Java測試框架,主要用于Selenium WebDriver for Java。引入JBehave背后的主要目標(biāo)是讓新手能夠輕松理解并熟悉BDD。它是一種設(shè)計理念,使應(yīng)用程序的測試階段更多地基于其行為。
(1) 先決條件
使用JBehave的理想方法是與Eclipse集成。為此,除了JDK1.7及更高版本以及Indigo上面的任何Eclipse 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
(2) JBehave的優(yōu)點和缺點
與所有其他BDD測試框架一樣,JBehave在許多方面也具有優(yōu)勢。
- 通過在具有類似規(guī)范的不同項目上工作的不同開發(fā)團隊之間實現(xiàn)更好的協(xié)調(diào),實現(xiàn)行為驅(qū)動開發(fā)的最重要目的。
- 由于規(guī)范具有類似的格式,項目經(jīng)理和利益相關(guān)者可以更清楚地了解開發(fā)團隊和QA團隊的輸出。
- 由于JBehave具有推理和思考的細節(jié),因此產(chǎn)品具有更好的規(guī)格。
- JBehave使用半正式語言,它還有一個域詞匯表,有助于在團隊結(jié)構(gòu)中保持一致的行為。
缺點:
- BDD測試工具的成功主要取決于項目中涉及的不同成員之間的溝通,利益相關(guān)者,開發(fā)人員,測試人員以及組織的管理。缺乏溝通可能會導(dǎo)致無法回答的問題和疑問,這可能最終導(dǎo)致錯誤的申請或應(yīng)用程序無法滿足業(yè)務(wù)要求,從而導(dǎo)致所有各方互相指責(zé)。
(3) JBehave是您的頂級Java測試框架嗎?
JBehave的工作方式與Serenity相同。但是,如果您的目標(biāo)是使自動驗收測試更有效,那么將Serenity與JBehave集成以獲得更好的測試體驗是理想的選擇。這是因為Serenity的核心概念基于BDD開發(fā),它還使用戶能夠編寫功能強大且豐富的測試報告。我們將在下一節(jié)中詳細討論它。
3. Serenity
Serenity是一個開源庫,用于行為驅(qū)動的測試。該框架可幫助您編寫驗收標(biāo)準(zhǔn),這些標(biāo)準(zhǔn)結(jié)構(gòu)良好且維護更多。它擴展了JUnit和WebDriver的功能。最初,它被稱為修昔底德。名稱改變背后的原因只不過是發(fā)音的難度。不過,舊名稱可以在引用時使用。
安裝Serenity的先決條件是什么?
由于該框架是基于Java的,因此您顯然需要Java或任何其他面向?qū)ο缶幊陶Z言的知識和經(jīng)驗。除此之外,在您的工作站中,您將需要:
- JDK 5或更高版本。
- Maven 3.0或以上任何版本。
- IDE工具 - Eclipse通常是所有開發(fā)人員首選的,因為Maven和Eclipse的組合更易于使用。
4. TestNG
Cedric Beust創(chuàng)建了TestNG,這是一個基于Java的開源自動化測試框架,受JUnit的啟發(fā)。但是,它更強大。NG意味著TestNG中的下一代。該框架旨在在集成期間以更好的方式執(zhí)行。該框架可幫助開發(fā)人員進行排序,分組和參數(shù)化等功能,從而使新測試用例更加靈活,并消除了之前使用的框架的缺點。
(1) 安裝TestNG的先決條件
要安裝TestNG,您需要:
- 系統(tǒng)中安裝了最新版本的JDK。
- 最新版本的Eclipse
- Java或任何其他面向?qū)ο缶幊陶Z言的知識和實踐經(jīng)驗
(2) TestNG的優(yōu)點和缺點
除了克服舊框架的缺點之外,TestNG還有幾個優(yōu)點:
- 該框架使您能夠在多個代碼片段上運行并行測試。
- 在測試用例執(zhí)行期間,您可以生成html報告。
- 可以根據(jù)優(yōu)先級對測試用例進行分組和排列。只需要讓框架運行數(shù)據(jù)庫測試或前端測試或任何你想要的東西,執(zhí)行測試就會簡單得多。
- 您可以參數(shù)化數(shù)據(jù)并使用注釋來輕松設(shè)置優(yōu)先級。
唯一的缺點是:
- 這取決于您的要求。如果您的項目不需要測試用例優(yōu)先級,則可能不想使用TestNG。此外,設(shè)置TestNG需要一點時間。
(3) TestNG是您最好的Java測試框架嗎?
雖然JUnit執(zhí)行與TestNG相同的所有功能,但它肯定有其局限性。當(dāng)單獨完成測試時,JUnit是完美的。但是當(dāng)存在依賴性時; 您無法控制先執(zhí)行哪個測試。TestNG允許您以任何您想要的順序運行測試用例,從而幫助您。此外,它還有助于參數(shù)化測試。雖然JUnit 4.5中已經(jīng)存在此功能,但TestNG更有效。如果您的項目很復(fù)雜并且可能需要一百多個測試用例,那么花一些時間設(shè)置TestNG而不是依賴于JUnit是理想的。
5. Selenide
Selenide由Selenium提供支持,是一種用于為Java應(yīng)用程序編寫穩(wěn)定、精確和富有表現(xiàn)力的UI測試用例的流行工具。像Ajax這樣的現(xiàn)代Web技術(shù)的測試具有某些復(fù)雜性,例如超時。WebDriver是用于UI測試的流行工具,但它缺乏處理超時的功能。Selenide以簡單的方式處理所有這些問題。此外,它更容易抓住和學(xué)習(xí)。您無需任何google要求并搜索教程。您需要做的就是專注于業(yè)務(wù)邏輯,只需幾行簡單的代碼,您的工作就會完成。
(1) 使用selenide的先決條件是什么?
selenide的安裝盡可能簡單。如果您使用的是Maven,則需要在pom.xml文件中添加以下行。
(2) selenide的優(yōu)點和缺點
在應(yīng)用程序的前端層,在服務(wù)器端使用Java,測試人員面臨的最常見問題是超時。您編寫的測試用例目前可能正常工作,但幾天之后,也許某些Ajax請求將比現(xiàn)在花費更多時間或者某些JavaScript將運行得更慢。此外,您的系統(tǒng)可能同時運行另一個進程,導(dǎo)致測試用例失敗。更不幸的是,你可能花了幾天時間找出這些問題的根源。Selenide通過以下方式幫助您:
- 簡潔的測試用例編寫過程,消除了超時問題。
- 支持使用AngularJS開發(fā)的應(yīng)用程序的測試
- 減少了傳統(tǒng)Selenium工具使用的大多數(shù)命令。
到目前為止,我們還沒有發(fā)現(xiàn)使用Selenide有任何明顯的缺點。
(3) Selenide是您最好的Java測試框架嗎?
對于UI測試,除了Selenium WebDriver(Selenide的父框架)之外,沒有更好的基于Java的框架。顯然,WebDriver無法解決由Ajax Timeout或運行緩慢的JavaScript或任何需要時間加載的動態(tài)內(nèi)容引起的問題。為了克服這些問題,我們之前在測試用例中使用了“ wait_until”或“ sleep”方法。有了Selenide,我們不再需要考慮這些問題了。只關(guān)注業(yè)務(wù)邏輯,測試用例可以很好地滿足其目的。
在當(dāng)前的敏捷時代,開發(fā)人員也需要參與測試。了解測試知識的重要性是專業(yè)Java開發(fā)人員與業(yè)余愛好者的區(qū)別。您沒有必要成為專家,但至少您應(yīng)具備編寫可自動驗證代碼的測試用例的基本知識。在本文中,我們通過了五個工具,這些工具是全球開發(fā)人員首選的UI測試,單元測試和應(yīng)用程序的BDD測試。根據(jù)比較結(jié)果,我們可以得出結(jié)論,如果您對自己的工作很誠懇,并希望成為專家開發(fā)人員和測試人員,那么上面提到的工具就會在您的日常任務(wù)中發(fā)揮作用。