在你的测试中你可能不需要的东西

主要观点:避免编写缓慢且脆弱的测试,尤其在 TDD 工作流中,可通过多种方式减少测试对数据库等的依赖以提高速度和可靠性。
关键信息:

  • 使用数据库:数据库访问会增加测试成本,应减少其使用,如在测试只涉及内存值的方法时可不访问数据库。
  • 关联关系:小心处理工厂的关联,可通过特质创建关联并避免创建不必要的记录,还可使用build_stubbed避免访问数据库。
  • 跟踪数据库变化:禁用paper_trail等跟踪数据库变化的 gem,可在需要时重新启用。
  • 创建多条记录:尽量减少创建的数据库记录数量,可配置每页显示的记录数。
  • 安全性:测试非安全相关代码时可禁用高安全特性,如降低密码哈希算法的强度。
  • 使用真实浏览器:能避免使用浏览器时就避免,使用request testsRackTest,若必须使用可减少其使用。
  • 日志记录:测试中一般可禁用日志记录,可通过环境变量控制,且使用块语法避免不必要的分配。
  • 运行更少的测试:减少运行的代码量可加快测试速度,开发时可分阶段运行不同类型的测试,部署前可先运行烟雾测试。
  • 测试金字塔:牢记测试金字塔原则,减少对系统测试的依赖,更多使用其他类型的测试。

重要细节:

  • 在 Rails 应用中,完全避免数据库不太可能,但可减少其使用。
  • 工厂特质可明确创建关联时的需求,build_stubbedcreate/build更能避免访问数据库。
  • 可通过配置环境变量控制日志记录,块语法能避免不必要的分配。
  • 测试金字塔中不同类型测试各有作用,系统测试慢且脆弱,应作为重要路径的烟雾测试等。
阅读 7
0 条评论