什么是全链路测试
相信很多程序员在开发过程中或多或少的会基于开源库写过一些单元测试,类似 C++ 的 Google Test,Java 的 Juint 等。大分部情况下,程序员对系统的测试都只在系统的内部进行。但我们知道,一次完整的数据流不可能只在一个系统内流转。比如淘宝从买家下单到最终被收货,这一次完整交易的数据流要经过很多系统(ERP系统、仓库系统、配送系统、末端系统等)。这些系统之间通过调用串成一条条链路,交易数据在链路上进行流转。而对整个链路进行的测试称之为全链路测试,全链路测试可分为全链路功能测试和全链路性能测试。
为什么需要全链路测试
只在系统内部做单元或者逻辑测试只能测试本系统内是否存在问题(当然测试是不能发现所有问题的),并不能知道整个链路是否有功能或者性能上的问题。所以我们需要跳出系统对整个链路进行测试,防止在大促的时候出现问题。下面以自己的亲身经历来说明为什么需要全链路测试。
起源,上一家公司所做的系统虽然不是电商。但是一次数据的流转也需要经过很多系统,很符合全链路的定义。数据流程主要如下:
Agent 采集数据->接入系统->分发系统->一次分析系统->二次分析系统->工单系统
系统的链路大致如上图所示,可以看到数据从 agent 采集到最终发工单给用户要经过很多系统。由于我们做的系统与安全有关,对数据的完整性要求很高,所以必须要保证整个链路上不能丢失数据。为了保证整个链路的可靠性,需要对链路的可用性进行测试。由于对于线上质量测试的不重视,部门对链路采用最简单的拨测方式进行测试。流程如下: