主要观点:慢测试对项目不利,尤其对大规模企业级项目,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”优化,单个文件测试时间大幅减少。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。