自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

五大Java自動化測試框架

譯文
開發(fā) 后端 自動化
本文通過介紹與比較五種Java自動化測試框架與工具,幫助您順利開展各種UI測試、單元測試、以及針對應用程序的BDD測試。

[[262553]]

【51CTO.com快譯】多年來,Java一直是服務器端應用開發(fā)的首選編程語言。隨著時間的推移和自動化測試的興起,業(yè)界出現(xiàn)了許多基于Java,并根據(jù)不同的業(yè)務邏輯而發(fā)展起來的開源框架。在此,我向大家介紹并比較五種用到了Java的自動化測試框架。

1.JUnit

由Kent Beck和Erich Gamma開發(fā)的JUnit是xUnit框架的一個實例。其設計的宗旨是讓Java開發(fā)人員能夠編寫出各種腳本、并執(zhí)行那些可重復的測試用例。因此,JUnit通常被用來測試各種小塊的程序代碼。同時,您還可以通過將JUnit與Selenium WebDriver相集成,來執(zhí)行針對某個網(wǎng)站的自動化測試。不過,只要添加了任何新的代碼,您都需要重新執(zhí)行整個測試用例、以確保無任何損壞。

安裝JUnit的先決條件

由于JUnit是一種基于Java的框架,因此它與Java的Selenium WebDriver高度兼容。您需要準備如下先決條件:

  • 安裝新版本的JDK。
  • 下載最新版本的JUnit,并設置相關的環(huán)境。
  • 熟悉使用面向對象編程語言(尤其是Java)進行應用開發(fā)。

JUnit的優(yōu)點和缺點

JUnit有如下優(yōu)點:

  • 由于必須閱讀代碼、并查找異常,因此開發(fā)人員普遍能夠對以測試為驅動的環(huán)境處之泰然。
  • 能夠盡早地檢測出錯誤,進而產(chǎn)生更為可靠的程序代碼。
  • 能夠開發(fā)出更具可讀性且無bug的程序代碼,以增強項目相關人員的信心。
  • 最新版本的JUnit(版本4)不但可以更加輕松地識別出各種異常,而且能夠執(zhí)行那些由舊版JUnit所編寫的測試用例。
  • 可與Java 5及以上版本一起使用。

JUnit的缺點是:

  • 該框架無法執(zhí)行依賴性測試。

JUnit的特點與競品比較

JUnit與下面將要提到的TestNG具有相似的功能。但是兩者在參數(shù)化測試的實現(xiàn)過程上不盡相同。由于歷史悠久,JUnit擁有更好的社區(qū)支持,并被定義為使用Selenium WebDriver進行基于Java類應用單元測試的標準。而TestNG雖然目前用戶相對較少,但是其社區(qū)規(guī)模卻日益增長。因此,我們認為:是選擇JUnit、還是TestNG作為Java測試的框架,完全取決于目標應用的性質和需求。

當然,如果您已選定了使用JUnit的話,請參考《使用JUnit和Selenium執(zhí)行自動化測試》一文,以針對瀏覽器的兼容性開展分步測試。

2.JBehave

作為測試人員,您一定聽說過行為驅動開發(fā)(Behavior Driven Development,BDD)。它能夠以一種透明的方式,向業(yè)務用戶描述驗收測試。而JBehave正是一種通過Selenium WebDriver來針對BDD開展Java測試的框架。它可以讓新手輕松地理解BDD概念,進而基于行為開展應用測試。

安裝JBehave的先決條件

用戶使用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

JBehave的優(yōu)點和缺點

與所有其他BDD測試框架一樣,JBehave具有如下優(yōu)點:

  • 協(xié)調具有類似規(guī)范、卻身處不同項目的開發(fā)團隊,來實現(xiàn)行為驅動式的開發(fā)。
  • 根據(jù)類似的規(guī)范格式,讓項目經(jīng)理和利益相關者對開發(fā)團隊和QA團隊的輸出具有更清楚地了解。
  • 由于JBehave具有更多值得用戶推理和思考的細節(jié),因此目標產(chǎn)品會具有更好的規(guī)范性。
  • 由于使用了半正式(semi-formal)語言、以及域詞匯表(domain vocabulary),因此JBehave有助于在團隊結構中保持一致性的行為。

JBehave同樣也有著其他BDD測試工具一樣的缺點:

  • 一款BDD測試工具的成功,主要取決于項目中不同成員,包括:利益相關者、開發(fā)人員和測試人員之間的溝通,以及組織的管理。反之,溝通的缺乏則可能會導致無法逾越的問題、有缺陷的應用、業(yè)務需求未被滿足、以及各方的互相推諉。

