CI/CD 测试自动化

测试自动化是任何 CI/CD 管道的核心部分,也是加快发布频率的重要步骤。TeamCity 提供了各种功能,可以帮助您充分利用自动化测试,这些功能包括测试重新排序测试并行化、智能失败分析质量门等。TeamCity 内置了对适用于 .NET、Java、Python、JavaScript 和其他编程语言的热门测试框架的支持,有助于更好地为整个软件堆栈编写代码和实现更加可靠的发布流程。

针对您的工作流量身定制

与软件一样,软件测试工作流也多种多样。编排 Docker 容器、配置测试环境、根据各种参数更改测试范围以及设置质量门只是您可能要在 CI/CD 工具中执行的一些常见活动。好消息是 TeamCity 支持所有这些场景,您可以轻松设置适合您的特定测试工作流的自动化管道。

与所有热门的构建和测试工具集成

TeamCity 集成了构建工具和测试框架,这是其他 CI/CD 解决方案不具备的功能。TeamCity 可以并行执行测试、识别不稳定测试、保留其运行的每个单独测试的历史记录,包括构建日志、持续时间、执行顺序、代码覆盖率和静态分析结果,以及其他数据。由于 TeamCity 会收集更多测试统计数据,它已成为了解导致测试失败的典型更改种类的不可或缺的工具。

适用于任何规模和复杂程度的项目

如果您曾从 CI/CD 工具切换到其他工具,您就会知道这一过程可能需要几个月的时间。有了 TeamCity,您绝不用担心因构建系统无法满足公司规模扩大而不得不切换到另一个系统。我们的解决方案专为处理最大、最复杂的项目而设计。例如,在 JetBrains 内部,安装一个 TeamCity 可供 1,000 多名开发者使用,这些开发者并行运行 5,000 个以上的构建。

利用高级测试报告功能提高工作效率

通过自动执行测试并定期运行,您和您的团队可以及时获得更改反馈。因此,可以趁着您对更改仍有印象尽快发现任何新错误并更快地进行修正。

利用 TeamCity,您可以将自动化测试配置为 CI/CD 管道的一部分。实时提供测试结果,以确保快速反馈。如果测试失败,TeamCity 会提供相关代码更改的详细信息,以及堆栈跟踪、日志和构建工件,以帮助您启动调试流程。不稳定测试和最近失败的测试会被高亮显示,如果某些测试在后续构建中得到修正,测试结果页面会自动更新,以包含相应信息。

除了可以在 Web UI 中查看测试结果之外,还可以通过电子邮件、Slack 或其他通讯软件发送测试结果,也可以将测试结果直接交付到您的 IDE。这又可以为您和您的团队提供最新更改的即时反馈,而无需等待构建步骤完成。

准备好体验业界最佳的测试自动化了吗?

在 TeamCity On-Premises 与 TeamCity Cloud 之间进行选择,TeamCity On-Premises 可以完全控制构建和测试管道,而 TeamCity Cloud 可以实现最佳可扩缩性和性能。

核心测试自动化功能

失败分析和代码覆盖率

TeamCity 附带各种构建运行程序,这些运行程序可与用于构建、测试和部署软件的工具集成。借助构建运行程序运行测试套件时,TeamCity 能够了解构建期间发生的事件、检查代码覆盖率、提供即时报告、收集统计数据,以及分析趋势。

有时,您可能觉得将测试脚本转换为 TeamCity 构建步骤不切实际,想要改用通用命令行构建运行程序。如果您决定这样做,可以将 TeamCity 服务消息添加到脚本的输出,以向 TeamCity 通知进度,并且仍可以使用其全部智能功能。例如,提供有关测试名称及其持续时间的信息后,TeamCity 将计算如何对测试进行并行化。有关详细信息,请参阅我们文档的服务消息部分。

根据您的具体要求,利用 TeamCity,您可以定义在何种条件下应将构建标记为成功或失败。例如,如果一个构建到下一个构建的单元测试覆盖率不得降低,您可以将代码覆盖率指标作为构建步骤失败条件。

为管理测试失败,TeamCity 支持将调查分配给团队成员或静默不需要立即修正的测试。静默的测试会在后续管道运行时被忽略,从而使自动化测试流程能够不间断地继续进行,无需对管道进行手动更改。

我们针对所有热门工具和编程语言开发了构建运行程序,包括:

  • Gradle
  • Kotlin
  • Maven
  • .NET
  • Node.js
  • Python
  • 等等

