您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > JAVA

5大Java自动化测试框架

时间:2019-08-26 17:29:10  来源:  作者:

几十年来,JAVA一直是开发应用程序服务器端的首选编程语言。尽管JUnit与开发人员一起帮助他们进行自动化单元测试,随着时间的推移和测试的发展,当自动化测试正在兴起时,许多开源框架已经开发出来,。在这里,我将讨论2019年用于使用Selenium WebDriver和Java执行测试自动化的前五大Java测试框架。我还将重点介绍这些顶级Java测试框架的独特之处。

2019年,前5大Java自动化测试框架

 

1. JUnit

Kent Beck和Erich Gamma开发的JUnit,它是xUnit的一个实例。其背后的主要目的是使Java开发人员能够编写脚本并执行可重复的测试用例。它通常用于测试小块代码。您还可以通过将JUnit与Selenium WebDriver集成用于Java测试自动化来执行网站的自动化测试。无论何时添加任何新代码,您都需要重新执行整个测试用例并确保没有破损。

(1) 先决条件

该框架与Selenium WebDriver for Java高度兼容,原因是JUnit是一个基于Java的框架。作为一些先决条件,您需要:

  • 在计算机中安装最新版本的JDK。
  • 下载最新版本的JUnit并设置环境。
  • 熟悉面向对象编程语言(尤其是Java)中的应用程序开发。

  (2) 使用JUnit的优点和缺点?

JUnit 有几个优点:

  • 在测试驱动的环境中工作的开发人员发现它非常有用,因为他们被迫阅读代码并查找是否存在异常。
  • 早期检测到错误,从而产生更可靠的代码。
  • 开发更具可读性和无错误的代码可以起到增强信心的作用。
  • 使用最新版本的JUnit(版本4),可以轻松识别异常。您甚至可以执行在旧版本的JUnit中编写的测试用例。
  • 您也可以将它与Java 5或以上版本一起使用。

JUnit的唯一缺点是:

  • 该框架无法执行依赖性测试。这就是我们需要TestNG的地方。

  (3) JUnit是您的顶级Java测试框架吗?

实现过程在两个框架中都是不同的。此外,由于JUnit已经使用了很长时间,因此有更好的社区支持,并且它已被定义为使用Selenium WebDriver进行基于Java的应用程序的单元测试的标准。虽然TestNG的用户很少,但社区非常庞大并且每天都在增长。因此,我们可以得出结论,TestNG或JUnit之间对Java测试框架的选择完全取决于应用程序的性质和要求。

2. JBehave

我们都知道行为驱动开发或BDD。它是一种以透明的方式向业务用户描述验收测试的测试类型。JBehave是另一个用于BDD测试的Java测试框架,主要用于Selenium WebDriver for Java。引入JBehave背后的主要目标是让新手能够轻松理解并熟悉BDD。它是一种设计理念,使应用程序的测试阶段更多地基于其行为。

