软件开发中的测试与架构优化
1. 测试相关要点
在软件开发中,测试是确保代码质量的重要环节。过度使用模拟对象(mocks)的测试会被大量的设置代码所淹没,从而掩盖了我们真正关心的测试故事。Steve Freeman 在其“Test - Driven Development”演讲中给出了过度使用模拟对象测试的例子。同时,Ed Jung 的“Mocking and Patching Pitfalls”演讲以及 Brandon Rhodes 的“Hoisting Your I/O”演讲也值得一看,它们都涉及到了测试及相关替代方案等内容。
我们应该尽量用单元测试来替代端到端(E2E)测试,但这并不意味着完全不使用 E2E 测试。理想的测试结构是有尽可能多的单元测试,同时使用最少数量的 E2E 测试来保证我们对代码的信心。
此外,在简化业务逻辑和复杂 I/O 之间的接口时,有助于让系统更易于测试和维护。以下是一些寻找合适抽象的启发式问题:
- 能否选择一个熟悉的 Python 数据结构来表示复杂系统的状态,并设想一个能返回该状态的单一函数?
- 如何在系统之间划分界限,以便插入抽象层?
- 怎样合理地将系统划分为具有不同职责的组件,哪些隐含概念可以明确化?
- 系统的依赖项有哪些,核心业务逻辑是什么?
2. 项目实战:Flask API 与服务层
我们以一个分配项目为例,来详细介绍如何构建和优化系统。
2.1 项目计划
为了将应用与现实世界连接起来,我们制定了以下计划:
1. 使用 Flask 在分配领域服务前设置一个 API 端点,连接数据库会话和存储库,并使用端到端
超级会员免费看
订阅专栏 解锁全文


被折叠的 条评论
为什么被折叠?



