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

TDD测试驱动开发

为什么需要TDD?

传统开发方式,带来大量的低质量代码,而代码质量带来的问题:
1.在缺陷的泥潭中挣扎
开发长时间投入在缺陷的修复中,修复完依赖测试做长时间的回归测试
2.维护困难,开发缓慢
比如重复代码,不好理解的代码等,特别担心改了一个地方影响另外一个地方
代码的信息来源于现场的长时间运行,这一版在现场跑了一个月问题很少,所以稳定

如何解决上面的问题

采用TDD和ATDD的结合

  • 细节层面以TDD测试驱动开发的方式编写代码,不断在微循环中交付功能,不断小步向前,同时重构代码
  • 软件特性和功能层面以ATDD形式构建系统

什么是TDD

TDD 是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。在这里插入图片描述

TDD的机理

DLP(后期调试编程)VS TDD(测试驱动开发)
在这里插入图片描述
DLP:慢反馈导致出错代码上堆积其他改动,定位bug的时间长其次有些代码已经依赖了出错代码,面临推倒重来
TDD:许愿、及时反馈、微循环、预期bug、开发完天然带有测试

有人说,那我开发完了,再去补测试行不行?
如果没有强制的要求,这基本上是天方夜谭,都已经交付给现场了,还有几个人愿意再补测试
而且你还会发现想补也补不上,因为你开发的时候根本没有考虑过可测试性
那TDD是怎么样的呢?因为要先写测试,所以必须考虑可测试性,会让我们的代码耦合度低,更符合面向对象的思想,因为只有这样,才更好测试。
而且你在写测试的时候,相当于你自己调用了一遍自己写的接口功能,那好不好调用设计的如何,自己心里是有数的

TDD的好处

产生的bug更少
定位bug的时间短
有节奏的开发
改善设计
活文档
勇气
内心的平静

http://www.lryc.cn/news/387256.html

相关文章:

  • huggingface镜像站
  • Java中如何实现数据库连接池优化?
  • 002 SpringMVC入门项目搭建
  • 为什么要使用多线程(并发编程)
  • Unity编辑器工具---版本控制与自动化打包工具
  • amis-editor 注册自定义组件
  • (上位机APP开发)调用华为云命令API接口给设备下发命令
  • 排序算法系列一:选择排序、插入排序 与 希尔排序
  • 【快速排序】| 详解快速排序 力扣912
  • 游戏推荐: 植物大战僵尸杂交版
  • 微调和rag的区别?
  • CVPR讲座总结(二)-探索图像生成基础模型的最新进展探索多模态代理的最新进展:从视频理解到可操作代理
  • 为什么要禁用透明大页面
  • Element 页面滚动表头置顶
  • 对于CDA一级考试该咋准备??!
  • 如何使用PHP和Selenium快速构建自己的网络爬虫系统
  • intellij idea安装R包ggplot2报错问题求解
  • 【C++】初识C++(一)
  • 【智能算法】目标检测算法
  • python 中 json.load json.loadd json.dump json.dumps 详解
  • 【UE 网络】专用服务器和多个客户端加入游戏会话的过程,以及GameMode、PlayerController、Pawn的创建流程
  • 磁盘分区工具(fdisk 和 parted)区别及操作笔记
  • VisualStudio2019受支持的.NET Core
  • Java——IO流(二)-(1/7):字符流-FileReader、FileWriter、字符输出流的注意事项(构造器及常用方法、小结)
  • Spring循环依赖问题——从源码画流程图
  • Android SurfaceFlinger——动画播放准备(十五)
  • Zynq7000系列FPGA中的DMA控制器简介(二)
  • 获取 url 地址栏 ? 后面的查询字符串,并以键值对形式放到对象里面
  • List接口, ArrayList Vector LinkedList
  • 探讨数字化背景下VSM(价值流程图)的挑战和机遇