测试先行:测试驱动开发(TDD)

2023-11-11 01:58
文章标签 开发 驱动 测试 先行 tdd

本文主要是介绍测试先行:测试驱动开发(TDD),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先设计测试用例代码,开发一个功能能够让提前设计的测试用例都可以通过?
测试驱动开发,即先根据用户的实际需求编写测试用例,再根据测试用例来完成功能代码

1、保证开发的功能一定是符合实际需求的。
质疑这一条,开发人员也不能随便开发,要按照产品经理提供的需求啊。
2、更加灵活的迭代方式。
3、保证系统的可扩展性。
4、更好的质量保证。
5、测试用例即文档。

TDD 的整个过程遵循以下流程:

为需要实现的新功能添加一批测试;
运行所有测试,看看新添加的测试是否失败;
编写实现软件新功能的实现代码;
再次运行所有的测试,看是否有测试失败;
重构代码;重复以上步骤直到所有测试通过。

每添加一个新的功能点,都会添加一个测试方法;完成新功能点的软件代码后,
接着运行当前所有的测试用例,以保证新加
的功能代码能够满足现有的测试需求。这就是一个典型的 TDD 过程了。
(这里举例子写了测试代码)

虽然大家都能看到 TDD 的优势,但是在实际项目中的运用还是比较有限。
tdd一定要求测试有很好的代码能力。

TDD 的核心思想便是在开发人员实现功能代码前,先设计好测试用例,编写测试代码,
然后再针对新增的测试代码来编写产品的功能代码,最终目的是让新增的测试代码能够通过。
相对于传统软件开发流程,TDD 的优势主要包括对需求精准的把控、更灵活的迭代、
促使更好的系统设计、更好的交付质量以及轻量级的文档等。

评论:
【虽然 TDD 并不适合所有项目,但是将 TDD 思想放大到整个开发流程上,我总结了一套开发流程,请大家参考。

所有人员参与需求评审 -> 测试人员编写测试用例 -> 所有人员参与用例评审 -> 
开发人员按照测试用例进行编码 -> 开发人员执行用例,进行自测,所有用例通过后 -> 
开发人员提测 -> 测试人员进行测试。

其中的好处个人觉得主要有两点:
1. 在编码前完成测试用例,可减少开发中需求变更带来的风险。因为在写测试用例的时候,
会对需求进行深度分析,思考需求是否合理,在我的经验中,测试组一定会发现不合理的需求,
如果这些不合理的需求在编码前就被发现,后面返工的几率就小很多;
2. 在自测环节,开发人员保证所有用例都通过,可以减少测试环节的轮次。
因为如果提测质量太差,会增加测试人员和开发人员沟通成本,
如果一些基本问题能在自测环节解决,那测试人员会有更多精力放在探索性测试、
压力测试、整体功能回归等测试中。
(新浪是这样测试的?)

不是所有的项目都适合tdd,而且采用tdd对测试人员的要求会很高。我的建议是一些小型的poc项目,
或者是功能相对单一的微服务开发是比较适合tdd的。另外,要推动tdd,
一定需要改革整个研发的流程,这个往往是十分困难的,也正是这个原因,实际开展tdd的项目也不是很多。


推荐书 《测试驱动开发》
(感觉TDD是在需求和开发的代码之间介入,用测试用例代码来引导开发代码的实现,
另外,TDD必须是测试用例代码,而不能是测试用例吗?)

这篇关于测试先行:测试驱动开发(TDD)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

python多线程并发测试过程

《python多线程并发测试过程》:本文主要介绍python多线程并发测试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、并发与并行?二、同步与异步的概念?三、线程与进程的区别?需求1:多线程执行不同任务需求2:多线程执行相同任务总结一、并发与并行?1、

JavaScript实战:智能密码生成器开发指南

本文通过JavaScript实战开发智能密码生成器,详解如何运用crypto.getRandomValues实现加密级随机密码生成,包含多字符组合、安全强度可视化、易混淆字符排除等企业级功能。学习密码强度检测算法与信息熵计算原理,获取可直接嵌入项目的完整代码,提升Web应用的安全开发能力 目录

如何在Ubuntu上安装NVIDIA显卡驱动? Ubuntu安装英伟达显卡驱动教程

《如何在Ubuntu上安装NVIDIA显卡驱动?Ubuntu安装英伟达显卡驱动教程》Windows系统不同,Linux系统通常不会自动安装专有显卡驱动,今天我们就来看看Ubuntu系统安装英伟达显卡... 对于使用NVIDIA显卡的Ubuntu用户来说,正确安装显卡驱动是获得最佳图形性能的关键。与Windo

一文教你如何解决Python开发总是import出错的问题

《一文教你如何解决Python开发总是import出错的问题》经常朋友碰到Python开发的过程中import包报错的问题,所以本文将和大家介绍一下可编辑安装(EditableInstall)模式,可... 目录摘要1. 可编辑安装(Editable Install)模式到底在解决什么问题?2. 原理3.

Python+PyQt5开发一个Windows电脑启动项管理神器

《Python+PyQt5开发一个Windows电脑启动项管理神器》:本文主要介绍如何使用PyQt5开发一款颜值与功能并存的Windows启动项管理工具,不仅能查看/删除现有启动项,还能智能添加新... 目录开篇:为什么我们需要启动项管理工具功能全景图核心技术解析1. Windows注册表操作2. 启动文件