JBehave的特點與競品比較

JBehave與下面將要提到的Serenity有著相同的工作方式。但是,如果您的目標是使得自動驗收測試更為有效的話,那么將Serenity與JBehave相集成,則會獲得更好的測試體驗。

3.Serenity

Serenity同樣是一種能被用于行為驅動測試的開源庫。該框架可幫助您編寫出各種結構良好、且易于維護的驗收標準。它在一定程度上擴展了JUnit和WebDriver的功能。

安裝Serenity的先決條件

由于該框架基于Java,因此您顯然需要具備Java、或其他任何面向對象編程語言的知識與經(jīng)驗。此外,您的電腦上還需要有:

  • JDK 5或更高版本。
  • Maven 3.0或更高版本。
  • 由于Maven和Eclipse的組合更易于使用,因此作為IDE工具的Eclipse通常是所有開發(fā)人員首選的。

Serenity的優(yōu)點和缺點

針對行為驅動測試,Serenity具有如下優(yōu)點:

  • 該框架能夠幫助測試人員創(chuàng)建各種REST服務的測試用例。
  • 用戶不必花費大量的時間,來維護或構建自己的自動化框架。
  • 它能夠在定義、理解測試用例、以及實現(xiàn)方式建立平衡。
  • 它可以與許多自動化框架相集成,其中包括:Selenium、JBehave、基于Java的高級開發(fā)框架(如Spring)、甚至是JIRA之類的持續(xù)集成工具。

與JBehave類似,Serenity的唯一缺點便是:為了充分發(fā)揮其支持行為驅動開發(fā)的完整功能,項目參與者需要保持彼此之間的溝通。

Serenity的特點與競品比較

由于主要被用于報告驗收的標準,因此使用Serenity所寫出的報告,比JBehave等其他BDD框架具有更豐富信息量。同時,它還可以幫助開發(fā)人員編寫出更高質量的自動化測試用例場景。另外,它能夠為RestAssured和Selenium WebDriver提供支持,使得測試人員能夠更快、更簡便地寫出基于驗收測試標準的自動化用例。

4.TestNG

也許是受到了JUnit的啟發(fā),由Cedric Beust創(chuàng)建的TestNG也是一種基于Java的開源自動化測試框架,不過它更為強大。此處NG表示“下一代”,因此它能夠在集成的過程中采用更好的執(zhí)行方式。該框架可幫助開發(fā)人員實現(xiàn)排序、分組和參數(shù)化等功能,進而在消除了以往框架各種缺點的基礎上,讓新的測試用例更具靈活性。

安裝TestNG的先決條件

  • 在系統(tǒng)中已安裝了最新版本的JDK。
  • 最新版本的Eclipse。
  • 具備Java或其他任何面向對象編程語言的知識和實踐經(jīng)驗。

TestNG的優(yōu)點和缺點

在彌補過往框架諸多缺點的基礎上,TestNG還具備如下優(yōu)點:

  • 該框架能使用戶在多個代碼片段上運行各種并行的測試。
  • 在執(zhí)行用例測試的期間,您可以生成一份HTML報告。
  • 可以根據(jù)優(yōu)先級對測試用例進行分組和排列。該框架大幅簡化了數(shù)據(jù)庫測試、前端測試等方面。
  • 您可以對數(shù)據(jù)采取參數(shù)化、并使用注釋來輕松地設置優(yōu)先級。當然,如果您的項目并不需要測試用例的優(yōu)先級,則也沒必要用到TestNG。

它的唯一缺點是:

  • 用戶需要一些時間來設置TestNG。

TestNG的特點與競品比較

如前所述,TestNG雖然與JUnit有著相同的功能,但是它補足了JUnit的短板。在面對既有的依賴性,您卻無法控制先測試哪個的時候,TestNG允許您以任意順序運行測試用例。此外,它還有助于實現(xiàn)參數(shù)化的測試。雖然JUnit 4.5已經(jīng)具備了此功能,但是TestNG的實現(xiàn)效率更高。因此,如果您的項目很復雜、并且需要執(zhí)行上百種測試用例的話,花點時間去設置TestNG是完全值得的。

如果您不太熟悉TestNG的話,請通過參考:https://www.lambdatest.com/blog/a-complete-guide-for-your-first-testng-automation-script/?utm_source=Dzone&utm_medium=blog&utm_campaign=SS-030419&utm_term=arnab。這是一份TestNG自動化腳本的完整指南,您可以用在Selenium WebDriver上,進行跨瀏覽器的Java自動化測試。

