什么是全链路测试
相信很多程序员在开发过程中或多或少的会基于开源库写过一些单元测试,类似 C++ 的Google Test,Java 的 Juint 等。大分部情况下,程序员对系统的测试都只在系统的内部进行。但我们知道,一次完整的数据流不可能只在一个系统内流转。比如淘宝从买家下单到最终被收货,这一次完整交易的数据流要经过很多系统(ERP系统、仓库系统、配送系统、末端系统等)。这些系统之间通过调用串成一条条链路,交易数据在链路上进行流转。而对整个链路进行的测试称之为全链路测试,全链路测试可分为全链路功能测试和全链路性能测试。

为什么需要全链路测试

只在系统内部做单元或者逻辑测试只能测试本系统内是否存在问题(当然测试是不能发现所有问题的),并不能知道整个链路是否有功能或者性能上的问题。所以我们需要跳出系统对整个链路进行测试,防止在大促的时候出现问题。下面以自己的亲身经历来说明为什么需要全链路测试。

起源,上一家公司所做的系统虽然不是电商。但是一次数据的流转也需要经过很多系统,很符合全链路的定义。数据流程主要如下:
  Agent 采集数据->接入系统->分发系统->一次分析系统->二次分析系统->工单系统

系统的链路大致如上所示,可以看到数据从 agent 采集到最终发工单给用户要经过很多系统。由于我们做的系统与安全有关,对数据的完整性要求很高,所以必须要保证整个链路上不能丢失数据。为了保证整个链路的可靠性,需要对链路的可用性进行测试。由于对于线上质量测试的不重视,部门对链路采用最简单的拨测方式进行测试。流程如下:
  1.定时在测试机上用脚本构造有效的工单数据,一般在早中晚定时用脚本跑一次或者几次。
  2.链路上涉及到的系统上报自己的日志到存储系统,方便后续定位。同时继续扭转数据到下一个系统。
  3.查看最终是否能正确发出工单,如果没有测试工单转(4),否则结束此次拨测。
  4.人工去日志存储系统进行日志查询,找:到有问题的系统,再深入系统定位问题。

以上方法简单粗暴但存在很多弊端,比如:
  1.各种数据只能靠人工写不同的脚本在 agent 上构造数据,导致测试数据种类和数量非常有限。
  2.出了问题需要人工一步步的查看链路中哪个系统没有上报日志,再去系统定位导致排查效率低。
  3.每天只定时跑几次拨测存在一定的随机性,如果次数太多脚本又不好管理。
  4.真实数据和测试数据混在一起,只能通过白名单进行最后的工单过滤。
  但即便如此,拨测也提供了全链路测试的一种手段。如果没有拨测,全链路功能的可用性更无法预知。只能说拨测是全链路测试的一个雏形,离真正的全链路测试系统还有一定的距离。全链路测试需要一个系统化的平台,只要链路中的各个系统都接入平台,即可对系统内和系统间的链路进行测试。一个理想的全链路压测平台应该为开发和测试提供从数据构造、用例管理、全链路场景组织、协助测试结果分析等一站式服务。

全链路测试平台需要提供的功能

可以看出以上链路还是比较短的,拨测还能勉强凑效。如果链路再长点、分支再多点呢?电商的业务一般具有链路长、分支多和周期久等特点。一般需要一个完整的全链路测试系统,它可以进行链路和节点的功能、性能测试。一个完整的全链路测试平台应该提供如下功能:
  1.单元测试的管理功能:开发可能在一个系统中写了大量的单元测试,此功能可以提供开发对系统中单元测试的集中管理。
  2.全链路压测功能:这是全链路测试中高阶部分,也是比较难的部分。主要是对全链路的性能进行测试。
  3.链路场景组装功能:由于链路众多,可以为用户提供自定义的链路组装功能。不过平台要保证组成的链路场景的有效性。
  4.提供测试来源数据:可以为测试用例提供大量的、模拟真实环境的测试数据。包括单元测试的数据来源、全链路测试的来源等。
  5.定位分析功能:为开发定位和分析测试失败原因提供便利。
  6.代码覆盖率统计:为每次的测试提供可视化的代码覆盖率报告,增加测试的可信度。

很多公司都已经有自己的压测系统或者平台:
阿里全链路压测系统:
https://my.oschina.net/cctester/blog/994727
有赞全链路压测系统:
https://mp.weixin.qq.com/s/0a-Sd_fCkE2mDFzNpKxf7A
京东全链路压测系统:
https://sdk.cn/news/6349
饿了么全链路压测系统:
https://www.testwo.com/article/1104

全链路测试平台需要解决的问题

如何构造真实的测试数据,特别是全链路压测的数据。这是压测系统比较核心的问题。
  如何处理测试数据,要不要进行环境隔离?参考【阿里全链路压测系统】提供的一种方案:所有写数据的地方对压测流量进行识别,判断一旦是压测流量的写,就写到隔离的位置,包括存储、缓存、搜索引擎等等。
  如何在平台上协调各个系统进行全链路测试?一条链路上的各个系统往往属于不同的组、不同部门甚至不同的BU,这就导致组织一次全链路测试要进行很多业务间的协调和系统改造。对于那些一开始就没考虑到要进行全链路压测的系统成本还是比较大的。

