测试驱动开发与机器学习:原理、风险及应对策略
1. 测试驱动开发的优势
使用测试驱动开发(TDD)有两个重要原因。其一,虽然在积极开发模式下,TDD 会多花费 15 - 35% 的时间,但它能将 bug 减少多达 90%。其二,TDD 有助于记录代码的预期工作方式。随着代码变得越来越复杂,对规范的需求也会增加,特别是当人们依据分析结果做出重大决策时。
曾有哈佛学者的经济学论文出现计算错误,后续研究发现其分析中遗漏了大量国家,导致结论有误。这一案例凸显了统计分析中单个错误可能对学术声誉造成的潜在打击,即便研究者经过了严格的同行评审且有多年研究经验。而使用 TDD 本可以降低此类错误的风险,避免让研究者陷入尴尬境地。
2. 测试驱动开发的历史
1999 年,Kent Beck 通过极限编程工作使 TDD 得到普及。TDD 的强大之处在于先明确目标,再实现目标。其实践过程包括编写失败的测试、编写使测试通过的代码,然后重构原始代码,有人将其称为“红 - 绿 - 重构”。“红”代表编写最初无法运行但记录目标的测试,“绿”表示让代码运行使测试通过,最后进行重构以确保代码设计令人满意。
传统开发实践中测试一直是主要环节,但 TDD 强调先进行测试,而非在开发周期接近尾声时才进行。在瀑布模型中,代码编写完成后会使用验收测试,通常涉及许多最终用户而非程序员。这种方法看似不错,但在覆盖率成为考量因素时就会出现问题,质量保证专业人员往往只测试他们想测试的内容,而无法触及表面之下的所有内容。
3. TDD 与科学方法
TDD 之所以有吸引力,部分原因在于它与人们的工作方式相契合,其假设、测试和理论化的过程与科学方法非
超级会员免费看
订阅专栏 解锁全文

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



