基于线上流量回放的自动化测试方法和装置

known 发布于 2025-08-25 阅读(221)

摘 要:针对民航出行软件业务,提出一套全新的自动化业务回归测试方案。其中,最显著的创新在于噪声识别算法,该算法旨在处理和识别民航出行软件系统中的复杂接口与数据,从而提高diff功能在分析大量民航出行业务数据时的准确性。此外,方案还包括微服务接口的泛化调用以及它在DevOps流程中的集成,不仅简化了接口请求,而且首次将业务回归测试纳入DevOps上线流程,进一步实现了持续集成、部署和测试。更重要的是,方案还为民航出行软件系统中的Dubbo接口提供了录制和回放功能,并实现了请求的序列化和响应的反序列化。综合来看,该研究为民航出行业务软件开发和维护提供了一种高效、准确且集成度高的测试解决方案。

关键词:噪声识别算法;DevOps流程;自动化回归测试;流量录制;流量回放

中图分类号:TP311 文献标识码:A 文章编号:2096-4706(2024)17-0123-06

0 引 言

随着中国经济的持续增长和航空业的迅速扩张,民航出行已从奢侈品的地位逐渐转变为公众的日常出行方式。中航信移动科技作为一家在民航出行领域提供综合服务的公司,这意味着支持此类出行的软件系统必须能够高效处理大量数据,例如航班调度、乘客信息和票务数据。同时,确保系统的实时性、安全性和高度可用性也至关重要。业务回归测试不仅仅是为了确保软件质量,更是为了满足航空业务的综合性测试需求,确保系统在高压和复杂服务环境下的稳定性,为用户提供卓越的航空服务体验[1-2]。

1 本研究定位与价值

在航旅纵横应用程序领域中,自动化测试面临一系列独特的挑战,其中包括处理实时数据、第三方集成,以及地理位置和移动性测试等方面的问题。系统与实时航班信息、酒店服务等第三方的紧密集成,极大地增加了测试的复杂性,因此需要借助模拟服务和虚拟化技术来进行全面的测试。航旅纵横APP通常涉及用户的地理位置和移动性,因此在自动化测试过程中,必须确保覆盖各种地理位置和移动情况,以有效评估应用程序的性能和稳定性。这些挑战性的测试需求使得在民航出行软件领域开展自动化测试变得尤为重要。

近年来,已经有一些工具和方案被提出来,试图解决自动化回归测试中的难题。其中,两个显著的例子为:

1)jvm-sandbox-repeater。这是阿里巴巴的开源解决方案,能够支持多协议流量录制。尽管它可以覆盖多种通信协议并精确地录制线上流量,但由于缺乏差异性(diff)分析功能,该工具在处理复杂回归测试场景时可能会受到限制。

2)diffy。Twitter推出的开源项目,它主要聚焦于HTTP协议,特别强调其差异性分析和智能降噪能力。虽然它能够为开发者提供清晰的反馈,但由于未包括流量录制和回放功能,该工具在需要全方位测试的场景中可能显得不够完备。

考虑到上述工具的局限性,显然,目前的技术解决方案在满足民航出行软件的综合性测试需求方面仍有很大的提升空间。尤其是,在现代软件开发的持续集成和部署(DevOps)背景下,需要一种更全面、适应性强且可以轻松集成到DevOps流程中的回归测试方案。因此,本研究的核心目标和意义在于提供一种全面的、支持多协议的、结合了流量录制回放及高效的差异性分析功能的自动化业务回归测试解决方案。更重要的是,该解决方案不仅满足了基本的业务需求,还具有与DevOps流程无缝集成的能力,使其成为质量保障流程中的一个关键环节。

2 方案设计

