The Big TDD Misunderstanding
9 days ago
- #tdd
- #unit-testing
- #software-architecture
- 在单元测试中,'unit'一词最初指的是测试本身,而非被测系统的某个单元
- 测试领域存在两大思想流派:模拟派(mockist)与经典派(classicist)
- 从真实用户视角(由外向内)编写测试能提升质量保证和重构抗性
- 测试时应避免过度隔离代码以防脆性测试,仅需隔离真正的外部服务
- 永远不要在缺少失败(红色)测试的情况下修改代码,这是TDD的基本准则
- 测试驱动开发本身并不驱动软件架构,非功能性需求(NFRs)才是架构的决定因素
- 自动化测试的权衡在于质量保证、重构抗性和反馈速度三者间的平衡
- 使用真实数据库并避免过度打桩能使测试更具意义和可靠性
- 当测试反映真实使用场景而非孤立单元时,测试覆盖率报告才更具价值
- 可考虑传统测试金字塔的替代方案,如'蜂窝模型'或'测试奖杯'理论