2019年用于自动化的5个最佳Java测试框架
幾十年來,Java一直是開發(fā)應(yīng)用程序服務(wù)器端層的首選編程語言。 盡管JUnit一直在與開發(fā)人員一起幫助他們進(jìn)行自動(dòng)化的單元測試,但是隨著時(shí)間的推移和測試的發(fā)展,當(dāng)自動(dòng)化測試不斷增長時(shí),已經(jīng)開發(fā)了許多基于Java的開源框架,并且JUnit在驗(yàn)證和業(yè)務(wù)邏輯方面。 在這里,我將討論2019年用于使用Selenium WebDriver和Java執(zhí)行測試自動(dòng)化的5個(gè)頂級(jí)Java測試框架。 我還將重點(diǎn)介紹這些頂級(jí)Java測試框架的獨(dú)特之處。
Kent Beck和Erich Gamma開發(fā)人員JUnit,它是xUnit的一個(gè)實(shí)例。 其主要目的是使Java開發(fā)人員能夠編寫腳本并執(zhí)行可重復(fù)的測試用例。 它通常用于測試一小段代碼。 您還可以通過將JUnit與用于Java測試自動(dòng)化的Selenium WebDriver集成來執(zhí)行網(wǎng)站的自動(dòng)化測試。 每當(dāng)添加任何新代碼時(shí),都將要求您重新執(zhí)行整個(gè)測試用例,并確保沒有破損。
有哪些先決條件?
該框架與Selenium WebDriver for Java高度兼容,因此,JUnit是基于Java的框架,因此,作為某些先決條件,您需要
- 在您的工作站中安裝了最新版本的JDK。
- 下載最新版本的JUnit并設(shè)置環(huán)境。
- 對(duì)面向?qū)ο蟮木幊陶Z言(特別是Java)的應(yīng)用程序開發(fā)有很好的了解。
使用JUnit的優(yōu)缺點(diǎn)?
JUnit有幾個(gè)優(yōu)點(diǎn)。
- 在受測試驅(qū)動(dòng)的環(huán)境中工作的開發(fā)人員發(fā)現(xiàn)它非常有益,因?yàn)樗麄儽黄乳喿x代碼并查找是否存在異常。
- 盡早檢測到錯(cuò)誤,從而使代碼更可靠。
- 開發(fā)更具可讀性且無錯(cuò)誤的代碼可以增強(qiáng)置信度。
- 使用最新版本的JUnit(版本4),可以輕松識(shí)別異常。 甚至,您也可以執(zhí)行用舊版JUnit編寫的測試用例。
- 您也可以將其與Java 5或更高版本一起使用。
- 該框架無法執(zhí)行依賴關(guān)系測試。 那就是我們需要TestNG的地方。
JUnit的唯一缺點(diǎn)是
- 該框架無法執(zhí)行依賴性測試。 那就是我們需要TestNG的地方。
JUnit是您的最佳Java測試框架嗎?
JUnit和TestNG都執(zhí)行相同的工作。 它們的功能幾乎相同,只是在兩個(gè)框架中都沒有使用JUnit進(jìn)行依賴測試,并且參數(shù)化測試的實(shí)現(xiàn)過程不同。 另外,由于JUnit長期使用,因此有更好的社區(qū)支持,它已被定義為使用Selenium WebDriver for Java的應(yīng)用程序進(jìn)行單元測試的標(biāo)準(zhǔn)。 盡管TestNG的用戶很少,但社區(qū)仍然很大,并且每天都在增長。 因此,我們可以得出結(jié)論,對(duì)于Java測試框架,在TestNG或JUnit之間進(jìn)行選擇完全取決于應(yīng)用程序的性質(zhì)和要求。
如果您希望開始使用JUnit作為Java測試框架,則可以通過以下逐步過程使用JUnit&Selenium進(jìn)行自動(dòng)化測試,以實(shí)現(xiàn)瀏覽器兼容性。
我們都知道行為驅(qū)動(dòng)開發(fā)或BDD。 這種測試類型以對(duì)業(yè)務(wù)用戶透明的方式描述了驗(yàn)收測試。 JBehave是用于BDD測試的另一個(gè)Java測試框架,主要與Selenium WebDriver for Java一起使用。 引入JBehave的主要目的是使新手可以輕松理解和熟悉BDD。 這是一種設(shè)計(jì)理念,它使應(yīng)用程序的測試階段更多地基于其行為。
有哪些先決條件?
使用JBehave的理想方法是與Eclipse集成。 為此,除了上面的JDK1.7和Indigo上面的任何Eclipse IDE,您還需要幾個(gè)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的優(yōu)缺點(diǎn)
像所有其他BDD測試框架一樣,JBehave在許多方面也具有優(yōu)勢(shì)。
- 通過使從事相似規(guī)格的不同項(xiàng)目的不同開發(fā)團(tuán)隊(duì)之間更好地協(xié)調(diào),可以達(dá)到行為驅(qū)動(dòng)開發(fā)的最重要目的。
- 由于規(guī)范的格式相似,因此項(xiàng)目經(jīng)理和利益相關(guān)者可以更好地了解開發(fā)團(tuán)隊(duì)和質(zhì)量檢查團(tuán)隊(duì)的輸出。
- 由于JBehave具有詳細(xì)的推理和思考功能,因此產(chǎn)品具有更好的規(guī)格。
- JBehave使用半正式語言,并且還具有領(lǐng)域詞匯表,該詞匯表有助于在團(tuán)隊(duì)結(jié)構(gòu)中保持一致的行為。
嗯,與其他任何BDD測試工具一樣,JBehave只有一個(gè)缺點(diǎn)。
- BDD測試工具的成功主要取決于項(xiàng)目中不同成員,利益相關(guān)者,開發(fā)人員,測試人員以及組織管理層之間的溝通。 缺乏溝通可能會(huì)導(dǎo)致無法回答的問題和疑問,最終可能導(dǎo)致錯(cuò)誤的應(yīng)用程序或不滿足業(yè)務(wù)要求的應(yīng)用程序,從而導(dǎo)致所有各方互相指責(zé)。
JBehave是適合您的最佳Java測試框架嗎?
JBehave的工作方式與Serenity相同。 但是,如果您打算提高自動(dòng)驗(yàn)收測試的效率,則最好將Serenity與JBehave集成在一起,以利用更好的測試體驗(yàn)。 這是因?yàn)镾erenity的核心概念基于BDD開發(fā),并且還使用戶能夠編寫功能強(qiáng)大且豐富的測試報(bào)告。 我們將在下一節(jié)中對(duì)此進(jìn)行更多討論。
Serenity是一個(gè)用于行為驅(qū)動(dòng)測試的開源庫。 該框架可幫助您編寫結(jié)構(gòu)合理且維護(hù)更完善的驗(yàn)收標(biāo)準(zhǔn)。 它擴(kuò)展了JUnit和WebDriver的功能。 最初,它被稱為修昔底德。 更名的原因僅僅是發(fā)音困難。 仍然可以在引用時(shí)使用舊名稱。
安裝Serenity的前提條件是什么?
由于該框架是基于Java的,因此您顯然需要Java或任何其他面向?qū)ο蟮木幊陶Z言的知識(shí)和經(jīng)驗(yàn)。 除此之外,在您的工作站中,您將需要
- JDK 5或更高版本。
- Maven 3.0或以上任何版本。
- IDE工具–所有開發(fā)人員通常首選Eclipse,因?yàn)镸aven和Eclipse的組合更易于使用。
寧靜的利與弊
讓我們看一看Serenity帶給行為驅(qū)動(dòng)開發(fā)世界的優(yōu)勢(shì)。
- 該框架可幫助測試人員創(chuàng)建REST服務(wù)的測試用例。
- 用戶不必花費(fèi)大量時(shí)間來維護(hù)或構(gòu)建自己的自動(dòng)化框架。
- 它在測試用例的定義和理解及其實(shí)現(xiàn)方式之間保持平衡,而不是界限。
- 它可以與許多自動(dòng)化框架(如Selenium,JBehave),基于Java的高級(jí)開發(fā)框架(如Spring)以及甚至與JIRA之類的持續(xù)集成工具集成在一起。
Serenity的唯一缺點(diǎn)就像JBehave。 為了利用其支持行為驅(qū)動(dòng)開發(fā)的完整功能,需要在項(xiàng)目參與者之間進(jìn)行持續(xù)的溝通。
Serenity是最適合您的Java測試框架嗎?
該工具主要用于報(bào)告驗(yàn)收標(biāo)準(zhǔn)。 但是,使用Serenity編寫的報(bào)告比JBehave或任何其他BDD框架提供的信息豐富得多。 它還可以幫助開發(fā)人員編寫質(zhì)量更高的自動(dòng)化測試案例,并為RestAssured和Selenium WebDriver提供支持,從而使測試人員可以更快,更輕松地編寫基于自動(dòng)化的驗(yàn)收測試標(biāo)準(zhǔn)。
Cedric Beust創(chuàng)建了TestNG,這是一個(gè)受JUnit啟發(fā)的基于Java的開源測試框架。 但是,它功能更強(qiáng)大。 NG表示TestNG中的下一代。 該框架旨在在集成期間以更好的方式執(zhí)行。 該框架為開發(fā)人員提供了諸如排序,分組和參數(shù)化之類的功能,從而使新的測試用例更加靈活,并消除了先前使用的框架的缺點(diǎn)。
安裝TestNG的前提條件
要安裝TestNG,您將需要
- 系統(tǒng)中已安裝最新版本的JDK。
- 最新版本的Eclipse
- Java或任何其他面向?qū)ο蟮木幊陶Z言的知識(shí)和動(dòng)手經(jīng)驗(yàn)
TestNG的優(yōu)缺點(diǎn)
除了克服舊框架的缺點(diǎn)之外,TestNG還具有許多優(yōu)點(diǎn)。
- 該框架使您可以在多個(gè)代碼段上運(yùn)行并行測試。
- 在執(zhí)行測試用例期間,您可以生成一個(gè)HTML報(bào)告。
- 測試用例可以根據(jù)優(yōu)先級(jí)進(jìn)行分組和安排。 僅通過要求框架運(yùn)行數(shù)據(jù)庫測試或前端測試或任何您想要的東西,執(zhí)行測試就容易得多。
- 您可以參數(shù)化數(shù)據(jù)并使用批注輕松設(shè)置優(yōu)先級(jí)。
唯一的缺點(diǎn)是
- 這取決于您的要求。 如果您的項(xiàng)目不需要測試用例的優(yōu)先級(jí),則可能不希望使用TestNG。 此外,設(shè)置TestNG需要一些時(shí)間。
TestNG是最適合您的Java測試框架嗎?
盡管JUnit執(zhí)行與TestNG相同的功能,但是它具有一定的局限性。 當(dāng)單獨(dú)進(jìn)行測試時(shí),JUnit是完美的選擇。 但是,當(dāng)存在依賴性時(shí),您將無法控制首先執(zhí)行哪個(gè)測試。 TestNG允許您以所需順序運(yùn)行測試用例,從而為您提供幫助。 此外,它還有助于參數(shù)化測試。 盡管此功能已在JUnit 4.5中提供,但TestNG更為有效。 如果您的項(xiàng)目很復(fù)雜并且您可能需要一百多個(gè)測試用例,那么花一些時(shí)間并設(shè)置TestNG而不是依賴JUnit是理想的選擇。
如果您是TestNG的新手,那么這里是一份完整的指南,用于運(yùn)行您的第一個(gè)TestNG自動(dòng)化腳本,以使用帶有Java的Selenium WebDriver來執(zhí)行自動(dòng)跨瀏覽器測試。
Selenide由Selenium提供支持,是一種流行的工具,用于為Java應(yīng)用程序編寫穩(wěn)定,精確和富于表現(xiàn)力的UI測試用例。 對(duì)現(xiàn)代Web技術(shù)(如Ajax)進(jìn)行測試具有一定的復(fù)雜性,例如超時(shí)。 WebDriver是用于UI測試的流行工具,但缺少處理超時(shí)的功能。 硒化物以簡單的方式處理所有這些問題。 另外,它更容易掌握和學(xué)習(xí)。 您不需要Google的任何要求,也可以搜索教程。 您需要做的只是專注于業(yè)務(wù)邏輯,僅需執(zhí)行幾行簡單的代碼即可完成您的工作。
使用硒化物的前提條件是什么?
Selenide的安裝非常簡單。 如果使用的是Maven,則需要在pom.xml文件中添加以下幾行。
<dependency> <groupId>com.codeborne< /groupId > <artifactId>selenide< /artifactId > <version>5.1.0< /version > <scope> test < /scope > < /dependency >如果使用的是Ivy,則需要在ivy.xml文件中添加
<ivy-module> <dependencies> <dependency org= "com.codeborne" name= "selenide" rev= "5.1.0" /> < /dependencies > < /ivy-module >就像這樣,該框架已為您準(zhǔn)備開始測試。
硒化物的優(yōu)缺點(diǎn)?
在服務(wù)器端使用Java的應(yīng)用程序的前端層中,測試人員面臨的最常見問題是超時(shí)。 您編寫的測試用例目前可能工作正常,但是幾天后,也許一些Ajax請(qǐng)求將比現(xiàn)在花費(fèi)更多的時(shí)間,或者某些Javascript的運(yùn)行速度會(huì)變慢。 另外,您的系統(tǒng)可能同時(shí)運(yùn)行另一個(gè)進(jìn)程,從而導(dǎo)致測試用例失敗。 更不幸的是,您可能需要花費(fèi)數(shù)天的時(shí)間才能找出這些問題的根源。 硒化物可以幫助您
- 簡潔的測試用例編寫過程消除了超時(shí)問題。
- 支持對(duì)使用AngularJS開發(fā)的應(yīng)用程序進(jìn)行測試
- 減少了傳統(tǒng)Selenium工具使用的大多數(shù)命令。
到目前為止,我們還沒有發(fā)現(xiàn)使用硒化硒的明顯缺點(diǎn)。 如果您發(fā)現(xiàn)任何可能影響您工作的限制,請(qǐng)告訴我們。
Selenide是最適合您的Java測試框架嗎?
對(duì)于UI測試,除了Selenide的父框架Selenium WebDriver之外,沒有更好的基于Java的框架。 顯然,WebDriver無法解決由Ajax超時(shí),JavaScript運(yùn)行緩慢或任何需要花費(fèi)時(shí)間加載的動(dòng)態(tài)內(nèi)容引起的問題。 為了克服問題,我們先前在測試案例中使用了“ wait_until”或“ sleep”方法。 使用Selenide,我們不再需要考慮那些問題。 僅關(guān)注業(yè)務(wù)邏輯,測試用例就可以很好地實(shí)現(xiàn)其目的。
如果您打算選擇Selenide作為自動(dòng)化測試的Java測試框架,那么這里的指南可以幫助您使用Selenide,IntelliJ和Maven運(yùn)行Selenium自動(dòng)化測試。
在當(dāng)前的敏捷時(shí)代,開發(fā)人員還需要參與測試。 知識(shí)和測試的重要性是使專業(yè)Java開發(fā)人員與業(yè)余愛好者區(qū)分開來的原因。 不必一定是專家,但是至少您應(yīng)該具備編寫自動(dòng)驗(yàn)證代碼的測試用例的基本知識(shí)。 在本文中,我們介紹了5種工具,這些工具為應(yīng)用程序的UI測試,單元測試和BDD測試提供了全球開發(fā)人員的首選。 根據(jù)比較,我們可以得出結(jié)論,如果您真誠地工作,并希望成為專家開發(fā)人員和測試人員,那么上面提到的工具將對(duì)您的日常工作有用。
翻譯自: https://www.javacodegeeks.com/2019/03/top-5-java-test-frameworks-automation-2019.html
總結(jié)
以上是生活随笔為你收集整理的2019年用于自动化的5个最佳Java测试框架的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 任正非最新发声:某种角度说我是果粉也不为
- 下一篇: 通过Java Hipster升级Spri