一分钟带你了解全链路测试!相关推荐

  1. 一分钟带你了解全链路测试

    什么是全链路测试 相信很多程序员在开发过程中或多或少的会基于开源库写过一些单元测试,类似 C++ 的 Google Test,Java 的 Juint 等.大分部情况下,程序员对系统的测试都只在系统的 ...

  2. 3分钟带您快速了解HIL测试及其架构

    什么是HIL测试 硬件在环(HIL)仿真是一种用于测试导航系统的技术,其中测试前并不知道车辆轨迹.在这种情况下,车辆轨迹被实时馈送到GNSS模拟器.HIL可用于复杂实时系统的开发和测试,如卫星控制系统 ...

  3. 服务百万商家的系统,发布风险如何规避?微盟全链路灰度实践

    一分钟精华速览 全链路灰度发布是指在微服务体系架构中,应用的新.旧版本间平滑过渡的一种发布方式.由于微服务之间依赖关系错综复杂,一次发布可能会涉及多个服务升级,所以在发布前进行小规模的生产环境验证,让 ...

  4. 你“被”全链路了么?全链路压测实践之理论

    要说当下研发领域最热门的几个词,全链路压测 肯定跑不了.最近的几次大会上,也有不少关于全链路的议题.之前有朋友在面试过程中也有被问到了什么是全链路压测,如何有效的开展全链路压测.今天我们就来聊聊全链路 ...

  5. 如何用20分钟就能获得同款企业级全链路灰度能力?

    简介:MSE 微服务引擎将推出服务治理专业版,提供开箱即用且完整专业的微服务治理解决方案,帮助企业更好地实现微服务治理能力.如果您的系统也可以像本文描述的那样,快速具备完整的全链路灰度能力,并基于该能 ...

  6. 重磅干货 | 带你深入解读:全栈测试开发工程师

    篇符较长,深度好文,请耐心看完! 1. 测试人员生存的窘境 在移动互联网飞速发展和行业新需求的推动下,软件测试行业在不知不觉中发生着非常大的转变,如果说早期软件测试行业还是一个风口,随着转行人员以及毕 ...

  7. qtdesigner 组件全吗_百度营销工具有哪些?带你了解百度全链路营销

    众所周知,百度商业产品近两年改版可以说是非常大,在2019年下半年推出了"风云计划"但是,百度改版之后的营销工具你知道有哪些吗?你知道该如何使用吗?今天给大家介绍百度的四大营销工具 ...

  8. ApiTesting全链路接口自动化测试框架骑着蜗牛的测试

    此框架是基于Python+Pytest+Requests+Allure+Yaml+Json实现全链路接口自动化测试. 主要流程:解析接口数据包 ->生成接口基础配置(yml) ->生成测试 ...

  9. Android 3分钟带你入门开发测试

    本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/-TW7p3z3vJ3GJw7X9u7dVg 作者:Zhu Yifei 作为一名合格的开发人员, ...

最新文章

  1. 技术图文:如何爬取一个地区的气象数据(上)?
  2. 图解电商支付架构设计,这才是真电商!
  3. LR监测windows资源一般监测哪几个项?
  4. Linux——基础IO(总结)
  5. 使用yum更新时不升级Linux内核的方法
  6. Qt 调用 Windows 接口实现窗口置顶
  7. oa项目经验描述_OA系统为企业带来多少实用价值?移动OA又为企业解决哪些问题?...
  8. neo4j 添加属性_Neo4j:动态添加属性/设置动态属性
  9. 电子科大16秋计算机应用基础在线作业一,电子科大16秋《计算机应用基础(本科)》在线作业3...
  10. python图像处理模糊_Python+OpenCV图像处理之模糊操作
  11. python range函数怎么表示无限_python range函数怎么用
  12. 湖南高职高考计算机,20XX湖南高职对口高考常德市大联考计算机专业试卷(4月)[整理](8页)-原创力文档...
  13. 12v电瓶20安时是什么意思
  14. MFC编程 小说分割器
  15. 2022考研资料每日更新(2021.07.28)
  16. 实用计算机理论基础知识试题及答案,计算机基础知识试题库及答案(5)
  17. 追踪邮件插件:Unlimited Email Tracker 安装——帮你时刻关注对方会不会点击你的邮件
  18. 中航一院c语言笔试题目,C笔试题目汇总
  19. 加快BITMAP像素访问速度,取代GetPixel
  20. ARM程序的镜像文件以及在内存中的分区

热门文章

  1. [paper] ENet
  2. C# 开发压缩软件项目实战
  3. 集装箱堆场建模调度计划(建模阶段)
  4. 微信小程序 | 小程序系统API调用
  5. 小时候的感觉——小米蓝牙手柄评测
  6. dns配置的测试方法
  7. lombok构造模式
  8. 怎样促进宝宝视力发育 有效促进方法
  9. php redis 抢票,Redis抢票先进先出
  10. iOS备忘录之XCode插件