本发明属于软件调试诊断领域,尤其涉及一种测试系统、方法、电子设备及存储介质。
背景技术:
自从可编程计算机存在依赖,了解计算机程序的异常运行状态运行的原因就一直是软件开发人员的重要工作之一。软件缺陷难以避免且危害很大,消除软件缺陷成为软件工程中一项重要任务,软件调试是探索软件缺陷的根源并寻求其解决方案的过程。
目前缺少一种能够复现软件错误的技术手段,从而帮助开发人员快速解决软件缺陷。
技术实现要素:
本发明提供了一种测试系统、方法、电子设备及存储介质,以解决传统方案中缺少一种能够复现软件错误的技术手段的问题。
第一方面,本发明实施例提供了一种测试系统,包括:消息服务器和测试装置;
所述消息服务器,用于获取与消息交互方对应的消息,将所述消息存储至所述测试装置中,以及将从所述测试装置接收到的所述消息发送至预先生成的目标组件中以回放所述消息,所述目标组件是与所述消息交互方对应的交互组件;
所述测试装置,用于存储所述消息;以及在接收到用户触发的回放指令时,根据所述回放指令中包含的所述消息交互方的标识,向所述消息服务器发送所述消息。
可选地,所述系统还包括:共享内存;
所述消息服务器,用于将所述消息写入所述共享内存中;
所述测试装置,用于从所述共享内存中读取所述消息,并存储所述消息。
可选地,所述消息服务器,用于将所述消息写入所述共享内存中的第一内存块;若所述第一内存块被写满,则切换至向第二内存块中写入所述消息,以及向所述测试装置发送读取指令;
所述测试装置,用于接收所述读取指令,以及根据所述读取指令从所述第一内存块中读取所述消息。
可选地,所述测试装置,还用于若所述测试装置存储所述消息的数量大于预设阈值,删除所述消息中存储时长最大的消息。
可选地,所述消息服务器,还用于获取过滤规则,以及基于所述过滤规则对所述消息进行过滤,将过滤后的消息存储至所述测试装置中。
第二方面,本发明实施例提供了一种测试方法,应用于消息服务器中,所述方法包括:
获取与消息交互方对应的消息;
将所述消息存储至测试装置中;
接收所述测试装置发送的所述消息;
将所述消息发送至预先生成的目标组件中以回放所述消息,所述目标组件是与所述消息交互方对应的交互组件。
可选地,所述将所述消息存储至测试装置中,包括:
将所述消息写入共享内存中,以使测试装置从所述共享内存中读取所述消息,并存储所述消息。
可选地,所述共享内存包括多个内存块;
所述将所述消息写入共享内存中,以使测试装置从所述共享内存中读取所述消息,包括:
将所述消息写入所述共享内存中的第一内存块;
若所述第一内存块被写满,则切换至向第二内存块中写入所述消息;
向所述测试装置发送读取指令,以使所述测试装置根据所述读取指令从所述第一内存块中读取所述消息。
可选地,所述方法还包括:
获取用于过滤所述消息的过滤规则;
基于所述过滤规则,对所述消息进行过滤,以将过滤后的消息存储至所述测试装置中。
第三方面,本发明实施例提供了一种测试方法,应用于测试装置中,所述方法包括:
存储消息服务器发送的与消息交互方对应的消息;
在接收到用户触发的回放指令时,根据所述回放指令中包含的所述消息交互方的标识,向所述消息服务器发送所述消息,以使所述消息服务器通过将所述消息发送至预先生成的目标组件中以回放所述消息,所述目标组件是与所述消息交互方对应的交互组件。
可选地,所述方法还包括:
在接收到所述消息服务器发送的读取指令时,从共享内存中读取所述消息,所述共享内存用于存储所述消息服务器写入的所述消息。
可选地,所述共享内存包括多个内存块及用于指示各内存块是否被写满的标识信息;
所述在接收到所述消息服务器发送的读取指令时,从共享内存中读取所述消息,包括:
在接收到所述消息服务器发送的读取指令时,根据所述标识信息,从所述共享内存中被写满的第一内存块中读取所述消息。
可选地,所述方法还包括:
若存储所述消息的数量大于预设阈值,删除所述消息中存储时长最大的消息。
第四方面,本发明实施例提供了一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序;所述处理器执行所述计算机程序时实现上述第二方面或第三方面任一项所述的测试方法。
第五方面,本发明实施例提供了一种具有处理器可执行的非易失的程序代码的计算机可读介质,所述程序代码使所述处理器执行上述第二方面或第三方面任一项所述的测试方法。
本发明实施例通过所述消息服务器获取与消息交互方对应的消息,将所述消息存储至所述测试装置中,记录交互进程中的消息;所述测试装置用于存储所述消息,并在接收到用户触发的回放指令时,根据所述回放指令中包含的所述消息交互方的标识,向所述消息服务器发送所述消息,以使所述消息服务器将从所述测试装置接收到的所述消息发送至预先生成的目标组件中以回放所述消息,达到使维护人员从回放过程中快速定位故障的目的。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明提供的一种测试系统的一个实施例的结构示意图;
图2是本发明提供的一种测试系统的另一个实施例的结构示意图;
图3是本发明提供的一种测试方法的一个实施例的流程图;
图4是本发明提供的一种测试方法的另一个实施例的流程图;
图5是本发明提供的一种测试方法的另一个实施例的流程图;
图6是本发明提供的一种电子设备的一个实施例的结构示意图。
具体实施例
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
在本发明的说明书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
自从可编程计算机存在依赖,了解计算机程序的异常运行状态运行的原因就一直是软件开发人员的重要工作之一。软件缺陷难以避免且危害很大,消除软件缺陷成为软件工程中一项重要任务,软件调试是探索软件缺陷的根源并寻求其解决方案的过程,目前缺少一种能够复现软件错误的技术手段,从而帮助开发人员快速解决软件缺陷。
为此,发明人提出了本发明的技术方案,一种测试系统,包括消息服务器和测试装置;所述消息服务器,用于获取与消息交互方对应的消息,将所述消息存储至所述测试装置中,以及将从所述测试装置接收到的所述消息发送至预先生成的目标组件中以回放所述消息,所述目标组件是与所述消息交互方对应的交互组件;所述测试装置,用于存储所述消息;以及在接收到用户触发的回放指令时,根据所述回放指令中包含的所述消息交互方的标识,向所述消息服务器发送所述消息。
通过所述消息服务器获取与消息交互方对应的消息,将所述消息存储至所述测试装置中,记录交互进程中的消息;所述测试装置用于存储所述消息,并在接收到用户触发的回放指令时,根据所述回放指令中包含的所述消息交互方的标识,向所述消息服务器发送所述消息,以使所述消息服务器将从所述测试装置接收到的所述消息发送至预先生成的目标组件中以回放所述消息,达到使维护人员从回放过程中快速定位故障的目的。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,为本发明提供的一种测试系统的一个实施例的结构示意图,包括:消息服务器101和测试装置102;
所述消息服务器101,用于获取与消息交互方对应的消息,将所述消息存储至所述测试装置中,以及将从所述测试装置接收到的所述消息发送至预先生成的目标组件中以回放所述消息,所述目标组件是与所述消息交互方对应的交互组件。
在实际应用中,消息服务器可以指面向消息的中间件(messageorientedmiddleware,简称mom)。该mom具有一种发布订阅(pub/sub)模式。发布者和订阅者模型支持向一个特定的消息主题生产消息,多个订阅者可能对接收来自特定消息主题的消息感兴趣。在这种模型下,发布者和订阅者彼此不知道对方,就好比是匿名公告板。这种模式可以被概况为:多个订阅者可以获得消息,在发布者和订阅者之间存在时间依赖性,所以发布者需要建立一个订阅(subscription),以便订阅者能够订阅,订阅者则必须保持持续的活动状态并接收消息。
但是在上述框架下,多个消息交互方之间不会感知到对端的运行状态,即订阅者与发布者各自的组件相互隔离,多个消息交互方对应的组件只能依赖于消息服务器发送的消息执行对应的操作。因此,如果记录消息服务器运行过程中的所有消息即可实现回放任意组件在交互过程中的运行状态,维护人员可以快速确定出现异常的组件。
基于此,本实施例中,使消息服务器获取与消息交互方对应的消息,并将所述消息存储至所述测试装置中,实现消息的存储。
其中,消息交互方可以指消息的发布方也可以指消息的订阅方,该发布方和订阅方可以指上述发布订阅模式下的发布者和订阅者,所以,消息的类型本发明实施例不作具体限定。在实际应用中,该消息可以是订阅方发送的订阅请求,也可以是发布方发布的数据,具体内容可以根据实际情况而定。
另外,在本发明实施例中,测试装置102是用于存储消息。测试装置可以应用在消息服务器中,也可以独立使用单独的服务器并与所述消息服务器建立长连接,以实现消息存储。当消息交互方反馈错误时,例如:订阅方在订阅后未接收到发布方提供的数据。此时,可以通过调取测试装置中存储的消息,实现实际应用场景的复现,以达到定位故障的目的。
具体地,所述测试装置,在接收到用户触发的回放指令时,根据所述回放指令中包含的所述消息交互方的标识,向所述消息服务器发送所述消息,消息服务器将从所述测试装置接收到的所述消息发送至预先生成的目标组件中以回放所述消息。
其中,目标组件是指与所述消息交互方对应的交互组件,例如订阅方用于订阅消息的设备组件。而在本发明实施例中,交互组件还可以是预先生成的仿真组件,这样,消息服务器接收到测试装置发送的消息时,无需再通过网络传输的方式将消息发送至对应的消息交互方达到复现的目的,而是可以直接调用预先生成的交互组件,将消息发送至该交互组件。由于交互组件是根据实际用于交互的消息交互方的组件模拟仿真得到的,所以消息服务器可以将从所述测试装置接收到的所述消息发送至预先生成的目标组件中以回放所述消息,实现在消息服务器端中完成回放的目的。
测试装置向消息服务器发送消息可以是在接收到用户触发的回放指令后,向消息服务器发送消息。其中,该回放指令中可以包括消息交互方的标识,则测试装置可以基于该标识,发送与消息交互方对应的消息至消息服务器。在实际应用中,该回放指令可以是在需要定位故障时,由用户触发。例如,当消息交互方反馈错误时,订阅方在订阅后未接收到发布方提供的数据,用户可以触发回放指令,从而进行实际应用场景的复现。具体地,可以响应于用户触发的针对消息交互方的回放操作,生成包含该消息交互方的标识的回放指令。
发明人在研究过程中发现,如果只依靠测试装置存储消息服务器中记录的消息,频繁地建立连接以将消息写入测试装置,则建立连接与释放会造成资源的占用以及容易产生垃圾文件,并且数据同步带来的阻塞操作会极大的影响消息服务器的消息处理性能。因此,如图2所示,在某些实施例中,所述系统还可以包括:共享内存201;
所述消息服务器101,用于将所述消息写入所述共享内存201中;
所述测试装置102,用于从所述共享内存201中读取所述消息,并存储所述消息。
其中,共享内存可以是短时存储介质,例如消息服务器中的缓存,用于提升消息的读写速度。进一步地,在共享内存中可以设置多个内存块;
所述消息服务器用于将所述消息写入所述共享内存中的第一内存块;若所述第一内存块被写满,则切换至向第二内存块中写入所述消息,以及向所述测试装置发送读取指令;
所述测试装置,用于接收所述读取指令,以及根据所述读取指令从所述第一内存块中读取所述消息。
其中,第一内存块与第二内存块可以指共享内存中任一个内存块。消息服务器可以将所述消息写入所述共享内存中的第一内存块,当写入的消息写满该第一内存块时,可以通告测试装置读取该第一内存块中的消息,同时切换当前准备写入的内存块为第二内存块,继续写入消息。具体地,消息服务器通告测试装置读取消息可以是向测试装置发送读取指令,则测试装置可以接收该读取指令,并基于该读取指令从第一内存块中读取消息。通过共享内存分块,可以减少数据同步带来的阻塞,从而提升消息服务器的消息处理性能。
在某些实施例中,考虑到测试装置中存储空间的问题,无法无限量的存储消息服务器中的消息。因此,该测试装置还可以用于,若所述测试装置存储所述消息的数量大于预设阈值,删除所述消息中存储时长最大的消息。
具体地,为了便于查找存储时长最大的消息,可以采用记录消息存储时刻的方式,计算每个消息的存储时长,并以命名的方式将消息存储时刻作为该消息的存储命名。由此,在测试装置中存储的消息的数量大于预设阈值时,可以根据消息的存储命名查找出存储时长最大的消息,以将该存储时长最大的消息进行删除。
在实际应用中,消息服务器获取的消息中可能存在大量冗余或者低效的消息。由于最终消息会传入测试装置中进行持久化存储,如果对消息服务器获取的所有消息都进行记录存储,必然会导致测试装置中磁盘空间的浪费。因此,在消息传入测试装置中存储之前,需要对消息进行过滤处理。而对于消息服务器而言,其自身是无法判断消息的重要性的,也即消息服务器无法判断出冗余或者低效的消息,此时,需要先进行识别,再通告给消息服务器进行过滤。
基于此,在某些实施例中,该消息服务器还用于,获取过滤规则,以及基于所述过滤规则对所述消息进行过滤,将过滤后的消息存储至所述测试装置中。
其中,过滤规则的制定方可以根据实际情况而定,例如在订阅方订阅发布方发布的数据时,订阅方可以限定订阅的数据类型,则消息服务器负责将订阅方限定数据类型之外的数据过滤掉,只将限定的数据类型的数据存储至测试装置中,从而避免测试装置中磁盘空间的浪费。
如图3所示,为本发明提供的一种测试方法的一个实施例的流程图,该测试方法可以应用于消息服务器中,该方法可以包括以下几个步骤:
步骤301,获取与消息交互方对应的消息。
在该步骤中,消息交互方可以指消息的发布方也可以指消息的订阅方,所以,消息的类型本发明实施例不作具体限定。在实际应用中,获取的消息例如可以是发布方发布的数据,具体内容可以根据实际情况而定。
步骤302,将所述消息存储至测试装置中。
在该步骤中,测试装置是用于存储消息。测试装置可以应用在消息服务器中,也可以独立使用单独的服务器并与所述消息服务器建立长连接,以实现消息存储。当消息交互方反馈错误时,例如:订阅方订阅后未接收到发布方提供的数据,此时,可以通过调取测试装置中存储的消息,实现实际应用场景的复现,以达到定位故障的目的。
步骤303,接收所述测试装置发送的所述消息。
在该步骤中,所述测试装置在接收到用户触发的回放指令时,根据所述回放指令中包含的所述消息交互方的标识,可以向所述消息服务器发送所述消息,以便于消息服务器将从所述测试装置接收到的所述消息发送至预先生成的目标组件中以进行回放。
步骤304,将所述消息发送至预先生成的目标组件中以回放所述消息。
其中,所述目标组件是与所述消息交互方对应的交互组件。
在该步骤中,目标组件可以是指与所述消息交互方对应的交互组件,例如订阅方用于订阅消息的设备组件。在实际应用中,该交互组件还可以是预先生成的仿真组件,由此,消息服务器接收到测试装置发送的与消息交互方对应的消息时,无需再通过网络传输的方式将消息发送至对应的消息交互方达到复现的目的,而是可以直接调用预先生成的交互组件。由于该交互组件是根据实际用于交互的消息交互方的组件模拟仿真得到的,所以消息服务器可以将从所述测试装置接收到的与消息交互方对应的消息发送至预先生成的目标组件中以回放所述消息,实现在消息服务器端中完成回放的目的。
本实施例中,通过所述消息服务器获取与消息交互方对应的消息,将所述消息存储至所述测试装置中,记录交互进程中的消息;所述测试装置用于存储所述消息,并在接收到用户触发的回放指令时,根据所述回放指令中包含的所述消息交互方的标识,向所述消息服务器发送所述消息,以使所述消息服务器将从所述测试装置接收到的所述消息发送至预先生成的目标组件中以回放所述消息,达到使维护人员从回放过程中快速定位故障的目的。
在某些实施例中,所述将所述消息存储至测试装置中的方法可以包括:
将所述消息写入共享内存中,以使测试装置从所述共享内存中读取所述消息,并存储所述消息。
其中,共享内存可以是短时存储介质,例如消息服务器中的缓存,用于提升消息的读写速度。通过应用共享内存,无需频繁地建立连接以将消息直接写入测试装置,避免在建立连接与释放时出现资源占用的问题,且不容易产生垃圾文件。
可选的,所述共享内存可以包括多个内存块;
则所述将所述消息写入共享内存中,以使测试装置从所述共享内存中读取所述消息的方法可以包括:
将所述消息写入所述共享内存中的第一内存块;
若所述第一内存块被写满,则切换至向第二内存块中写入所述消息;
向测试装置发送读取指令,以使所述测试装置根据所述读取指令从所述第一内存块中读取所述消息。
其中,第一内存块及第二内存块可以指共享内存块中任一个内存块。消息服务器可以将所述消息写入所述共享内存中的第一内存块,当写入的消息写满该第一内存块时,可以向测试装置发送读取指令,以通告测试装置读取该第一内存块中的消息,同时切换当前准备写入的内存块为第二内存块,继续写入消息。通过共享内存分块,可以减少数据同步带来的阻塞,从而提升消息服务器的消息处理性能。
在实际应用中,消息服务器获取的消息中可能存在于大量冗余或者低效的消息。若对消息服务器获取的所有消息都进行记录存储,必然会导致测试装置中磁盘空间的浪费。由此,如图4所示,为本发明提供的一种测试方法的另一个实施例的流程图,该方法可以包括以下几个步骤:
步骤401,获取与消息交互方对应的消息。
步骤401的实现方式可以参见图3所示实施例中步骤301的实现方式,此处不再进行赘述。
步骤402,获取用于过滤所述消息的过滤规则。
对于消息服务器而言,其自身是无法判断消息的重要性的。因此需要业务先进行识别,然后通告给消息服务器进行过滤。具体地,消息服务器可以给定过滤文件,以便于业务将自身可过滤的消息写入该过滤文件中。其中,过滤规则的制定方可以根据实际情况而定,例如在订阅方订阅发布方发布的数据时,订阅方可以限定订阅的数据类型,则限定数据类型之外的数据都属于可过滤的数据。
在实际应用中,为了能够实现快速查找,可以基于过滤文件生成哈希表,即通过哈希表存储待过滤数据。则过滤规则可以采用哈希表查找的方式。具体地,可以消息服务器获取业务注册的过滤文件,解析该过滤文件以获得待过滤数据,并通过哈希表存储待过滤数据。
步骤403,基于所述过滤规则,对所述消息进行过滤,以将过滤后的消息存储至所述测试装置中。
基于该过滤规则,即哈希表中存储的待过滤数据,消息服务器读取当前获取的数据,并与哈希表中的数据进行比较。若该数据在哈希表中,则表明该数据属于待过滤数据,需要进行过滤,不调用记录存储命令,即无需将该数据存储至测试装置中,否则调用记录存储命令,将该数据存储至测试装置中。由此可以实现对消息进行过滤,并将过滤后的所述消息存储至所述测试装置中。以订阅方在订阅发布方发布的数据时,限定订阅的数据类型为例,哈希表中可以存储该限定数据类型之外的数据类型,从而消息服务器负责将订阅方限定数据类型之外的数据过滤掉,只将限定的数据类型的数据存储至测试装置中。
步骤404,接收所述测试装置发送的所述消息。
步骤405,将所述消息发送至预先生成的目标组件中以回放所述消息,所述目标组件是与所述消息交互方对应的交互组件。
步骤404~405的实现方式可以参见图3所示实施例中步骤303~304的实现方式,此处不再进行赘述。
本实施例中,通过在将消息进行记录存储之前,对消息进行过滤,以将过滤后的消息存储至测试装置,避免了测试装置中磁盘空间的浪费。
如图5所示,为本发明提供的一种测试方法的另一个实施例的流程图,该方法可以应用于测试装置中,该方法可以包括以下几个步骤:
步骤501,存储消息服务器发送的与消息交互方对应的消息。
步骤502,在接收到用户触发的回放指令时,根据所述回放指令中包含的所述消息交互方的标识,向所述消息服务器发送所述消息,以使所述消息服务器通过将所述消息发送至预先生成的目标组件中以回放所述消息,所述目标组件是与所述消息交互方对应的交互组件。
本实施例中,测试装置用于存储消息服务器发送的与消息交互方对应的消息,并在接收到用户触发的回放指令时,根据所述回放指令中包含的所述消息交互方的标识,向所述消息服务器发送所述消息,以便于消息服务器将从所述测试装置接收到的所述消息发送至预先生成的目标组件中以进行回放。本实施例的具体实施过程可以参照上述实施例中相应地描述说明,此处不再进行赘述。
在某些实施例中,该方法还可以包括:
在接收到所述消息服务器发送的读取指令时,从共享内存中读取所述消息,其中,所述共享内存用于存储所述消息服务器写入的所述消息。
可选地,共享内存可以包括多个内存块及用于指示各内存块是否被写满的标识信息,则在接收到所述消息服务器发送的读取指令时,从共享内存中读取所述消息的方法可以包括:
在接收到所述消息服务器发送的读取指令时,根据所述标识信息,从所述共享内存中被写满的第一内存块中读取所述消息并存储。
其中,共享内存可以包括多个内存块,指示各内存块是否被写满的标识信息可以是指示各内存块是否存储满的控制位。当所述测试装置接收到读取指令时,因为测试装置自身不能够决定从共享内存中哪一个内存块进行读取,所以需要通过用于指示各内存块是否被写满的标识信息,即用于指示各内存块是否存储满的控制位,读取已经写满的内存块。进而可以实现消息服务器将消息写入共享内存时,测试装置同时也可以从共享内存中读取消息,减少数据同步带来的阻塞,从而提升消息服务器的消息处理性能。
具体地,消息服务器可以将所述消息写入所述共享内存中的第一内存块;若所述第一内存块被写满,则切换至向第二内存块中写入所述消息,以及向所述测试装置发送携带有指示第一内存块被写满的控制位的读取指令。进一步地,当所述第二内存块被写满,则切换至向第三内存块中写入所述消息,以及向所述测试装置发送携带有指示第二内存块被写满的控制位的读取指令,以便于测试装置根据控制位指示从第二内存块读取消息。
在实际应用中,由于共享内存中内存块的数量是有限的,则各内存块都有各自对应的标识编号,并且可以按照编号的顺序进行消息写入。如若共享内存中包含4个内存块,可以将各内存块的编号设置为如1,2,3,4。则消息服务器进行消息写入时,可以按照编号的顺序,如1-2-3-4-1的顺序写入消息。测试装置也可以按照发送的控制位的顺序进行内存块的消息读取。同时,各内存块的控制位还可以包括记录当前内存块写入的数据长度,从而测试装置可以根据该数据长度读取该内存块中对应的数据,确保测试装置读取的数据是该内存块当前记录的需要被读取的数据。
在实际应用中,考虑到测试装置中存储空间的问题,无法无限量的存储消息服务器中的消息。因此,在某些实施例中,该方法还可以包括:
若存储所述消息的数量大于预设阈值,删除所述消息中存储时长最大的消息。
具体地,为了便于查找存储时长最大的消息,可以采用记录消息存储时刻的方式,计算每个消息的存储时长,并以命名的方式将消息存储时刻作为该消息的存储命名。由此,在测试装置中存储的消息的数量大于预设阈值时,可以根据消息的存储命名查找出存储时长最大的消息,并删除该存储时长最大的消息。
如图6所示,为本发明提供的一种电子设备的一个实施例的结构示意图,包括:存储器601和处理器602;所述存储器602中存储有可在所述处理器601上运行的计算机程序;所述处理器601执行所述计算机程序时实现上述实施例中的测试方法。
本实施例中,通过所述消息服务器获取与消息交互方对应的消息,将所述消息存储至所述测试装置中,记录交互进程中的消息;所述测试装置用于存储所述消息,并在接收到用户触发的回放指令时,根据所述回放指令中包含的所述消息交互方的标识,向所述消息服务器发送所述消息,以使所述消息服务器将从所述测试装置接收到的所述消息发送至预先生成的目标组件中以回放所述消息,达到使维护人员从回放过程中快速定位故障的目的。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施例的描述,本领域的技术人员可以清楚地了解到各实施例可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对传统方案做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
1.一种测试系统,其特征在于,包括:消息服务器和测试装置;
所述消息服务器,用于获取与消息交互方对应的消息,将所述消息存储至所述测试装置中,以及将从所述测试装置接收到的所述消息发送至预先生成的目标组件中以回放所述消息,所述目标组件是与所述消息交互方对应的交互组件;
所述测试装置,用于存储所述消息;以及在接收到用户触发的回放指令时,根据所述回放指令中包含的所述消息交互方的标识,向所述消息服务器发送所述消息。
2.根据权利要求1所述的系统,其特征在于,所述系统还包括:共享内存;
所述消息服务器,用于将所述消息写入所述共享内存中;
所述测试装置,用于从所述共享内存中读取所述消息,并存储所述消息。
3.根据权利要求2所述的系统,其特征在于,所述消息服务器,用于将所述消息写入所述共享内存中的第一内存块;若所述第一内存块被写满,则切换至向第二内存块中写入所述消息,以及
向所述测试装置发送读取指令;
所述测试装置,用于接收所述读取指令,以及根据所述读取指令从所述第一内存块中读取所述消息。
4.根据权利要求1所述的系统,其特征在于,所述测试装置,还用于若所述测试装置存储所述消息的数量大于预设阈值,删除所述消息中存储时长最大的消息。
5.根据权利要求1所述的系统,其特征在于,所述消息服务器,还用于获取过滤规则,以及基于所述过滤规则对所述消息进行过滤,将过滤后的消息存储至所述测试装置中。
6.一种测试方法,其特征在于,应用于消息服务器中,包括:
获取与消息交互方对应的消息;
将所述消息存储至测试装置中;
接收所述测试装置发送的所述消息;
将所述消息发送至预先生成的目标组件中以回放所述消息,所述目标组件是与所述消息交互方对应的交互组件。
7.根据权利要求6所述的方法,其特征在于,所述将所述消息存储至测试装置中,包括:
将所述消息写入共享内存中,以使测试装置从所述共享内存中读取所述消息,并存储所述消息。
8.根据权利要求7所述的方法,其特征在于,所述共享内存包括多个内存块;
所述将所述消息写入共享内存中,以使测试装置从所述共享内存中读取所述消息,包括:
将所述消息写入所述共享内存中的第一内存块;
若所述第一内存块被写满,则切换至向第二内存块中写入所述消息;
向所述测试装置发送读取指令,以使所述测试装置根据所述读取指令从所述第一内存块中读取所述消息。
9.根据权利要求6所述的方法,其特征在于,所述方法还包括:
获取用于过滤所述消息的过滤规则;
基于所述过滤规则,对所述消息进行过滤,以将过滤后的消息存储至所述测试装置中。
10.一种测试方法,其特征在于,应用于测试装置中,包括:
存储消息服务器发送的与消息交互方对应的消息;
在接收到用户触发的回放指令时,根据所述回放指令中包含的所述消息交互方的标识,向所述消息服务器发送所述消息,以使所述消息服务器通过将所述消息发送至预先生成的目标组件中以回放所述消息,所述目标组件是与所述消息交互方对应的交互组件。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
在接收到所述消息服务器发送的读取指令时,从共享内存中读取所述消息,所述共享内存用于存储所述消息服务器写入的所述消息。
12.根据权利要求11所述的方法,其特征在于,所述共享内存包括多个内存块及用于指示各内存块是否被写满的标识信息;
所述在接收到所述消息服务器发送的读取指令时,从共享内存中读取所述消息,包括:
在接收到所述消息服务器发送的读取指令时,根据所述标识信息,从所述共享内存中被写满的第一内存块中读取所述消息。
13.根据权利要求10所述的方法,其特征在于,所述方法还包括:
若存储所述消息的数量大于预设阈值,删除所述消息中存储时长最大的消息。
14.一种电子设备,其特征在于,包括存储器、处理器;所述存储器中存储有可在所述处理器上运行的计算机程序;所述处理器执行所述计算机程序时实现上述权利要求6至13任一项所述的测试方法。
15.一种具有处理器可执行的非易失的程序代码的计算机可读介质,其特征在于,所述程序代码使所述处理器执行所述权利要求6至13任一项所述的测试方法。
技术总结