TDD(测试驱动开发)

《Architecting Modern Java EE App

2018-07-19  本文已影响19人  李冬的读书笔记

这本书陆陆续续读了比较久了,前面章节先不谈,先谈谈Testing这一章。

测试的必要性:需要再次强调,拥有好的测试是快速开发的基础。

好的测试应该包含的特征

测试的范围
测试可以粗略分为代码级别的测试和应用级别的测试。

测试的实现

以上测试都是代码级别的测试,之后作者专门用一小章来探讨系统测试。

系统测试
系统测试是把代码发布到类产品环境来进行测试。如果依赖于外部系统的话,还需要mock这些外部系统来实现测试的可预测性,这是以前我们的测试不曾注意的。对于DB是否属于外部系统需要被mock掉,要看情况而定。
对于外部系统的Mock,如果是http请求,可以使用WireMock之类的mock http server,并通过Kubernetes之类的容器管理工具来统一管理。

性能测试
性能测试通过用机器模仿用户行为并收集一些关键值:响应时间,错误率等,来获取对系统的insight。压力测试则是获取服务器最大能承受的访问量等数据。性能测试和其他测试不一样,不是简单的通过不通过的测试,而是通过持续收集性能测试的数据,我们可以发现系统中不同功能的性能的变化趋势,在影响客户体验之前能及时发现问题。
常用工具Gatling, Apache JMeter

维护测试
难以维护的测试屡见不鲜。开发者往往不把测试当做产品代码的一部分来对待,导致写得随意,直接的现象就是测试缺乏抽象,写出的一个巨大的测试方法里实现了各种功能,而没有抽象出方法和类。
系统测试可以用BDD的风格来写,从而达到比较好的抽象层次。这时候可以用一些支持BBT(Behavior Based Testing )或者叫SBT(Specification Based Testing)语法的测试框架,如Cucumber-JVM, FitNesse。还提到了可以自定义assertde AssertJ, 基于SBT的Spock Testing Framework(使用Groovy语言).

上一篇下一篇

猜你喜欢

热点阅读