(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的优点和缺点

与所有其他BDD测试框架一样,JBehave在许多方面也具有优势。

  • 通过在具有类似规范的不同项目上工作的不同开发团队之间实现更好的协调,实现行为驱动开发的最重要目的。
  • 由于规范具有类似的格式,项目经理和利益相关者可以更清楚地了解开发团队和QA团队的输出。
  • 由于JBehave具有推理和思考的细节,因此产品具有更好的规格。
  • JBehave使用半正式语言,它还有一个域词汇表,有助于在团队结构中保持一致的行为。

缺点:

  • BDD测试工具的成功主要取决于项目中涉及的不同成员之间的沟通,利益相关者,开发人员,测试人员以及组织的管理。缺乏沟通可能会导致无法回答的问题和疑问,这可能最终导致错误的申请或应用程序无法满足业务要求,从而导致所有各方互相指责。

  (3) JBehave是您的顶级Java测试框架吗?

JBehave的工作方式与Serenity相同。但是,如果您的目标是使自动验收测试更有效,那么将Serenity与JBehave集成以获得更好的测试体验是理想的选择。这是因为Serenity的核心概念基于BDD开发,它还使用户能够编写功能强大且丰富的测试报告。我们将在下一节中详细讨论它。

3. Serenity

Serenity是一个开源库,用于行为驱动的测试。该框架可帮助您编写验收标准,这些标准结构良好且维护更多。它扩展了JUnit和WebDriver的功能。最初,它被称为修昔底德。名称改变背后的原因只不过是发音的难度。不过,旧名称可以在引用时使用。

安装Serenity的先决条件是什么?

由于该框架是基于Java的,因此您显然需要Java或任何其他面向对象编程语言的知识和经验。除此之外,在您的工作站中,您将需要:

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

4. TestNG

Cedric Beust创建了TestNG,这是一个基于Java的开源自动化测试框架,受JUnit的启发。但是,它更强大。NG意味着TestNG中的下一代。该框架旨在在集成期间以更好的方式执行。该框架可帮助开发人员进行排序,分组和参数化等功能,从而使新测试用例更加灵活,并消除了之前使用的框架的缺点。

  (1) 安装TestNG的先决条件

要安装TestNG,您需要:

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

  (2) TestNG的优点和缺点

除了克服旧框架的缺点之外,TestNG还有几个优点:

  • 该框架使您能够在多个代码片段上运行并行测试。
  • 在测试用例执行期间,您可以生成html报告。
  • 可以根据优先级对测试用例进行分组和排列。只需要让框架运行数据库测试或前端测试或任何你想要的东西,执行测试就会简单得多。
  • 您可以参数化数据并使用注释来轻松设置优先级。

唯一的缺点是:

  • 这取决于您的要求。如果您的项目不需要测试用例优先级,则可能不想使用TestNG。此外,设置TestNG需要一点时间。

  (3) TestNG是您最好的Java测试框架吗?

虽然JUnit执行与TestNG相同的所有功能,但它肯定有其局限性。当单独完成测试时,JUnit是完美的。但是当存在依赖性时; 您无法控制先执行哪个测试。TestNG允许您以任何您想要的顺序运行测试用例,从而帮助您。此外,它还有助于参数化测试。虽然JUnit 4.5中已经存在此功能,但TestNG更有效。如果您的项目很复杂并且可能需要一百多个测试用例,那么花一些时间设置TestNG而不是依赖于JUnit是理想的。

 

5. Selenide

Selenide由Selenium提供支持,是一种用于为Java应用程序编写稳定、精确和富有表现力的UI测试用例的流行工具。像Ajax这样的现代Web技术的测试具有某些复杂性,例如超时。WebDriver是用于UI测试的流行工具,但它缺乏处理超时的功能。Selenide以简单的方式处理所有这些问题。此外,它更容易抓住和学习。您无需任何google要求并搜索教程。您需要做的就是专注于业务逻辑,只需几行简单的代码,您的工作就会完成。

  (1) 使用selenide的先决条件是什么?

selenide的安装尽可能简单。如果您使用的是Maven,则需要在pom.xml文件中添加以下行。

 

2019年,前5大Java自动化测试框架

 

 

(2) selenide的优点和缺点

在应用程序的前端层,在服务器端使用Java,测试人员面临的最常见问题是超时。您编写的测试用例目前可能正常工作,但几天之后,也许某些Ajax请求将比现在花费更多时间或者某些JavaScript将运行得更慢。此外,您的系统可能同时运行另一个进程,导致测试用例失败。更不幸的是,你可能花了几天时间找出这些问题的根源。Selenide通过以下方式帮助您:

  • 简洁的测试用例编写过程,消除了超时问题。
  • 支持使用AngularJS开发的应用程序的测试
  • 减少了传统Selenium工具使用的大多数命令。

到目前为止,我们还没有发现使用Selenide有任何明显的缺点。

  (3) Selenide是您最好的Java测试框架吗?

对于UI测试,除了Selenium WebDriver(Selenide的父框架)之外,没有更好的基于Java的框架。显然,WebDriver无法解决由Ajax Timeout或运行缓慢的JavaScript或任何需要时间加载的动态内容引起的问题。为了克服这些问题,我们之前在测试用例中使用了“ wait_until”或“ sleep”方法。有了Selenide,我们不再需要考虑这些问题了。只关注业务逻辑,测试用例可以很好地满足其目的。

在当前的敏捷时代,开发人员也需要参与测试。了解测试知识的重要性是专业Java开发人员与业余爱好者的区别。您没有必要成为专家,但至少您应具备编写可自动验证代码的测试用例的基本知识。在本文中,我们通过了五个工具,这些工具是全球开发人员首选的UI测试,单元测试和应用程序的BDD测试。根据比较结果,我们可以得出结论,如果您对自己的工作很诚恳,并希望成为专家开发人员和测试人员,那么上面提到的工具就会在您的日常任务中发挥作用。



Tags:测试框架   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
Hello 大家好,我是阿粉,日常工作中很多时候我们都需要同事间的相互配合协作完成某些功能,所以我们经常会遇到服务或者应用内不同模块之间要互相依赖的场景。比如下面的场景,...【详细内容】
2021-06-09  Tags: 测试框架  点击:(127)  评论:(0)  加入收藏
近期准备优先做接口测试的覆盖,为此需要开发一个测试框架,经过思考,这次依然想做点儿不一样的东西。 接口测试是比较讲究效率的,测试人员会希望很快能得到结果反馈,然而接口的数...【详细内容】
2021-04-01  Tags: 测试框架  点击:(210)  评论:(0)  加入收藏
先来个小故事:一天,你的领导丢给你几十个接口,然后希望你输出报告。你:"exm?",改改改。于是你引入了unittest单元测试框架、HTMLTestRunner等等。正打算将各个测试用例分类重新规...【详细内容】
2020-11-04  Tags: 测试框架  点击:(113)  评论:(0)  加入收藏
一、背景近年来,随着银行业业务品种的激增,各应用系统也日益增多,各应用系统关系错综复杂,支系繁多。缺乏科学的方法来快速明确业务需求所指向的应用系统,导致测试过程中出现覆盖...【详细内容】
2020-10-22  Tags: 测试框架  点击:(118)  评论:(0)  加入收藏
应用场景:在API的测试中,测试某些具体数据值,比如返回的结果是否是需求的类型,文件是否是符合且具备完整的数据结构。这些都是必须且很细致的测试工作。另外,组织、运行测试场景,...【详细内容】
2020-10-19  Tags: 测试框架  点击:(244)  评论:(0)  加入收藏
我们在测试时,可能会遇到以下几种测试分组的场景: 一个测试类当中有多个测试方法,只想执行其中的几个相关的测试方法。 当几个相关的方法依赖相同的 setUp、tearDown操作。 ...【详细内容】
2020-07-26  Tags: 测试框架  点击:(37)  评论:(0)  加入收藏
萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI想要清理文件夹内部分冗余文件,结果误删了同事刚合的代码?(例如,在rm -rf /usr/bin/test的/usr后面加了个空格,结果删掉了整个/usr...【详细内容】
2020-07-20  Tags: 测试框架  点击:(62)  评论:(0)  加入收藏
使用匹配器使用不同匹配器可以测试输入输出的值是否符合预期。下面介绍一些常见的匹配器。普通匹配器最简单的测试值的方法就是看是否精确匹配。首先是toBe()test('two...【详细内容】
2020-06-23  Tags: 测试框架  点击:(83)  评论:(0)  加入收藏
在 UI 自动化测试过程中,面对复杂的业务场景,经常会遇到这样的挑战: 简单的录制/回放速度快,但无法适应复杂场景; 编写自动化测试脚本比较灵活,但工作量大且可维护性差; 以往的封装...【详细内容】
2020-06-18  Tags: 测试框架  点击:(59)  评论:(0)  加入收藏
这个web自动化测试框架真香!在web自动化测试当中, selenium架构应该是很难绕过的,很多宣称要超 selenium的下一代web自动化测试框架最终都败下阵来。不过,selenium的api确实比较...【详细内容】
2019-12-17  Tags: 测试框架  点击:(75)  评论:(0)  加入收藏
▌简易百科推荐
面向对象的特征之一封装 面向对象的特征之二继承 方法重写(override/overWrite) 方法的重载(overload)和重写(override)的区别: 面向对象特征之三:多态 Instanceof关键字...【详细内容】
2021-12-28  顶顶架构师    Tags:面向对象   点击:(2)  评论:(0)  加入收藏
一、Redis使用过程中一些小的注意点1、不要把Redis当成数据库来使用二、Arrays.asList常见失误需求:把数组转成list集合去处理。方法:Arrays.asList 或者 Java8的stream流式处...【详细内容】
2021-12-27  CF07    Tags:Java   点击:(3)  评论:(0)  加入收藏
文章目录 如何理解面向对象编程? JDK 和 JRE 有什么区别? 如何理解Java中封装,继承、多态特性? 如何理解Java中的字节码对象? 你是如何理解Java中的泛型的? 说说泛型应用...【详细内容】
2021-12-24  Java架构师之路    Tags:JAVA   点击:(5)  评论:(0)  加入收藏
大家好!我是老码农,一个喜欢技术、爱分享的同学,从今天开始和大家持续分享JVM调优方面的经验。JVM调优是个大话题,涉及的知识点很庞大 Java内存模型 垃圾回收机制 各种工具使用 ...【详细内容】
2021-12-23  小码匠和老码农    Tags:JVM调优   点击:(12)  评论:(0)  加入收藏
前言JDBC访问Postgresql的jsonb类型字段当然可以使用Postgresql jdbc驱动中提供的PGobject,但是这样在需要兼容多种数据库的系统开发中显得不那么通用,需要特殊处理。本文介绍...【详细内容】
2021-12-23  dingle    Tags:JDBC   点击:(13)  评论:(0)  加入收藏
Java与Lua相互调用案例比较少,因此项目使用需要做详细的性能测试,本内容只做粗略测试。目前已完成初版Lua-Java调用框架开发,后期有时间准备把框架进行抽象,并开源出来,感兴趣的...【详细内容】
2021-12-23  JAVA小白    Tags:Java   点击:(11)  评论:(0)  加入收藏
Java从版本5开始,在 java.util.concurrent.locks包内给我们提供了除了synchronized关键字以外的几个新的锁功能的实现,ReentrantLock就是其中的一个。但是这并不意味着我们可...【详细内容】
2021-12-17  小西学JAVA    Tags:JAVA并发   点击:(11)  评论:(0)  加入收藏
一、概述final是Java关键字中最常见之一,表示“最终的,不可更改”之意,在Java中也正是这个意思。有final修饰的内容,就会变得与众不同,它们会变成终极存在,其内容成为固定的存在。...【详细内容】
2021-12-15  唯一浩哥    Tags:Java基础   点击:(17)  评论:(0)  加入收藏
1、问题描述关于java中的日志管理logback,去年写过关于logback介绍的文章,这次项目中又优化了下,记录下,希望能帮到需要的朋友。2、解决方案这次其实是碰到了一个问题,一般的情况...【详细内容】
2021-12-15  软件老王    Tags:logback   点击:(19)  评论:(0)  加入收藏
本篇文章我们以AtomicInteger为例子,主要讲解下CAS(Compare And Swap)功能是如何在AtomicInteger中使用的,以及提供CAS功能的Unsafe对象。我们先从一个例子开始吧。假设现在我们...【详细内容】
2021-12-14  小西学JAVA    Tags:JAVA   点击:(22)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条