📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)
📝 职场经验干货:
Java 测试自动化
一个关于 Java 测试自动化框架、工具、库和软件的综合精心整理的列表,帮助软件工程师在 Java 上轻松启动测试自动化。由 SDCLabs 赞助。
如果有问题/想法/疑问,可以加入这里的聊天讨论: https://gitter.im/atinfo/awesome-test-automation
目录
-
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. 文档生成
-
19. 编辑器、IDE 和控制台
-
20. ORM 框架和库
-
21. 有用的库
-
22. 测试数据
-
23. 数据库测试自动化
xUnit 框架
-
• JUnit
常用的 Java 测试框架。 -
• TestNG
测试框架。 -
• Test Data Supplier
TestNGDataProvider
的包装器,可以以更灵活的方式提供测试数据。 -
• Sunshine
基于 Java 的 xUnit 测试运行器(例如 TestNG、JUnit ...)的封装。它可以自动在 JAR 文件中查找带有测试的类,传递给所需的测试运行器并报告执行状态。
TDD / ATDD / BDD
工具
-
• JBehave
一款行为驱动开发(BDD)框架。BDD 是测试驱动开发(TDD)和验收测试驱动设计(ATDD)的演进,旨在让初学者和专家都能更轻松直观地使用这些实践。 -
• Cucumber-JVM
Cucumber 的纯 Java 实现,支持大多数 JVM 上的主流编程语言。 -
• JGiven
针对 Java 的开发者友好且务实的 BDD 工具。开发者可以使用流式、特定领域的 API(DSL)在纯 Java 中编写场景,JGiven 会生成易于领域专家阅读的报告。 -
• easyb
针对 Java 平台的 BDD 框架。通过使用基于规范的领域特定语言(DSL),easyb 旨在实现可执行但又可读的文档。 -
• Robot Framework
一款通用的测试自动化框架,用于验收测试和验收测试驱动开发(ATDD)。 -
• awesome-robotframework
一个关于 Robot Framework 资源和库的精选列表。 -
• Spectrum
针对 Java 8 的 BDD 风格测试运行器,灵感来自 Jasmine、RSpec 和 Cucumber。 -
• Gauge
轻量级、跨平台的测试自动化工具,可用业务语言编写测试用例。 -
• Spock
基于 Java 和 Groovy 的规格化(Specification)测试框架。 -
• Concordion
灵活且可扩展的 BDD/SBE 工具,使用业务语言创建美观的“活文档”。
扩展
-
• cucumber-report-db
将 Cucumber-JVM 的 BDD 测试结果存储在数据库中,并提供报表功能。
模型驱动测试 (Model-Based Testing)
-
• GraphWalker
一款模型驱动测试框架。该工具可读取多种格式(graphml、dot、json)的模型,并从中生成测试。
代码分析和覆盖率
-
• SonarQube
开源项目,用于管理代码质量。 -
• Gradle Quality Plugin
用于 Java 和 Groovy 项目的静态代码分析插件,集成了 Checkstyle、PMD、FindBugs 和 CodeNarc。插件实现了统一的控制台输出,大大简化了开发者的工作流程,让违规检查的体验类似编译错误。 -
• Qulice
Java 项目的静态分析质量控制工具。它结合了最好的静态分析工具并对它们进行预配置,因此无需单独使用或配置各个工具。 -
• JaCoCo
免费的 Java 代码覆盖率库,由 EclEmma 团队创建,基于多年对已有库的使用和集成经验。
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)问题的一个解决方案。
移动端测试自动化
-
• 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 测试。
API 测试自动化
-
• hikaku
一个验证 REST-API 实现是否符合其规范的库。 -
• Karate-DSL
Karate 是一个 BDD JavaScript 框架,可对任意类型的 Web 服务执行一系列调用,并检查响应是否符合预期。可轻松构建复杂请求、遍历响应数据并将响应数据链式传递给下一步。内置的有效载荷验证引擎可进行“智能比对”,可选择忽略特定字段。 -
• Retrofit
针对 Android 和 Java 的类型安全 HTTP 客户端。 -
• REST-Assured
用于测试和验证 REST 服务的 Java 库。
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 应用。
Unix / Linux UI 测试自动化
-
• SikuliX
同上,使用图像识别自动化桌面屏幕上的任何内容,适用于 Windows、Mac 或部分 Linux/Unix。
MacOS UI 测试自动化
-
• SikuliX
同上,使用图像识别自动化桌面屏幕上的任何内容。
服务器端测试自动化
-
• Citrus
用 Java 编写的测试框架,可为企业 SOA 应用创建完全自动化的端到端测试用例。Citrus 模拟周边接口,支持多种传输协议(HTTP、JMS、TCP/IP、FTP、SOAP、XML、JSON 等)。
虚拟环境
-
• Vagrant
易配置、可靠的工具,用于构建和维护可移植的虚拟开发环境。 -
• Docker
当前流行的容器平台。开发者可用 Docker 来解决“在我的机器上运行正常”这类问题;运维团队可利用 Docker 在隔离的容器中并行运行和管理应用。
性能 / 压力 / 负载测试
-
• Apache JMeter
功能测试和性能测试工具。 -
• The Grinder
负载测试框架,可轻松使用多台负载注入机进行分布式测试。 -
• Lightning
在 CI/CD 服务器上集成 JMeter 的非功能测试。 -
• Tsung
基于 Erlang 的多协议分布式负载测试工具。 -
• Gatling
基于 Scala、Akka 和 Netty 的开源负载测试框架,功能强大,易用且可维护度高。采用消息而非线程来模拟虚拟用户,可轻松模拟数千并发。 -
• CRUX
基于 Kubernetes(AKS)和 JMeter 的性能测试集成方案,使性能测试轻松接入 Azure CI/CD 流程。可在每次性能构建时创建并销毁所需的基础设施,从而降低成本。
安全检测
-
• BDD-Security
BDD-Security 使用 Gherkin 的 Given/When/Then 语法来描述安全需求,同时也能作为标准的单元/集成测试来执行,可集成到构建/测试/部署流程中。
构建工具
-
• Apache Ant
Java 库和命令行工具,通过在构建文件中描述的目标和依赖来驱动过程。最常用场景是构建 Java 应用。 -
• Apache Maven
管理软件项目和理解项目的工具。基于项目对象模型(POM)的概念,可统一管理构建、报告和文档。 -
• Gradle
开源构建自动化系统,可自动化软件包的构建、测试、发布、部署等,也可用于生成静态网站或文档等。
持续集成
-
• Jenkins
获奖的应用程序,用于监控重复任务的执行,如构建软件项目或执行定时任务。 -
• TeamCity
功能强大且用户友好的持续集成与部署服务器,开箱即用。 -
• Drone
面向繁忙开发团队的自助式持续集成平台。 -
• Thundra Foresight
一款 CI 可观察性工具,为测试套件提供可见性。
报告
-
• 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 报告,并具有高度的可定制性。
文档生成
(欢迎在此部分贡献相关条目)
编辑器、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
代码编辑,重新定义。
ORM 框架和库
-
• Hibernate
帮助开发者更轻松地编写数据持久化代码,支持对象/关系映射(ORM),专注于数据持久层。 -
• Morphia
一个轻量级、类型安全的库,用于在 MongoDB 与 Java 对象之间映射。提供类型安全且流式的 Query API,并使用注解配置,无需编写 XML。 -
• MyBatis
一款优先支持自定义 SQL、存储过程和高级映射的持久化框架。几乎免去所有 JDBC 代码,不需手动设置参数或处理结果集。可使用简单的 XML 或注解进行配置。
有用的库
-
• 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 类,从而简化并行执行。
测试数据
-
• Faker
生成姓名、地址、电话号码等虚拟数据的 Java 库实现。 -
• Instancio
用于在单元测试中创建完整填充的对象,包含 JUnit 5 扩展。
数据库测试自动化
-
• DBTestCompare
比较两个 SQL 查询结果的应用,支持所有提供 JDBC 驱动的数据库(已在 Microsoft SQL Server、Teradata、Snowflake、PostgreSQL 和 MySQL\MariaDB 测试)。
DBTestCompareGenerator - 用于生成可由 DBTestCompare 运行的数据库测试的工具。
其他
资源
-
• Serenity BDD (Thucydides) libraries
-
• Automation tests structure
-
• Websites
-
• automated-testing.info — 测试自动化社区
-
• atinfo.github.io/at.info-knowledge-base — 不同工具和技术的测试自动化示例知识库
-
• selenium-simplified — 使用 Selenium 2 WebDriver 进行自动化浏览器测试的简化教程
-
Python 测试自动化
一个精心整理的 Python 测试自动化框架、工具、库和软件的综合列表,帮助软件工程师在 Python 上轻松地启动测试自动化工作。由 SDCLabs 赞助。
如果有问题/想法/疑问,可以加入这里的聊天讨论: https://gitter.im/atinfo/awesome-test-automation
目录
-
1. xUnit 框架
-
2. TDD / ATDD / BDD
-
3. 测试数据操作
-
4. 代码分析
-
5. Web UI 测试自动化
-
6. 移动端测试自动化
-
7. Windows UI 测试自动化
-
8. Unix / Linux UI 测试自动化
-
9. MacOS UI 测试自动化
-
10. REST API 测试
-
11. 虚拟环境
-
12. 性能 / 压力 / 负载测试
-
13. 安全检测
-
14. 持续集成
-
15. 报告
-
16. 文档生成
-
17. 编辑器、IDE 和控制台
-
18. 有用的库
-
19. 资源
-
20. 其他优秀的测试自动化列表
-
21. 贡献
xUnit 框架
框架
-
• unittest
自带于 Python 的单元测试库。 -
• unittest2
Python 2.7 及以上 unittest 框架的新特性在 Python 低版本上的一个回移版(backport)。 -
• pytest
一个成熟且功能全面的 Python 测试工具,帮助你编写更好的程序。-
• plugincompat - 用于测试运行 pytest 插件并检查兼容性。
-
-
• test-junkie
高度可配置的现代测试框架。 -
• nosetests
一种更好用的 Python 测试方式。 -
• slash
由 Python 编写的测试框架。 -
• lemoncheesecake
一个 Python 框架,面向功能测试,提供了 fixture、matcher、通过测试套件层次和元数据(测试/套件名称、描述、标签、属性、链接)来组织测试,拥有丰富的报告特性及多种报告格式(JSON、XML、HTML、JUnit)。
扩展
-
• proboscis
针对 Python 内置 unittest 模块和 Nose 的增强,借鉴了 TestNG 的特性。 -
• grail
用于基于“步骤”来创建测试脚本的库。 -
• testify
单元测试框架,提供了增强的测试夹具(fixture)设置、可将测试套件拆分为多个分块以便并行运行,还提供了 PEP8 命名约定和丰富的日志/报告输出选项。 -
• trial
unittest 的扩展,用于支持使用 Deferreds 编写异步单元测试,并增加了'skip'
和'todo'
结果类型。包括一个命令行程序,可发现测试并与 doctest、coverage 集成。 -
• subunit
透明地为 unittest 用例/套件提供在独立进程中运行的支持:防止测试中的系统级更改影响测试运行器。也允许从其他进程中的测试报告到 unittest 框架,形成统一的测试环境。 -
• testresources
提供一种机制来管理“资源”(多个测试需要的昂贵基础设施)。可根据需要来构造和释放资源;也可选用 TestSuite 优化测试运行顺序,从而减少构造与释放资源的次数。与 unittest 兼容。 -
• testtools
从 Twisted、Bazaar 等项目的自定义扩展中提炼而来的对 unittest 的有用扩展。 -
• Sancho
Sancho 2.1 执行测试并对失败的测试提供输出;不会统计通过/失败次数。目标是那些不会修复失败测试的项目。 -
• zope.testing
强大的测试运行器,包括对失败后进行 post-mortem 调试的支持,同时提供了性能剖析和覆盖率报告。独立包,与 Zope 无依赖,也可用于不使用 Zope 的项目。 -
• pythoscope
可以自动或半自动地为 Python 老旧系统生成单元测试的工具。 -
• testlib
为标准 unittest 提供更多功能:更多 assert 方法;支持模块级别的 setup/teardown;跳过测试等功能。 -
• dutest
面向 doctest 的面向对象接口,可从 doctest 中获取 unittest 测试用例。允许在交互示例中进行 setUp/tearDown,并可控制 doctest 提供的各种选项。通过特定类可以跨包层次选择性发现测试。 -
• green
干净、带颜色输出的测试运行器。可与 Nose 或 trial 类比。 -
• ddt
使用 unittest 进行数据驱动测试的库。 -
• pytractor
针对 Selenium Python 绑定的扩展,让测试 Angular.js 应用更简易。 -
• stestr
基于 subunit 的并行 Python 测试运行器。 -
• pytest-django
允许使用 pytest 工具测试你的 Django 项目/应用。 -
• pytest-asyncio
帮助在 pytest 中测试 asyncio 代码。
TDD / ATDD / BDD
BDD
-
• behave
BDD 工具。 -
• lettuce
BDD 工具。-
• lettuce-tools - 一系列 Lettuce 的扩展和工具,填补了该项目的功能空白。
-
-
• contexts
一种可描述化 Python 测试的工具。 -
• mamba
为 Python 而生的 BDD 测试工具。 -
• pyvows
针对 Python 的异步行为驱动开发(BDD)。 -
• pytest-bdd
基于 py.test(即 pytest)的 BDD 库。 -
• pytest-play
一个 ATDD 的 pytest 插件,能够通过执行纯 YAML 文件来自动化动作、断言和测试指标。 -
• robotframework
一款通用的测试自动化框架,用于验收测试和验收测试驱动开发(ATDD)。 -
• awesome-robotframework
一个汇集 Robot Framework 资源与库的精选列表。 -
• radish-bdd
带有扩展功能的 BDD 测试工具。
断言(Assertions)
-
• pyshould
基于 pyhamcrest,采用 “Should” 风格的断言。 -
• pyhamcrest
Hamcrest 的 Python 版本匹配器。 -
• sure
一个强大且灵活的 Python 测试断言库。 -
• assertpy
Python 测试的简洁断言库,支持流式 API,兼容 Python 2 和 3。
Mocking
-
• mock
Python 的模拟(Mocking)和补丁(Patching)库。 -
• Ludibrio
优雅的 Python 测试替身框架(mocks、stubs、spy、dummies)。 -
• responses
用于模拟 Pythonrequests
库请求的工具库。 -
• doublex
强大的 Python 测试替身框架。 -
• freezegun
通过模拟 datetime 模块在测试中“穿越时间”。 -
• httpretty
HTTP 请求模拟工具。 -
• httmock
一个针对于requests
的 mock 库,兼容 Python 2.6+ 和 3.2+。 -
• pretenders
用于测试的假服务器(fake servers)。 -
• mock-server
基于 tornado,具有管理面板的简单 REST 和 XML-RPC API mock 服务器。 -
• VCR.py
自动模拟 HTTP 交互,以简化并加速测试。 -
• model-mommy
帮助 Django 测试中轻松创建大量对象的工具(简单而强大的 API)。 -
• django-test-plus
针对 Django 默认 TestCase 的有用扩展。 -
• Mockintosh
Mock 服务器生成器,可生成 RESTful APIs 并与消息队列通信来模拟异步任务。 -
• pytest-mock
将标准库unittest.mock
封装成 pytest fixture 的插件。
测试数据操作
-
• faker
生成虚拟数据的 Python 包。 -
• fake2db
假数据库生成器。 -
• ForgeryPy
易用的伪造数据生成器(Python 版,移植自 forgery)。 -
• radar
生成随机日期/时间。 -
• robotframework-faker
Robot Framework 中对 faker 的封装库。 -
• hypothesis
基于性质(Property)测试的库,灵感来自 Haskell 的 Quickcheck。 -
• factory_boy
替代 fixtures 的库,灵感源于 thoughtbot 的 factory_girl。 -
• fauxfactory
随机数据生成器。 -
• mimesis
速度快、极易使用,可生成大量多语言假数据的 Python 包。
代码分析
-
• ruff
用 Rust 编写的超高速 Python 代码检查器(linter)。 -
• pysonar2
一个 Python 的类型推断与索引器。 -
• coverage
代码覆盖率测量工具。 -
• pycallgraph
可视化 Python 应用调用流程(调用图)的库。 -
• Flake8
模块化源代码检查器,整合 pep8、pyflakes 等。 -
• pylama
Python 和 JavaScript 的代码审查工具。 -
• Pylint
源代码分析器。 -
• hacking
OpenStack Hacking 风格检查(flake8 插件)。 -
• prospector
分析 Python 代码,输出错误、潜在问题、风格违例以及复杂度信息。 -
• wemake-python-styleguide
史上最严格、最主观的 Python 代码风格检查器! -
• pytest-cov
帮助在 pytest 中识别已被测试执行到的代码部分的插件。
Web UI 测试自动化
库
-
• selenium webdriver
浏览器自动化工具。 -
• splinter
一个测试 Web 应用的工具,提供简洁的元素查找、表单操作等浏览器操作。 -
• mechanize
在 Python 中进行有状态的程序化 Web 浏览。
框架和封装
-
• play_selenium
pytest-play 插件,让你通过简单的 YAML 文件配合 Selenium 驱动浏览器。 -
• py.saunter
针对 Selenium RC 和 WebDriver 库的一款“有主见”的自动化框架。 -
• moz-web-qa
一个针对 py.test 的插件,为 Mozilla 的 WebQA 项目提供其他特性。 -
• testutils sst
基于 Python 的浏览器端功能测试框架。 -
• wtframework
用于配置化地编写 Web 测试的 Python 框架。 -
• holmium.core
提供页面对象 (Page Objects) 和常用工具来编写 Selenium 测试用例。 -
• robotframework-selenium2library
Robot Framework 的 Web 测试库。 -
• gocept.selenium
针对 Selenium 远程控制的 API,适合为任何 WSGI、Plone、Zope 2、ZTK 或 Grok 应用编写测试并与测试套件集成。 -
• webium
一个 Python 实现的 Page Object 模式库。 -
• robotframework-anywherelibrary
跨平台(桌面浏览器、Android、iOS)的 Robot Framework 测试库,内部集成了 Selenium2(WebDriver) 和 Appium。 -
• robotframework-pageobjects
使用 robotframework + selenium 实现的 Page Object 模式,可在框架外部使用。 -
• elementium
采用 jQuery 风格的 Python 语法糖,帮助进行稳定的自动化浏览器测试。 -
• slickqa
slick-webdriver-python 项目是对 Python WebDriver 客户端绑定的一种封装。 -
• selene
在 Python 中编写简洁 UI 测试,支持 AJAX、PageObjects、Widgets。 -
• hitch
面向服务式应用的高级集成测试框架。 -
• Needle
与 Selenium 和 nose 结合,可进行视觉测试,比较页面某部分的截图与“黄金截图”是否一致,也可测试 CSS 值及 HTML 元素位置。 -
• PyPOM
针对 Selenium 和 Splinter 的 Python Page Object Model 库。 -
• pypom_form
基于 PyPOM 的页面对象模型,适用于基于模式(schema)的表单。 -
• POM
轻量级的 Page-Object-Model 微框架,用于快捷愉悦地开发 Web UI 测试。 -
• websmith
Web 测试的领域特定语言(DSL)。 -
• pages
轻量级的 Page Object & Component Python 库,用于编写 UI 测试。 -
• seleniumbase
用于基于 Selenium WebDriver 构建自动化测试的简单 Python 框架,依赖 pytest 或 noose 等模块来运行,配合 noose 可生成 HTML 报告。 -
• Toolium
将 Selenium 和 Appium 库封装为 Python 工具,可在单个项目中测试 Web 和移动应用。提供可在配置文件中选择和配置驱动,并实现了 Page Object 模式及简单的可视化测试方案。 -
• Mops
一个 Python 封装库,提供友好统一的 API,可同时使用 Selenium、Appium 和 Playwright 来简化 Web 应用测试自动化。减少 Selenium 等的等待时长,并支持跨所有框架的视觉对比。
扩展
-
• webdriver_manager
简化对不同浏览器二进制驱动的管理。 -
• pytest_splinter
用于在测试中集成 pytest 与 splinter/selenium 的插件。 -
• lettuce_webdriver
让 lettuce 使用 Selenium WebDriver。 -
• Browsermob Proxy
Browsermob Proxy 的 Python 封装。 -
• FireRobot
Firefox 插件,以更高效的方式创建 Robot Framework / Selenium 测试。 -
• pytractor
Selenium Python 扩展,用于测试 Angular.js 应用。 -
• Selenium-Requests
扩展 Selenium WebDriver 类,使其可使用 Requests 库进行请求并自动处理 cookies、请求头等。 -
• selenium-respectful
一个最简的 Selenium WebDriver 封装,可同时在多个网站内受速率限制的情况下工作。支持并行处理。 -
• Mailosaur
通过 Mailosaur 进行邮件测试/自动化的 Python 客户端。 -
• gauge
轻量级、跨平台的测试自动化工具,用业务语言编写测试用例。虽然核心用 Go 语言编写,也可用 Python 驱动。 -
• Golem
一个完整的端到端测试自动化工具和框架。基于 Selenium WebDriver,易学易用(对编程要求不高),可使用 Python 来扩展。 -
• Pylenium.io
将 Selenium、Cypress 和 Python 的优势集于一体的工具包。 -
• Playwright
一个可用单一 API 来自动化 Chromium、Firefox、WebKit 浏览器的 Python 库。Playwright 提供稳定、高效且快速的自动化能力。
移动端测试自动化
-
• appium
用于测试原生、混合和移动 Web 应用的开源自动化框架。通过 WebDriver 协议驱动 iOS 和 Android 应用。 -
• Winium.StoreApps
针对 Windows Store 应用的开源测试自动化工具,可在模拟器上进行测试。实现了 Selenium Remote WebDriver。 -
• robotframework-androidlibrary
满足 Android 自动化需求的 Robot Framework 测试库。 -
• robotframework-appiumlibrary
Robot Framework 的 Appium 测试库。 -
• robotframework-ioslibrary
满足 iOS 自动化需求的 Robot Framework 测试库。 -
• uiautomator
Android uiautomator 测试工具的 Python 封装,Android 4.1+ 通过 ADB 连接设备即可。 -
• ATX
智能手机自动化工具,支持 iOS、Android、WebApp 及游戏自动化。 -
• Airtest
跨平台自动化测试框架,主要面向游戏测试,也适用于原生应用测试。
Windows UI 测试自动化
-
• Winium.Desktop
针对 WinForms 和 WPF 平台的 Windows 应用测试自动化工具,开源。实现了 Selenium Remote WebDriver。 -
• PyAutoGUI
跨平台的 GUI 自动化库,可在 Python 脚本中控制键盘和鼠标。 -
• robotframework-autoitlibrary
适用于 Robot Framework 的 Windows GUI 测试库。 -
• autopy
跨平台的 GUI 自动化工具包,功能相对简单。 -
• UISoup
Python 库,支持在 Windows 和 Mac OS 上进行 UI 相关测试。(仅支持 Python x86) -
• pywinauto
非常“Pythonic”的 Windows GUI 自动化库,支持 64 位的 Python 2 和 3。 -
• SikuliX
基于 OpenCV 的 GUI 测试框架,通过图像识别定位元素,用 Python 2.7 编写脚本。 -
• AutoItDriverServer
通过 (Remote)WebDriver API 控制/驱动 AutoIt 的 Selenium 服务器。
Unix / Linux UI 测试自动化
-
• ldtp
跨平台 Linux 桌面(GUI 应用)测试项目。 -
• fMBT
面向多平台 GUI 测试的 Python 库。 -
• SikuliX
同上,基于 OpenCV 的 GUI 测试框架,使用图像识别定位元素,脚本基于 Python 2.7。
MacOS UI 测试自动化
-
• PyAutoGUI
跨平台的 GUI 自动化库,可在脚本中操作键盘和鼠标。 -
• ATOMac
使用 Apple Accessibility API 来完整测试 Mac 应用程序的 Python 库。 -
• SikuliX
同上,基于 OpenCV 的 GUI 测试框架,使用图像识别定位元素,脚本基于 Python 2.7。
REST API 测试
-
• Rester
用于测试(RESTful)HTTP API 的框架。 -
• pyresttest
REST 测试和 API 微基准测试工具。 -
• siesta
Python 的 REST 客户端。 -
• play_requests
pytest-play 插件,让你通过简单的 YAML 文件使用requests
进行 HTTP 调用。 -
• gabbi
通过在 YAML 文件中声明请求和响应来运行 HTTP 测试的工具。 -
• Schemathesis
用于基于 Open API & Swagger 规范进行性质测试(property-based testing)的工具。它读取应用模式(schema)并生成测试用例,验证应用是否符合其模式。集成了 pytest & unittest。 -
• httprunner
简洁优雅且功能强大的 HTTP(S) 测试框架,支持使用 HAR 录制并生成测试用例。 -
• tavern
可命令行使用或作为 Python 库/pytest 插件的 RESTful API 测试工具,采用简洁、灵活的基于 YAML 的语法。
虚拟环境
-
• virtualenv
创建独立 Python 环境的工具。 -
• virtualenvwrapper
针对virtualenv
的一系列扩展。 -
• tox
通用的虚拟环境管理和测试命令行工具,可在不同 Python 版本上测试代码。 -
• PyVirtualDisplay
针对 Xvfb、Xephyr 和 Xvnc 的 Python 封装,用于 GUI 测试或自动截图等场景。 -
• pew
一系列管理多个虚拟环境的工具。 -
• Vex
在指定虚拟环境中运行命令。 -
• PyRun
一款无需安装的单文件 Python 版本。 -
• pyenv
简单的 Python 版本管理工具。 -
• Tapper
覆盖所有测试基础设施的工具。 -
• Poetry
Python 项目的依赖管理工具,简单易用。
性能 / 压力 / 负载测试
-
• Multi-Mechanize
开源的性能和负载测试框架。 -
• locust
由 Python 编写的可扩展用户负载测试工具。 -
• Yandex.Tank
负载和性能基准测试工具。 -
• pytest-benchmark
pytest 的基准测试(benchmark)插件。 -
• Airspeed Velocity
简单的 Python 基准测试工具,带有 Web 报告。 -
• The Grinder
负载测试框架,可使用多台负载注入机进行分布式测试。支持常见的 HTTP Web 服务器、SOAP、REST Web 服务、应用服务器(CORBA、RMI、JMS、EJB)等,以及自定义协议。脚本使用 Jython 或 Clojure。 -
• Tsung
开源的多协议分布式负载测试工具,可用于对 HTTP、WebDAV、SOAP、PostgreSQL、MySQL、LDAP、Jabber/XMPP 服务器进行压力测试。 -
• taurus
面向持续测试(Continuous Testing)的自动化友好框架。 -
• molotov
Python 3.5+ 的简单负载测试工具。 -
• Awesome pytest speedup
一份优化 pytest 测试套件速度的最佳实践清单。
安全检测
-
• sparta
一个图形界面应用,通过简化扫描和枚举阶段来协助渗透测试网络基础设施。 -
• OWASP ZAP
允许从 Python 脚本调用 OWASP ZAP 功能的 API。 -
• pythem
多功能的渗透测试框架,只能在 GNU/Linux 上运行,仅适用于合法范围内的测试。 -
• SQLMap
开源渗透测试工具,自动检测并利用 SQL 注入漏洞,可接管数据库服务器,支持丰富的检测和开关。 -
• fsociety
一整套渗透测试框架,包含“黑客”所需的脚本。
持续集成
-
• buildbot
自动化编译/测试流程的系统,以验证代码改动。 -
• jenkins
可扩展的开源持续集成服务器。 -
• travis-ci
免费的托管持续集成平台。
报告
-
• ReportPortal.io
强大的测试结果管理与分析平台,可与 pytest、RobotFramework 等集成。支持机器学习、实时集成、可视化趋势与统计、自定义仪表板和小部件,提供测试自动化的可见度,可嵌入到 CI/CD 流程中。免费开源,GitHub 可获取。 -
• allure pytest
PyTest 的 Allure 适配器。 -
• HTMLTestRunner
对 Python 标准库 unittest 的扩展,可生成简洁易读的 HTML 测试报告。 -
• unittest-xml-reporting
可将测试结果保存为 XML 文件的 unittest 测试运行器,可被各种工具(构建系统、IDE、CI 服务器等)消费。 -
• PrettyTable
在控制台生成美观的表格报告的 Python 库。 -
• pytest-html
为 PyTest 结果生成 HTML 报告的插件。
文档生成
-
• Sphinx
Python 文档生成器。 -
• MkDocs
支持 Markdown 的文档生成器。 -
• Pycco
最初的简洁实现(仅一百行左右)的文档生成器,类似“文学编程(literate-programming)”风格。
编辑器、IDE 和控制台
-
• pycharm
智能代码编辑器,对 Python 提供一流支持。 -
• pydev
基于 Eclipse 的完整功能 Python IDE。 -
• sublime
一个先进的文本编辑器,适合编写代码、标记文本和散文。 -
• ipython
一个多语言的交互式计算命令行,最初为 Python 而开发。 -
• VSCode
针对 Python 有大量插件的现代编辑器。
有用的库
这些库可能有助于构建更好的测试自动化。
-
• requests
人性化设计的 Apache2 授权 HTTP 库。 -
• WebTest
帮助测试 WSGI 应用的库。 -
• lxml
在 Python 中处理 XML 和 HTML 的最丰富、最易用库。 -
• suds
用于消费 Web Services 的轻量级 Python SOAP 客户端。 -
• fabric
精简基于 SSH 的应用部署或系统管理任务的 Python 库和命令行工具。 -
• BeautifulSoup
解析 HTML 文档(含有不完整标签等“Tag soup”)的库,可生成可用于提取数据的解析树。 -
• Soupy
BeautifulSoup 的封装,使构建复杂查询时更简单。 -
• PyQuery
在 XML 文档上使用 jQuery 式选择器的工具。内部使用 lxml 处理 XML/HTML。 -
• waiting
等待条件(predicate)达成的实用库。 -
• Comcast
模拟糟糕网络连接,以便构建更健壮的系统。 -
• dateutil
对标准 Python datetime 模块的扩展。 -
• python-tesseract
tesseract OCR(Linux、Mac、Windows)的包装类。 -
• pywinrm
Windows 远程管理 (WinRM) 的 Python 客户端,可从任何可运行 Python 的机器调用 Windows 本地对象(如运行批处理脚本、Powershell、WMI 变量等)。 -
• fig
借助 Docker 让开发环境更隔离更快速。 -
• gitpython
让你可高层次(git-porcelain)或底层次(git-plumbing)操作 git 仓库的 Python 库。 -
• Pyro4
允许在网络中通信的对象间轻松交互的 Python 工具。 -
• keyboard
在 Windows 和 Linux 上监听和模拟全局键盘事件。 -
• Errbot
一个聊天机器人,与常用的聊天服务相连,能将你的工具整合到对话中。 -
• tappy
一系列在 Python 中使用 TAP(Test Anything Protocol)处理测试数据的工具。 -
• pyscreenshot
可使用多种后端(X11 等)来将屏幕内容复制到 PIL 或 Pillow 图像对象中的库,用于替换仅支持 Windows 的ImageGrab
。 -
• TBVaccine
一个让 Python 堆栈跟踪(Traceback)更易读的工具,可自动突出重点行并弱化不必要行,同时用颜色区分各要素。 -
• PyPattyrn
帮助更容易、更快速地在项目中实现设计模式(Design Patterns)的 Python 包。 -
• Spyne
Python RPC 工具包,可以方便地使用多种协议/传输方式来对外暴露有良好定义的在线服务。 -
• Pexpect
让 Python 更好地控制其他应用的库。 -
• devtools-proxy
Chrome DevTools 的代理,可与 Selenium/ChromeDriver 完全兼容。 -
• extratools
超过 145 个比标准库 itertools/functools 等更高阶的函数式工具,也超越 toolz/fancy/more-itertools 等。 -
• retrying
一个通用的重试(retry)库,在 Python 中轻松为任何操作添加重试机制。 -
• mitmproxy
免费开源的交互式 HTTPS 代理。 -
• Python MSS
使用 ctypes 编写的纯 Python、多平台、多屏幕截图库,速度极快。 -
• Loguru
旨在为 Python 带来更愉悦的日志记录体验的库。 -
• prettyprinter
为 Python 3.5+ 提供语法高亮、声明式、可组合的 Pretty Printer 库。 -
• jsonschema
JSON Schema 在 Python 中的实现,强大且通用,用于验证 JSON 数据结构。
资源
发现新库、信息、工具等的地方
-
• python books
(Python 相关书籍资源) -
• pytest-tricks
关于 Python 测试工具 pytest 的技巧与心得 - http://hackebrot.github.io/pytest-tricks/
网站
-
• automated-testing.info — 测试自动化社区
-
• atinfo.github.io/at.info-knowledge-base — 各种工具和技术的测试自动化示例知识库
最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】