测试先行:测试驱动开发(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开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

C#图表开发之Chart详解

《C#图表开发之Chart详解》C#中的Chart控件用于开发图表功能,具有Series和ChartArea两个重要属性,Series属性是SeriesCollection类型,包含多个Series对... 目录OverviChina编程ewSeries类总结OverviewC#中,开发图表功能的控件是Char

鸿蒙开发搭建flutter适配的开发环境

《鸿蒙开发搭建flutter适配的开发环境》文章详细介绍了在Windows系统上如何创建和运行鸿蒙Flutter项目,包括使用flutterdoctor检测环境、创建项目、编译HAP包以及在真机上运... 目录环境搭建创建运行项目打包项目总结环境搭建1.安装 DevEco Studio NEXT IDE

Python开发围棋游戏的实例代码(实现全部功能)

《Python开发围棋游戏的实例代码(实现全部功能)》围棋是一种古老而复杂的策略棋类游戏,起源于中国,已有超过2500年的历史,本文介绍了如何用Python开发一个简单的围棋游戏,实例代码涵盖了游戏的... 目录1. 围棋游戏概述1.1 游戏规则1.2 游戏设计思路2. 环境准备3. 创建棋盘3.1 棋盘类

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题