java客户端程序用什么自动化测试_五大Java自动化测试框架

b4b5daf1015b24255b2db77af01c6b18.png

d882fdb341c293a15dc26cb7188ba9f9.png

51CTO官微

技术资讯/行业精华/产品心得

多年来,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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/514666.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务框架Go-Micro集成Nacos实战之服务注册与发现

简介: 本文主要介绍如何使用 Golang 生态中的微服务框架 Go-Micro(v2) 集成 Nacos 进行服务注册与发现。(Go-Micro 目前已经是 v3 版本,但由于某些原因项目已经更名为 nitro 具体原因大家可以去 github 中查看) 相关背景知识 Go-Micro Go Micro 是一个…

「深度学习知识体系总结(2021版)」开放下载了!

随着世界技术的迭代与发展,人工智能和机器学习正在超自动化领域,扮演着越来越重要的角色。2020年的冠状病毒疫情突发,整个世界都在防疫的道路上披荆斩棘。人工智能发挥了重大作用,智能测温、智能消毒、智能建设都能看到AI的影子。…

2020双11,阿里巴巴集团数万数据库系统全面上云揭秘

作者:阿里云高级技术专家 改天阿里云高级产品专家 胜通 2020年天猫双十一成交额突破4982亿,在双十一走过12个年头之际,我们的订单创建峰值达到58.3万笔/秒,再次刷新全球在线交易系统的记录。历年双十一都是对技术人的一次大考&…

以 Kubernetes 为代表的容器技术,已成为云计算的新界面

简介: 可以说,以 Kubernetes 为代表的容器技术正成为云计算新界面。容器提供了应用分发和交付标准,将应用与底层运行环境进行解耦。Kubernetes 作为资源调度和编排的标准,屏蔽底层架构差异性,帮助应用平滑运行在不同基…

2020双11养猫技术大揭秘

简介: 你养猫了没? 作者 | 淘系-珑晴 在电商领域,互动是一个重要的用户增长方案,在提升用户黏性、活跃以及拉新上都发挥着重要的作用。今年双11,淘系互动团队推出了“超级星秀猫”,我们不盖楼、不开车&…

GitHub 遭抵制!AI 代码生成神器竟成“抄袭工具”?

整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)上周,微软、GitHub、OpenAI 三方联手推出的 AI 代码生成神器 GitHub Copilot 一经官宣便引起巨大关注:试问哪个开发者不想要这么一位“虚拟程序员”来解放自己的双手&#xff1f…

阿里云性能测试工具PTS介绍

简介: 性能测试 PTS(Performance Testing Service)是具备强大的分布式压测能力的 SaaS 压测平台,可模拟海量用户的真实业务场景,全方位验证业务站点的性能、容量和稳定性。 阿里云 阿里云智能GTS-平台技术部-SRE团队 1…

php微信公众号的服务器配置,微信公众号服务器配置选项PHP示例代码

最近微信公众号遇到有点奇怪的问题,使用的是tp框架,之前配置都ok的,最近有需求重新填写url选项,可配置时一直显示token失败,解决方案,参考以下php示例代码来修改,同时最好把输出注释掉。最后通过…

Dubbo 3.0 前瞻系列 | 2020双11,Dubbo3.0 在考拉的超大规模实践

很多开发者一直以来好奇:阿里自己有没有在用Dubbo,会不会用Dubbo?在刚刚结束的双11,我们了解到阿里云今年提出了“三位一体”的理念,即将“自研技术”、“开源项目”、“商业产品”形成统一的技术体系,最大…

OpenStack管理界面开源啦!

日前,木兰开源社区TOC召开了孵化项目审议会议,其项目分别覆盖数据库、大数据处理、网络、流媒体、云计算等关键领域。其中,浪潮数据纯自研产品Skyline成功入围。 自开源至今,OpenStack常被诟病的一点是原生界面不太好用&#xff…

厂商 push 不通排查指南

简介: MPS 集成多个三方渠道,保障 push 使命必达的必须知道的几件事。 为了提升「MPS 消息推送」的推送的到达率,mPaaS 集成了华为、小米等厂商的推送功能,从而有效地提高用户留存率,提升用户体验。在日常运维过程中&a…

Hologres助力飞猪双11实时数据大屏秒级响应

简介: 本文重点介绍Hologres如何落地阿里巴巴飞猪实时数仓场景,并助力飞猪双11实时数据大屏3秒起跳,全程0故障。 摘要:刚刚结束的2020天猫双11中,MaxCompute交互式分析(下称Hologres)实时计算F…

燧原科技首发国内第二代人工智能训练芯片“邃思2.0”

7月7日,燧原科技发布第二代人工智能训练产品——“邃思2.0”芯片、基于邃思2.0的“云燧T20”训练加速卡和“云燧T21”训练OAM模组,全面升级的“驭算TopsRider”软件平台以及全新的“云燧集群”,成为国内首家发布第二代人工智能训练产品组合的…

高德最佳实践:Serverless 规模化落地有哪些价值?

作者 | 何以然(以燃) 导读:曾经看上去很美、一直被观望的 Serverless,现已逐渐进入落地的阶段。今年的"十一出行节",高德在核心业务规模化落地 Serverless,由 Serverless 支撑的业务在流量高峰期…

Java全能手册火了!Redis/Nginx/Dubbo/Spring全家桶/啥都有

前言本文是为了帮大家快速回顾了Java中知识点,这套面试手册涵盖了诸多Java技术栈的面试题和答案,相信可以帮助大家在最短的时间内用作面试复习,能达到事半功倍效果。本来想将文件上传到github上,但由于文件太大有的都无法显示所以…

存储计算解耦合,构建中国人英语语音数据库

简介: 通过阿里云为流利说量身打造的数据湖解决方案,解决了流利说多种应用的各类数据的统一存储,帮助流利说构建数据规模高达上千亿的“中国人英语语音数据库”。 公司介绍 流利说是世界领先的科技驱动的教育公司,作为智能教育的…

Hologres+Flink流批一体首次落地4982亿背后的营销分析大屏

简介: 本篇将重点介绍Hologres在阿里巴巴淘宝营销活动分析场景的最佳实践,揭秘FlinkHologres流批一体首次落地阿里双11营销分析大屏背后的技术考验。 概要:刚刚结束的2020天猫双11中,MaxCompute交互式分析(下称Hologr…

Service Mesh微服务熔断、限流的骚操作

在微服务架构中,随着服务调用链路变长,为了防止出现级联雪崩,在微服务治理体系中,熔断、限流作为服务自我保护的重要机制,是确保微服务架构稳定运行的关键手段之一。那么什么是熔断、限流?在传统Spring Clo…

pca主成分分析用matlab实现,PCA (主成分分析)详解 (写给初学者) 结合matlab

一、简介PCA(Principal Components Analysis)即主成分分析,是图像处理中经常用到的降维方法,大家知道,我们在处理有关数字图像处理方面的问题时,比如经常用的图像的查询问题,在一个几万或者几百万甚至更大的数据库中查…

微服务最佳实践:MSE 微服务引擎

简介: 微服务引擎 MSE(Microservice Engine)是一个面向业界主流开源微服务框架 Spring Cloud 和 Dubbo 的一站式微服务平台。其由四个主要部分组成:微服务治理中心、微服务注册中心、微服务配置中心、微服务网关。 MSE 是什么 微…