在民航应用软件领域,本研究构建了一个基于jvm-sandbox-repeater的方案,专为中航信移动科技的民航出行软件线上流量的精准录制与回放而设计。当用户使用航旅纵横应用程序时,其请求首先经过gateway网关,随后导入到内部系统。为确保数据传输的高效性与稳定性,选择了kafka作为关键数据通道,专门用于捕获线上用户请求数据。后续,这些数据由flink进行精准实时处理,并最终被安全地存储到数据库中。这些精确录制的用户请求数据为研究方法奠定了坚实的数据基石。

鉴于业务回归测试的复杂性和关键性,本文设计一个全方位的策略框架,该框架综合涵盖配置管理、工具管理、流量录制、流量回放、差异分析以及质量卡点等多个环节。每个部分均旨在满足特定的测试需求,并确保整个测试流程的稳定性和高效性[3]。此外,为了提供用户友好的操作界面,还开发了一个Web平台,使用户能够实时查看流量录制信息、执行流量回放、编辑配置文件和管理工具等复杂操作。详细的方案架构图已在图1中清晰展示。这一研究背景下的技术改进旨在提升民航出行软件的质量和稳定性,以应对其不断扩大的用户群体和复杂的业务需求。本研究旨在为民航出行软件提供更全面、适应性强、与DevOps流程无缝集成的自动化业务回归测试解决方案。

2.1 配置管理

本研究实现了一套综合的配置管理功能,涉及应用配置、插件配置及配置推送三个核心领域。考虑到线上业务的多样性和接口的多变性,应用配置功能被设计以满足对线上流量的精细筛选和管理需求。为降低用户的使用门槛,提供了预设的应用配置模板,以支撑大多数的业务场景。同时,允许用户根据特定的工程和运行环境进行个性化调整。

插件配置环节主要针对http和Dubbo协议,为用户提供了精准定位至具体包、类、方法的能力,进一步实现流量的有针对性录制。尽管默认接口采样率设为万分之一,但实际操作中用户可根据需求进行调整,如常规设定为十分之一,对于流量较小的接口,则可选择全流量录制。

在配置更新机制方面,为确保配置始终为最新状态,采纳了两种策略:主动推送配置文件至各节点,以及在repeater重启时自动拉取中心的最新配置。此两种策略保障了系统配置的实时性与韧性。

2.2 工具管理与监控

本研究依赖于开源工具jvm-sandbox-repeater进行线上流量录制,该工具采用字节码增强技术和事件分发机制。其在目标服务器上的安装是录制与回放的基础,结合值机选座服务的业务场景,以下是对工具依赖和集中管理平台在实际应用中的细化描述,原理如图2所示。

集中管理平台控制jvm-sandbox-repeater的所有操作,包括安装、启动、停止。此平台也实现了工具的生命周期管理,如版本控制、配置更新及与其他组件的集成。心跳检测机制对工具健康状况进行评估,捕捉异常并实时触发预警。平台还集成了日志记录和事件追踪,确保对与工具相关的事件进行详细记录。

总之,此自研平台为jvm-sandbox-repeater提供了全面的管理、监控与优化,确保其稳定高效运行。

2.3 流量录制

流量录制在确保值机业务连续性、透明性与韧性中扮演关键角色。面对多元化民航出行线上服务环境,精确鉴别真实用户流量与回放流量变得尤为重要[4]。

我们以民航出行的值机选座的应用场景为例,采用了一种基于traceID生成策略的方法,为每个数据流分配独特标识。回放流量维持原始traceID不变。新流量接入系统时,通过对比traceID与已录制流量的数据库,未记录的即为真实用户流量。

为了处理大规模的民航出行软件线上值机选座的流量,选择kafka进行流量捕获。kafka作为高性能的分布式消息系统,能实时处理大量数据。为深入处理和解析数据,引入高吞吐量的flink流处理框架。数据经过flink处理后,被持久化并存储到数据库,确保值机数据稳定性和完整性,如图3所示。

综合应用traceID生成策略、kafka及flink,构建健壮、高效的流量录制系统,确保值机选座业务流的连贯性和稳健性[5]。我们成功应用这一流程来录制和分析值机业务的线上流量,确保了系统在高负载和复杂服务环境下的稳定性,同时也为后续的流量回放和差异性分析提供了可靠的数据基础。

