2006-12-21
测试的粒度如何界定?
对于测试驱动来说,如何确定要测试的主体,是个似是而非的问题。
在OO中对象是最基本的组织结构,那么测试的主体是否可以以对象为基本单位呢?
所以我们可以看见很多“对象”和“对象测试”对,比如有一个CustomerOrder对象,就会有一个CustomerOrderTest对象。虽然后者并不是总是存在。
另外一个常见的做法是只在服务层有测试,也就是说同时测试了Service,DomainModel,DAO。
前者的问题在于对象都是普遍联系的,紧紧测试某个对象,会产生一些意义模糊的测试。这好比流水线作业,某个局部动作如果不放到整个流水线来考察,就没有意义。另外,需要很多的mock或stub也确实恼人。
后者则目的明确,但问题在于运行成本昂贵,因为依赖的东西太多,以至于运行一次测试需要分钟级别的时间。同时,代码会存在相互干扰的情况。
我认为测试应当有明确的目的,否则完全不能思考,同时也需要作合理的划分,要不成本太高。
要到达上述要求,透过方面的视角也许是一个可以考虑的方法。
实际上,寻找测试的粒度,就是在寻找彼此分离的关注点。
针对关注点来进行测试,果真不蒙人?
在OO中对象是最基本的组织结构,那么测试的主体是否可以以对象为基本单位呢?
所以我们可以看见很多“对象”和“对象测试”对,比如有一个CustomerOrder对象,就会有一个CustomerOrderTest对象。虽然后者并不是总是存在。
另外一个常见的做法是只在服务层有测试,也就是说同时测试了Service,DomainModel,DAO。
前者的问题在于对象都是普遍联系的,紧紧测试某个对象,会产生一些意义模糊的测试。这好比流水线作业,某个局部动作如果不放到整个流水线来考察,就没有意义。另外,需要很多的mock或stub也确实恼人。
后者则目的明确,但问题在于运行成本昂贵,因为依赖的东西太多,以至于运行一次测试需要分钟级别的时间。同时,代码会存在相互干扰的情况。
我认为测试应当有明确的目的,否则完全不能思考,同时也需要作合理的划分,要不成本太高。
要到达上述要求,透过方面的视角也许是一个可以考虑的方法。
实际上,寻找测试的粒度,就是在寻找彼此分离的关注点。
针对关注点来进行测试,果真不蒙人?
- 浏览: 20309 次
- 性别:

- 来自: 深圳

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
测试的粒度如何界定?
引用透过方面的视角也许是一个可以考虑的方法。 这样测试会不会覆盖不全?
-- by rrtrip -
用ActiveRecord能否完美的 ...
比如遗留系统,就算是很多现在的数据库也不是按照ActiveRecord形式弄得, ...
-- by 刑天战士 -
用ActiveRecord能否完美的 ...
除了单表继承某些情况下不一定适用以外,Active Record还是能满足大部分 ...
-- by BirdGu -
用ActiveRecord能否完美的 ...
partech 写道yuxie 写道难道你看现在ror那些例子里边的Active ...
-- by 刑天战士 -
用ActiveRecord能否完美的 ...
partech 写道yuxie 写道难道你看现在ror那些例子里边的Active ...
-- by tuti






评论排行榜