当前位置: 首页 > news >正文

[辩论] TDD(测试驱动开发)

 

The moment you know what to fear, is the moment you know what to test.

TDD(测试驱动开发)

 

 

起源于90年代nasa对于水星计划的 项目管理

 

 

rational unified process

统一软件开发过程

 

面向客户接受式测试

 

在现实需求前 没有捷径

 

用容器技术, 整个测试 都在本地 模拟用户可能的行为

 

 

反方

 为何许多程序员抗拒编写和维护测试,剖析其背后的根本矛盾——将不断变动的需求视为固定常量的谬误。

尽管TDD曾被视为极客信仰,试图通过提前编码测试“预演”未来实现,实则因忽视需求动态性导致实践困境。

真正有效的测试应贴近真实用户行为,在系统初步成型后再开展,结合容器化环境与属性基础测试,实现高效、高保真的自动化验证。

 

要点:  

- 测试不应前置为强制指令,而应在系统具备雏形后,依据真实使用场景构建,更具实效  

- ⚠️ TDD将测试置于绝对优先地位,易引发代码僵化,因测试与实现高度耦合  

- 需求并非静态常量,盲目依赖“预期终点”会导致测试偏离真实世界,陷入无效循环  

 

- 最佳策略:先完成可用原型,再聚焦关键路径与脆弱点,“恐惧之处即是测试之始”  

- 使用容器化本地环境复现完整生产链路,搭配属性驱动测试(Property-Based Testing),自动覆盖混沌输入,提升覆盖率与可靠性  

- 测试目标不只是通过,更是保障上线安全,让人安心入眠 —— 才是真正有价值的测试哲学

 

 

正方

 

AI时代TDD可能更重要,要么通过测试生成代码,要么用来生成测试。

虽然有时写case比写代码还费时间,一些出了问题就非常要命的接口值得这么操作

 tdd 还是很有价值的,尤其是在现在的 ai 时代,tdd 结合 ai 出现了很多非常炸天的能够落地的开发方法论 ovo

 

http://www.xdnf.cn/news/1316143.html

相关文章:

  • ZKmall开源商城的移动商城搭建:Uni-app+Vue3 实现多端购物体验
  • Collections.synchronizedList是如何将List变为线程安全的
  • Trae 辅助下的 uni-app 跨端小程序工程化开发实践分享
  • 李宏毅NLP-11-语音合成
  • 在 Element UI 的 el-table 中实现某行标红并显示删除线
  • 【PHP】Hyperf:接入 Nacos
  • Centos中内存CPU硬盘的查询
  • vscode无法检测到typescript环境解决办法
  • OpenCV 图像处理核心技术:边界填充、算术运算与滤波处理实战
  • 大模型应用发展与Agent前沿技术趋势(中)
  • JVM常用工具:jstat、jmap、jstack
  • 【Linux】IO多路复用
  • 17-线程
  • Python自学10-常用数据结构之字符串
  • Python异常、模块与包(五分钟小白从入门)
  • 文件快速复制工具,传输速度提升10倍
  • riscv中断处理软硬件流程总结
  • 【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day6
  • Vue3 中的 ref、模板引用和 defineExpose 详解
  • 安卓14系统应用收不到开机广播
  • 【Java后端】Spring Boot 集成 MyBatis-Plus 全攻略
  • 大模型算法岗面试准备经验分享
  • (机器学习)监督学习 vs 非监督学习
  • 智能制造——解读37页 案例分享灯塔工厂解决方案【附全文阅读】
  • 电子电气架构 --- 自动驾驶汽车的下一步发展是什么?
  • LeetCode 分类刷题:2962. 统计最大元素出现至少 K 次的子数组
  • 零墨云A4mini打印机设置电脑通过局域网络进行打印
  • 详解flink java基础(一)
  • Flink作业执行的第一步:DataFlow graph的构建
  • nodejs 错误处理