不使用单元测试构建工业级强度的软件

主要观点:

  • 测试不是软件开发中最喜欢的部分,单元测试存在诸多问题,如编写过程繁琐、易受内部重构影响等。
  • 介绍了 Unison Computing 的转录测试(transcript tests),通过 markdown 文件记录测试步骤和代码,UCM 可直接运行并记录结果,具有确定性、可隔离性、自包含性等优点。
  • 讲述了在 CI 中运行转录测试的方法,以及转录测试在其他领域如 Unison Share 中的应用。
  • 提出了一个好的转录测试工具的要求,如确定性、隔离性、自包含性等,同时也指出了工作中遇到的困难,如需要自定义工具、设置成本高等。

关键信息:

  • 转录测试是一种基于 markdown 的测试方法,使用 UCM 运行并记录结果。
  • 在 CI 中通过发现和运行转录文件来进行测试,若输出改变则失败。
  • 转录测试在 Unison Share 中用于测试 webapp,通过本地运行和脚本处理来实现。
  • 好的转录测试工具应具备确定性、隔离性、自包含性等特点。
  • 工作中遇到的困难包括需要自定义工具、设置成本高、服务模拟等。

重要细节:

  • 转录文件中的每个块可以是 UCM 命令或文件系统更新,UCM 会根据状态进行类型检查。
  • 在 Share 中通过 sed 脚本处理随机值,确保转录的确定性。
  • 每个转录在独立环境中运行,数据库重置为已知状态。
  • 转录测试需要一定的设置成本,但能提供更高价值的测试。
  • 服务模拟通过环境变量或 docker-compose 实现。
  • 作者推荐了自己的书籍《Optics by Example》,每笔销售都有助于作者继续创作。
阅读 12
0 条评论