流量录制回放工具在自动化测试领域应用探索

news2024/11/22 19:35:44

引言: 随着中国农业银行技术架构的日益更迭与业务场景的不断创新,测试工作正在面临数据构造繁琐、案例维护成本较高且质量参差不齐等诸多问题与挑战,主要体现在以下四方面:

一是在系统架构升级与代码重构时,大量原始接口需要进行回归测试;二是对于逻辑复杂的业务场景,在多版本迭代的过程中,回归测试占据大量时间;三是自动化案例的前期录入与后期维护环节,均需要人工操作干预,人力成本较高;四是在生产环境出现交易异常情况时,问题解决的时效性在很大程度上直接取决于开发人员、测试人员在测试环境中完成问题复现与调试的效率。

综上,通过测试领域新技术的研究与创新,实现测试质量与测试效率的提升,对于当下测试工作的开展有着尤为重要的意义。

01 流量录制回放技术概述

流量录制回放技术可以快速将应用运行过程中产生的接口流量按照一定的过滤规则进行录制。录制的内容包括接口的请求报文以及响应报文,在录制过程中存储的报文可以随时在指定的环境上回放。流量录制回放场景,既可以应用在功能测试阶段,实现回归验证,亦可以应用在版本验证阶段,实现自动交易回归。流量录制回放技术,在简化测试案例编写、提高测试效率、增强测试场景覆盖率等方面,具有重要意义。

图片

图1 流量录制回放过程

根据流量录制的位置,大致可将流量录制回放技术分为以下三类:基于web服务器录制(定制化Web服务器操作系统实现应用请求录制)、基于网络协议栈录制(通过在网卡上监听网络协议端口,采用数据包复制的方式实现请求录制)、基于应用录制(在应用上采用AOP面向切面编程的方式实现请求录制),其优缺点详见下表。

在这里插入图片描述
表1 流量录制回放技术对比

02 设计方案

基于日常测试工作中的痛点问题,中国农业银行研发中心天津研发部测试部在2022年7月成立专项任务,采用开源+自研的方式,建设流量录制回放工具,通过应用层录制的方式,实现配置管理、节点监控、流量管理、流量回放执行、批次执行、批次结果分析等功能。

流量录制回放平台主要分为代理模块和管理端模块两部分。代理模块用于监听应用流量,处理回放请求,并将录制和回放信息发送给管理端模块进行处理存储;管理端模块用于进行配置管理、模块管理、录制流量查询和回放等操作。

图片

图2 流量录制回放工具总体架构

流量录制回放工具采用前后端分离的开发架构。用户仅需在应用上安装一个探针,即可实现流量录制回放操作,接入流程与安装过程均简易友好。接入完成后,用户通过访问统一的web端界面,可一站式完成配置创建、流量录制及回放结果查询等操作。

图片

图3 流量录制回放工具运行架构

03 创新功能设计

1.数据分层策略

考虑到在实际使用过程中,应用会产生大量的录制流量,为实现快速查询检索,流量录制回放工具使用Elasticsearch存储在线流量数据和回放结果数据,在百万级数据体量下可实现毫秒级的快速查询响应。同时,使用MySql存储量级较小的管理类数据,使用Redis的队列功能实现批量流量的按序回放。

图片

图4 数据分层示意图

2.批次回放及结果查询功能

批次回放功能可将已录制的流量数据通过人工筛选的方式,添加为一个批次,支持按录制时的调用发生顺序对流量数据进行回放,模拟混合交易场景。适用于以下场景:

①案例的执行存在前后依赖关联,可将有关联的案例添加到一个批次中按序执行;

②执行了一个阶段的案例,包含多种混合交易的大量正向或反向案例场景,可将在一个时间段内执行的流量案例创建为一个批次,按序执行。

图片

图5 批次回放应用场景

批次执行提供批次结果统计以及批次执行通过率趋势展示等功能,帮助测试人员及时了解应用接口执行情况,为测试人员对用例的及时修改与执行提供参考。

图片

图6 批次执行结果统计

图片

图7 批次执行成功率趋势统计

3.报文对比检查点

在回放操作执行后、回放数据写入前,对录制时的交易响应报文与本次回放的交易响应报文进行一致性比对,从而判断本次回放操作是否成功。

回放结果将在一定程度上受到环境数据一致性以及接口中所带有的随机数、时间戳、自增数据等噪声字段的影响。为降低人工对比判断成本,提升回放过程的自动化水平,工具采用检查点的方式实现降噪过滤。检查点通常配置为对接口操作有决定性作用的字段,例如响应码等。若检查点字段一致,则忽略噪声字段的差异值,判定回放结果为成功。

