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

相关文章

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

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用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