首页 > 其他分享 >什么是测试驱动开发(TDD)?

什么是测试驱动开发(TDD)?

时间:2022-09-04 05:33:40浏览次数:108  
标签:代码 TDD 套件 测试用例 测试 编写 驱动

什么是测试驱动开发(TDD)?

自从我的软件工程之旅开始以来,我的脑海中就没有几个关键问题,特别是关于测试策略

  • 我是否编写了足够的测试,我的测试套件是否完全适合所有用户场景?
  • 我是否在编写高质量的测试,我的测试套件是否正确模拟了我的应用程序?
  • 其中最大的一个, 我只是想让我的测试套件通过吗?

让我详细说明最后一点,在传统设置中,当我们先编写代码然后对其进行测试时,其想法只是将一些测试与新编写的代码相关联。我的测试策略过去是由代码驱动的,例如在单元测试中,所有的模拟对象、服务、数据集、断言都像我的代码一样编写。本质上,代码被认为优于测试。

我需要考虑功能/代码和测试套件以及单独的实体来改变这种方法,然后我遇到了 测试驱动开发(TDD)。

什么是 TDD?

根据维基百科 , 测试驱动开发 ( TDD ) 是一个软件开发过程,依赖于在软件完全开发之前将软件需求转换为测试用例,并通过针对所有测试用例重复测试软件来跟踪所有软件开发。这与首先​​开发软件和稍后创建测试用例相反。

简单来说,TDD 是一种软件开发策略,其中应用程序中的每个新功能都由为其编写的测试用例套件驱动。测试套件是在实际功能之前编写的,它不仅确保了代码的正确性,而且间接地发展了应用程序的设计和架构。

实施 TDD:红绿重构周期

让我们考虑一个简单的例子,一个新的特性来实现对输入字段的验证,其中某些字符集是不允许的

第 1 步:在这个阶段它会失败——RED ​​​​​​​​
在这一步中,我们将针对我们即将实现的用户场景编写一个测试套件,在这一阶段,我们将编写一个测试套件,考虑到与它对应的生产代码已经存在。

果然测试失败了:​​​​​​​

第 2 步:代码可能很难看,但它可以工作! - 绿色

在这个阶段,我们将编写一个简单的解决方案,使测试通过,我们被允许违反最佳实践,甚至重复代码。​​​​​​​​​

第 3 步:提高效率和可读性——重构

在这个阶段,我们将通过重写和重构现有代码来展示我们的编程技能,同时确保所有测试保持绿色。

我的观点:

TDD 不是我们需要首先学习的框架/技术堆栈,而是我们可以在团队文化中采用的一种行为。

以下是我在接受 TDD 后的一些重要收获:

  1. 让事情变绿: 由于我总是在实际实施之前编写详尽的测试用例套件,因此我认为让事情变得绿色是一个挑战 **** 在执行的同时。
  2. 简单的代码,好的设计: TDD 可帮助您编写最少的代码,而不会出现未来代码,并始终保持精简和干净,因此有时也称为测试驱动设计。
  3. 很多问题: 写作 **** 测试最初会在用户故事的初始阶段提出很多问题,例如“我们返回的日期应该是什么格式?”、“我们应该考虑在不同的屏幕尺寸上运行应用程序吗?”、“我们应该返回一个数字还是一个字符串?”
  4. 文件: 在敏捷的工作方式中,需要满足交付时间表,因此编写详尽的测试套件往往会退居二线,采用 TDD 帮助我编写了高质量的测试用例,作为新加入团队的人的功能文档​​​​​​​​​​​

奖励:TDD 和配对

我们可以利用结对编程和 TDD 的潜力来进一步提高可交付成果的质量。这将确保在全面的测试用例集以及代码和设计质量方面的最佳输出。带有结对编程的 TDD 可以通过多种方式完成:

  • 一个编写测试,另一个编写代码以使这些测试通过。
  • 两者一起编写详尽的测试,然后编写相应的代码。
  • 一个人可以考虑整体设计(测试和代码),其他人可以同时实现它

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/11896/20380405

标签:代码,TDD,套件,测试用例,测试,编写,驱动
From: https://www.cnblogs.com/amboke/p/16654183.html

相关文章

  • 数据科学驱动的医疗保健挑战与创新
    https://cdn.sanity.io/images/0vv8moc6/mhe/79867230f1d0db2467e65e7108c2a7554e623630-1000x600.png/HealthcareMaze_148963205_0.png数据科学驱动的医疗保健挑战与创......
  • Python实现XMind测试用例快速转Excel用例
    转载请注明出处❤️作者:测试蔡坨坨原文链接:caituotuo.top/c2d10f21.html你好,我是测试蔡坨坨。今天分享一个Python编写的小工具,实现XMind测试用例转Excel用例。前言XMi......
  • 目录测试
    标题一标题一标题一标题一孤傲苍狼只为成功找方法,不为失败找借口!JavaScript自动生成博文目录导航我们在写博客的时候,如果博文里面有目录,会给人结构清晰......
  • Java测试石家庄铁道大学公寓管理系统
    1、定义公寓类,类名:RoomInformation,其中包括五个私有变量(roomno,stunno1,stunno2,stunno3,stunno4,hygienescore)。各成员的含义如下:变量roomno为字符串类型String,最长八位,用......
  • 开学测试反思
    我觉得不及格还是因为自己没认真学习,这个测试对我意义重大,让我回想了自己暑假的所作所为,看到与舍友的差距,我很后悔,我决定以后晚上不打游戏,把晚上游戏的时间分给学习,还有就......
  • 9.2课堂测试总结
    本次课堂测试并没有取得理想的成绩,意识到自己在假期自学的不足之处。我平时的态度不够端正,并没有进行有效的练习,导致有很多知识并没有掌握,以至于见到没有做过的题目就手忙......
  • 开学的JavaScript第一次测试
    这次的课堂测试我的成绩并不理想,经过一些时间的反思,我总结了一些不周到的原因,首先是我在做老师的给定的程序是没有仔细阅读,没有看到一些具体的要求,导致多米诺古效应,所以进......
  • 使用STM32控制TMC5160驱动步进电机
      首先先来了解一下TMC5160的3种工作模式TMC5160通过两个引脚来控制它的工作模式:SD_MODE和SPI_MODE。1、当SD_MODE接地,SPI_MODE拉高,TMC5160即工作在模式1(SPI......
  • 软件测试(基础
    软件测试软件:控制计算机硬件工作的工具定义使用技术手段验证软件是否满足使用需求目的:减少软件缺陷(也就是bug)-->保证软件质量测试主流技能功能测试:验证程序......
  • 八、用例设计方法--正交试验法、状态图、场景法、测试大纲法
    (五)正交试验法1.应用场景:一个界面上有很多个控件,每个控件又包含多个取值,测试时,需要测试所有的组合情况,但是一般组合数量较大(>20种),并且不同的组合测试的基本是同一段代码,这......