[Day 04] 测试驱动开发

接下来要讨论的问题是,
什麽时候开始写测试,
很多人会觉得应该在整个软件开发完之後开始写测试,
但是越来越多人觉得应该要在写程序之前就先撰写测试程序,
这种方法称为测试驱动开发(Test-Driven Development, TDD)

其实光是TDD这个名词,
就有很多种不同的见解,
有的人觉得TDD是测试优先於开发,
有的人觉得TDD是一种设计程序的方式,
也有人觉得应该要符合某种设计模式,
TDD才可以成为一种驱动程序的方法。

事实上,
TDD和传统的开发方式不同,
你会先写一个执行起来会失败的测试程序,
然後你再写一个程序,
让这个程序能通过刚刚那个测试程序,
然後继续写下一个会失败的测试程序,
或是重构程序码。

事实上使用TDD的方式,
可能会让你花更多的时间跟心力,
譬如学习的时间、
实作练习的时间、
学习其他更多知识的时间等等,
当然这些付出会是值得的。
(没有得到也有学到)

但是我们必须要知道一点,
TDD并不保证你的专案一定能够成功,
但是他是协助我们专案成功的其中一个方法,
通常来说TDD的步骤大致上如下:

  • 写一个会失败的测试,来证明程序或功能的缺失
  • 撰写符合测试预期的程序码,来通过测试
  • 重复以上两个步骤
  • 重构程序码

但是TDD也有可能会有缺点,
如果用不好可能会浪费很多时间,
甚至降低品质,
最後导致失败,

如果你预期一个测试可能会失败,
但是它却成功了!?
那就表示你的测试程序或程序本身就是有问题的;
或是如果你觉得它应该要成功,
但是却失败了!?
也表示你的测试程序或程序是有问题的,
所以不要觉得用了TDD就是天下无敌了,
还是要看工程师本身的功力,
但是如果测试写得好,
在後期测试的时候可以为我们节省很多时间,
而且也能够一定程度地确保程序的稳定性。

所以我们这一个月的时间,
我们就尝试用TDD的方式来写测试,
明天开始我们正式进入主题!


<<:  [Day4] Jetpack Compose: 要如何让元件和我们来点互动?

>>:  Day 1 - 初探 stimulus

Day18

传值与传址,但C++是一个特别的语言比C语言更复杂真要细分可分成3类(传值,传址,传参考),同时指标...

DAY6-我的SQL

前言: 上一篇文章中,我们最後完成了一个简单的网页留言版,主要是使用php的GET方法来进行资料的...

特权蠕变(Privilege Creep)& 自由访问控制(DAC)

范围蠕变和特权蠕变 在项目管理中,范围爬行意味着“未经授权且不受控制地增加了项目范围。” (ISO...

Windows Server 2012 R2 安装微软免费防毒软件 Microsoft Security Essentials

在 Windows Server 的作业系统上都是预设无防毒软件的,可是没有防毒软件就会让电脑曝露在...

[Day17] 系统保护策略

在某个我辅导过的团队,我曾观察到一个现象: RD 在评估工作时数,总是会估出不合理的长时间。是 RD...