耦合分类
1.内容耦合:如果发生下列情形,两个模块之间就发生的内容耦合
- 一个模块直接访问另一个模块的内部数据
- 一个模块不通过正常入口转到另一个模块内部
- 两个模块有一部分程序代码重叠
- 一个模块有多个入口
2.公共耦合:若一组模块都访问同一个公共数据环境,则他们之间的耦合就称谓公共耦合。公共的数据环境可以是全局数据结构,共享通信区,内存的公共覆盖区等。
3.外部耦合:一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。
4.控制耦合:如果一个模块通过传送开关,标志,名字等控制信息,明显地选择另一个模块的功能,就是控制耦合
5.标记耦合:一组模块通过参数表传递记录信息,就是标记耦合,这个记录是某一项数据结构的子结构,而不是简单变量
6.数据耦合:一个模块访问另一个模块时,彼此之间通过简单的数据参数(不是控制参数,公共数据结构或外部变量)来交换输入,输出信息的。
7.非直接耦合:两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。
当然这个耦合的分类是比较学术和严谨的,但在实际互联网产品开发中,常见的耦合并没有这么多,常见并且通常需要考虑的耦合类型有:
□ 数据库/文件/缓存区耦合;
□ 同步耦合,如函数/方法/类的直接调用,WebService、EJB,或分布式事务;
□ 异步耦合,如异步消息,短连接请求等。
在实际测试工作中,梳理清楚这些耦合是非常有必要的。