0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于数据平台流量的自动化测试

OSC开源社区 来源:OSC开源社区 2023-06-28 16:28 次阅读

1 背景与挑战

1.1 数据平台业务背景

数据平台利用大数据智能分析、数据可视化等技术,对公司内外部经过采集、建设、管理、分析的多源异构数据进行呈现和应用,实现了数据共享、日常报表自动生成、快速和智能分析,深度挖掘数据价值,满足企业各级部门之间的数据分析应用需求。因而也具有数据量大,场景多,数据准确性要求高,查询性能要有保障等特点。

1.2 传统测试方法

基于数据平台的特点,使得我们在线下进行数据测试或者回归测试时成本比较高,难度也比较大。所以我们希望能有一种有效的手段来降低测试的成本和门槛,实现测试的标准化。一直以来我们都是通过编写自动化测试来实现的。但是传统的自动化测试其实是有很多弊端的,比如成本高,覆盖场景有限,标准化难度高等。

1.3 传统自动化的弊端

1.3.1 成本高:

人工编写、维护自动化用例成本高

较低的测开比无法跟上迭代的速度

1.3.2 覆盖场景有限:

线下构造测试场景难度大

场景覆盖度有限

1.3.3 标准化难度高:

强依赖 QA 个人经验和能力

开发独立排查自动化问题难度高,推动开发自测效果差

因此我们希望利用线上的流量来搭建一个流量回放的平台,与自动化测试结合,来实现一个符合数据平台特点的自动化测试体系。

2 流量回放平台介绍

流量回放的实现原理即是使用线上入口录制用户操作的真实流量,到预发环境进行回放,对比生产和预发环境录入接口的子调用、响应差异去定位代码问题,接入对象范围是只读、读写、只写接口,优点是业务代码零侵入,自动流量 diff,真实链路调用,数据可查,问题定位精准,发现问题的可能性提高,缺点是面向范围有一定局限性,操作不慎可能导致回放的接口中存在写操作的子调用产生脏数据,影响业务。

2.1 流量回放平台调研

确定之后我们便立刻展开了调研,研究对比了公司的流量回放平台,阿里的 Doom 以及 Twitty 的 Diffy,差异如下图。 37fb03c6-14d6-11ee-962d-dac502259ad0.jpg

2.2 数据平台业务特点

因为数平报表的查询特点, 导致代码中对外查询链路少,对内的维度条件业务组合多,基于这样的特点导致在使用 Pandora 平台录制线上流量时,流量录制不全,大多数场景无法完全覆盖。

复杂的数据平台一般都依赖大量属性配置管理、定时同步任务等,因此预发环境和生产环境配置库需要隔离,保护数据不被污染。而流量回放又依赖配置库和数据库相同,使用场景高度依赖配置数据, 导致回放落地难度大。

数据平台的流量回放,验证结果时往往需要对数据进行校验, 请求会对生产数据库造成一定查询压力,可能会影响生产环境稳定性。需要控制好回放速度和控制、监控和降级保护。

部分数据是实时的,回放结果需要计算波动率。

基于以上特点导致数据平台无法接入公司的 Pandora 平台,我们也在第一时间联系公司平台负责人进行沟通和提出改进需求方案。 但问题的迫切使得我们决定先小成本的进行一些工作,一方面尽快缓解我们的痛点,一方面也要方便后期接入公司平台,减少资源浪费。以此为目的,我们在一期使用脚本采集流量, 并借助开源工具 Diffy 快速实验了一套简易的流量回放系统。同时给平台提出适应性接入需求。在二期时,将脚本采集的流量上传至平台,接入平台进行流量回放。 这样的好处是:

流量自主可控,可根据需要定点扩充流量,无需担心流量稀疏、录制对线上环境的影响、接口覆盖不全等问题。

使用日志或埋点的方式采集流量,为流量采集提供了一种流量采集的新思路

开源工具只有部署和熟悉的资源投入,后期接入平台后可回收资源,没有浪费资源重复造轮子

基于以上背景,进行了数据平台的流量回放实现方案。

2.3 核心原理

整体思路依然是沿着线上获取流量,分别在不同代码环境进行回放,最后对接口返回结果进行比对,以达到检测被测代码准确性的目的。这里我们将生产的流量根据时间、接口白名单和操作人等字段进行过滤,并按照窗口进行流量的去重和筛选,最后沉淀为一个稳定的流量池。任务触发后会并发的按照指定速率向预发和生产双发回放,获取接口的返回结果,经过一系列降噪操作后,根据字段对比结果统计出整体的成功率,并产出报告。下面我会从流量采集、环境策略、执行调度、比对结果四个方面来介绍整个方案。 ~ 流量回放交互构架图~ 38239de0-14d6-11ee-962d-dac502259ad0.png

2.3.1 流量采集