图片

图8 报文对比检查点

4.报文头替换

在进行Web端应用回放的过程中,常常会遇到因用户session过期导致数据无法正常回放的问题。为确保已录制的流量可以持续回放使用,提供批次执行时的报文头替换功能,可对报文中的headers内节点的参数值进行实时更新。

5.案例生成导出

对于已经录制的流量案例,支持导出为collection V2规范的JSON文件,可供Postman、Postwoman等接口测试工具进行导入,从而实现案例的转换与复用,无需人工拼装报文体,简化用例编写过程。

6.生命周期管理功能

支持用户灵活配置流量数据的生命周期,可根据不同应用的不同环境定制清理维度。对于没有添加到批次中且不再执行的流量,将按照清理规则定期清理;对于已添加到批次中的流量,可支持永久存储、永久回放。

图片

图9 流量生命周期管理

04 应用成效

目前,流量录制回放工具正在中国农业银行研发中心天津研发部内逐步推广,已有20余个应用模块完成接入,其中Web端应用占67%、联机应用占13%、移动端应用占20%,录制接口总数量达406万,批次回放成功率经流程优化和案例调整后均可达到85%以上。

图片

表2 试点推广情况

总结:

流量录制回放平台提供了一种接口自动化测试的新方法,可以应用于版本验证、回归测试等多个场景。利用流量即案例的思想,将线上流量转化成接口测试用例,从而极大地减轻了在测试数据准备与脚本编写阶段的人力投入。此外,使用线上流量作为测试数据,与人工构造测试数据相比,能够更真实、更全面地覆盖业务场景,提升通过用例发现问题的能力。流量录制回放工具在测试领域的应用与推广,将对测试工作效能的提升、人力成本与自动化工具使用成本的降低,具有重要的意义。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

在这里插入图片描述

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1006744.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

01_kafka_环境搭建安装_topic管理

文章目录 安装jdk配置主机名Zookeeper 下载与安装Kafka 下载与安装测试集群版安装测试输出 安装jdk 略 配置主机名 hostnamectl set-hostname kafka_1 /etc/sysconfig/network HOSTNAMEkafka_1/etc/hosts ip kafka_1ping kafka_1 测试 Zookeeper 下载与安装 由于 集群…

科技云报道:青云科技为何成为IDC云转型的“神队友”?

科技云报道原创。 如今随着出海企业数量的不断增长,跨境业务也逐渐从蓝海变红海,从“价格战”到“智能战”。 一个明显的变化,来自企业对于出海效率的提升。《埃森哲2022中国企业国际化研究》指出,企业想要在出海浪潮中取胜&…

智能合约平台开发指南

随着区块链技术的普及,智能合约平台已经成为了这个领域的一个重要趋势。智能合约可以自动化执行合同条款,大大减少了执行和监督合同条款所需的成本和时间。那么,如何开发一个智能合约平台呢?以下是一些关键步骤。 一、选择合适…

赴日IT工作 日本的IT工作怎么样?

有许多朋友困惑去日本做IT需要什么条件?日本的IT工作怎么样?今天我来给大家简单分析一下。如果你想要去做赴日IT工作,需要国内正规本科或大专学历及以上才可以,然后就是你的技术和日语要过关,比较重要的是日语&#xf…

cleanmymac这个软件怎么样?好用吗

cleanmymac是我必装的mac端清理软件,界面简洁好看,完美适配mac系统,文件清理的速度、精度都比较优秀,还是比较不错的呢。 虽然说mac平时不需要大量维护进行清理但是有一些临时文件、软件残留、系统缓存、下载安装包还是会日积月累…

Java笔记:GC日志

1. 启用GC日志 -verbose:gc -XX:PrintGC -XX:PrintGCDetails -XX:PrintGCDateStamps -Xloggc:/opt/logs/gc.log在JDK 8中, -verbose:gc是 -XX:PrintGC一个别称,日志格式等价与: -XX:PrintGC。 不过在JDK 9中 -XX:PrintGC被标记deprecated…

香港渣打银行个人开户

渣打银行成立于1853年,全称为标准渣打银行,总部设在英国伦敦,渣打银行是香港最大的外商独资注册银行,是香港的三大发钞银行之一。 一、渣打银行开个人户条件? 在渣打银行开户所需要的条件和在其他银行开户所需要的条件…

若依注册的时候给个默认部门出现获取用户信息异常

