在系统中物理组件间必然会存在着各种各样的联系(DependOn 关系)。良好的设计应该是接口短小,易于理解,易于使用和易于测试的。理清物理层次结构对于设计良好的系统是很有帮助的。
易测试性设计
质量设计的一个重要部分是易测试性设计,如果一个组件设计良好,那么用它构造测试用例也是比较容易的,同样它的易用性对于用户来说也是很好的,很多时候测试用例和用户使用的场景是一致的。这个和极限编程中测试驱动的想法是一致的。由使用倒逼设计。
规则 1:对整个系统的层次结构进行分布测试比只在上层测试要有效的多。
如果层次定义的清晰,那么测试起来会很方便,而且测试用例的构造也会非常的合理。如果发现分层次结构测试时构造测试用例很困难,或者很难划分清晰的层次,恐怕物理结构的设计已经出现了问题。
规则 2:隔离测试
也可以理解成一种独立的测试,针对每个模块的独立测试目的是为了降低集成测试时的风险。隔离测试可以确保单个组件的有效性。同时也是检查组件间依赖设计的好坏的一种方式。如果要单独执行某个组件还要依赖好多其他的组件,隔离起来有点困难,那么可能要重新考虑一下组件或子系统的设计了。
规则 3:非循环物理依赖
循环依赖,组件间的相互依赖。
非循环依赖的好处是可以更容易的进行测试。有循环依赖甚至很难确定测试的顺序。循环依赖更大问题是限制了组件的重用,增加理解和使用的成本。
要想解决循环依赖,可以考虑两个方面:一,重新打包,解开循环链。二,将循环依赖的两个或多个组件组成一个新的组件。