与时间抗争:使我们的测试速度提高 5 倍的工具和技术—火星编年史,邪恶火星人团队博客

主要观点:慢测试对项目不利,尤其对大规模企业级项目,Evil Martians 帮助客户优化 CI 管道,使测试和代码更改更快,结果快了五倍。介绍了客户背景、技术架构及优化过程的三个阶段。
关键信息

  • 客户是全国最大的外部房屋改造商 Power Home Remodeling。
  • 项目基于 Ruby on Rails 和组件架构设计,有几十个组件。
  • 优化采用 RSpec 技巧、Profiling 掌握及 TestProf 工具包。
  • 优化心态依靠寻找最有价值优化点、找易优化处且不过度优化、测量时间对比。
  • 通过分析调用栈、工厂等找出瓶颈并应用优化补丁,包括禁用不必要的 Active Record 回调、优化工厂、引入夹具等。
    重要细节
  • 安装配置 Stackprof 和 TestProf,初始测试套件运行时间 53 分钟,最终降至 11 分钟,快了五倍。
  • 利用 Flamegraph 查看调用栈,找出可疑的 Active Record 回调和工厂相关调用。
  • FactoryProf 用于分析最常用和耗时的工厂,发现“project”和“estimate”工厂问题并优化。
  • 引入“nitro_user”夹具,用 AnyFixture 工具创建默认用户。
  • 使用 TestProf 的 RSpecDissect 找出可迁移到“let_it_be”的文件,提高性能。
  • 逐个文件进行优化,如将“let”改为“let_it_be”并应用“create_default”优化,单个文件测试时间大幅减少。
阅读 26
0 条评论