写点什么

将遗留测试套件迁移到基于 Kotlin 的 Gauge 框架的经验总结

  • 2025-12-23
    北京
  • 本文字数:2146 字

    阅读完需:约 7 分钟

大小:1.02M时长:05:55
将遗留测试套件迁移到基于Kotlin的Gauge框架的经验总结

Online TestConf大会上,Liran Yushinsky 分享了他们团队如何用统一的 Kotlin + Gauge 框架取代了原本脆弱的 Bash 脚本和 kubectl 测试。他们利用 Fabric8、Terraform 和 Ansible 实现了测试环境的自动化。这一改进将反馈周期从数小时缩短到几分钟,开发人员也积极参与到测试工作中,共同承担责任,从而提升了软件质量和发布速度。

 

Yushinsky 提到,他们原先的测试体系十分分散,混合使用了 Bash 脚本、kubectl 命令以及基于 SSH 的 Kubernetes 工作负载检查。他表示,这种方式导致测试非常脆弱且难以维护。

 

他还指出,测试环境之间经常出现配置漂移——例如,在预发环境中能通过的测试,在 QA 环境中却会失败。反馈周期缓慢,一次端到端的测试可能耗时数小时。此外,由于缺乏统一的测试框架,团队新成员上手困难,测试的不稳定性也很高。

 

随后,Yushinsky 介绍了他们是如何标准化测试环境的:

 

我们使用Gauge作为测试运行器,用Kotlin构建了一个共享的自动化测试库。我们将原有的 Shell 脚本和 kubectl 命令替换为 Fabric8 Kubernetes 客户端,从而获得了更强的控制力,并显著减少了测试的不稳定性。

 

我们还通过 Ansible 和 Terraform 实现了测试环境的自动部署,确保每次测试都在可复现的环境中运行。在 Jenkins 中,我们将这些测试集成到自动化流水线中,测试结果会自动发送到 Slack,并在 Grafana 中进行可视化展示。

 

他还提到,团队开展了内部培训、午餐学习会、代码评审以及提供标准化模板,以推动整个公司逐步采纳这一新方法。

 

Yushinsky 表示,他们首先在一个非关键服务上启动试点项目,以验证该方案的可行性,并构建了一个可复用的测试步骤库,让工程师们无需重复造轮子。随后,他们在内部演示中分享成功案例,并逐步将更多服务迁移到这一框架下。他们还实现了测试报告的自动化,使所有相关人员都能在 Slack 和仪表盘上实时查看测试结果,从而建立起对这套系统的信任。

 

Yushinsky 提到,起初团队成员习惯于使用自己编写的脚本:

 

我们通过展示旧方式在手动操作或不稳定测试上浪费了多少时间,来克服这种惯性——有些端到端测试过去需要数小时,如果因不可预测的原因失败,甚至可能阻塞半天的部署流程。同时,我们也展示了新方法能多么迅速地捕获回归问题。

 

他表示,Kotlin 和 Gauge 的学习曲线相当陡峭。团队通过提供模板、在最初几个测试用例上进行结对编程,并在持续 CI 中快速展示成效,成功克服了这一挑战:

 

你需要在变革管理上投入时间。仅靠技术本身无法确保成功;你需要创造可见的成果,以身作则地教学,并让其他人能够轻松参与贡献。

 

Yushinsky 表示,借助这套自动化框架,反馈周期大大缩短。如今他们可以在几分钟内运行完整的端到端测试,而过去需要数小时;部署变得更加可靠,也能更早地发现回归问题。

 

他解释道,Gauge 编写的可读性场景使测试变成了团队共享的资产。过去,只有 QA 工程师会接触这些测试;而现在,得益于 Gauge 的自然语言规范和 Kotlin 编写的步骤,开发人员在开发功能时也会主动编写和扩展测试——这是一次重大的文化转变:

 

起初,一些开发人员对“拥有测试”持怀疑态度。但当他们亲身体验到这个框架有多快,以及它如何帮助他们在代码评审前就发现自己的缺陷之后,便欣然接受了。新员工也能更快地上手,因为步骤库本身就充当了活文档。此外,通过 Slack 告警和 Grafana 仪表盘,我们对测试的健康状况和趋势拥有了全面的可见性。

 

Yushinsky 表示:“推出新的测试框架,关键不仅在于技术,更在于人。通过快速胜利和渐进式推广来建立可信度,而共同承担责任则能防止测试套件变得陈旧过时。”

 

InfoQ 就自动化测试话题采访了Liran Yushinsky

 

InfoQ:你们是如何让 QA 以外的人员参与到自动化测试环境中的?

 

Liran Yushinsky:我们邀请了开发人员、DevOps 工程师,甚至产品经理参加我们的午餐学习会和内部演示。目的是向大家表明,这些测试并不是“QA 的事”,而是我们整个交付流水线中共同的一部分。

 