通过公司的流量录制方式, 接口覆盖提升难度较大, 不太适合数平对外链路少,条件组合多的特点,因此我们想通过埋点筛选的方式进行流量采集。这样的好处是完美避免了流量录制过程中流量分布不均,降低对线上服务的性能影响,同时接口的覆盖又非常的完整。实现了自主可控,定点获取流量。 在流量采集中,我们会分批次的去生产系统上根据配置的日期和数量不断地捞取流量,对每一个批次流量根据入参和请求路径进行接口去重,并根据梳理好的接口白名单、流量操作人、接口关键字、请求类型等来过滤数据,然后需要对流量中的脏数据进行筛选、对参数中的特殊字符和多余字段进行修正。最后将清洗好的干净数据保存到本地流量池中,等待任务使用。 385889e2-14d6-11ee-962d-dac502259ad0.jpg 在后期,处理后的流量会通过接口上传至流量回放回放 Pandora 平台,通过我司的平台化工具更便捷高效的管理流量和执行。 上传后即可在流量回放平台查看流量,这里也可以通过 excel 的方式手动上传,但是每批次流量数量受限。 387a345c-14d6-11ee-962d-dac502259ad0.png

2.3.2 环境策略

环境采用了预发和生产两套环境对比。通过配置将预发环境的数据来源指向了生产服务。并且定时同步生产的配置库到预发环境,来解决数据和配置的 Gap。 38b19ece-14d6-11ee-962d-dac502259ad0.png38e8dfce-14d6-11ee-962d-dac502259ad0.png

2.3.3 执行调度

调度有两种方式, 一种是配置定时触发,一种是手动调用接口触发。任务触发后,会获取流量池中的流量,并对流量的关键字和执行数据量级再次判断是否可执行。确认执行后,将流量放入线程池中开始回放。这里采用了定长线程池和速率控制器来实现高并发和灵活的请求速率配置。 在任务执行后,也可以根据实际执行情况随时修改配置来停止任务或者调整任务的发送速率,控制对线上环境的影响。 3917e0ee-14d6-11ee-962d-dac502259ad0.png

2.3.4 比对结果

拿到生产和预发的返回结果之后就是对比两端结果,发现不一致的字段和返回,介于数平的特点,噪音点会非常的多,因此引入了 AAdiff 的方式,来达到自动降噪的功能。如何降噪: a. AAdiff :在对比之前, 连续调用两次生产环境,获取结果后对比, 将不一致的字段剔除。即可去除不稳定或者有波动的字段 b. 指定字段忽略:跟对一些配置字段或者无意义字段进行手动配置忽略,降低噪点。 结果差异对比汇总后, 会根据字段进行分组汇总,对与 AAdiff 不通过的字段会直接置灰。点击字段即可在右侧查看字段下差异的数据。 3941681a-14d6-11ee-962d-dac502259ad0.jpg 通过点击差异详情,可进一步看到请求的 path、请求体、生产和预发的返回值等信息,帮助排查定位问题。 39697332-14d6-11ee-962d-dac502259ad0.png 同时在结果报表中可以观测到流量数、回放成功率等信息。

3 业务实践

这里以智能运营系统为例,对比流量回放接入前后的效能成本差异。 39b4a8b6-14d6-11ee-962d-dac502259ad0.png 通过流量回放的方式,不仅快速提升了自动化的接口覆盖,降低了迭代人力投入,更是增强了回归的可靠性。这一点通过迭代质量变化趋势也能很好的反应。 平台数据: 流量回放工具在 513 迭代初步使用, 但覆盖率和稳定性较差, 514 迭代完善,正式投入使用。 在 514 迭代工具正式投入使用后,发现遗漏 bug 比例达 25%,515 迭代质量有明显提升, 连续两个迭代线上无缺陷逃逸发生。平台质量和稳定性明显提升。 目前智能运营流量回放投入使用至今,已持续支持多个迭代的日常回归测试以及日常压测工作,读接口覆盖率达 86%,回放通过率稳定在 98%,发现回归漏测比率达 25%,大大提高了系统的稳定性和线上质量。 39ed1868-14d6-11ee-962d-dac502259ad0.png

4 规划与展望

智能运营系统流量回放已进入维护阶段,在日常迭代中帮助测试实现冒烟、回归、压测、缓存验证等多种任务。后续将通过精准接口流量获取的方式,将少部分稀疏接口纳入覆盖。并将流量上传至流量回放平台。借助流量回放平台的能力,更加稳定、方便的执行计划和排查问题。 基于数据平台各系统以读接口为主的特点,非常适合流量回放的回归形式,后续会将各个系统按优先级陆续接入我司流量回放平台,并通过流量埋点的方式快速提升接口覆盖。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    8486

    浏览量

    150804
  • 数据
    +关注

    关注

    8

    文章

    6867

    浏览量

    88799
  • 自动化
    +关注

    关注

    29

    文章

    5506

    浏览量

    79075

