加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 程序设计 > 正文

谈谈我学习到的TDD知识

发布时间:2020-05-27 06:45:24 所属栏目:程序设计 来源:互联网
导读:这一段在公司刚刚接触到TDD这个概念,对于我这样的新手来说,刚刚接触还没有体会到TDD的好处和必要性。在后来的思考和自己查资料的学习中,我在理念上承认了它的优点,但是在现在开发的项目中还没有应用进去。下面我将记录一下我对TDD的想法,希望有人帮忙指

这一段在公司刚刚接触到TDD这个概念,对于我这样的新手来说,刚刚接触还没有体会到TDD的好处和必要性。在后来的思考和自己查资料的学习中,我在理念上承认了它的优点,但是在现在开发的项目中还没有应用进去。下面我将记录一下我对TDD的想法,希望有人帮忙指正。


所谓TDD(Test Driver Development),即测试驱动开发,顾名思义就是以测试代码驱动程序开发,先写测试用例,然后用代码实现测试用例。


我在刚刚接触到的时候有这么一个疑问,感觉先写测试很浪费时间,直接写代码实现岂不是快得多?直到我后来在开发中遇到的一个问题,思考过后才觉得TDD在某些情况下可以节约我们不少的时间。对于我来说,先写代码后测试很容易使前期的思考不全面,从而写出了无法完成全部任务的代码。遇到这个情况,无非就是继续返工。可是在有了一个点子之后又急于写代码,而考虑的不全面。反反复复的编写、调试和失败浪费了太多时间,归根结底就是因为没有想好要去做什么,做到什么程度。也就是因为这次大量时间的浪费,让我体会到了TDD的好处。


在我看来,TDD就是一个先思考,后实现的过程。前期编写的测试用例就是在思考,思考你需要什么样的功能,需要得到什么样的结果。测试用例写好之后,再去编写代码。此时如果代码不通过,就需要好好思考下是逻辑上的问题还是代码编写有问题。通过之后去重构之前的代码,简化代码逻辑,增强代码的可读性和可维护性。然后可以再加其他测试用例来保证代码功能的全面性,提前把代码中可能出现的BUG降到最低。


这里,测试用例需要有given、when、then,既已有条件、执行什么和最后期望的结果,在选取测试用例时既要全面又不能过多显得冗余。可选取边界值及一个起始值或中间值,这样基本可以覆盖整个测试情况。


现在,总结一下我认识到的TDD的优点:

1、TDD开发是站在用户的角度去看待程序,注重功能的实现而不是实现的过程,这样可以让开发者更加全面的了解程序,也能让开发者很明确的知道自己需要做的是什么

2、在着手写代码之前先写测试用例,想好功能再去写代码,有很好的指导性,降低了遗漏功能的风险

3、每一个测试用例都保证着代码的正确性。有了基础代码的保证,在之后的开发中可以不去考虑前面是否有错误,而更快定位错误所在。

4、思考先于开发,这样看似浪费时间,实际上思考的时间往往低于测试和重写的时间。这样可以在保证代码质量的同时加快开发的速度


在我自己上网查阅资料的时候,看到了很多关于TDD的争论,有人说好当然也就会有人说不好。其实我觉得两个极端的人们有点以偏概全。我感觉TDD不可能适合所有的项目开发。或许在某些前后依赖性强的项目中,TDD是个不错的开发模式。可是在另外一些很简单的项目中,TDD模式又会显得很笨拙。在这里,我觉得这就是一个选择的问题,而不是TDD本身的问题。不能把TDD捧到天上,显得它无所不能。也不应该把它贬到地下,说的一文不值。


单就TDD这种模式来说,我还是比较赞同的,我感觉这和我自己现在先思考再开发的观点很吻合。只有有了全面的认识才能正确的去开发,少走很多弯路。看似浪费时间的前期思考,实际上往往小于后期调试从写的时间。



以上就是我对TDD的一点认识,这也是我第一篇关于技术方面的博客,可能写的很没有条理,都是想到哪里说到哪里。哪里有错误,希望大家指出来帮我改正。有问题的地方也欢迎提出来,一起来讨论

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读