CN111984523A - 消息处理任务测试方法、装置、系统、设备及介质 - Google Patents

消息处理任务测试方法、装置、系统、设备及介质 Download PDF

Info

Publication number
CN111984523A
CN111984523A CN201910437115.XA CN201910437115A CN111984523A CN 111984523 A CN111984523 A CN 111984523A CN 201910437115 A CN201910437115 A CN 201910437115A CN 111984523 A CN111984523 A CN 111984523A
Authority
CN
China
Prior art keywords
message
test
message processing
exception
task
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910437115.XA
Other languages
English (en)
Other versions
CN111984523B (zh
Inventor
罗彩云
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910437115.XA priority Critical patent/CN111984523B/zh
Publication of CN111984523A publication Critical patent/CN111984523A/zh
Application granted granted Critical
Publication of CN111984523B publication Critical patent/CN111984523B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了消息处理任务测试方法、装置、系统、设备及介质,所述方法包括封装异常注入原子操作;获取消息处理任务运行环境;所述消息处理任务运行环境包括为每个消息生产者和每个消息消费者均设置的消息队列,以及用于与各个消息队列通信的异步消息处理器;在所述消息处理任务运行环境中执行包括至少一个雪崩测试用例的测试任务,每个所述雪崩测试用例中均通过调用至少一个异常注入原子操作产生消息处理异常;所述测试任务中参与进行消息处理的消息数量大于预设阈值;获取所述测试任务对应的测试结果。本发明操作简单、结果精确,可以极大提升异步消息系统雪崩测试场景构造的效率。

Description

消息处理任务测试方法、装置、系统、设备及介质
技术领域
本发明涉及测试领域,尤其涉及消息处理任务测试方法、装置、系统、设备及介质。
背景技术
复杂系统通常可以用于运行大数据量的消息处理任务,消息处理任务的数据量对复杂系统而言也有可能产生压力,对其鲁棒性是一个严峻考验,比如,若某个复杂系统的鲁棒性不足,则其经常会出现某个基础服务不可用造成整个系统不可用的情况,这种现象被称为服务雪崩效应,要形成大规模故障或总体失效,只有一个模式,那就是系统一开始出现了局部的、小规模的故障,然而由于种种原因,故障影响的范围越来越大,最终导致了全局性的后果,这就是雪崩效应产生的原因。
雪崩效应带来的伤害是巨大的,因此,有必要对复杂系统进行雪崩测试,但是目前尚未有成熟的基于复杂系统全流程的雪崩测试场景模拟工具。测试时主要通过手动的方式构造各种异常场景,使得某个模块或者某个链路不可用,观察是否在大数据量压力下出现雪崩,以此来达到测试的目的。然而,现有技术对于复杂系统的全流程雪崩测试,异常场景多,操作复杂,耗时,效率低下,并且难以满足对于用于运行异步消息处理任务的系统的测试。
发明内容
为了解决现有技术中对消息处理任务难以进行雪崩测试以及其它自动化测试的技术问题,本发明实施例提供消息处理任务测试方法、装置、系统、设备及介质。
一方面,本发明提供一种消息处理任务测试方法,包括:
封装异常注入原子操作,所述异常注入原子操作为通过注入消息处理流程来引发消息处理异常的最小完整操作;
获取消息处理任务运行环境;所述消息处理任务运行环境包括为每个消息生产者和每个消息消费者均设置的消息队列,以及用于与各个消息队列通信的异步消息处理器,所述异步消息处理器用于实现消息生产者与消息消费者之间的消息交互;
在所述消息处理任务运行环境中执行包括至少一个雪崩测试用例的测试任务,每个所述雪崩测试用例中均通过调用至少一个异常注入原子操作产生消息处理异常;所述测试任务中参与进行消息处理的消息数量大于预设阈值;
获取所述测试任务对应的测试结果。
另一方面,本发明提供一种消息处理任务测试装置,所述装置包括:
异常注入原子操作封装模块,用于封装异常注入原子操作,所述异常注入原子操作为通过注入消息处理流程来引发消息处理异常的最小完整操作;
消息处理任务运行环境获取模块,用于获取消息处理任务运行环境;所述消息处理任务运行环境包括为每个消息生产者和每个消息消费者均设置的消息队列,以及用于与各个消息队列通信的异步消息处理器,所述异步消息处理器用于实现消息生产者与消息消费者之间的消息交互;
测试任务执行模块,用于在所述消息处理任务运行环境中执行包括至少一个雪崩测试用例的测试任务,每个所述雪崩测试用例中均通过调用至少一个异常注入原子操作产生消息处理异常;所述测试任务中参与进行消息处理的消息数量大于预设阈值;
测试结果获取模块,用于获取所述测试任务对应的测试结果。
另一方面,本发明提供一种消息处理任务测试系统,所述一种消息处理任务测试系统用于执行上述消息处理任务测试方法,所述系统还包括:
公共管理模块,用于配置测试环境和相关运行参数;
测试用例管理模块,用于编写以及管理测试用例;
测试任务管理模块,用于生成并管理测试任务,以及按照测试任务对测试用例进行单个或多个执行;
日志管理模块,用于收集以及保存测试过程产生的日志;
原子操作管理模块,用于保存封装的各种原子性的操作脚本。
另一方面,本发明提供一种消息处理任务测试方法,所述一种消息处理任务测试方法使用上述消息处理任务测试系统,所述方法包括:
从公共管理模块中读取配置,以获取到消息处理任务的运行环境;
从原子操作管理模块中调用清理环境的脚本,将消息处理任务的消息队列、异步消息处理器以及测试环境中的日志和历史数据清除;
执行测试用例;所述测试用例包括雪崩测试用例;每个所述雪崩测试用例中均通过调用至少一个异常注入原子操作产生消息处理异常;
若测试用例执行完毕或被终止,则处理测试结果。
另一方面,本发明提供了一种设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现一种消息处理任务测试方法。
另一方面,本发明提供了一种计算机存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行一种消息处理任务测试方法。
本发明提供了消息处理任务测试方法、装置、系统、设备及介质,使用在测试用例中调用异常注入原子操作的方式使得测试用例的执行过程中可以调用异常注入原子操作为测试对象注入某种异常,从而达到测试目的,自动化验证异步消息系统全链路是否发生雪崩效应。操作简单、结果精确,可以极大提升异步消息系统雪崩测试场景构造的效率。显著提升消息测试的自动化程度,其将各种测试动作封装为原子操作的方式以便于后期的维护和改进。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本发明提供的一种实施环境的示意图;
图2是本发明提供的一种消息处理任务测试方法流程图;
图3是本发明提供的雪崩测试逻辑示意图;
图4是本发明提供的另一雪崩测试逻辑示意图;
图5是本发明提供的一种用于执行消息任务测试方法的测试系统框架图;
图6是本发明提供的在消息处理任务测试方法流程图;
图7是本发明提供的消息处理任务测试方法的逻辑示意图;
图8是本发明提供的雪崩测试结果示意图;
图9是本发明提供的一种消息处理任务测试装置框图;
图10是本发明提供的一种用于实现本发明实施例所提供的方法的设备的硬件结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了使本发明实施例公开的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明实施例进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本发明实施例,并不用于限定本发明实施例。
图1是本发明实施例提供的一种实施环境的示意图,该实施环境包括:业务服务器01,测试服务器03,以及管理客户端05。
所述业务服务器01和测试服务器03均可以包括一个独立运行的服务器,或者分布式服务器,或者由多个服务器组成的服务器集群。客户端05与业务服务器01以及测试服务器03均可以基于浏览器/服务器模式(Browser/Server,B/S)或客户端/服务器模式(Client/Server,C/S)通信。
所述管理客户端05可以包括:智能手机、平板电脑、笔记本电脑、数字助理、智能可穿戴设备、车载终端等类型的实体设备,也可以包括运行于实体设备中的软体,例如应用程序等。
业务服务器01用于运行支持大数据量消息处理的消息处理任务,具体而言,所述消息处理任务可以是异步消息处理任务,所述测试服务器03用于对所述业务服务器进行测试,并有条件或无条件的将所述测试结果传输至所述管理客户端05。
本发明实施例公开一种消息处理任务测试方法,所述方法应用于所述实施环境中的测试服务器,如图2所示,所述方法包括:
S101.封装异常注入原子操作,所述异常注入原子操作为通过注入消息处理流程来引发消息处理异常的最小完整操作。
具体地,可以由测试人员根据测试经验和实际需求构建异常注入原子操作。在异步消息处理任务中,对于异步消息的处理不及时或者处理失败是诱发消息处理任务所在的复杂系统发生雪崩的主因之一。本发明实施例对各种导致消息处理失败或者消息处理迟滞的情况进行分析,并根据分析结果得到有可能导致消息处理失败或者消息处理迟滞的目标操作,对各个目标操作进行解构,将其分立为多个最小完整操作,即可得到步骤S101中的异常注入原子操作。
比如,在消息生产者需要向消息队列写入消息时,若消息队列被设置为只读,则会产生消息失败,因此,将消息队列设置为只读即为一个目标操作。
再比如,在消息生产者需要向异常消息处理器写入消息,或消息消费者需要向异常消息处理器提取消息时,消息生产者与异常消息处理器的连接,或消息消费者与异常消息处理器的连接被断开,则会产生消息处理失败,因此,将异常消息处理器与消息生产者的连接断开,或将异常消息处理器与消息消费者的连接断开,也可以被设为一个目标操作。
再比如,在消息生产者需要向异常消息处理器写入消息,或消息消费者需要向异常消息处理器提取消息时,消息生产者与异常消息处理器的连接,或消息消费者与异常消息处理器的连接出现拥堵,存在较大的消息通信延时,则会产生消息处理迟滞,因此,为异常消息处理器与消息生产者的连接,或将异常消息处理器与消息消费者的连接设置拥堵,使其产生较大的消息通信时延,也可以被设为一个目标操作。
在实际的测试场景中,可以得到多种目标操作,对各个目标操作进行解构,将其均视为异常注入原子操作的组合。每个异常注入原子操作都可以对应一个独立的异常注入测试脚本,所述异常注入测试脚本中可以通过通过hook对正常流程构造各种异常场景,比如连接超时。hook是一种“中断”的系统机制,中文译为“挂钩”或“钩子”。在对特定的系统事件进行hook后,一旦发生已hook事件,对该事件进行hook的程序就会收到系统的通知,这时程序就能在第一时间对该事件做出响应。
S103.获取消息处理任务运行环境;所述消息处理任务运行环境包括为每个消息生产者和每个消息消费者均设置的消息队列,以及用于与各个消息队列通信的异步消息处理器,所述异步消息处理器用于实现消息生产者与消息消费者之间的消息交互。
消息处理任务可以运行于复杂系统之中,因为复杂系统的存在提升了消息并发量,但是也增加了雪崩测试的难度。具体地,所述复杂系统可以是分布式系统。在分布式系统的各个节点均可能有机会参与消息处理任务,并在消费者和生产者的身份中根据实际需求灵活切换。
本发明实施例中消息消费者和消息生产者的设定是基于生产者消费者的设计模式。生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区(异步消息处理器),平衡了生产者和消费者的处理能力,从而实现了本发明实施例中的异步消息处理。
每个消息消费者或消息生产者都对应一个线程,整个消息处理任务中可以使用多个生产线程来生产数据,同样可以使用多个消费线程来消费数据,当然,不同的线程可以位于同一个或不同的分布式系统的节点之中。而更复杂的情况是,消费者消费的数据,有可能需要继续处理,于是消费者处理完数据之后,它又要作为生产者把数据放在新的生产队列里,交给其他消费者继续处理。而这种消息处理方式均可以依托于步骤S103中设置的消息队列和异步消息处理器执行。
在一个可行的实施方式中,对于每个线程均设置其对应的消息代理器(cmq_proxy),其可以执行消息队列的任务,各个线程均可以与异步消息处理器(cmq_processor_server)通信。异步消息处理器(cmq_processor_server)中基于订阅关系进行消息处理,一个主题和一个消息消费者唯一确定一条订阅关系,在异步消息处理器中每个主题可以单独使用一个消息队列进行管理。消息消费者根据主题在其对应的消息队列提取消息进行消费。
S105.在所述消息处理任务运行环境中执行包括至少一个雪崩测试用例的测试任务,每个所述雪崩测试用例中均通过调用至少一个异常注入原子操作产生消息处理异常;所述测试任务中参与进行消息处理的消息数量大于预设阈值。
在消息处理任务中,处理大数据量的消息是发生雪崩的主因之一,因此,雪崩测试中有必要为测试对象施加大数据处理压力,因此,用于进行雪崩的测试任务同时也实现了一种压力测试,其有必要通过大于预设阈值的消息处理数量来达到压力测试效果,而预设阈值的设定与实际的应用场景有关,可以由测试人员进行设定,但是应当以能够为测试对象施加大数据处理压力为准。
依赖人工手动进行大数据量消息的处理的相关测试必然耗费较多的人力成本,因此,本发明实施例中通过编写并运行脚本实现测试任务的自动化运行,从而降低人力成本,提升测试的自动化程度。
在一个可行的实施方式中,可以通过构造测试用例的方式来进行测试,测试任务由多个测试用例构成,并以脚本的形式运行,从而可以自动执行测试用例,进而达到测试目的。为了进行雪崩检测而编写的测试用例在本发明实施例中被称为雪崩测试用例。步骤S105中所述的测试任务显然包括雪崩用例。本发明实施例中,雪崩测试与其它测试可以并行进行,因此,所述测试任务还可以包括其它测试用例,比如正常用例,异常用例和稳定性用例。
步骤S105中可以基于异常注入原子操作构建雪崩测试用例,雪崩测试用例的编写过程中不再需要测试人员独立实现各个可能导致雪崩的场景,而是使用在测试用例中调用异常注入原子操作的方式使得测试用例的执行过程中可以调用异常注入原子操作为测试对象注入某种异常,从而达到测试目的,自动化验证异步消息系统全链路是否发生雪崩效应。操作简单、结果精确,可以极大提升异步消息系统雪崩测试场景构造的效率。为了进一步突出本发明实施例中的基于异常注入原子操作实现测试的思想,本发明实施例中进行下述详细阐述:
比如,大量数据异步处理的场景下,出现了线程A作为消息生产者向异步消息处理器的某个主题写消息,但是异步消息处理器的所述主题此时对应线程A处于只读状态,且另一个需要读取消息的线程与所述异步消息处理器的连接被中断的异常场景。现有技术中,为了构建这种异常场景,需要测试人员手动对某个主题构造大量消息,然后在多生产者多消费者场景下正常消费该主题消息,然后对线程A写主题目录用chattr命令构造只读情况,用iptab les方式对线程B所在机器设置连接中断。
又比如希望构造向多个主题同时发大量消息,其中一个主题正常处理,另一个主题大量重试的异常场景。在现有技术中,需要测试人员对构造对多个主题的大量数据流,并时刻关注各个主题,并维持某个主题的异常重试。显然,这个过程不仅耗时费力,并且异常场景的持续时间不可控,无法离开测试人员独立运行,也无法灵活调度各种异常注入原子操作。
与之相对应的,在本发明实施例中,测试任务中的雪崩测试用例可以仅仅通过设定产生异常位置的设备以及选择某个异常注入原子操作,即可对消息处理任务中各个节点构造各种异常,结果验证精确,大大的提高了测试效率。
在一个可行的实施方式中,可以设计下述测试过程:
消息生产者A和消息生产者B分别生产两个不同主题的消息,发给同机的消息队列,然后统一发给跨机的异步消息处理器处理,然后由被两个不同的消息消费者消费;
消息生产者A生产topic1,最终由消息消费者C来消费,消息生产者B生产topic2,最终由消息消费者D消费;
在雪崩测试用例中,自动调用异常注入原子操作read_only.sh对消息生产者A写入的消息目录设置只读模式,实现消息生产者A无法写消息的异常场景;调用异常注入原子操作iptable_connect_break.sh对消息消费者D的机器设置连接中断;
消息生产者A和消息生产者B同时调用发包工具,生产大数据量消息,观察是否发生雪崩。
上述雪崩测试用例的执行逻辑可以参考图3,其示出了雪崩测试逻辑示意图。其中不同的消息生产者位于不同的设备上,并都可以向自身的消息队列写入大量消息,并且使用消息目录进行记录,只有当消息目录和消息队列都写入成功,消息才被视为生产成功,消息被生产成功后被发送至异步消息处理器,所述异步消息处理器可以通过消息处理模块将消息分发至不同的消费者。而雪崩测试用例中通过在某个消息目录设置了写限制,并断开了消息处理模块与某个消费者的连接来构造异常场景。
在另一个可行的实施方式中,可以设计下述测试过程:
消息生产者A和消息生产者B分别生产两个不同主题的消息,发给同机的消息队列,然后统一发给跨机的异步消息处理器处理,然后由一个消息消费者消费;
消息生产者A生产topic1,消息生产者B生产topic2,最终发到同一个消费者;
在雪崩测试用例中,消息生产者A调用异常注入原子操作create_error_file.py脚本,构造消息生产者A写入大量异常消息文件的场景;
消息生产者B同时调用发包工具,生产大数据量正常消息,校验topic2的消息是否正常转发给消费者,包括消息是否丢失,吞吐量是否受到影响,消息是否延迟发送,以及是否发生雪崩。
上述雪崩测试用例的执行逻辑可以参考图4,其示出了另一雪崩测试逻辑示意图。其中不同的消息生产者位于不同的设备上,并都可以向自身的消息队列写入大量消息,并且使用消息目录进行记录,只有当消息目录和消息队列都写入成功,消息才被视为生产成功,消息被生产成功后被发送至异步消息处理器,所述异步消息处理器可以通过消息处理模块将消息分发至不同的消费者。而雪崩测试用例中通过发送大量异常消息来构造异常场景。
S107.获取所述测试任务对应的测试结果。
具体地,所述测试结果包括是否发生雪崩,还可以包括消息处理质量测试结果和消息处理性能测试结果。其中,消息处理质量测试结果用于表征消息处理的准确度,比如消息是否正常发送给消费者、丢包率等;消息处理性能测试结果包括消息并发吞吐量、时延等。
本发明实施例中提供的一种消息处理任务测试方法可以高效率地构造雪崩测试用例,从而验证整个系统是否会发生雪崩效应,其逻辑结构耦合度低,可以便于后续进行持续建设和动态完善。
进一步地,本发明实施例还提供了一种用于执行消息任务测试方法的测试系统,所述测试系统不仅可以用于进行自动化的雪崩测试,还可以运行其它测试用例,比如正常测试用例,异常测试用例,雪崩用例和稳定性用例。如图5所示,所述测试系统包括公共管理模块201、测试用例管理模块203、测试任务管理模块205、日志管理模块207和原子操作管理模块209。其中测试用例管理模块203中的测试用例可以基于原子操作管理模块209中的原子操作构建,从而体现本发明实施例中一种用于执行消息任务测试方法的发明构思。
所述公共管理模块201,用于配置测试环境和相关运行参数,包括环境配置单元,远程操作单元,报告模版单元和邮件单元。环境配置单元主要用于对被测对象的端口和目录进行配置,以及配置发包速率等;远程操作单元设置于独立于被测对象的机器上,可以被调用进行测试相关的动作,比如日志清理,结果拉取等;报告模板单元用于进行相关测试结果的数据处理和生成报告;邮件单元用于以邮件形式展示测试结果。
测试用例管理模块203,用于编写以及管理测试用例。
测试任务管理模块205,用于生成并管理测试任务,以及按照测试任务对测试用例进行单个或多个执行,也可以设置以批处理形式执行。
日志管理模块207,用于收集以及保存测试过程产生的日志,方便定位异常。
原子操作管理模块209,用于保存封装的各种原子性的操作脚本,比如环境清理脚本、监控脚本、发包工具、结果核对脚本、异常脚本和异常恢复脚本,其中异常脚本指的是直接执行该脚本,就能达到相应异常效果,比如执行tc_corrupt.sh,可以将eth0网卡的传输设置为随机产生x%的损坏的数据包,执行tc_normal.sh则可以恢复此异常。异常脚本也可以用于封装异常注入原子操作。异常脚本常在雪崩测试用例和异常测试用例中被调用,相应的,也可以使用异常恢复脚本进行恢复。
基于所述测试系统,本发明还可以执行下述消息处理任务测试方法,如图6所示,包括:
S301.从公共管理模块中读取配置,以获取到消息处理任务的运行环境。
S303.从原子操作管理模块中调用清理环境的脚本,将消息处理任务的消息队列、异步消息处理器以及测试环境中的日志和历史数据清除。
S305.执行测试用例;每个所述雪崩测试用例中均通过调用至少一个异常注入原子操作产生消息处理异常。
S307.若测试用例执行完毕或被终止,则处理测试结果。
具体地,所述处理测试结果包括判断测试对象是否重启,是否发生雪崩,获取发包总数、各个消息队列消息数、异步消息处理器处理的消息数,测试环境产生的总消息数、被成功处理的消息数等数据,并进行分析以得到消息处理质量测试结果和消息处理性能测试结果。
S309.将测试结果通过公共管理模块中的邮件单元对外发布。
如图7所示,其示出了上述消息处理任务测试方法的逻辑示意图,基于测试系统与被测对象的交互实现了包括雪崩测试在内的自动化的测试,延承本发明实施例中的测试思路,基于原子操作来检测被测对象的异常,并且可以基于原子操作准备测试环境和恢复测试环境,对于测试复杂系统的稳定性和高可用性提供了一种有效思路。
请参考图8,其示出了本发明实施例基于上述测试方法得到的雪崩测试结果示意图,所述雪崩测试结果以邮件形式对外发布,并且其包括了多种测试结果数据,比如测试是否的导致重启,是否导致终止(core)以及产生的各种消息数。
本发明实施例公开的对消息处理任务的测试方法、测试系统能够显著提升消息测试的自动化程度,其将各种测试动作封装为原子操作的方式也便于后期的维护和改进。
本发明实施例还公开了一种消息处理任务测试装置,如图9所示,所述装置还包括:
异常注入原子操作封装模块401,用于封装异常注入原子操作,所述异常注入原子操作为通过注入消息处理流程来引发消息处理异常的最小完整操作;
消息处理任务运行环境获取模块403,用于获取消息处理任务运行环境;所述消息处理任务运行环境包括为每个消息生产者和每个消息消费者均设置的消息队列,以及用于与各个消息队列通信的异步消息处理器,所述异步消息处理器用于实现消息生产者与消息消费者之间的消息交互;
测试任务执行模块405,用于在所述消息处理任务运行环境中执行包括至少一个雪崩测试用例的测试任务,每个所述雪崩测试用例中均通过调用至少一个异常注入原子操作产生消息处理异常;所述测试任务中参与进行消息处理的消息数量大于预设阈值;
测试结果获取模块407,用于获取所述测试任务对应的测试结果。
具体地,本发明实施例所述一种消息处理任务测试装置与方法实施例均基于相同发明构思。
本发明实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行本发明实施例所述的一种消息处理任务测试方法的各种步骤,在此不再赘述。
进一步地,图10示出了一种用于实现本发明实施例所提供的方法的设备的硬件结构示意图,所述设备可以参与构成或包含本发明实施例所提供的装置。如图10所示,设备10可以包括一个或多个(图中采用102a、102b,……,102n来示出)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图10所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,设备10还可包括比图10中所示更多或者更少的组件,或者具有与图10所示不同的配置。
应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到设备10(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中所述的方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的一种消息处理任务测试方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至设备10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括设备10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(NetworkInterfaceController,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(RadioFrequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与设备10(或移动设备)的用户界面进行交互。
需要说明的是:上述本发明实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和服务器实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种消息处理任务测试方法,其特征在于,所述方法包括:
封装异常注入原子操作,所述异常注入原子操作为通过注入消息处理流程来引发消息处理异常的最小完整操作;
获取消息处理任务运行环境;所述消息处理任务运行环境包括为每个消息生产者和每个消息消费者均设置的消息队列,以及用于与各个消息队列通信的异步消息处理器,所述异步消息处理器用于实现消息生产者与消息消费者之间的消息交互;
在所述消息处理任务运行环境中执行包括至少一个雪崩测试用例的测试任务,每个所述雪崩测试用例中均通过调用至少一个异常注入原子操作产生消息处理异常;所述测试任务中参与进行消息处理的消息数量大于预设阈值;
获取所述测试任务对应的测试结果。
2.根据权利要求1所述的方法,其特征在于:
所述消息处理任务运行环境中,每个线程均设置其对应的消息代理器,以用于执行消息队列的任务,各个线程均与异步消息处理器通信;所述异步消息处理器中基于订阅关系进行消息处理,一个主题和一个消息消费者唯一确定一条订阅关系,在异步消息处理器中每个主题单独使用一个消息队列进行管理;消息消费者根据主题在其对应的消息队列提取消息进行消费。
3.根据权利要求1所述的方法,其特征在于:
所述测试任务还包括正常用例,异常用例和稳定性用例;
所述测试结果包括是否发生雪崩、消息处理质量测试结果和消息处理性能测试结果。
4.一种消息处理任务测试装置,其特征在于,所述装置包括:
异常注入原子操作封装模块,用于封装异常注入原子操作,所述异常注入原子操作为通过注入消息处理流程来引发消息处理异常的最小完整操作;
消息处理任务运行环境获取模块,用于获取消息处理任务运行环境;所述消息处理任务运行环境包括为每个消息生产者和每个消息消费者均设置的消息队列,以及用于与各个消息队列通信的异步消息处理器,所述异步消息处理器用于实现消息生产者与消息消费者之间的消息交互;
测试任务执行模块,用于在所述消息处理任务运行环境中执行包括至少一个雪崩测试用例的测试任务,每个所述雪崩测试用例中均通过调用至少一个异常注入原子操作产生消息处理异常;所述测试任务中参与进行消息处理的消息数量大于预设阈值;
测试结果获取模块,用于获取所述测试任务对应的测试结果。
5.一种消息处理任务测试系统,所述消息处理任务测试系统用于执行权利要求1所述的一种消息处理任务测试方法,其特征在于,所述系统还包括:
公共管理模块,用于配置测试环境和相关运行参数;
测试用例管理模块,用于编写以及管理测试用例;
测试任务管理模块,用于生成并管理测试任务,以及按照测试任务对测试用例进行单个或多个执行;
日志管理模块,用于收集以及保存测试过程产生的日志;
原子操作管理模块,用于保存封装的各种原子性的操作脚本。
6.根据权利要求5所述一种消息处理任务测试系统,其特征在于:
所述测试用例管理模块中包括正常测试用例,异常测试用例,雪崩用例和稳定性用例;
所述原子操作管理模块包括环境清理脚本、监控脚本、发包工具、结果核对脚本、异常脚本和异常恢复脚本,其中异常脚本被用于在雪崩测试用例和异常测试用例中调用以构造异常,所述异常恢复脚本用于对其对应的异常脚本构造的异常进行恢复。
7.一种消息处理任务测试方法,所述测试方法使用权利要求5所述的消息处理任务测试系统,其特征在于,所述方法包括:
从公共管理模块中读取配置,以获取到消息处理任务的运行环境;
从原子操作管理模块中调用清理环境的脚本,将消息处理任务的消息队列、异步消息处理器以及测试环境中的日志和历史数据清除;
执行测试用例;所述测试用例包括雪崩测试用例;每个所述雪崩测试用例中均通过调用至少一个异常注入原子操作产生消息处理异常;
若测试用例执行完毕或被终止,则处理测试结果。
8.根据权利要求7所述方法,其特征在于,还包括:
将测试结果通过公共管理模块对外发布,所述测试结果包括判断测试对象是否重启,是否发生雪崩,通过分析获取的发包总数、各个消息队列消息数、异步消息处理器处理的消息数,测试环境产生的总消息数以及被成功处理的消息数得到的消息处理质量测试结果和消息处理性能测试结果。
9.一种设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1-3任一项所述的一种消息处理任务测试方法或如权利要求7-8任一项所述的一种消息处理任务测试方法。
10.一种计算机存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行权利要求1-3任一项所述的一种消息处理任务测试方法或如权利要求7-8任一项所述的一种消息处理任务测试方法。
CN201910437115.XA 2019-05-24 2019-05-24 消息处理任务测试方法、装置、系统、设备及介质 Active CN111984523B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910437115.XA CN111984523B (zh) 2019-05-24 2019-05-24 消息处理任务测试方法、装置、系统、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910437115.XA CN111984523B (zh) 2019-05-24 2019-05-24 消息处理任务测试方法、装置、系统、设备及介质

Publications (2)

Publication Number Publication Date
CN111984523A true CN111984523A (zh) 2020-11-24
CN111984523B CN111984523B (zh) 2023-12-12

Family

ID=73437440

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910437115.XA Active CN111984523B (zh) 2019-05-24 2019-05-24 消息处理任务测试方法、装置、系统、设备及介质

Country Status (1)

Country Link
CN (1) CN111984523B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105391729A (zh) * 2015-11-30 2016-03-09 中国航天科工集团第二研究院七〇六所 基于模糊测试的web漏洞自动挖掘方法
CN105391597A (zh) * 2015-11-06 2016-03-09 国网浙江省电力公司电力科学研究院 基于多服务器仿真的雪崩测试的方法、装置及系统
CN107257290A (zh) * 2017-05-15 2017-10-17 中国电力科学研究院 一种开放式soa面向服务架构的测试方法及系统
CN107480040A (zh) * 2016-06-08 2017-12-15 阿里巴巴集团控股有限公司 工作流稳定性测试方法及设备
CN107590072A (zh) * 2017-08-30 2018-01-16 深圳乐信软件技术有限公司 一种应用开发和测试的方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105391597A (zh) * 2015-11-06 2016-03-09 国网浙江省电力公司电力科学研究院 基于多服务器仿真的雪崩测试的方法、装置及系统
CN105391729A (zh) * 2015-11-30 2016-03-09 中国航天科工集团第二研究院七〇六所 基于模糊测试的web漏洞自动挖掘方法
CN107480040A (zh) * 2016-06-08 2017-12-15 阿里巴巴集团控股有限公司 工作流稳定性测试方法及设备
CN107257290A (zh) * 2017-05-15 2017-10-17 中国电力科学研究院 一种开放式soa面向服务架构的测试方法及系统
CN107590072A (zh) * 2017-08-30 2018-01-16 深圳乐信软件技术有限公司 一种应用开发和测试的方法和装置

Also Published As

Publication number Publication date
CN111984523B (zh) 2023-12-12

Similar Documents

Publication Publication Date Title
US10015072B2 (en) Consolidation of network test automation tools
US9329983B2 (en) Computer program testing
US6560720B1 (en) Error injection apparatus and method
US8245083B2 (en) Systems, methods, and apparatus to debug a network application
CN103812726A (zh) 一种数据通信设备的自动化测试方法及装置
CN102571498B (zh) 故障注入控制方法和装置
EP4030728A1 (en) Software defined networking control plane resiliency testing
GB2418755A (en) Error handling using a structured state tear down
CN111258913A (zh) 算法自动测试方法、装置、计算机系统及可读存储介质
CN111966465B (zh) 一种实时修改宿主机配置参数的方法、系统、设备及介质
CN114064208A (zh) 检测应用服务状态的方法、装置、电子设备及存储介质
CN116016123A (zh) 故障处理方法、装置、设备及介质
CN101800672B (zh) 设备检测方法和设备
CN105550103B (zh) 一种基于自定义测试脚本的自动化测试方法
CN114422386A (zh) 一种微服务网关的监测方法及装置
CN111984523B (zh) 消息处理任务测试方法、装置、系统、设备及介质
CN116087752A (zh) 一种芯片测试方法、系统、装置及介质
CN112416734A (zh) 测试的方法、装置以及存储介质
CN112596750B (zh) 应用测试方法、装置、电子设备及计算机可读存储介质
CN115599651A (zh) 一种应用系统测试方法、装置、电子设备和存储介质
CN112306845A (zh) 一种并发测试方法、装置、设备及介质
CN114089725B (zh) 一种化学机械抛光设备控制软件的测试方法、装置和电子设备
CN115378857B (zh) 一种异步长挂分布式架构的测试方法和装置
Zhu et al. A dynamic conformance checking method based on petri nets for satellite communication system network control protocol
CN115794642A (zh) 测试环境部署方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant