测试驱动开发 TDD

news/2025/2/7 16:14:01/文章来源:https://www.cnblogs.com/rimelink/p/18702565

“质量是免费的,但只有那些愿意付出沉重代价的人才能拥有。” -- 《人件》

为什么 TDD 测试驱动开发如此重要

软件的质量和开发效率都需要程序员快速频繁地收到反馈,测试驱动可以缩短反馈循环。
编写类和函数--(单元测试)->集成新模块--(集成测试)->生成新系统--(系统测试)->构建软件--(QA测试)->发布软件
如上,在编程与测试交织的软件开发流程中,反馈循环越短它的优势越明显。

  • 代码修改的迭代速度越快,我们对代码也就越有信心。
  • 越早发现问题,修复就越简单,成本也就越低。

测试的种类

成熟的软件项目应该包含以下 3 种测试。

  • 单元测试(unit test):独立地测试最小的功能单元(一个类或函数),不涉及任何外部访问(没有数据库、网络或文件系统操作)。
  • 集成测试(integration test):检查独立的单元如何集成在一起,并互相聚合、互相操作,以实现更大的功能。
  • 系统测试(system test):端到端测试,覆盖系统规格说明书中要求的所有功能,可以用作项目的验收标准。

什么时候测试

  • 早测试、勤测试:在编写代码的同时编写测试。不要推迟,否则测试的效率将非常低。
  • 先测试、再修复 bug:先编写单元测试来模拟 bug 出现的原因,然后修复错误,并使测试通过,添加测试代码到版本库中。
  • 先测试、再构建软件:将测试放入构建/编译/运行过程中,如果测试失败了,代码编译就会失败,软件就不能运行。
  • 重视 QA 测试:自动化测试主要针对容易修复和预防的错误,无法模拟和考虑不周的 bug 还得靠 QA 周密的测试。

测试什么

测试软件中任何重要的内容,一切从需求出发。

  • 既要考虑“正常”的输入和常见的“异常情况”,也要考虑边界情况,包括空和零状态。
  • 测试必须检查每个代码单元的行为是否符合要求,并返回准确的结果。
  • 如果性能对软件来说是一个重要的需求,那么应该有测试用例来测试代码的性能。
  • 相比测试的覆盖率,更重要的是关注核心的行为和系统特性。

维护测试代码

  • 因为测试代码和生产代码同样重要,所以要维护测试代码,并把它加入版本库。
  • 为生产代码添加新功能后,要重构测试代码,回归测试,并听取它的意见。
  • 测试框架 xUnit 不是必须的,一个 main 函数和一系列 assert 就可以实现测试代码。
  • 构建易于测试的代码有利于产生好的设计。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/880096.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

老年人评估系统web端

项目结构项目实现 用到了springboot mybatis框架 vue ajax axios element 成品效果自动刷新的信息查询点击注册跳转 跳转之后的注册页面点击返回可回到主页面点击删除按钮跳转的页面点击更正信息弹出的form表单 项目功能基本实现

【土地交易大揭秘】哪些用地必须走“招拍挂”之路?

今天咱们来聊聊一个在土地市场里热度颇高的话题——哪些用地必须通过招标、拍卖或者挂牌方式出让?这可是关乎城市建设和房地产开发的大事,对投资者和普通市民来说,了解这一点至关重要。下面,我们就来深入浅出地解读一番。招标、拍卖、挂牌出让简述首先,普及一下基本概念。…

python脚本与命令行交互sys.argv

前言在 Python 编程的世界里,sys.argv 是一个强大且实用的工具,它为我们开启了与命令行交互的大门,让程序能够接收外部传入的参数,从而实现更加灵活和多样化的功能。今天,就让我们深入探索 sys.argv 的奥秘。 “argv” 即 “argument value” 是一个列表对象,其中存储的是…

奶奶都能看懂的 CSS 选择器基础语法常用属性优先级

标题都是奶奶都能看懂了,那么我们肯定从最基础的开始讲。之所以这么自信是因为能踩的坑全帮你们踩过了…… 开始之前,先来首诗感受一下,具体啥意思你看完本文就懂了。 点类井号逗为或,类多号单连为且。 id 优先类在后,类型选择在末尾。 代码优先难解决,拿出鼠标数一数。 …

本地部署大模型体验小记

本地部署大模型的工具工具 优缺点LM Studio 图形界面友好,支持API访问,参数配置灵活Ollama GPU优化不足,CPU占用率高Chatbox 易出现输入卡顿,交互体验待优化Ollama 和 Chatbox 需要配合使用。 综合看更推荐使用 LM Studio 。 自定义模型 LM Studio 和 Ollama 除了使用默认的…

oi-math 重修

OI 数学重修 注: 很多东西没来得及写例题和代码,以后遇到会补上 想了一下虽然还有很多没写完,但是这两天要开数学了,决定后面的分成一个一个博客写然后在这挂链接,所以发出来了。 主题是看着 oi-wiki 写的,但细节上尤其是证明部分不太一样,毕竟也不是什么教学性质的,权…

方差、标准差、变异系数举例

一、标准差,也称均方差,是方差的算术平方根,标准差能反映一个数据集的离散程度。平均数相同的两组数据,标准差未必相同。太绕了,上例子:1、先找出平均数。平均数是数据的平均值,把数据加起来然后除以数据个数就可以得到。2、再找出方差。方差是数据偏离平均数的程度。得…

中电金信:大咖漫话|如何营销AI赋能的远程银行

看过“从远程银行看AIGC”连载,今天将与各位漫话AI的营销“哲学”。祝各位事业蟠蟠,巳巳如意,我们开年再会!

miniconda配置及常用命令,windows系统环境变量设置

安装完miniconda后,如果cmd中输入"conda info"没有输出信息,说明需要手动配置环境变量。 (1)右键点击桌面上“此电脑”,点击“属性” (2)在弹出的页面里点击“高级系统设置”(3)点击“环境变量”(4)双击“系统变量”里面的"Path":(5)点击“新…

CPUID CPU-Z(CPU检测工具) v2.14.0 中文绿色版

软件介绍 CPU-Z是最权威的CPU处理器检测工具。它支持的CPU种类相当全面,软件的启动速度及检测速度也很快,能够准确的检测出CPU、主板、内存、显卡、SPD等相关信息,包含制造厂及处理器名称,核心构造及封装技术,内部外部频率,最大超频速度侦测,处理器相关可以使用的指令集…

Windows11本地部署DeepSeek加速

本文介绍了一个可以相比之下更快速的在本地部署DeepSeek的方法,除了在上一篇博客中介绍的从Github或者Github加速网站获取Ollama之外,还可以通过从国内的其他大模型文件平台下载模型文件,来加速本地模型的构建。技术背景 在上一篇文章中我们介绍了在Ubuntu Linux操作系统上部…