原文标题:数据平台流量回放最佳实践

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    OPhone自动化测试技术概述

    本文将对OPhone平台上可采用的几种自动化测试技术进行介绍,并对每种技术的优缺点做简要的总结。OPhone台除了为应用程序开发提供丰富的API外,也为开展自动化
    发表于 05-06 08:58

    手机自动化测试方法

    `随着智能手机近年来的快速增长,从游戏娱乐到移动办公的各式各样的手机APP软件渗透到我们的生活中,手机APP自动化测试也逐渐兴起,从Monkey本地测试到云测试
    发表于 07-05 15:07

    基于EXFO新LTB平台自动化测试和仪表共享方案

    会议的主要内容:基于EXFO新的LTB平台,讨论如何打破传统的测试模式,利用以太网和网络技术,实现仪表的共享和优化并使其自动化。会议的主讲人是EXFO应用工程师—胡希文,主要从事于光通讯行业(光芯片
    发表于 04-11 09:45

    开关电源自动化测试系统的设计与实现

    管理软件、测试开发软件、系统服务与驱动程序软件、处理总线平台和模块I/O 与仪器控制五个层次,如图1 所示。图1 以软件为核心的模块的系统构架  以软件为核心的模块
    发表于 11-29 16:59

    LXI新一代测试自动化平台

    LXI新一代测试自动化平台
    发表于 10-12 15:01

    如何对用户界面进行自动化测试

    能识别图形界面上的关键信息,比如界面上的文字,数值,图标等。小蚂蚁测试(AnTestin)平台支持对人机接口的屏幕显示进行自动化检测,代替人的眼睛观察,可以识别界面上的关键信息,结合其他操作(比如
    发表于 03-06 19:57

    自动化测试系统问答

    和配置管理,学会在开发工具的同时也学会一些开发和测试自动化流程。而在测试过程中,因为开发的工具不是非常系统,所以可以主要从功能点(按照需求列好功能点
    发表于 10-12 19:02

    LabVIEW与Tektronix示波器实现电源测试自动化

    自动化数据处理的智能。通过LabVIEW编程环境连接Tektronix示波器,可以精确设置测试参数,如电压、电流波形等,确保每次测试
    发表于 12-09 20:37

    WLAN自动化测试平台的设计及实现

    本文介绍的WLAN自动化测试平台,采用Linux作为控制端,远程Telnet AP端和STA端,分别通过脚本配置AP端和STA端,并控制他们之间的交互。
    发表于 04-23 11:03 2666次阅读
    WLAN<b class='flag-5'>自动化</b><b class='flag-5'>测试</b><b class='flag-5'>平台</b>的设计及实现

    基于白盒测试自动化测试平台实现

    主要介绍了 Parlay 应用服务器的 API 接口, 提出了一个简单的基于白盒测试自动化测试平台实现方案, 并详细介绍了该方案的基本设计思想、总体结构、
    发表于 09-08 15:07 7次下载
    基于白盒<b class='flag-5'>测试</b>的<b class='flag-5'>自动化</b><b class='flag-5'>测试</b><b class='flag-5'>平台</b>实现

    ATE自动化测试系统是什么_ATE自动化测试系统介绍

    本文首先介绍了ATE自动化测试系统发展线路,其次阐述了ATE自动化测试系统的作用及原理、特点、优势,最后介绍了ATE自动化
    发表于 05-23 16:47 3.2w次阅读

    中科创达SOA自动化测试平台正式发布

    近日,中科创达正式推出全新自动化测试产品——SOA自动化测试平台。该平台可以通过SOA仿真环境搭
    发表于 11-24 10:58 797次阅读

    什么是自动化测试框架

    自动化测试框架,即是应用于自动化测试所用的框架。按照框架的定义,自动化测试框架要么是提供可重用的
    发表于 04-18 14:44 873次阅读

    接口自动化测试流程讲解 企业接口自动化测试步骤

    接口自动化测试是指通过编写脚本或使用自动化工具,对软件系统的接口进行测试的过程。接口测试是软件测试
    发表于 07-28 14:54 2147次阅读
    接口<b class='flag-5'>自动化</b><b class='flag-5'>测试</b>流程讲解 企业接口<b class='flag-5'>自动化</b><b class='flag-5'>测试</b>步骤

    电源测试怎么自动化?电源模块自动化测试系统如何实现?

    纳米软件在电测行业深耕十余年,在行业的大背景下,为了进一步完善自动化测试,开发出了新的智能的电源模块自动化测试系统ATECLOUD-POW
    的头像 发表于 12-15 14:40 822次阅读
    电源<b class='flag-5'>测试</b>怎么<b class='flag-5'>自动化</b>?电源模块<b class='flag-5'>自动化</b><b class='flag-5'>测试</b>系统如何实现?