这些活动反响很好,因为参与者能立刻看到我们试图解决的痛点——测试的不稳定、手动操作步骤的繁多、反馈周期的漫长。同时,这也让他们有机会参与到框架的设计和演进,发出自己的声音。

 

InfoQ:是什么促使你们决定采用自动化测试框架的?

 

Yushinsky:我们希望找到一种既能被 QA 也能被开发人员轻松阅读,又足够灵活、能够编写复杂测试的方案。Gauge 支持实时文档和标签,与 Kotlin 集成良好,并且支持并行执行,有效解决了我们过去测试执行时间过长的问题。此外,它丰富的报告功能和插件生态也让我们能轻松将其集成到 Jenkins、Pact 和 Testcontainers 等我们已经在使用的工具中。

 

下面是一段代码示例,展示了 Gauge 的场景如何与 Kotlin 的步骤定义对应——包括一个规格文件、一个概念以及一个匹配的步骤实现:







 

InfoQ:你们在处理不稳定的测试时遇到了哪些挑战?又是如何应对的?

 

Yushinsky: 我们引入了重试机制,并使用 Testcontainers 来隔离依赖项(例如 K3s 集群),将原本动辄数小时的测试运行时间缩短到几十分钟,同时将随机失败的情况减少到仅剩极少数边缘场景。此外,我们还增加了前置检查和针对升级场景的专用测试用例,以便在版本漂移影响生产环境之前就将其捕获。为了确保测试套件的可维护性,我们还通过代码评审强制推行统一的命名规范和标签约定。

 

原文链接:

https://www.infoq.com/news/2025/12/migrating-test-suite/

2025-12-23 15:452

评论

发布
暂无评论

CAP理论

DL

《我想进大厂》之Spring夺命连环10问

艾小仙

Java spring 程序员 面试 大厂

「面试必备」最新整理出的腾讯C++后台开发面试笔记

linux大本营

c++ Linux 后台开发 架构师

一线大厂欺负程序员?京东单方面辞退38岁P7员工三次败诉

Java架构师迁哥

Canal 组件简介与 vivo 帐号实践

vivo互联网技术

数据库 分布式 数据存储

一点就透的二分查找算法

比伯

Java 编程 程序员 面试 计算机

揭秘11.11监控排障利器 京东高稳定日志服务深度解析

京东科技开发者

云计算 DevOps 日志监控

什么是低代码(Low-Code)?

阿里巴巴云原生

程序员 云原生 代码

最近我发现瑞幸在这样做私域运营

Linkflow

营销数字化 客户数据平台 CDP 私域运营

什么是物联网?常见IoT 物联网协议最全讲解

华章IT

物联网 IoT

使用 Jira Service Management 管理资产,您需要知道的5件事

Atlassian

数字化转型 Atlassian Jira ITSM ITIL

源码 | 浅谈Webpack原理,以及loader和plugin实现。

梁龙先森

大前端 webpack

Linux 笔记(三): 软件安装

Leo

Linux 学习 大前端

Kubernetes初体验--用Kubernetes部署一个Web服务

网管

Kubernetes k8s Web 服务 Go 语言

Spring Boot 2.4.0正式发布,全新的配置文件加载机制(不向下兼容)

YourBatman

云原生 Spring Boot 新特性

Mysql数据备份与恢复

张攀钦

MySQL

使用resilio实现多集群的k8s pod数据双向非实时同步

东风微鸣

Kubernetes 探索与实践 openshift

华为云MVP高浩:打破AI开发瓶颈,解决数据、算法、算力三大难题

华为云开发者联盟

人工智能 数据 华为云

第十周课后练习

饭桶

第十周学习总结

饭桶

接口测试如何在json中引用mock变量

测试人生路

json 接口测试 Mock

架构师训练营第十周作业

文智

极客大学架构师训练营

“摸爬滚打”多年,从月薪3K到30Kjava大神,我是怎么蜕变的?

比伯

Java 编程 架构 面试 计算机

架构师第一期作业(第 11 周)

Cheer

作业

薇娅携手中国航天基金会与我们的太空 带你“益起探月,共舞九天“

不懂源码?来看看阿里P8亲自手码的Spring源码解析整套笔记,高薪offer唾手可得!

比伯

Java 编程 架构 面试 计算机

深度剖析,为何C语言在开发领域的地位如此稳固

Philips

Python .net rust C语言 Go 语言

C++语言中std::array的神奇用法总结,你需要知道!

华为云开发者联盟

容器 数组 函数

Mac下Docker Desktop配置阿里云镜像加速器

jiangling500

Docker 阿里云镜像加速器

排查指南 | mPaaS 小程序提示“网络不给力”时该如何排查?

蚂蚁集团移动开发平台 mPaaS

小程序 网络 小程序生态 mPaaS

产业新基建,撬动数字经济发展新机遇

京东科技开发者

人工智能 新基建 京东

将遗留测试套件迁移到基于Kotlin的Gauge框架的经验总结_编程语言_Ben Linders_InfoQ精选文章