如果要求我描述过去几周,我会称它们为“令人兴奋,令人生畏,充满挑战的”周。 与以前相比,我在短时间内积累了很多技能。 在继续这篇文章之前,让我在这里提供一些背景信息,这样您就知道我来自哪里。
它开始于几个月前,大约是2018年4月。由于我最清楚的原因,我在停滞了几个月后才申请了Andela的技术领导力计划。 长话短说,在申请过程的多个阶段之后,我收到了邮件,邀请我参加Bootcamp(一个为期2周的沉浸式程序),这是整个过程的主要也是最后一部分。 邮件中包含一个文档,其中包含有关Bootcamp的课程表和一些需要解决的概念。 有很多人,而且我有自己的思维定势,所以我很喜欢。
Web技术,软件开发等概念以及其他相关项目是需要涵盖的必要概念。 为了提供更多的环境,我绝对喜欢技术,尤其是与Web相关的技术,并且已经有一段时间自我学习了,所以我对这些事情并不是很新手,除了其中的一些。
少数几个概念之一就是测试驱动开发(TDD)。
TDD简单地说就是通过测试来创建软件。 您正确理解了总体思路-测试,驱动,开发。 当我第一次遇到这个问题时,我想到的第一个问题是“您如何测试某些东西,您尚未创建?”。 我可以看到您也有同样的想法。 抱住你的马,我会分解一下。
“您如何测试某些东西,您尚未创建?”
诚然,人们会认为理想情况下,您可以创建或构建所需的内容,然后进行测试。 但是,关键要点是:“ TDD是关于软件开发的另一种范式。”
什么是TDD?
“测试驱动的开发是指一种编程风格,其中紧密结合了三个活动:编码,测试(以编写单元测试的形式)和设计(以重构的形式)。”
我试图不使这篇文章过于技术化,但是一个简单的示例足以使该概念陷入其中。
假设您要构建一个计算器-一个非常基本的计算器,只能加,减,除,乘。 使用TDD,您首先要定义应用程序的行为(这就是为什么有时将其称为BDD —行为驱动开发)的原因。 例如:
- 它应该能够将两个数字相加并返回它们的和。
- 它应该能够减去两个数字并返回它们的差
- 它应该能够繁殖
…您的想法正确。
有了这些行为,您就可以为计算器编写测试,并牢记这些行为并创建适当的功能以使这些测试通过。
尽管您可能会争辩说为什么只为一个小型计算器而大惊小怪,这是有效的,但是当您开始将新功能集成到产品或软件中时,TDD的潜力就会出现,这就是TDD真正发挥作用的地方。
如果您曾经做过任何业余创作工作,例如以Photoshop为例(尤其是在学习时),有时您会碰运气,并创造出自己喜欢并为之骄傲的美好事物。 但是,如果您想在此之上添加新的“功能”,那么合乎逻辑的事情是保存不同的版本,例如“ cool-design1.jpg”,“ cool-design2.jpg”,“ cool-designFinal.jpg”” ,仅仅是因为您不想“破坏”原始事物。
TDD也是如此。 但是,如果您已经通过质量合格测试构建了当前功能,那么添加新功能就不会成为问题,因为您有信心,如果您破坏了代码中的任何内容,测试将指出发生了什么错误,从而使您能够保留所有原始功能。
对我来说,这是TDD的一大优势。
我故意尝试尽可能地限制这篇文章中的技术术语,因为我的意图是记载我所学到的东西,这些东西确实改变了我看软件开发的方式。 但是,您可以检查此链接以获取TDD中的快速入门。 我从这些资源开始,它们为我准备安德拉的训练营提供了帮助。