五大Java自动化测试框架

栏目: 编程工具 · 发布时间: 4年前

内容简介:【51CTO.com快译】多年来,Java一直是服务器端应用开发的首选编程语言。随着时间的推移和自动化测试的兴起,业界出现了许多基于Java,并根据不同的业务逻辑而发展起来的开源框架。在此,我向大家介绍并比较五种用到了Java的自动化测试框架。由Kent Beck和Erich Gamma开发的JUnit是xUnit框架的一个实例。其设计的宗旨是让Java开发人员能够编写出各种脚本、并执行那些可重复的测试用例。因此,JUnit通常被用来测试各种小块的程序代码。同时,您还可以通过将JUnit与Selenium

五大 <a href='https://www.codercto.com/topics/22013.html'>Java</a> 自动化测试框架

【51CTO.com快译】多年来,Java一直是服务器端应用开发的首选编程语言。随着时间的推移和自动化测试的兴起,业界出现了许多基于Java,并根据不同的业务逻辑而发展起来的开源框架。在此,我向大家介绍并比较五种用到了Java的自动化测试框架。

1. JUnit

由Kent Beck和Erich Gamma开发的JUnit是xUnit框架的一个实例。其设计的宗旨是让Java开发人员能够编写出各种脚本、并执行那些可重复的测试用例。因此,JUnit通常被用来测试各种小块的程序代码。同时,您还可以通过将JUnit与Selenium WebDriver相集成,来执行针对某个网站的自动化测试。不过,只要添加了任何新的代码,您都需要重新执行整个测试用例、以确保无任何损坏。

安装JUnit的先决条件

由于JUnit是一种基于Java的框架,因此它与Java的Selenium WebDriver高度兼容。您需要准备如下先决条件:

  • 安装最新版本的JDK。
  • 下载最新版本的JUnit,并设置相关的环境。
  • 熟悉使用面向对象编程语言(尤其是Java)进行应用开发。

JUnit的优点和缺点

JUnit有如下优点:

  • 由于必须阅读代码、并查找异常,因此开发人员普遍能够对以测试为驱动的环境处之泰然。
  • 能够尽早地检测出错误,进而产生更为可靠的程序代码。
  • 能够开发出更具可读性且无bug的程序代码,以增强项目相关人员的信心。
  • 最新版本的JUnit(版本4)不但可以更加轻松地识别出各种异常,而且能够执行那些由旧版JUnit所编写的测试用例。
  • 可与Java 5及以上版本一起使用。

JUnit的唯一缺点是:

  • 该框架无法执行依赖性测试。

JUnit的特点与竞品比较

JUnit与下面将要提到的TestNG具有相似的功能。但是两者在参数化测试的实现过程上不尽相同。由于历史悠久,JUnit拥有更好的社区支持,并被定义为使用Selenium WebDriver进行基于Java类应用单元测试的标准。而TestNG虽然目前用户相对较少,但是其社区规模却日益增长。因此,我们认为:是选择JUnit、还是TestNG作为Java测试的框架,完全取决于目标应用的性质和需求。

当然,如果您已选定了使用JUnit的话,请参考 《使用JUnit和Selenium执行自动化测试》 一文,以针对浏览器的兼容性开展分步测试。

2. JBehave

作为测试人员,您一定听说过行为驱动开发(Behavior Driven Development,BDD)。它能够以一种透明的方式,向业务用户描述验收测试。而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的优点和缺点

与所有其他BDD测试框架一样,JBehave具有如下优点:

  • 协调具有类似规范、却身处不同项目的开发团队,来实现行为驱动式的开发。
  • 根据类似的规范格式,让项目经理和利益相关者对开发团队和QA团队的输出具有更清楚地了解。
  • 由于JBehave具有更多值得用户推理和思考的细节,因此目标产品会具有更好的规范性。
  • 由于使用了半正式(semi-formal)语言、以及域词汇表(domain vocabulary),因此JBehave有助于在团队结构中保持一致性的行为。

JBehave同样也有着其他BDD测试 工具 一样的缺点:

  • 一款BDD测试工具的成功,主要取决于项目中不同成员,包括:利益相关者、开发人员和测试人员之间的沟通,以及组织的管理。反之,沟通的缺乏则可能会导致无法逾越的问题、有缺陷的应用、业务需求未被满足、以及各方的互相推诿。

JBehave的特点与竞品比较

JBehave与下面将要提到的Serenity有着相同的工作方式。但是,如果您的目标是使得自动验收测试更为有效的话,那么将Serenity与JBehave相集成,则会获得更好的测试体验。

3. Serenity

Serenity同样是一种能被用于行为驱动测试的开源库。该框架可帮助您编写出各种结构良好、且易于维护的验收标准。它在一定程度上扩展了JUnit和WebDriver的功能。

安装Serenity的先决条件

由于该框架基于Java,因此您显然需要具备Java、或其他任何面向对象编程语言的知识与经验。此外,您的电脑上还需要有:

  • JDK 5或更高版本。
  • Maven 3.0或更高版本。
  • 由于Maven和Eclipse的组合更易于使用,因此作为IDE工具的Eclipse通常是所有开发人员首选的。

