😊 如果您觉得这篇文章有用 ✔️ 的话,请给博主一个一键三连 🚀🚀🚀 吧 (点赞 🧡、关注 💛、收藏 💚)!!!您的支持 💖💖💖 将激励 🔥 博主输出更多优质内容!!!
- 自动化测试工具大全(Java)
- 自动化测试工具大全(Python)
自动化测试工具大全(Java)
- 1.xUnit 框架
- 2.TDD / ATDD / BDD
- 3.模型驱动测试(Model-Based Testing)
- 4.代码分析与覆盖率
- 5.Web UI 测试自动化
- 库
- 框架和封装
- 拓展
- 6.移动端测试自动化
- 7.API 测试自动化
- 8.Windows UI 测试自动化
- 9.Unix / Linux UI 测试自动化
- 10.MacOS UI 测试自动化
- 11.服务器端测试自动化
- 12.虚拟环境
- 13.性能 / 压力 / 负载测试
- 14.安全检测
- 15.构建工具
- 16.持续集成
- 17.报告
- 18.编辑器、IDE 和控制台
- 19.ORM 框架和库
- 20.有用的库
- 21.测试数据
- 22.数据库测试自动化
1.xUnit 框架
-
JUnit:一个广泛使用的 Java 单元测试框架,用于编写和运行可重复的自动化测试。它是 xUnit 测试框架家族的一部分,支持注解(如
@Test
)、断言(assertEquals
等)和测试生命周期管理(@Before
、@After
)。 -
TestNG:TestNG 是一个受 JUnit 和 NUnit 启发的测试框架,但引入了许多新功能,使其更强大且更易于使用。TestNG 的全称是
Testing, Next Generation
(下一代测试)。 -
Test Data Supplier:Test Data Supplier 是 TestNG 中提供测试数据的一种机制,主要通过
@DataProvider
注解来实现。它允许你将测试数据与测试逻辑分离,使测试更加灵活和可维护。 -
Sunshine:基于 Java 的 xUnit 测试运行器(如 TestNG、JUnit)的封装,能自动在 JAR 文件中查找测试类并传递给测试运行器,同时报告执行状态。
2.TDD / ATDD / BDD
-
JBehave:JBehave 是一个 行为驱动开发(
BDD
,Behavior-Driven Development
)框架,专门用于 Java 应用程序。它允许开发者、测试人员和业务分析师通过自然语言描述软件行为来协作定义需求,并将这些描述转化为可执行的测试用例。BDD 是测试驱动开发(TDD
)和验收测试驱动设计(ATDD
)的演进,旨在让初学者和专家都能更轻松直观地使用这些实践。 -
Cucumber-JVM:Cucumber-JVM 是一个基于 Java 的行为驱动开发测试框架,它是 Cucumber 在 JVM(Java 虚拟机)平台上的实现。它允许开发者、测试人员和业务分析师使用自然语言(Gherkin 语法)编写可执行的测试规范,并将其映射到 Java 代码实现自动化测试。
-
JGiven:JGiven 是一个基于 Java 的行为驱动开发框架,旨在提供更流畅、更结构化的测试代码编写方式。与 Cucumber-JVM 和 JBehave 不同,JGiven 不依赖 Gherkin 语法,而是直接在 Java 代码中使用 Given-When-Then 风格编写测试,使测试逻辑更贴近代码,同时保持可读性。
-
easyb:easyb 是一个基于 Groovy 的行为驱动开发测试框架,旨在让开发者、测试人员和业务分析师能够用自然语言编写可执行的测试规范。它结合了 Groovy 的动态语言特性和 BDD 的 Given-When-Then 风格,使得测试代码更易读、更接近业务需求。
-
Robot Framework:Robot Framework 是一个通用的自动化测试框架,采用 关键字驱动(Keyword-Driven) 和 数据驱动(Data-Driven)的设计模式,适用于功能测试、API 测试、UI 测试等场景。它使用简单、高度可扩展,并支持自然语言编写测试用例,适合测试人员、开发者和业务分析师协作。
-
awesome-robotframework:awesome-robotframework 是一个精选的 Robot Framework 生态资源列表,类似于 GitHub 上常见的
awesome-xxx
系列项目(如awesome-python
、awesome-java
)。它由社区维护,收集了与 Robot Framework 相关的最佳工具、库、教程、扩展和实用资源,帮助用户更高效地使用该框架。 -
Spectrum:Spectrum 是一个专门为 Java 8 设计的轻量级 BDD 测试框架,它通过 Lambda 表达式和流畅的 API 提供更符合自然语言的测试编写方式。灵感来自 Jasmine、RSpec 和 Cucumber。
-
Gauge:轻量级、跨平台的测试自动化工具,可用业务语言编写测试用例。
-
Spock:基于 Java 和 Groovy 的规格化(Specification)测试框架。
-
Concordion:灵活且可扩展的 BDD / SBE 工具,使用业务语言创建美观的 “活文档”。
-
cucumber-report-db:将 Cucumber-JVM 的 BDD 测试结果存储在数据库中,并提供报表功能。
3.模型驱动测试(Model-Based Testing)
- GraphWalker:一款模型驱动测试框架。该工具可读取多种格式(
graphml
、dot
、json
)的模型,并从中生成测试。
4.代码分析与覆盖率
-
SonarQube:开源项目,用于管理代码质量。
-
Gradle Quality Plugin:用于 Java 和 Groovy 项目的静态代码分析插件,集成了 Checkstyle、PMD、FindBugs 和 CodeNarc。插件实现了统一的控制台输出,大大简化了开发者的工作流程,让违规检查的体验类似编译错误。
-
Qulice:Java 项目的静态分析质量控制工具。它结合了最好的静态分析工具并对它们进行预配置,因此无需单独使用或配置各个工具。
-
JaCoCo:免费的 Java 代码覆盖率库,由 EclEmma 团队创建,基于多年对已有库的使用和集成经验。
5.Web UI 测试自动化
库
-
Selenium:可移植的 Web 应用测试框架。
-
SikuliX:能自动化任何你在桌面屏幕上看到的东西,支持 Windows、Mac 或部分 Linux / Unix。它使用基于 OpenCV 的图像识别来识别并控制 GUI 组件。在无法轻松访问 GUI 内部或应用/网页源代码的情况下,非常有用。
框架和封装
-
Selenide:基于 Selenium 的简洁 API,可编写稳定且可读的 UI 测试。
-
Selenified:一个开源框架,简化 Selenium 测试。为 Selenium 调用提供包装,以便详细报告、错误处理、简化测试环境配置(线程安全),并可本地或云端(Grid 或 SauceLabs)运行。
-
Serenity BDD (Thucydides):创新的开源库,用于编写更高效的自动化验收测试,并使用这些测试生成产品和项目的丰富文档和报告。
-
htmlelements:一个 Java 框架,以易用的方式在测试中与网页元素交互。
-
atlassian-selenium:开源(BSD)项目,旨在简化在 Selenium / WebDriver 中开发功能性测试。
-
stevia:Persado 提供的开源 QA 自动化测试框架。
-
darcy:一个开源的 Java 8 框架,使用声明式、与自动化库无关的 DSL 将用户界面建模为页面对象。
-
Satisfy:基于 Thucydides + JBehave 的开源 Java 框架,开箱即用地支持 WebUI、SOAP、REST、电子邮件、文件及随机数据生成等。
-
JDI Light:UI 测试自动化框架,帮助编写快速、可持续的测试,并提供清晰、可预测的测试运行结果。
-
Geb Framework:一个 Groovy 测试自动化框架,适配 WebDriver 的页面对象模式,并结合 Spock 进行 BDD。
-
FluentLenium:为 Selenium 提供了一个流畅的 Java 接口,使 UI 功能性测试可读性更强,也更可重用、可靠和稳健。
-
Selion:基于 TestNG 和 Selenium 构建,提供一组能力,让你能快速开始使用 WebDriver。可用于测试 Web 和移动端应用。
-
Frameworkium:一个可用于 Web、App 和 API 测试的自动化框架。集成了
saucelabs
、allure
、rest-assured
、jackson
、gson
。可通过 Jitpack 获取。 -
Carina:基于 Java 的测试自动化框架,统一了所有测试层:移动应用(Web、原生、混合)、Web 应用、REST 服务、数据库。
-
NoraUi:NoraUi(
NOn-Regression Automation for User Interfaces
)是一个基于 Selenium、Cucumber、Gherkin 的 Java 框架,可创建 GUI 测试项目,并能轻松集成到 CI 流程中。 -
Cubano:一个用 Java 编写的测试自动化框架,为开发验收和回归测试提供项目结构,无需花时间自行构建和维护。
-
Jalenium:一个 Java 的 Selenium API,可以轻松集成到任何使用 Selenium JAR 的 Maven Selenium Java 项目中。
-
TestZeus:专为 Salesforce 而构建的开源 UI 测试自动化框架,带有自动定位器功能。
拓展
-
BrowserMob Proxy:使得在浏览器中捕获性能数据更加容易,通常与 Selenium 或 Watir 等自动化工具结合使用。
-
Selenoid:Selenium Hub 的后继者,将浏览器运行在容器中。可在任何平台上实现可扩展、不可变、自行托管的 Selenium-Grid,只需一个可执行文件。
-
Selenium-Grid-Extras:简化对 Selenium Grid 节点的管理,通过在构建完成后清理测试环境来稳定节点。
-
Selenium Grid Extensions:通过额外功能扩展 Selenium Grid。可在 Selenium 测试中结合 Sikuli 使用。
-
Selenium Grid Router:一个轻量级服务器,用于将 Selenium WebDriver 请求路由和代理到多个 Selenium hub。
-
Docker Selenium Grid:一个提供 Selenium Grid 原生视频录制功能的项目,最初用于与 docker-selenium 项目结合。
-
Video Recorder Java:这个库可以轻松录制 UI 测试的视频,只需添加几个注解即可。
-
Zalenium:基于 Docker 的可弹性 Selenium Grid,支持视频录制、实时预览以及在线/离线仪表板。
-
SikuliFactory:针对 SikuliX 的 PageFactory 模型封装。
-
Mailosaur:通过 Mailosaur 进行邮件测试/自动化的 Java 客户端。
-
TrueAutomation.IO:旨在解决不稳定定位符(locators)问题的一个解决方案。
6.移动端测试自动化
- Appium:一款开源测试自动化框架,用于测试原生、混合和移动网页应用。它通过 WebDriver 协议驱动 iOS 和 Android 应用。
- Calabash:一款跨平台(Android 和 iOS)测试自动化框架,针对原生和混合应用。语法易于理解,即便非技术人员也能编写和执行应用的自动化验收测试。
- Robotium:全面支持原生和混合应用的 Android 测试自动化框架。可轻松编写功能性、系统以及用户验收测试,覆盖多个 Android Activity。
- UIAutomator:一种高效测试 UI 的方式,可针对真实 Android 设备和模拟器执行自动化功能测试。包含一个 GUI 工具(
viewer
)来扫描和分析 Android 应用的 UI 组件。 - Espresso:Google 在 2013 年开源的 Android UI 测试自动化框架,API 小巧、预测性强、易于学习,基于 Android Instrumentation 框架之上,可快速编写简洁而可靠的 Android UI 测试。
7.API 测试自动化
-
hikaku:一个验证 REST-API 实现是否符合其规范的库。
-
Karate-DSL:Karate 是一个 BDD JavaScript 框架,可对任意类型的 Web 服务执行一系列调用,并检查响应是否符合预期。可轻松构建复杂请求、遍历响应数据并将响应数据链式传递给下一步。内置的有效载荷验证引擎可进行 “智能比对”,可选择忽略特定字段。
-
Retrofit:针对 Android 和 Java 的类型安全 HTTP 客户端。
-
REST-Assured:用于测试和验证 REST 服务的 Java 库。
8.Windows UI 测试自动化
-
SikuliX:使用图像识别来自动化任何在屏幕上可见的元素,适用于 Windows、Mac 或部分 Linux / Unix。
-
Winium for Desktop:基于 WinForms 和 WPF 平台的 Windows 应用自动化测试工具,开源。
-
WinAppDriver:Windows 应用程序驱动(WinAppDriver),在 Windows 10 上使用类似 Selenium 的方式进行 UI 测试自动化。支持通用 Windows 平台(UWP)、Windows Forms(WinForms)、WPF 以及经典 Win32 应用。
9.Unix / Linux UI 测试自动化
- SikuliX:使用图像识别自动化桌面屏幕上的任何内容,适用于 Windows、Mac 或部分 Linux / Unix。
10.MacOS UI 测试自动化
- SikuliX:使用图像识别自动化桌面屏幕上的任何内容。
11.服务器端测试自动化
- Citrus:用 Java 编写的测试框架,可为企业 SOA 应用创建完全自动化的端到端测试用例。Citrus 模拟周边接口,支持多种传输协议(HTTP、JMS、TCP/IP、FTP、SOAP、XML、JSON 等)。
12.虚拟环境
-
Vagrant:易配置、可靠的工具,用于构建和维护可移植的虚拟开发环境。
-
Docker:当前流行的容器平台。开发者可用 Docker 来解决 “在我的机器上运行正常” 这类问题;运维团队可利用 Docker 在隔离的容器中并行运行和管理应用。
13.性能 / 压力 / 负载测试
-
Apache JMeter:功能测试和性能测试工具。
-
The Grinder:负载测试框架,可轻松使用多台负载注入机进行分布式测试。
-
Lightning:在 CI / CD 服务器上集成 JMeter 的非功能测试。
-
Tsung:基于 Erlang 的多协议分布式负载测试工具。
-
Gatling:基于 Scala、Akka 和 Netty 的开源负载测试框架,功能强大,易用且可维护度高。采用消息而非线程来模拟虚拟用户,可轻松模拟数千并发。
-
CRUX:基于 Kubernetes(AKS)和 JMeter 的性能测试集成方案,使性能测试轻松接入 Azure CI/CD 流程。可在每次性能构建时创建并销毁所需的基础设施,从而降低成本。
14.安全检测
- BDD-Security:BDD-Security 使用 Gherkin 的 Given-When-Then 语法来描述安全需求,同时也能作为标准的单元/集成测试来执行,可集成到构建/测试/部署流程中。
15.构建工具
-
Apache Ant:Java 库和命令行工具,通过在构建文件中描述的目标和依赖来驱动过程。最常用场景是构建 Java 应用。
-
Apache Maven:管理软件项目和理解项目的工具。基于项目对象模型(POM)的概念,可统一管理构建、报告和文档。
-
Gradle:开源构建自动化系统,可自动化软件包的构建、测试、发布、部署等,也可用于生成静态网站或文档等。
16.持续集成
-
Jenkins:获奖的应用程序,用于监控重复任务的执行,如构建软件项目或执行定时任务。
-
TeamCity:功能强大且用户友好的持续集成与部署服务器,开箱即用。
-
Drone:面向繁忙开发团队的自助式持续集成平台。
-
Thundra Foresight:一款 CI 可观察性工具,为测试套件提供可见性。
17.报告
-
ReportPortal:强大的客户端-服务端报告工具。通过机器学习减少处理结果的时间,一键获取历史执行数据、日志、截图及任何二进制附件。可自定义 widget 和仪表板,提供实时集成,无需等待执行结束。支持各种语言和平台,免费、开源。
-
Allure:开源框架,用于生成清晰、易读的测试执行报告。
-
Gradle Allure Plugin:第三方 Gradle 插件,用于将 Allure 集成到 Spock、TestNG 和 JUnit 测试中。
-
ExtentReports:.NET 和 Java 的 HTML 报告库,易于使用且报告美观。可折叠查看测试和步骤摘要以及执行状态,便于快速分析。
-
ReportNG: 一个简单的 HTML 报告插件,基于 TestNG 单元测试框架。
-
Zebrunner Reporting: 测试自动化管理工具,用于聚合并展示测试结果。可提供详细报告,包括测试日志、截图和视频录制。
-
Difido-reports:一个生成 HTML 测试报告的通用实现。
-
cucumber-reporting:主要用于在 Jenkins 上发布 Cucumber 测试报告,也可用于 Maven 命令行或其他场景。生成无需依赖即可离线查看的报告,并包含图表展示 Cucumber 测试运行结果。
-
Cluecumber:针对 Cucumber 和 Karate 生成的 JSON 报告文件的报告库,可生成清晰而简洁的 HTML 报告,并具有高度的可定制性。
18.编辑器、IDE 和控制台
-
IntelliJ IDEA:免费开源的 IDE,支持 Java、Groovy、Scala 和 Android 开发。
-
IntelliJ IDEA Selenium plugin:用于简化在 IntelliJ IDEA 中创建 Selenium Web 测试的插件。
-
Eclipse:以 Java IDE、C/C++ IDE 和 PHP IDE 而闻名。
-
Genie plugin:用于纯 AS 3.0 SWF 和 Flash 游戏的功能测试自动化工具。
-
NetBeans:官方 Java 8 IDE,提供编辑器、代码分析和转换器,可轻松迁移到 Java 8 新特性。
-
VSCode:代码编辑,重新定义。
19.ORM 框架和库
-
Hibernate:帮助开发者更轻松地编写数据持久化代码,支持对象/关系映射(ORM),专注于数据持久层。
-
Morphia:一个轻量级、类型安全的库,用于在 MongoDB 与 Java 对象之间映射。提供类型安全且流式的 Query API,并使用注解配置,无需编写 XML。
-
MyBatis:一款优先支持自定义 SQL、存储过程和高级映射的持久化框架。几乎免去所有 JDBC 代码,不需手动设置参数或处理结果集。可使用简单的 XML 或注解进行配置。
20.有用的库
-
StreamEx:对 Java 8 Streams 的增强库。
-
Vavr:Java 8 的函数式扩展,提供持久化集合、函数式错误处理、并发编程模式、模式匹配等。
-
Lombok:消除样板代码的工具,通过注解自动生成常用的代码结构(如
getter
/setter
、构造方法等)。 -
AspectJ:Java 的无缝面向切面编程扩展。可实现错误检查与处理、同步、性能优化、监控和日志支持、调试支持、多对象协议等交叉关注点的干净模块化。
-
aShot:基于 WebDriver 的截图工具。可截图、裁剪、美化、对比。
-
WireMock:灵活的 Web 服务模拟与桩服务库。与一般的模拟工具不同,它会启动一个真实的 HTTP 服务器,以便与被测应用建立真实的 HTTP / HTTPS 连接。
-
MockServer:用于模拟任意通过 HTTP / HTTPS 协议通信的系统(服务、网站等)。
-
Mockito:流行的 Java Mock 框架,API 简洁,能编写易读的测试。
-
PowerMock:允许对通常被视为无法测试的代码进行单元测试的 Java 框架。
-
XMLUnit:用于测试和对比 XML 输出(Java 和 .NET 皆可)。
-
Awaitility:一种 DSL,可简洁地表达对异步系统的期望。
-
Beanmother:用于在测试中设置 Java Bean 测试数据的库。
-
PIT:进行变异测试的工具(Pitest)。
-
GreenMail:开源的易用邮件服务器测试套件,用于邮件集成测试或在开发中作为沙盒邮件服务器。
-
image-comparison:Java 库,用于对比两张相同尺寸的图像并可将差异部分用矩形标记。可忽略图像的某些区域,常用于自动化 QA 测试。
-
AssertJ:功能强大的流式断言框架,可与任意 xUnit 兼容。
-
Truth:Google 开发的 Java / Android 流式断言框架。
-
JSONassert:JSON 断言库。
-
selenium-to-restassured:允许在 Selenium WebDriver Cookies 和 Rest Assured 之间来回共享的适配器。
-
TestRail-JUnit:使基于 JUnit 的测试轻松集成 TestRail 的库。
-
TestRail-TestNG:使基于 TestNG 的测试轻松集成 TestRail 的库。
-
Allure-Environment-Creator:小型库,帮助轻松为 Allure 提供和存储环境信息。
-
Owner:一款简化 Java Properties 文件处理的库,减少配置解析所需的样板代码。
-
DeepfakeHTTP:一个使用 HTTP 转储(dump)作为响应来源的 Web 服务器工具,可模拟 REST、GraphQL 等各种 API 以进行客户端测试。
-
Cucable:一个 Maven 插件,可以将 Cucumber 场景拆分成最小可运行的 Feature 文件和 Runner 类,从而简化并行执行。
21.测试数据
-
Faker:生成姓名、地址、电话号码等虚拟数据的 Java 库实现。
-
Instancio:用于在单元测试中创建完整填充的对象,包含 JUnit 5 扩展。
22.数据库测试自动化
-
DBTestCompare:比较两个 SQL 查询结果的应用,支持所有提供 JDBC 驱动的数据库(已在 Microsoft SQL Server、Teradata、Snowflake、PostgreSQL 和 MySQL / MariaDB 测试)。
-
DBTestCompareGenerator:用于生成可由 DBTestCompare 运行的数据库测试的工具。