2.4 流量回放与差异分析

流量回放是本研究的核心功能,允许用户模拟真实环境下的流量,以验证系统的韧性和性能。此功能不止局限于单一接口的回放,还能执行接口的批量回放。对于复杂的业务场景,考虑到可能存在的子调用或依赖,本研究支持在回放过程中进行Mock子调用,确保回放的流量与真实流量的相似性。为了满足不同的测试场景和压力测试的需求,还可以通过设置放大倍数来增加回放流量,从而模拟更高的系统负载[6-7]。

为了实现微服务接口的泛化调用,通过采用JSON作为统一的通信协议和数据格式,定义通用的数据结构和字段,以确保不同的微服务能够理解和处理相同的请求和响应格式。JSON的灵活性和普遍性为微服务之间的通信提供了一种标准化的方式,确保了不同微服务之间的交互具有一致性。这种规范化提高了系统的可维护性和可扩展性,从而简化了整个系统的交互过程。

在实际应用中于值机选座服务为例。在回放流量时,我们能够模拟用户在真实环境中进行值机选座的场景,验证系统在高负载和复杂业务条件下的性能表现。通过支持Mock子调用,我们可以处理值机选座服务可能涉及的依赖关系,确保回放的流量更贴合实际情况。此外,通过设置放大倍数,我们可以模拟不同规模的用户并行值机选座,从而进行系统在不同负载下的性能测试。

此外,除了流量的回放,本研究还提供了流量的差异化对比(diff)功能。这项功能可帮助用户快速地比较回放流量和原始流量之间的差异,从而更容易地定位潜在的问题或异常。差异化对比功能在流量回放过程中发挥关键作用。整个流程从捕获真实流量开始,经过流量回放,最终到对比差异的步骤,为用户提供了清晰而详细的流程图如图4所示,这使得用户能够更好地理解和利用这些功能。

在捕获真实流量阶段,系统准确记录了用户在值机选座服务中的各项操作,包括座位选择、航班信息查询等。这形成了原始流量,为后续的流量回放提供了基础数据。在流量回放阶段,系统模拟用户对值机选座服务的再次操作,并生成回放流量。通过在这两个阶段的精准记录,我们确保了回放流量与真实流量的一致性。

差异化对比功能通过比较原始流量和回放流量的关键指标,如响应时间、错误率等,快速揭示了系统在不同阶段的性能差异。这使得用户能够更迅速、精准地定位潜在问题,为系统的优化和改进提供了有力支持。

自动化回归测试致力于确保在软件的迭代中,新的更改没有破坏现有的功能。该过程涉及将不同迭代中的相同接口响应数据进行对比。当响应存在差异时,测试用例可能被视为失败。但这种方法在处理动态内容时可能会出现问题,如时间戳、随机生成的数字等,这些都可能导致不必要的“失败”[8-9]。

为解决此问题,本研究引入了流量预处理策略。这涉及对捕获的流量数据进行净化,去除那些可能引起不必要差异的动态数据,如时间戳或任何随机生成的内容。此外,预处理还可以包括去除冗余信息,从而进一步降低噪声。

为了更好地适应值机选座业务的特定情境,我们将噪声识别算法引入该业务流程,以提高自动化回归测试的精度和可靠性。我们提出的噪声识别算法如图5所示。

在值机选座服务的自动化回归测试中,我们使用了噪声识别算法来判断响应数据中的差异是否真正表示一个问题。具体而言,我们对特定接口进行两次相同的请求,一次在生产环境中,一次在灰度环境中。通过比较这两次请求的响应,我们记录了两者之间的不同点数量,分别表示为c1和c2。

首先,我们在生产环境中模拟用户进行值机选座操作,记录响应的不同点数量为c1。接着,同样的请求在灰度环境中执行,对比两次响应的不同,得到不同点数量c2。

这种对比提供了一个基准,帮助我们确定响应中的差异是否真的有意义。如果c2超过c1,说明待上线的值机选座接口处理方式与原接口存在差异,可能表示一个真正的问题。反之,如果c2小于或等于c1,这意味着观察到的差异可以被视为背景噪声,测试应被视为通过。

通过将噪声识别算法融入值机选座业务,我们不仅能够保证自动化回归测试的准确性,还能更有效地识别和处理那些可能对测试结果产生干扰的动态数据。这一流程不仅提高了测试的鲁棒性,也保证了值机选座服务在不同环境下的一致性和可靠性。而且还可以更有效地识别和处理那些可能对测试结果产生干扰的动态数据[10-12]。

2.5 质量卡点

本研究在值机选座应用场景中成功将质量卡点集成到DevOps流程中,将其视为上线质量的核心关卡。当工程在DevOps平台上提交值机选座服务的上线请求,并成功在灰度环境中部署后,研发效能系统会自动启动回归测试任务。自动化回归测试有助于在应用程序中检测潜在的问题和缺陷,确保新的代码更改不会破坏现有功能。为实时展示测试进度,我们采用WebSocket技术[13-14]。这使得团队能够即时了解值机选座服务的回归测试执行情况,以及是否存在可能影响上线质量的问题。团队成员可以通过WebSocket技术实时监测测试进度,确保测试流程的高效执行。

测试任务完成后,如果失败的用例数超过预定的阈值,系统会阻止工程继续其他操作。此外,系统还会自动产生详尽的测试报告,其中包括总用例数、成功与失败的用例数,以及覆盖的值机选座接口数量等关键统计数据。这个报告为团队提供了对值机选座服务上线质量的全面了解。通过点击特定用例,团队成员可以查看详细的差异结果,帮助更深入地了解问题并进行定位[15-17]。整体流程如图6所示。

此流程确保在上线前能对代码的质量进行全面评估,大大降低因缺陷导致的生产风险。

3 应用实例

航旅纵横的配置管理页面是自动化值机选座业务回归测试的启动点,为测试人员提供了强大的工具,以定制化配置值机选座服务的运行环境。测试人员能够详细定义应用的各个方面,包括应用名称、运行环境和服务配置信息。这种细致的配置不仅为测试提供了高度灵活性,还支持多环境的隔离,确保测试过程中的可控性。配置管理页面的设计追求用户友好性,使得测试人员能够轻松调整配置,以适应不同的测试场景和需求,如图7所示。

在流量列表页面,系统以清晰、结构化的方式展示了通过在线录制捕获的关键值机选座服务流量数据。用户可以根据流量的ID、应用名、流量入口、TraceID、环境和机器等信息进行筛选和查看。关键在于,用户能够在流量列表中配置录制条件,系统在录制过程中对请求、响应、子调用和子响应等关键信息进行精准的采样和过滤。这种零侵入性的录制方式确保了录制信息的准确性和可靠性,为后续的回放提供了高质量的数据,如图8所示。

回放列表页面在航旅纵横自动化业务回归测试框架中扮演着关键的角色,是整个测试流程的核心。通过该页面,系统能够还原录制的数据,并按照录制记录执行相应的回放任务。用户可以清晰地查看回放结果,通过repeatId和录制的TraceID进行对比,以获取详尽的回放信息。在这一过程中,回放的Mock动作执行确保了回放请求的处理流程能够被准确地跟踪和记录,从而提供了全面的测试覆盖。

整个流程的实时通知机制采用WebSocket技术,成功集成到DevOps流程中。这意味着团队成员可以实时了解测试进度,确保测试流程的高效执行。这种集成为上线前全面评估代码质量和功能提供了强有力的保障。通过回放列表页面,团队能够直观地检视回放结果,快速定位潜在问题,并及时采取措施进行修复和优化。