5.Selenide

由Selenium提供的Selenide,可用作為Java應用程序編寫穩(wěn)定、精確且具有友好UI的測試用例。如今,針對Ajax之類Web技術的測試工具日趨復雜,動輒便會出現(xiàn)超時的問題。而Selenide卻能夠以簡單的方式處理該問題。Selenide簡單易學,您無需搜索任何相關教程,只需專注于業(yè)務邏輯,便可通過幾行簡單的代碼來搞定工作。

使用Selenide的先決條件

Selenide的安裝非常簡單。如果您使用的是Maven,則只需要在pom.xml文件中添加如下代碼行:

  1. com.codeborne selenide 5.1.0 test 

如果您使用的是Ivy,請在ivy.xml文件中添加如下代碼行:

Selenide的優(yōu)點和缺點

在測試人員處理那些由Java編寫的前端應用時,往往會碰到超時的問題。也許您當前編寫的測試用例尚能正常工作。而幾天之后,隨著某些Ajax請求的增多,相應的JavaScript的運行則可能會慢下來。此外,如果您的系統(tǒng)還同時運行著另一個進程的話,這些都會導致測試用例的失敗。您與其花上幾天時間去尋找問題的根源,不如讓Selenide從如下方面幫助您:

  • 簡潔的測試用例編寫過程,消除了超時的問題。
  • 能夠測試由AngularJS所開發(fā)的應用程序。
  • 減少了各種傳統(tǒng)Selenium工具中的大量命令。

目前,我們尚未發(fā)現(xiàn)Selenide的明顯缺點。

Selenide的特點與競品比較

WebDriver雖然是UI測試的流行工具,但是它無法解決由Ajax超時、JavaScript運行緩慢、以及加載動態(tài)內(nèi)容耗時等一系列問題。過去,我們在測試用例中使用的是“wait_until”或“sleep”方法。如今有了Selenide,我們只要關注業(yè)務邏輯便可。可以說,就UI測試而言,除了Selenium WebDriver(Selenide的父框架),沒有比它更好的Java框架了。

如果您選定了Selenide作為自動化Java測試框架,請參考:https://www.lambdatest.com/blog/selenium-testing-with-selenide-using-intellij-maven/?utm_source=Dzone&utm_medium=blog&utm_campaign=SS-030419&utm_term=arnab。該指南能夠幫助您使用Selenide、IntelliJ和Maven來進行Selenium的自動化測試。

總結

如今的敏捷(Agile)時代,開發(fā)人員時常需要參與到測試環(huán)節(jié)中。能夠了解測試的重要性,往往是Java專業(yè)開發(fā)人員與業(yè)余愛好者之間的區(qū)別。雖然您沒有必要一定成為該領域的專家,但是您至少應當懂得,如何編寫可自動化驗證代碼的測試用例。希望上述介紹與比較的五種自動化測試框架與工具,能夠在UI測試、單元測試、以及針對應用程序的BDD測試中給您提供幫助。

原文標題:Top 5 Java Test Frameworks for Automation in 2019,作者:Arnab Roy

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

 

責任編輯:龐桂玉 來源: 51CTO
相關推薦

2019-04-22 09:00:00

Python框架自動化測試

2020-09-14 07:00:00

測試自動化框架

2023-11-01 10:23:13

2021-09-18 12:51:38

AIoT工業(yè)自動化物聯(lián)網(wǎng)

2023-10-30 15:55:16

自動化人工智能

2019-04-10 08:49:20

Java自動化測試開發(fā)應用

2022-12-08 11:13:03

自動化趨勢人工智能

2021-12-01 09:18:21

酒店業(yè)物聯(lián)網(wǎng)自動化

2022-08-26 13:23:10

人工智能自動化

2009-08-19 09:00:48

單元測試框架自動化測試

2021-06-26 07:40:21

前端自動化測試Jest

2021-09-08 13:29:14

自動化智能家居IOT

2020-04-28 22:14:07

自動化威脅Bots

2013-09-26 09:23:06

私有云私有云自動化云管理

2024-01-10 10:27:17

智能家居家庭自動化人工智能

2017-12-24 21:00:10

自動化測試測試框架敏捷

2023-05-18 14:01:00

前端自動化測試

2019-08-23 10:10:58

Nginx反向代理防盜鏈

2023-09-01 09:21:03

Python自動化測試

2020-04-28 09:00:00

測試測試自動化
點贊
收藏

51CTO技術棧公眾號