除了 JetBrains 支持的构建运行程序之外,还可以通过 100 多个免费插件和全面的 API 将 TeamCity 与您自有的工具和脚本集成。

并行测试

智能测试并行化是 TeamCity 独有的功能,此功能可以大幅加快测试流程的速度。如果有多个构建代理可用,TeamCity 可以根据测试持续时间自动将测试划分为均等的批次,然后并行执行这些批次。如果测试使用的是自定义脚本,而不是 TeamCity 的构建运行程序,您可以使用服务消息将相关进度通知给 TeamCity,以便 TeamCity 计算并行化测试的最佳方式,并通过该方式生成特殊指令文件,以帮助您设置并行化。

有关详情,请参阅我们文档中的并行测试部分。

性能监视

了解运行测试所使用的硬件或云实例是否最适合您的项目通常不太容易。TeamCity 的性能监视功能可以自动收集有关 CPU、内存和硬盘驱动器性能的统计信息,帮助您了解是否存在阻碍管道的瓶颈。

有关详情,请参阅我们文档中的性能监视部分。

无需将代码提交到 VCS 即可进行测试

利用 TeamCity,无需将代码提交到版本控制系统即可进行代码测试。此功能对于在一个 main 分支中进行开发的情况特别有用,因为这样可以最大限度地降低破坏构建和阻止其他团队成员工作的几率。

要在不提交更改的情况下对更改进行测试,最简单的方式是使用适用于基于 IntelliJ 的 IDE 或 Visual Studio 的 TeamCity 插件的远程运行功能。在 Git 中托管代码的团队还可以选择创建 Git 补丁,将其上传到 TeamCity,然后使用 TeamCity UI 运行个人构建

灵活配置自动化测试管道

TeamCity 提供了多种构建触发器来自动启动测试,并且允许通过 TeamCity UI 或 IDE 手动运行测试。根据触发构建的对象以及管道中早前发生的事件,您可以向测试管道添加条件逻辑,以简化流程并控制测试的运行时间。例如,您可以安排夜间构建运行全套测试,在每次提交时仅运行单元测试,或者在手动运行管道时指定具体测试范围。

更多 TeamCity 功能可以完善您的测试工作流

自动 CI/CD 基础架构扩缩

如果某个大型 CI/CD 系统包含多个项目,那么准确确定运行构建和测试所需的构建代理数将极具挑战性。通过在云端自动启动新的构建代理、动态增加管道容量,TeamCity 可以帮助用户实现可扩缩的 CI/CD 设置。支持的云平台包括 Amazon EC2、Microsoft Azure、Google Cloud、VMWare vSphere、Kubernetes 等。

Docker 集成

TeamCity 支持并且可以加速所有利用 Docker 的软件开发工作流。例如,TeamCity 可以在特定环境版本中运行测试,确保结果一致并可重现,也可以执行需要编排多个 Docker 容器的集成测试。无论以何种方式在 CI/CD 管道中使用 Docker,TeamCity 都可以跟踪构建期间发生的所有事件,提供实时报告、测试分析和其他见解。

自动合并更改

如果构建成功,TeamCity 能够自动将更改合并到指定的目标分支。也可以设置一系列级联的合并操作。与向 VCS 提交代码前对代码进行测试的功能相结合,您可以使用门控提交模式。

常见问题解答:使用 TeamCity 实现自动化测试

TeamCity 的测试并行化是免费功能吗?

是的,所有 TeamCity 版本(包括免费自托管版本)均免费提供测试并行化功能。在 TeamCity On-Premises 中,您可以在许可证允许的范围内将测试拆分到尽可能多的构建代理中。

TeamCity 支持哪些操作系统?

TeamCity 适用于 Windows、Linux 和 macOS,可作为 Docker 容器在任何支持 Docker 运行时的平台上运行。您还可以将其作为托管服务 TeamCity Cloud 使用,这种情况下,您不需要自行进行任何安装和维护操作。

TeamCity 是否可以自动重试失败的测试?

可以,借助重试构建触发器,TeamCity 可以在构建失败后再次自动将其添加到构建队列中。这有助于处理代码正确但由于网络问题或其他外部因素导致测试失败的情况。

TeamCity 是否支持 UI 测试框架?

TeamCity 属于通用型 CI/CD 工具,可与各种工具和测试框架结合使用,包括用于 UI 测试的工具和测试框架。要详细了解如何使用 TeamCity 进行 UI 测试,请查阅我们的 TeamCity UI:如何进行测试?博文。