参考文章
单元测试
单元测试,指的就是对你的代码段进行测试,一般是一个函数。它不一定要用什么单元测试框架,框架只是帮助你做这件事情。你可以只用简单的if语句来判断,如果函数行为不符合预期,则抛出错误。这就是单元测试。
TDD
TDD,指的是Test-Driven Development,也就是测试驱动开发。简单来说,就是在你写代码之前,先编写测试代码,就好像先给自己出题目。写完测试代码,再编写实际的功能代码,这一步就像完成自己出的题目。这样,只要写出了符合题目要求的答案,代码就可以正常运行了。
TDD和单元测试并不等同,侧重的点不一样,TDD可以写单元测试,也可以不写单元测试。
TDD一般是开发人员自己做的事情,并且比较繁琐。一个简单的函数,可能就要写各种边界情况来进行测试,导致测试代码比功能代码还要多的情况。
实际项目中,由于交付时间的限制,不太可能所有函数和类都去用详尽的单元测试区覆盖,所以实践TDD的最基本要求应该是对那些重要的东西编写尽可能详细的单元测试,把我们的精力花费在最核心的部分。
BDD
BDD,指的是Behavior-Driven Development,行为驱动开发。它指的是,我们测试的时候,应该测试一段代码的行为,或者说效果,而不是测试它的实现。
这段话有点抽象,按照我的理解,所谓BDD,其实也是为了解决一个问题。就是我们的测试代码,如果测试的是某段函数实现的细节,那么当函数重构了,或者实现细节改变了,这时候,即使函数的输入输出不变,我们依然要改动我们的测试代码。大家都懒,都希望测试代码可以一劳永逸,所以,真正正确的做法,就是要测试真正重要的东西,一般来讲就是输入输出,但也并不是所有的函数都有输入输出。换句话说,所谓的BDD,其实是一种最佳实践,就是一套“关于怎么写出高质量测试代码的准则”。
另外,BDD与TDD的侧重点也不同。BDD侧重于从功能上描述测试,尽可能避免使用技术术语。他就好象是,产品经理对你说,“我想要点这里,就会有一个弹窗,可以输入一些资料然后提交”。使用生活化的用语,可以让人更好的阅读测试用例。
网友评论