首页> 赛事详情 > 赛题详情
百度杯
参赛对象: 本科生组
浏览 0 报名 0
赛题介绍
赛题详情

五大Java自动化测试框架

本文通过介绍与比较五种Java自动化测试框架与工具,帮助您顺利开展各种UI测试、单元测试、以及针对应用程序的BDD测试。

五大Java自动化测试框架

【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是完全值得的。