由内到外Vs由外到内的开发模式

上一篇 / 下一篇  2012-07-22 14:00:52 / 个人分类:单元测试

从代码开发顺序的角度存在两种开发模式:Inside-Out or Outside-In(内到外vs外到内)。Inside-Out即先开发最内层代码,最后开发外层代码,Outside-In则反之。两种方式孰优孰略,且看本次分解。

下图为Inside-Out的开发顺序。下图中右侧从上到下为从内到外开发顺序,左侧从上到下为测试顺序。当测试中间或最下层(外层)的SUTSystem Under Test)时,第一层(内层)的SUT已开发完成,下层(外层)的SUT可直接使用第一层的SUT。因为要先开发最内层的代码,就必须提前将内层接口明确,可以理解为提前考虑清楚外层对内层的需求。然而试想一下,当设计不能对细节梳理的足够清晰时,内层代码就很容易出现不满足外层需求而不断重构或内层过设计问题;同时因为对外层的SUT进行单元测试时,外层的SUT是直接调用内层SUT的,对外层的测试对内层是不能隔离的,内层代码的每次变更都可能引发外层测试的修改。

 从测试驱动开发角度说,Outside-In的方式更适合;如下图所示,外层SUT的开发不需要关心内层逻辑,而只关注与内层的接口,测试时基于接口对内层进行mock。进行外层SUT的开发过程中,外层对内层的需求就会变的更加明确,可有效避免重构与过设计问题。同时针对单元测试来说,完成外层SUT的开发后,因为内层SUT还不存在就需要对其进行mock,会引发一定的mock成本;但从产品架构的设计及后期的运维角度看,这点成本是可接受的。

 


TAG:

 

评分:0

我来说两句

Open Toolbar