将您的CI系统视为产品以获得更快更好的反馈

提升持续集成系统反馈时间与优化测试方法

在2023年罗马尼亚测试大会上,Tobias Geyer分享了如何通过优化持续集成(CI)系统和测试方法,提升开发团队的反馈效率。他强调,CI系统是开发过程中至关重要的一部分,应当得到足够的重视。

初始问题与快速解决方案

Geyer加入公司时,CI系统运行在一台被遗弃在桌下的旧开发PC上,无人负责维护,导致反馈周期极长,开发者甚至完全忽略CI系统的反馈。为了解决这一问题,Geyer提出了一个快速解决方案:在白天跳过不需要频繁执行的构建步骤,将其限制在夜间构建中。

解决磁盘I/O瓶颈

另一个更复杂的问题是磁盘I/O瓶颈。由于构建过程中读写大量数据,硬盘无法跟上。Geyer与IT部门合作,将CI系统从开发PC迁移到数据中心的虚拟机上,成功解决了磁盘I/O问题,并将系统扩展到两台机器,实现了更多构建的并行执行。

测试分类与优化

Geyer团队将测试分为快速和慢速两类,将慢速测试移至专用的低频构建中,而快速测试则作为快速反馈CI构建的一部分。这样,他们既能获得完整的反馈,又大幅缩短了反馈时间。

测试方法的优化

Geyer团队将慢速测试视为技术债务,并创建了“测试债务预算”供开发者改进测试。具体优化措施包括:

  1. 精简测试数据,仅保留相关数据,缩短测试准备时间。
  2. 引入模拟测试,避免加载测试数据。
  3. 优化产品代码,使其更易测试,将部分集成测试转化为单元测试。

Geyer的总结

Geyer强调,即使不深入了解技术细节,也可以通过测量、实验和协作来推动改进。他提到,与IT部门的合作是解决某些问题的关键。

InfoQ采访中的关键点

跳过构建步骤的示例:Geyer提到,产品混淆是一个典型的跳过步骤。混淆过程耗时至少30分钟,因此他们在白天跳过这一步骤,仅在夜间执行。

构建过程与平台的重大变更:团队将构建系统从Ant和Windows批处理文件迁移到Gradle,并引入了测试CI系统,以便在不中断正常开发流程的情况下测试CI系统的变更。

促进团队间的知识共享:Geyer通过定期会议,与其他使用类似技术栈的团队分享经验和解决方案,成功推动了跨团队的协作和改进。

对不满现有CI系统的团队的建议:Geyer建议将CI系统的问题视为软件项目中的Bug,进行优先级排序、分析并协作解决。他强调,与IT部门的合作至关重要。

阅读 25
0 条评论