消费者驱动契约测试
的演讲比比皆是,我也没有例外,在某Account的技术大会上做了一次 微服务架构下的测试应对策略 的分享。在分享中,我赶时髦提倡用契约测试取代集成测试,但是细节中没有忽略的一个核心点:单元测试。这也是本文我要分享的重点。
单元测试是根,是基本,基本最无敌
单元测试存在于测试金字塔的底端,撑起了整个金字塔,编写它是开发人员的职责。微服务架构让服务更加独立小巧,这意味着我们不用为小巧的代码库编写单元测试了吗?微服务架构提倡服务与服务之间通过契约测试来集成,这意味着我们只用编写契约测试就足够了吗?
假设我们以正确的姿势在践行微服务的相关技术实践。
CI上会伴随每次提交都触发单元测试、Service测试(API测试)、契约测试,所有测试通过后开始独立部署,如果我们的契约测试写的足够好,便可以自信地独立部署。如果Service测试覆盖的足够全,便可以自信地说代码缺陷率很低。此时我们可能认为单元测试业务价值低,不必过多关注。
回到现实,实际情况可能是这样子的。
CI上有契约测试的Stage,但也是草率编写,甚至契约测试因为没人维护而被默认忽略。Service测试写了大量的Case,导致测试运行时间被拖长,Build效率大大降低。由于大量的Servcie测试的存在导致单元测试被过度轻视,再加上无效的测试充斥着代码库。这几点不但扼杀了服务独立部署 的特性,而且增加了开发部署的工作量。
再者,根据康威定律: 原文转自:http://sjyuan.cc/significance-of-unit-test-from-other-sight/系统架构取决于组织架构,它俩息息相关