@Java 开发者,2019 要先学点啥? 有答曰:“学习千万条,自动化测试第一条”。如今,“自动化测试的重要性正在呈指数级增长”,而本文便重点介绍了 10 大出色的测试框架、工具和库,帮助提高你的自动化测试技能! 作者 | javinpaul 译者 | 姜松浩 责编 | 仲培艺 出品 | CSDN(ID:CSDNNews) 以下为译文: 关于 Java 开发人员今年应该学习什么的问题,答案可能包括编程语言、库和框架,但如果你只需要改进或学习一件事,那么这必定是你的自动化测试技能。 测试是将专业开发人员与业余开发人员分开的训练之一。这里说的并不是 TDD、BDD 或任何测试方法,但你至少要可以编写代码来自动测试代码。 许多 Java 开发人员在构建期间,编写自动运行的单元测试和集成测试,主要是使用 Jenkins 或 TeamCity 等持续集成工具。 为什么程序员应该专注于自动化测试?事实上,由于关注度日益提升,更多的 DevOps 开始出现,自动化测试的重要性呈指数级增长。 公司通常更偏爱擅长编写单元测试并且熟悉各种单元测试框架、库和工具的程序员,例如 JUnit、Selenium、REST-Assured、Spock框架等。 作为 Java 开发人员,我们致力于差异非常大的领域,从编写核心 Java 代码到创建 JSP 页面、编写 REST APIs,有时甚至会创建用于构建自动化的 Groovy 脚本。这就是为什么我们还需要了解我们可以用来自动化测试的不同工具。 例如,很长一段时间以来我只知道 JUnit,但是当我不得不测试我的 JSP 页面时,我可谓一头雾水,直到找到了 Selenium。 REST Assured 也是如此,因为我通常使用 curl 命令测试我的 REST API,但是 REST Assured 却可以将 REST API 的单元测试提升到另一个级别。 我相信好的程序员,必定离不开好用的工具,所以我总是在空闲时间尝试学习和探索新的工具和库。在本文中,我将分享 10 大最好且必不可少的工具、框架和库,它们可以帮助 Java 开发者在各种 Java 项目上编写单元测试和集成测试。 JUnit 显然,JUnit 不需要任何介绍。即使你是初学 Java 的程序员,大概率上你也有过耳闻——它允许你为你的 Java 代码编写单元测试。 几乎所有主要的 IDE,例如 Eclipse、NetBeans 和 IntelliJIDEA 都提供了 JUnit 集成,这意味着你可以直接从这些 IDE 上编写和运行单元测试。 我们大多数人仍在使用 JUnit 4,但 JUnit 5 已经发布,可能是今年要关注的下一个东西。你可以用 JUnit 进行单元测试和集成测试,它还支持 Java 8 的特性。 顺便说一下,如果你是单元测试世界的新手,特别是在 Java 单元测试方面,那么 JUnit and Mockito crash course 这个课程会是一个很好的起点。
REST Assured 在 Java 中测试和验证 REST 服务比用动态语言(例如 Groovy)更难。 REST Assured 将使用这些语言的简单性带入了 Java 域。它是 REST API 集成测试的绝佳工具。 如果你想了解更多信息,还可以查看 REST API Testing Automation: via REST Assured & HTTP Client 这个课程。
Selenium Selenium 可能是最流行的 Java UI 测试工具,它允许你测试 JSP 页面而无需在浏览器中启动它们。 你可以使用 JUnit 和 Selenium 测试 Web 应用程序 UI。它甚至允许你编写 Web 应用程序验收测试。 如果你想学习 Selenium,Selenium WebDriver with Java — Basics to the Advanced 这个课程是最好的开始。
TestNG TestNG 是一个受 JUnit 和 NUnit 启发的测试框架,但是却引入了许多新功能,使其功能更加强大,更加易于使用。例如注释、在任意大线程池中运行测试并提供各种策略(所有方法都在自己的线程中,每个测试类一个线程)等等。 由于使用了 JUnit 4 中的注释并集成了 Hamcrest 匹配器,这个测试框架与 JUnit 和 TestNG 之间的差距已经缩小,但是这取决于你的选择。 如果你决定学习 TestNG 来测试你的 Java 代码,那么 TestNG Complete Bootcamp For Beginners — Novice To Ninja 会是一个很好上手的课程。
Mockito Java 类有许多模拟框架,例如 PowerMock 和 JMock。但是我个人喜欢 Mockito,因为它具有简单的 API、很棒的文档还有很多例子。 Mocking(模拟)是现代单元测试的基本技术之一,因为它允许你在没有任何依赖性的情况下单独测试代码,这就是为什么我鼓励每一个 Java 开发人员在 JUnit 之余学一学 Mock 框架。 我最喜欢的模拟框架是 Mockito,但如果你愿意,也可以探索 PowerMock 或 JMock。 如果你也喜欢 Mockito 并决定学习这个框架,那么 Mockito Tutorial: Learn mocking with 25 Junit Examples 是一个很不错的课程。
Spock Framework Spock 是 Java 和 Groovy 应用程序的另一个测试和规范框架。它是用 Groovy 编写的,这使其成为一种非常有表现力的点对点规范语言。 当你使用 Spock 时,你的测试将变得更加易读并且更加易于维护,并且由于其利用 JUnit 运行程序,Spock 与大多数 IDE、构建工具和持续集成服务器兼容。 不幸的是,我没有找到 Spock 框架有用的学习课程,但是《Java Testing with Spock》这本书可以算是一个很好的上手资源。
Cucumber Cucumber 是自动化集成测试的另一个很好的工具,但是其与同类别中的其他工具的不同之处就在于它的规范功能。 Cucumber 将规范和测试文档合并为一个连贯完整的活动文档,因为它们将由 Cucumber 自动测试,所以你的规范总是最新的。 如果你想构建一个 Start to Finish Web 自动化测试框架,并在 Web 应用程序上模拟用户行为,那么 Selenium WebDriver with Java & Cucumber BDD 是一个很好的课程,可以帮助你在项目中学习和实现 Cucumber。
Spring Test Spring MVC 带有一个非常有用的测试框架,允许在不涉及 Web 容器的情况下进行深入测试。 它是为 Spring 应用程序编写自动化测试的最有用的库之一。它为 Spring 驱动的应用程序(包括 MVC 控制器)编写单元和集成测试提供了一流的支持。 还有一个 Spring Test DbUnit,它集成了 Spring Test 框架和 DbUnit;以及 Spring Test MVC HtmlUnit,集成了 Spring Test MVC 框架和 HtmlUnit。 通过使用这些工具,你可以轻松地以自动方式测试你的 Spring MVC 应用程序。 如果你想了解更多关于如何测试 Spring 应用程序的信息,我建议你看一下 John S Thompson 在 Udemy 上的课程 Testing Spring Boot: Beginner to Guru。
DBUnit 数据库是许多 Java 应用程序(核心 Java 应用程序和 Web 应用程序)不可或缺的一部分,这可能是进行单元测试时的最大障碍。 连接到 Dev 或 UAT 数据库进行集成测试是不可靠的,因为任何人都可以更改数据和架构,例如表和存储过程,这将导致你的自动化集成测试失败。 DbUnit 是 JUnit 的一个扩展,可用于在每次集成测试之前将数据库初始化为已知状态,以确保数据库包含正确的数据。 DbUnit 有自己的问题,但它是一个非常有用的工具,因为它可以帮助我们将测试数据的创建与测试代码分开。 Robot Framework Robot Framework 是一个基于 Python 的通用自动化测试框架,用于验收测试和验收测试驱动开发。 它是一个关键字驱动的测试框架,使用表格测试数据语法。你可以使用它来测试分布式异构应用程序,其中验证需要涉及多种技术和接口。 如果你决定学习这个用于集成测试的出色框架,那么 Udemy 的 Robot Framework Test Automation 是一个很好的上手资源。 这是一个由两部分组成的课程,涵盖了 Robot Framework 的基本和高级功能。
结论 以上,就是对于 Java 开发者而言的一些基本单元测试和集成测试工具、框架和库的全部内容。 很多库我并没有包含在此文中,例如 AssertJ 和 Hamcrest,尽管它们也可以帮助你写出漂亮和流畅的测试,但是要慢慢来。 首先,学习一种可以在日常工作中使用的工具或库。例如,如果你正在使用 Java UI,那么你应该首先学习 Selenium,因为那样你就可以更多地关注这个工具。 同样,如果你正在使用 REST API,那么请学习 REST Assured(参见 REST with Spring);如果你正在做很多核心 Java 工作,那么 JUnit 5 可能是你应该看的第一个库。 最后,祝你的测试旅程顺利!这当然不是一件容易的事情,但如果能遵循本指南和框架,你就离成为一个专业程序员又近了一步。
|
|