测试先行:测试驱动开发(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

相关文章

Django开发时如何避免频繁发送短信验证码(python图文代码)

《Django开发时如何避免频繁发送短信验证码(python图文代码)》Django开发时,为防止频繁发送验证码,后端需用Redis限制请求频率,结合管道技术提升效率,通过生产者消费者模式解耦业务逻辑... 目录避免频繁发送 验证码1. www.chinasem.cn避免频繁发送 验证码逻辑分析2. 避免频繁

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

PyQt5 GUI 开发的基础知识

《PyQt5GUI开发的基础知识》Qt是一个跨平台的C++图形用户界面开发框架,支持GUI和非GUI程序开发,本文介绍了使用PyQt5进行界面开发的基础知识,包括创建简单窗口、常用控件、窗口属性设... 目录简介第一个PyQt程序最常用的三个功能模块控件QPushButton(按钮)控件QLable(纯文本

Linux之platform平台设备驱动详解

《Linux之platform平台设备驱动详解》Linux设备驱动模型中,Platform总线作为虚拟总线统一管理无物理总线依赖的嵌入式设备,通过platform_driver和platform_de... 目录platform驱动注册platform设备注册设备树Platform驱动和设备的关系总结在 l

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF