首页 > 其他分享 >一篇文章带你了解如何测试消息队列

一篇文章带你了解如何测试消息队列

时间:2024-11-08 11:29:54浏览次数:1  
标签:场景 一篇 队列 系统 处理 消息 测试

是什么

  探讨消息队列的测试,那首先就要了解消息队列是什么。
  消息队列是一种应用程序之间传递消息的异步通信机制。这里传递的消息指的是需要传输的数据,可以是一些文本、字符串或对象等信息。
简述一下消息队列工作模式:

  1. 消息的生产者将数据存放到消息队列中,消费者进行接收处理。生产者和消费者分开,彼此不受影响
  2. 消息被储存在消息队列中,消息队列把数据进行持久化直到它们已经被完全处理,确保消息传递的可靠性和顺序性
  3. 消息队列可以有多个消费者,提高系统处理能力,支持快速水平扩展

用哪里

  根据消息队列的特性,消息队列有以下几种最常用的应用场景。

异步处理

  非实时的业务场景,可以采用异步处理来提高系统的吞吐量和响应时间。

系统解耦  

  通过消息队列,可以将不同系统或模块之间的依赖关系解除,使得它们可以独立地进行开发和部署。
  消息队列能够隔离故障,当某个系统发生故障时,不会影响到其他服务,提高了系统的整体稳定性。

限流削峰  

  在大促、秒杀等活动中,瞬时流量可能会非常大,业务系统直接处理,就会压力太大就会导致大量系统异常,业务失败甚至系统崩溃。通过将请求信息保存到消息队列中,将压力转移到MQ中,并由后端服务异步处理这些存储在消息队列中的消息,可以有效地缓解系统压力。

怎么测

测试前:技术方案评审

  QA在参与RD的技术方案评审中,就需要考虑以下三点:要不要用;用的地方合不合适;用哪款

要不要用消息队列

  在系统设计中,需不需要使用消息队列,可以参考上文提到的消息队列最常用的应用场景中的一些场景。比如系统需要处理大量并发的请求,并且请求处理时间比较长,就可以使用消息队列进行一步处理。又或者系统多个模块之间需要通信,但是又不希望相互之间之间调用接口或者方法,就可以使用消息队列进行解耦。

  当然,使用消息队列也会有一些挑战。
  首先就是数据一致性的问题,数据一致性也是测试的一项重点。消费的重复消费、消息丢失、分布式系统中消息事务性和数据库操作一致性都会带来数据一致性的挑战。其次系统中使用消息队列是也会增加系统维护复杂性,同时也会增加一定的成本支出。
在实际的技术设计中,需要具体根据实际的业务场景判断是否使用消息队列。

消息队列应用的场景是否合理 

  在技术评审中,QA要根据实际的业务场景,思考设计方案中的消息队列中使用场景是否合理。

使用的消息队列产品是否合理

  消息队列也有不同的产品,我们在使用消息队列时,也需要根据我们的业务场景选择合适的场景。常用的消息队列产品有三类,分别是基于内存的消息队列、基于磁盘的消息队列、分布式消息队列。

Kafka适合大规模数据处理,RabbitMq适合轻量级应用,等等。具体可以根据自己的业务特性来选择。

测试中:业务中测试

是否能传达

消息发送

  • 不同类型(如文本、字符串、二进制数据等)的消息能否成功发送到队列
  • 消息属性的是否生效,比如过期时间
  • 消息发送频率控制,验证系统能否处理高频率的消息发送

消息接收

  • 消息队列的连接测试
  • 消息接收的确认
  • 消息接收的顺序性

是否能正常传达

消息的重发机制

  • 消息重发机制:故意使消费者接收消息失败,检查消息队列是否能够自动重发消息
  • 参数设置是否有效:测试重发次数、重发间隔等参数的设置是否有效
  • 幂等性处理,为防止消息重复处理,系统需实现幂等性,确保消息多次重发不会影响业务逻辑。

消息的防丢失验证

  • 消息队列应确保消息在系统重启后能够从存储中恢复,保证消息不丢失
  • 摸拟故障场景,验证消息队列在系统故障后能否正确恢复消息状态,保证数据一致性

是否能高性能传达

吞吐量

  • 消息处理速率:衡量消息队列在单位时间内能处理的消息数量,反映系统处理消息的能力。
  • 并发用户:测试在不同并发用户数下,消息队列的吞吐量表现,确保系统稳定运行。
  • 系统资源占用:监控在高吞吐量下系统资源(如 CPU、内存)的使用情况,评估资源效率。

延迟处理

  • 在不同压力下,消息从发送到被处理的平均时间,确保有消息队列的链路能满足整个系统的需要
  • 网络传输延迟,消息在不同网络条件下,测试从发送端到接收端的延迟时间,从而评估网络对消息队列的影响
  • 在高负载的压力下,测试消息队列的延迟,确保高压力下系统的稳定性

可扩展性测试

  • 水平扩展
    •   在高负载情况下,增加消息队列的节点数量,测试系统的性能和吞吐量能否线性提升
  • 垂直扩展
    •   提升单个节点的硬件资源,观察消息队列的性能变化

