分层测试的演进和优劣对比

服务开发架构的演进:单体架构-》SOA架构-》微服务架构

单体架构容易理解,SOA将应用程序的不同功能单元进行拆分,不同服务间通过定义好的接口和契约进行联系,使用了一个叫做ESB的总线(想象成计算机中的总线,其他部件间通信都要通过总线),ESB与某种技术栈进行了强绑定,例如J2EE。 

微服务在SOA的基础上,将服务间的通信方式改为RPC或者HTTP Rest, 各个服务可以使用不同的技术实现,每个服务可以单独部署。

 

分层测试的演化:

冰激凌测试模型

分层测试的演进和优劣对比_第1张图片

特点如下:

- 单元测试投入很少

- 较少的接口测试

- 测试主要集中在UI测试中

在这个模式中,测试介入的比较晚,大量测试需要在集成测试阶段进行(UI测试)。 以手工测试为主,测试周期比较长。 

在这个模式下做UI自动化,测试开发、维护的成本较高,但适当的自动化是必须的(回归测试)

由于测试集中在集成阶段,问题修复成本很高,而且很难覆盖代码或者接口级别的异常场景,容易造成漏测,同时修复问题时引入新问题的概率比较高

这个模型已经渐渐退出历史舞台了,但是我们正在用的就是这个模型 ^)^

 

金字塔测试模型

分层测试的演进和优劣对比_第2张图片

这个模型特点如下:

- 测试主要集中在单元测试

- 有一定的接口测试

- 很少的UI测试

大家都知道,在单元测试中发现问题的修复成本是非常低的,但是单元测试对测试人员的开发人力要求很高,同时要维护大量代码级的用例,它的维护成本往往无法被接受。 同时,对于开发人员,考虑到进度因素,也变得不可接受

 

橄榄球测试模型

分层测试的演进和优劣对比_第3张图片

它的特定如下:

- 单元测试投入较少

- 接口测试占很大的比重

- UI测试投入较少

这个模型提倡高度自动化的接口测试,对测试人员代码能力有一定的要求。 它使得测试能够尽早的介入,而无需等到集成阶段。 相对于其他2中模式,这种模式在测试成本和修复成本取得了较好的平衡,既降低了测试技术门槛,也减少了开发人员的进度压力。

 

但是,在实际项目中,特别是使用敏捷的项目中,接口变的不是那么稳定。 例如,服务开发人员定义好接口并实现它,前端人员写完页面后需要和服务进行联调,这个过程中,接口可能需要进行调整以满足前端的要求。  这样的话,测试何时接入呢? 等联调结束进入,岂不是还在集成阶段接入吗?

大家可能会说那是你接口定义的不好,是的,确实是这样。 但在实际项目中就是这样,服务端和前端各自按照需求开发,最终联调时,接口规格不会变化,但是输入输出的数据可能发生变化。 这种变化导致一定的额外的测试开发成本。

大家有什么好建议吗?

 

 

 

你可能感兴趣的:(测试管理)