结合上述的噪声识别算法,回放列表页面不仅提供了回放结果的直观展示,还能通过噪声识别算法帮助用户更精确地判断回放中的差异是否真正表示一个问题。通过在值机选座服务的自动化回归测试中引入噪声识别算法,系统可以对比生产环境和灰度环境中相同接口的响应数据,通过差异点的数量判断是否存在真正的问题。这一算法有效提高了测试的准确性和可靠性,确保了测试结果的真实性,为系统的优化和改进提供了有力支持,回放结果如图9所示。

这一航旅纵横值机选座业务的应用实例展示了自动化业务回归测试框架在复杂业务场景中的可靠性、可用性和高度定制化的特性。从测试的角度来看,该框架不仅能够覆盖多个测试阶段,还能够提供详尽的测试结果,使团队能够充分了解系统在不同环境下的性能和稳定性。这对于确保软件在持续集成和部署环境中的质量至关重要,为航旅纵横的值机选座业务提供了高效而可靠的测试保障[17]。

4 结 论

经过对本研究进行深入分析,我们得出以下结论:

1)微服务接口的泛化调用优势。本研究提供的微服务接口的泛化调用方式显著简化了接口请求,使得接口调用更加高效和灵活。这种方法解决了传统接口请求的复杂性,为复杂的微服务环境下的接口测试提供了新的解决方案。在值机选座应用场景中,这一泛化调用方式为值机选座服务的接口测试提供了新的途径,使得测试过程更加顺畅和可维护。

2)噪声识别算法的突破性。传统的diff功能在处理动态信息时常常遭遇困难,而本研究提出的噪声识别算法能够显著提高diff的准确性,减少误报和漏报,从而提高自动化测试的效率和准确性。在值机选座的实际业务中,噪声识别算法的应用有助于更精准地判断接口响应中的差异,提高了测试结果的可信度。

3)DevOps中业务回归测试的创新。本研究首次将业务回归测试集成至DevOps上线流程中,彰显了持续集成、持续部署、持续测试的理念。这不仅提高了整个上线流程的效率,更重要的是,确保了上线工程的高质量和稳定性,降低了系统出错的风险。在值机选座服务的场景中,这种创新性的集成方式为值机选座的上线提供了全面而可靠的质量控制

4)完整的自动化业务回归测试解决方案。与现有技术相比,本研究同时融合了流量录制回放功能与diff功能,成为一套全面的解决方案。这为业务回归测试带来了前所未有的便捷和完整性。在值机选座服务的应用场景下,这一综合解决方案为值机选座的自动化业务回归测试提供了全面支持,确保了服务的稳健性和质量。

5)Dubbo接口的特色支持。采用Dubbo泛化调用方式,本方案成功支持了Dubbo接口的录制回放功能,实现了请求序列化及响应反序列化的功能,为Dubbo接口测试提供了新的可能性。在值机选座服务的实际应用中,Dubbo接口的特色支持确保了值机选座服务在复杂的微服务架构下的稳定性和可靠性。

总体来说,本研究针对中航信移动科技的航旅纵横APP软件开发过程中的关键问题提供了创新且实用的解决方案。通过集成至DevOps流程,它更进一步推动了持续集成与持续交付的理念,为现代软件开发带来了更高效、高质量的保障。在值机选座服务的具体应用中,这些解决方案为航空业务的顺利上线和稳定运行提供了有力的支持。

参考文献:

[1] 少民.软件测试面临的挑战与发展趋势 [J].测控技术,2020,39(1):1-4.

[2] 谭凤,宁华,唐滔,等.软件测试技术:第2版 [M].北京:清华大学出版社,2020.

[3] 杜庆峰,冯国尧,钱浩然.回归测试路径优先级模型 [J].同济大学学报:自然科学版,2016,44(12):1943-1948.

[4] 杨玉环,圣文顺,刘进芬.基于在线流量的自动回归测试平台 [J].电子设计工程,2022,30(14):128-132.

[5] 郭马涛.基于微服务的流量回放自动化测试框架设计与实现 [D].武汉:华中科技大学,2021.