想在注册的时候在数据库中查询一个部门给它一个默认部门,结果出现异常——【[handleServiceException,59] - 获取用户信息异常】 经分析代码,此方法有如下注解 以上注解会在mapper.xml中做如下操作 在做此操作之前会进入一个拦截器,根据token…

Win10 update version 22H2

下载 Windows 10 下载新版本win10 安装新版本win10 1703 更新到最新版本 22H2 2023.09.12 20:20 到 2023.09.12 23:44

信通传媒携各家虚商领袖,走进九牛汇

2023年9月8日,各家虚拟运营商领袖相约到厦,齐聚九牛汇共探通信行业革新之路! 厦门98投洽会,作为一个规模庞大的国际型盛会,吸引了全球各行各业的精英和企业家。由通信世界主办的《云通信服务工业企业发展论坛》也在这天…

谷粒商城篇章6 ---- P193-P210 ---- 异步线程池商品详情【分布式高级篇三】

目录 1. 异步 1.1 初始化线程的 4 种方式 1.1.1 继承 Thread 1.1.2 实现 Runnable 接口 1.1.3 实现 Callable 接口 FutureTask 1.1.4 线程池 1.1.5 以上 4 种方式总结: 1.2 线程池详解 1.2.1 初始化线程池的 2 种方式 1.2.1.1 使用 Executors 创建 1.2…

区块链实验室(24) - FISCO网络重构

若干次实验以后,FISCO网络中100个节点堆积了不少交易记录,消耗不少磁盘空间,见下图所示,100个节点累计消耗了10G空间。 观察每个节点的磁盘消耗,以node88为例,消耗了107MB,见下图所示。在该节点…

数据结构 图

目录 第六章 图6.1 图的基本概念知识回顾 6.2 图的储存结构(邻接矩阵法)1. 数组表示法(1) 有向图,无向图的邻接矩阵 2. 定义邻接矩阵的结构3. 定义图的结构4. 构造图G5. 特点 6.3 储存结构(邻接表表示法)1. 储存方式2.…

揭秘:Wasserstein GAN与梯度惩罚(WGAN-GP)

一、说明 什么是梯度惩罚?为什么它比渐变裁剪更好?如何实施梯度惩罚?在提起GAN对抗网络中,就不能避免Wasserstein距离的概念,本篇为系列读物,目的是揭示围绕Wasserstein-GAN建模的一些重要概念进行探讨。 图…

建筑模板桉木好还是松木好?

在建筑行业中,选择合适的建筑模板材料对于确保施工质量和效率至关重要。桉木和松木是常见的木质建筑模板材料,但在两者之间做出选择时,桉木往往是更好的选择。本文将探讨桉木建筑模板的优势,并为您提供选择建筑模板的指导。 桉木作…

从人工测绘到无人机航测:探索测绘技术的巨大变革

在测绘领域,随着科技的不断进步,测绘技术也在不断演进。人工测绘、传统航测以及如今的无人机航测,每一次进步都为我们提供了更加精确和高效的地图数据。本文将带你深入探索这些技术的演变及其应用。 一、人工测绘的时代 早期的地图制作依赖于…

公司的固定资产怎么管理的

固定资产的管理是公司运作的重要组成部分。它不仅影响到公司的运营效率,也直接影响到公司的财务状况。然而,如何有效地管理公司的固定资产,仍然是一个需要深入研究和解决的问题。  有效的固定资产管理需要建立一个全面、系统的管理体系。这…

【数据分享】2006-2021年我国省份级别的排水和污水处理相关指标(20多项指标)

《中国城市建设统计年鉴》中细致地统计了我国城市市政公用设施建设与发展情况,在之前的文章中,我们分享过基于2006-2021年《中国城市建设统计年鉴》整理的2006—2021年我国省份级别的市政设施水平相关指标、2006-2021年我国省份级别的各类建设用地面积数…

台积电的战略布局:“曲线”抢单 | 百能云芯

郭明錤最新的分析引发了广泛关注,他指出台积电采取了一系列重大战略投资举措,旨在争夺未来的半导体订单,尤其是来自苹果和英伟达的12纳米订单。这些战略举措包括认购英特尔手中的IMS Nanofabrication Global股权以及投资安谋(Arm&…

这4款优秀的国产开源低代码开发平台,值得开发者尝试!

这4款优秀的国产开源低代码开发平台有哪些? 以下是一些常用的开源团队协作平台和项目管理工具: 我们现在用的就是简道云这样的低代码平台,有免费版可以使用,灵活简单,比开源系统的安全性也更高 1、简道云 官网&…