是否能安全传达

  • 数据加密
    •   选择合适的加密算法,既能确保数据传输和存储的安全性,又能不过多消耗资源
    •   消息防篡改,验证消息在传输和存储过程中是否能够防止被篡改
  • 访问控制
    •   权限和角色控制,被授权的用户和角色才能访问消息队列资源

测试后:监控报警配置

  在上线之前,为确保系统稳定运行,需与研发(RD)及产品团队紧密协作,统一报警配置,并制定详尽的紧急情况应对标准操作流程(SOP)。此过程中,质量保障(QA)团队将负责核对监控报警系统,确保已配置与消息队列相关的监控项及报警机制,并验证其有效性。监控内容应全面覆盖,包括但不限于消息队列的每秒查询率(QPS)、服务器的性能指标等关键信息。针对这些监控指标,QA团队和RD团队协作需合理设定阈值,并配置相应的报警规则,以便及时发现并响应潜在问题。

 

标签:场景,一篇,队列,系统,处理,消息,测试
From: https://www.cnblogs.com/starstarstar/p/18534765

相关文章

  • C代码单元测试框架
    如何在Windows本地集成unity和CMocka单元测试框架? 一、Cmocka源码下载编译官方网站 https://cmocka.org/ 下载源码。CMocka使用CMake来管理构建过程,它能自动生成适用于MinGW的构建文件(MinGWMakefiles)。如果你想要在Windows上使用MinGW编译CMocka则......
  • 分布式事物传递 NetMQ测试
    usingNetMQ;usingNetMQ.Sockets;usingSystem;usingSystem.Threading;namespace消息传递库_NetMQ服务端{internalclassProgram{publicstaticvoidMain(){using(varpublisher=newPublisherSocket()){......
  • 符合ISO26262的零部件级的软件测试解决方案:目前功能安全零部件测试的困难|软件单元、
    引言在功能安全的开发、测试过程中概念阶段的活动一般都是由主机厂负责,而从系统开发到单元实现则是由供应商负责,对于供应商所做的一系列测试通常称为零部件级测试。根据ISO26262功能安全标准的划分,功能安全在零部件阶段的测试包括:软件单元测试、软件集成测试、硬件集成测......
  • 福禄克DTX,DSX系列内置标准以及生成的测试报告如何解读?
    今日,接到一些朋友的询问?虽然使用了很长一段时间的FLUKEDSX-5000或者DSX-8000,但是对于测试标准和测试生成的报告一知半解,借此咱们一块屡屡清楚。1,经常有的朋友拿到设备后,第一时间就问,咱们福禄克内置的标准的多少?我线的参数(被测的铜缆)达到多少db,才能算过了测试?这些通过一个表......
  • 队列详解
    目录队列队列的概念及结构队列的实现代码队列功能的实现队列的尾插voidQueuePush(Queue*pq,QDataTypex);结构体封装指针typedefstructQueue总结代码队列的头删voidQueuePop(Queue*pq)代码队列的初始化voidQueueInit(Queue*pq)代码队列的销毁voidQueueDest......
  • Linux命令行压力测试工具:基准测试与性能优化
    文章目录Linux命令行压力测试工具:基准测试与性能优化Linux安装模拟CPU压力基本用法:高负载模拟:常见选项解析:模拟CPU满负荷模拟I/O瓶颈随机读测试:顺序写测试:初始化与清理操作:模拟大流量网络压力客户端测试命令:服务端命令:模拟端口禁用与防火墙配置查看当前规则:禁用出口端......
  • 基于Zynq FPGA对雷龙SD NAND的测试
    一、SDNAND特征1.1SD卡简介雷龙的SDNAND有很多型号,在测试中使用的是CSNP4GCR01-AMW与CSNP32GCR01-AOW。芯片是基于NANDFLASH和SD控制器实现的SD卡。具有强大的坏块管理和纠错功能,并且在意外掉电的情况下同样能保证数据的安全。其特点如下:接口支持SD2......
  • C# 队列的一些并发模拟
    usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Threading;usingSystem.Collections.Concurrent;namespace......
  • 【Simulink仿真】新能源电动汽车VCU,BMS hil硬件在环仿真测试电动汽车模型
    摘要本文基于Simulink平台构建了新能源电动汽车控制器硬件在环(Hardware-in-the-Loop,HIL)仿真测试系统。该系统包含整车控制器(VehicleControlUnit,VCU)与电池管理系统(BatteryManagementSystem,BMS)的仿真模型。通过搭建仿真环境,对VCU和BMS进行实时交互测试,验证控制策略......
  • 一篇帮你搞懂ECharts图表构建
    目录一、引入 主要功能和应用场景:完全版本:二、一个实例 1.大框架2.设置大标题3.设置提示标签4.设置每个柱形数据的背景颜色5.设置柱形数据背景边框6.设置图例小角标7.拖拽手柄8.设置X轴9.设置Y轴10.设置数据11.设置边框完整版本:一、引入 ‌ECharts‌是......