[6] 孟燕.自动化测试技术中Mock框架的建设与应用 [J].武汉理工大学学报:信息与管理工程版,2017(3):364-367.

[7] 潘诗瑶,黄建明.Web应用系统中的MOCK测试技术 [J].软件,2016,37(12):214-218.

[8] 王津,左春,张正.基于样本程序的自动化测试工具 [J].计算机工程,2020,46(3):198-205+213.

[9] SAHIN O,AKAY B. A Discrete Dynamic Artificial Bee Colony with Hyper-Scout for RESTful Web Service API Test Suite Generation [J/OL].Applied Soft Computing,2021,104(4):107246[2023-12-10].https://doi.org/10.1016/j.asoc.2021.107246.

[10] 张策,吕为工,邱忠银,等.不完美排错下测试覆盖相关的软件可靠性模型 [J].湖南大学学报:自然科学版,2021,48(4):26-35.

[11] 孙立哲.轻量级接口自动化测试框架设计与实践 [J].计算机应用与软件,2020,37(1):27-30+36.

[12] 丁建立,陈盼,马勇.基于泛化FPE加密的民航旅客信息动态脱敏方法研究 [J].信息网络安全,2021,21(2):45-52.

[13] 蒋勇.基于微服务架构的基础设施设计 [J].软件,2016,37(5):93-97.

[14] 郑彬彬.基于微服务的OJ系统重构与优化 [D].上海:东华大学,2017.

[15] 向彬彬,马明星,童茂林,等.基于微服务架构的分布式测距系统的研究与设计 [J].计算机应用与软件,2018,35(5):89-94.

[16] 吴文峻,于鑫,蒲彦均,等.微服务时代的复杂服务软件开发 [J].计算机科学,2020,47(12):11-17.

[17] 戴启铭,毛润丰,黄璜,等.DevSecOps:DevOps下实现持续安全的实践探索 [J].软件学报,2021,32(10):3014-3035.

作者简介:高栋(1982—),男,汉族,浙江绍兴人,高级工程师,硕士研究生,研究方向:系统工程、质量保障;佟业新(1980—),男,汉族,山东新泰人,高级工程师,硕士,研究方向:分布式计算、质量保障;张晓明(1980—),男,汉族,河北衡水人,工程师,硕士研究生,研究方向:研发效能、质量保障;管宏礼(1996—),男,汉族,山东德州人,初级工程师,硕士研究生,研究方向:质量保障;张梦云(1994—),女,汉族,北京人,工程师,本科,研究方向:研发效能、质量保障。

DOI:10.19850/j.cnki.2096-4706.2024.17.024

收稿日期:2024-01-16

Automated Testing Method and Device Based on Online Traffic Playback

GAO Dong, TONG Yexin, ZHANG Xiaoming, GUAN Hongli, ZHANG Mengyun

m4oc3IVLoB1Aj/vuEjHjRw==

(Travelsky Mobile Technology Limited, Beijing 100041, China)

Abstract: In the business context of civil aviation travel software, this paper proposes a novel automated business regression testing solution. The most notable innovation lies in the noise recognition algorithm, and it is designed to handle and identify intricate interfaces and data within the civil aviation travel software system, so as to improve the accuracy of the diff function. In addition, the solution also includes generalized calling of microservice interfaces and their integration in the DevOps process, which not only simplifies interface requests, but also for the first time incorporates business regression testing into the DevOps deployment process, further achieving continuous integration, deployment, and testing. More importantly, the solution also provides recording and playback functions for the Dubbo interface in the civil aviation travel software system, and implements request serialization and response deserialization. To sum up, this study provides an efficient, accurate, and highly integrated testing solution for the development and maintenance of civil aviation travel business software.

Keywords: noise identification algorithm; DevOps process; automated regression testing; traffic recording; traffic replay

标签:  测试 

免责声明

本文来自网络,不代表本站立场。如有不愿意被转载的情况,请联系我们。

iidomino cuppor