共计 3247 个字符,预计需要花费 9 分钟才能阅读完成。
1 背景与挑战
1.1 数据平台业务背景
数据平台利用大数据智能剖析、数据可视化等技术,对公司内外部通过采集、建设、治理、剖析的多源异构数据进行出现和利用,实现了数据共享、日常报表主动生成、疾速和智能剖析,深度开掘数据价值,满足企业各级部门之间的数据分析利用需要。因此也具备数据量大,场景多,数据准确性要求高,查问性能要有保障等特点。
1.2 传统测试方法
基于数据平台的特点,使得咱们在线下进行数据测试或者回归测试时老本比拟高,难度也比拟大。所以咱们心愿能有一种无效的伎俩来升高测试的老本和门槛,实现测试的标准化。始终以来咱们都是通过编写自动化测试来实现的。然而传统的自动化测试其实是有很多弊病的,比方老本高,笼罩场景无限,标准化难度低等。
1.3 传统自动化的弊病
1.3.1 老本高:
- 人工编写、保护自动化用例老本高
- 较低的测开比无奈跟上迭代的速度
1.3.2 笼罩场景无限:
- 线下结构测试场景难度大
- 场景覆盖度无限
1.3.3 标准化难度高:
- 强依赖 QA 集体教训和能力
- 开发独立排查自动化问题难度高,推动开发自测成果差
因而咱们心愿利用线上的流量来搭建一个流量回放的平台,与自动化测试联合,来实现一个合乎数据平台特点的自动化测试体系。
2 流量回放平台介绍
流量回放的实现原理即是应用线上入口录制用户操作的实在流量,到预发环境进行回放,比照生产和预发环境录入接口的子调用、响应差别去定位代码问题,接入对象范畴是只读、读写、只写接口,长处是业务代码零侵入,主动流量 diff,实在链路调用,数据可查,问题定位精准,发现问题的可能性进步,毛病是面向范畴有肯定局限性,操作不慎可能导致回放的接口中存在写操作的子调用产生脏数据,影响业务。
2.1 流量回放平台调研
确定之后咱们便立即开展了调研,钻研比照了公司的流量回放平台,阿里的 Doom 以及 Twitty 的 Diffy,差别如下图。
2.2 数据平台业务特点
- 因为数平报表的查问特点,导致代码中对外查问链路少,对内的维度条件业务组合多,基于这样的特点导致在应用 Pandora 平台录制线上流量时,流量录制不全,大多数场景无奈齐全笼罩。
- 简单的数据平台个别都依赖大量属性配置管理、定时同步工作等,因而预发环境和生产环境配置库须要隔离,爱护数据不被净化。而流量回放又依赖配置库和数据库雷同,应用场景高度依赖配置数据,导致回放落地难度大。
- 数据平台的流量回放,验证后果时往往须要对数据进行校验,申请会对生产数据库造成肯定查问压力,可能会影响生产环境稳定性。须要管制好回放速度和管制、监控和降级爱护。
- 局部数据是实时的,回放后果须要计算稳定率。
基于以上特点导致数据平台无奈接入公司的 Pandora 平台,咱们也在第一工夫分割公司平台负责人进行沟通和提出改良需要计划。
但问题的迫切使得咱们决定先小老本的进行一些工作,一方面尽快缓解咱们的痛点,一方面也要不便前期接入公司平台,缩小资源节约。以此为目标,咱们在一期应用脚本采集流量,并借助开源工具 Diffy 疾速试验了一套繁难的流量回放零碎。同时给平台提出适应性接入需要。在二期时,将脚本采集的流量上传至平台,接入平台进行流量回放。
这样的益处是:
- 流量自主可控,可依据须要定点裁减流量,无需放心流量稠密、录制对线上环境的影响、接口笼罩不全等问题。
- 应用日志或埋点的形式采集流量,为流量采集提供了一种流量采集的新思路
- 开源工具只有部署和相熟的资源投入,前期接入平台后可回收资源,没有浪费资源反复造轮子
基于以上背景,进行了数据平台的流量回放实现计划。
2.3 外围原理
整体思路仍然是沿着线上获取流量,别离在不同代码环境进行回放,最初对接口返回后果进行比对,以达到检测被测代码准确性的目标。
这里咱们将生产的流量依据工夫、接口白名单和操作人等字段进行过滤,并依照窗口进行流量的去重和筛选,最初积淀为一个稳固的流量池。工作触发后会并发的依照指定速率向预发和生产双发回放,获取接口的返回后果,通过一系列降噪操作后,依据字段比照后果统计出整体的成功率,并产出报告。
上面我会从流量采集、环境策略、执行调度、比对后果四个方面来介绍整个计划。
~ 流量回放交互构架图~
2.3.1 流量采集
通过公司的流量录制形式,接口笼罩晋升难度较大,不太适宜数平对外链路少,条件组合多的特点,因而咱们想通过埋点筛选的形式进行流量采集。这样的益处是完满防止了流量录制过程中流量散布不均,升高对线上服务的性能影响,同时接口的笼罩又十分的残缺。实现了自主可控,定点获取流量。
在流量采集中,咱们会分批次的去生产零碎上依据配置的日期和数量一直地捞取流量,对每一个批次流量依据入参和申请门路进行接口去重,并依据梳理好的接口白名单、流量操作人、接口关键字、申请类型等来过滤数据,而后须要对流量中的脏数据进行筛选、对参数中的特殊字符和多余字段进行修改。最初将荡涤好的洁净数据保留到本地流量池中,期待工作应用。
在前期,解决后的流量会通过接口上传至流量回放回放 Pandora 平台,通过我司的平台化工具更便捷高效的治理流量和执行。
上传后即可在流量回放平台查看流量,这里也能够通过 excel 的形式手动上传,然而每批次流量数量受限。
2.3.2 环境策略
环境采纳了预发和生产两套环境比照。通过配置将预发环境的数据起源指向了生产服务。并且定时同步生产的配置库到预发环境,来解决数据和配置的 Gap。
2.3.3 执行调度
调度有两种形式,一种是配置定时触发,一种是手动调用接口触发。
工作触发后,会获取流量池中的流量,并对流量的关键字和执行数据量级再次判断是否可执行。确认执行后,将流量放入线程池中开始回放。这里采纳了定长线程池和速率控制器来实现高并发和灵便的申请速率配置。
在工作执行后,也能够依据理论执行状况随时批改配置来进行工作或者调整工作的发送速率,管制对线上环境的影响。
2.3.4 比对后果
拿到生产和预发的返回后果之后就是比照两端后果,发现不统一的字段和返回,介于数平的特点,乐音点会十分的多,因而引入了 AAdiff 的形式,来达到主动降噪的性能。
如何降噪:
a. AAdiff:在比照之前,间断调用两次生产环境,获取后果后比照,将不统一的字段剔除。即可去除不稳固或者有稳定的字段
b. 指定字段疏忽:跟对一些配置字段或者无意义字段进行手动配置疏忽,升高噪点。
后果差别比照汇总后,会依据字段进行分组汇总,对与 AAdiff 不通过的字段会间接置灰。点击字段即可在右侧查看字段下差别的数据。
通过点击差别详情,可进一步看到申请的 path、申请体、生产和预发的返回值等信息,帮忙排查定位问题。
同时在后果报表中能够观测到流量数、回放成功率等信息。
3 业务实际
这里以智能经营零碎为例,比照流量回放接入前后的效力老本差别。
通过流量回放的形式,不仅疾速晋升了自动化的接口笼罩,升高了迭代人力投入,更是加强了回归的可靠性。
这一点通过迭代品质变化趋势也能很好的反馈。
平台数据:
流量回放工具在 513 迭代初步应用,但覆盖率和稳定性较差,514 迭代欠缺,正式投入使用。
在 514 迭代工具正式投入使用后,发现脱漏 bug 比例达 25%,515 迭代品质有显著晋升,间断两个迭代线上无缺点逃逸产生。平台品质和稳定性显著晋升。
目前智能经营流量回放投入使用至今,已继续反对多个迭代的日常回归测试以及日常压测工作,读接口覆盖率达 86%,回放通过率稳固在 98%,发现回归漏测比率达 25%,大大提高了零碎的稳定性和线上品质。
4 布局与瞻望
智能经营零碎流量回放已进入维护阶段,在日常迭代中帮忙测试实现冒烟、回归、压测、缓存验证等多种工作。后续将通过精准接口流量获取的形式,将少部分稠密接口纳入笼罩。并将流量上传至流量回放平台。借助流量回放平台的能力,更加稳固、不便的执行打算和排查问题。
基于数据平台各零碎以读接口为主的特点,非常适合流量回放的回归模式,后续会将各个系统按优先级陆续接入我司流量回放平台,并通过流量埋点的形式疾速晋升接口笼罩。
* 文 / 低微小季
本文属得物技术原创,来源于:得物技术
未经得物技术许可严禁转载,否则依法追究法律责任!