Serenity的优点和缺点

针对行为驱动测试,Serenity具有如下优点:

  • 该框架能够帮助测试人员创建各种REST服务的测试用例。
  • 用户不必花费大量的时间,来维护或构建自己的自动化框架。
  • 它能够在定义、理解测试用例、以及实现方式建立平衡。
  • 它可以与许多自动化框架相集成,其中包括:Selenium、JBehave、基于Java的高级开发框架(如Spring)、甚至是JIRA之类的持续集成工具。

与JBehave类似,Serenity的唯一缺点便是:为了充分发挥其支持行为驱动开发的完整功能,项目参与者需要保持彼此之间的沟通。

Serenity的特点与竞品比较

由于主要被用于报告验收的标准,因此使用Serenity所写出的报告,比JBehave等其他BDD框架具有更丰富信息量。同时,它还可以帮助开发人员编写出更高质量的自动化测试用例场景。另外,它能够为RestAssured和Selenium WebDriver提供支持,使得测试人员能够更快、更简便地写出基于验收测试标准的自动化用例。

4. TestNG

也许是受到了JUnit的启发,由Cedric Beust创建的TestNG也是一种基于Java的开源自动化测试框架,不过它更为强大。此处NG表示“下一代”,因此它能够在集成的过程中采用更好的执行方式。该框架可帮助开发人员实现 排序 、分组和参数化等功能,进而在消除了以往框架各种缺点的基础上,让新的测试用例更具灵活性。

安装TestNG的先决条件

  • 在系统中已安装了最新版本的JDK。
  • 最新版本的Eclipse。
  • 具备Java或其他任何面向对象编程语言的知识和实践经验。

TestNG的优点和缺点

在弥补过往框架诸多缺点的基础上,TestNG还具备如下优点:

  • 该框架能使用户在多个代码片段上运行各种并行的测试。
  • 在执行用例测试的期间,您可以生成一份HTML报告。
  • 可以根据优先级对测试用例进行分组和排列。该框架大幅简化了数据库测试、前端测试等方面。
  • 您可以对数据采取参数化、并使用注释来轻松地设置优先级。当然,如果您的项目并不需要测试用例的优先级,则也没必要用到TestNG。

它的唯一缺点是:

  • 用户需要一些时间来设置TestNG。

TestNG的特点与竞品比较

如前所述,TestNG虽然与JUnit有着相同的功能,但是它补足了JUnit的短板。在面对既有的依赖性,您却无法控制先测试哪个的时候,TestNG允许您以任意顺序运行测试用例。此外,它还有助于实现参数化的测试。虽然JUnit 4.5已经具备了此功能,但是TestNG的实现效率更高。因此,如果您的项目很复杂、并且需要执行上百种测试用例的话,花点时间去设置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应用程序编写稳定、精确且具有友好UI的测试用例。如今,针对Ajax之类Web技术的测试工具日趋复杂,动辄便会出现超时的问题。而Selenide却能够以简单的方式处理该问题。Selenide简单易学,您无需搜索任何相关教程,只需专注于业务逻辑,便可通过几行简单的代码来搞定工作。

使用Selenide的先决条件

Selenide的安装非常简单。如果您使用的是Maven,则只需要在pom.xml文件中添加如下代码行:

com.codeborne selenide 5.1.0 test 

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

Selenide的优点和缺点

在测试人员处理那些由Java编写的前端应用时,往往会碰到超时的问题。也许您当前编写的测试用例尚能正常工作。而几天之后,随着某些Ajax请求的增多,相应的JavaScript的运行则可能会慢下来。此外,如果您的系统还同时运行着另一个进程的话,这些都会导致测试用例的失败。您与其花上几天时间去寻找问题的根源,不如让Selenide从如下方面帮助您:

  • 简洁的测试用例编写过程,消除了超时的问题。
  • 能够测试由AngularJS所开发的应用程序。
  • 减少了各种传统Selenium工具中的大量命令。

目前,我们尚未发现Selenide的明显缺点。

Selenide的特点与竞品比较

WebDriver虽然是UI测试的流行工具,但是它无法解决由Ajax超时、JavaScript运行缓慢、以及加载动态内容耗时等一系列问题。过去,我们在测试用例中使用的是“wait_until”或“sleep”方法。如今有了Selenide,我们只要关注业务逻辑便可。可以说,就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)时代,开发人员时常需要参与到测试环节中。能够了解测试的重要性,往往是Java专业开发人员与业余爱好者之间的区别。虽然您没有必要一定成为该领域的专家,但是您至少应当懂得,如何编写可自动化验证代码的测试用例。希望上述介绍与比较的五种自动化测试框架与工具,能够在UI测试、单元测试、以及针对应用程序的BDD测试中给您提供帮助。

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

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

【责任编辑:庞桂玉 TEL:(010)68476606】


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Rework

Rework

Jason Fried、David Heinemeier Hansson / Crown Business / 2010-3-9 / USD 22.00

"Jason Fried and David Hansson follow their own advice in REWORK, laying bare the surprising philosophies at the core of 37signals' success and inspiring us to put them into practice. There's no jarg......一起来看看 《Rework》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具