基于MQTT的分布式自动化软件测试方法及系统与流程

文档序号:23651233发布日期:2021-01-15 13:47阅读:116来源:国知局
基于MQTT的分布式自动化软件测试方法及系统与流程

本发明属于软件测试领域,更具体地,涉及一种基于mqtt的分布式自动化软件测试方法及系统。



背景技术:

软件测试是指通过手工或自动化的手段来运行或测定某个软件产品系统的过程,其目的在于检测软件产品是否满足规定的需求,或者弄清楚预期结果与实际结果之间的差别。

近年来,随着分布式技术与计算机网络的高速发展,自动化软件测试技术得到了长足的发展与进步,呈现出逐步取代手工软件测试的趋势。现有的自动化软件测试以分布式测试为主,分布式测试是指通过局域网和internet,把分布于不同地点、独立完成特定功能的测试计算机连接起来,以达到测试资源共享、分散操作、集中管理、协同工作、负载均衡、测试过程监控等目的的计算机网络测试。

现有的分布式自动化软件测试方法通常将待执行的测试方案所涉及的多个测试用例分配到多台客户端同时进行自动化测试,以缩短测试总耗时,提高测试效率。然而,在分配测试用例的过程中,现有的分布式自动化软件测试方法只是简单地根据客户端的数量将所有测试用例分为多组,每个测试用例组内的测试用例随机筛选,测试用例之间并不具有依赖关系,彼此之间具有依赖关系的两个测试用例很可能被分到两个测试用例组中,进而被分配到不同的客户端中进行测试。然而,彼此之间具有依赖关系的多个测试用例是无法在各自的客户端进行并行测试的,要根据其间的依赖关系先后进行测试,这无疑会增加测试耗时,影响测试效率。

另一方面,现有的分布式自动化软件测试方法通常采用重量级的应用层通信协议来实现服务器端与客户端之间的通信,部署于测试机上的通信服务器占用过多的系统资源和网络带宽,进而影响测试用例的执行,从而导致测试耗时的增加以及测试效率的降低。



技术实现要素:

本发明的目的在于解决现有分布式自动化软件测试方法的耗时长,效率低的问题。

为了实现上述目的,本发明提供一种基于mqtt的分布式自动化软件测试方法及系统。

根据本发明的第一方面,提供了一种基于mqtt的分布式自动化软件测试方法,该方法包括以下步骤:

服务器端将测试方案涉及的多个测试用例划归为多个测试任务,每个测试任务所包含的多个测试用例之间具有依赖关系且基于该依赖关系形成测试用例队列;

服务器端根据执行优先级对所述多个测试任务进行排序,得到测试任务队列;

服务器端依次将测试任务队列中的每个测试任务发送至客户端集群中处于空闲状态的客户端;

客户端依次执行其接收到的测试任务所包含的测试用例队列中的每个测试用例;

服务器端与每个客户端之间的通信均遵循mqtt协议。

作为优选的是,所述服务器端将测试方案涉及的多个测试用例划归为多个测试任务,包括:

服务器端对测试方案进行解析,以获取测试方案涉及的多个测试用例之间的依赖关系,并将彼此之间具有依赖关系的多个测试用例划为一个测试任务;

基于测试用例之间的依赖关系,对每个测试任务所包含的多个测试用例进行排序,得到测试用例队列。

作为优选的是,测试任务的执行优先级的确定方法包括:

服务器端基于上游服务器获取每个测试任务所包含的每个测试用例的经验执行耗时,根据每个测试任务所包含的每个测试用例的经验执行耗时确定每个测试任务的经验执行耗时;

服务器端根据每个测试任务的经验执行耗时确定该测试任务的执行优先级,测试任务的经验执行耗时与执行优先级正相关。

作为优选的是,客户端状态的确定方法包括:

服务器端同时向客户端集群中的每个客户端发送状态反馈指令;

客户端根据接收到的状态反馈指令将自身的当前状态反馈至服务器端,所述当前状态包括空闲和忙碌。

作为优选的是,所述客户端依次执行其接收到的测试任务所包含的测试用例队列中的每个测试用例,包括:

在客户端执行测试用例的过程中,客户端实时将测试信息反馈至服务器端;

当客户端完成当前测试任务时,客户端将测试结果和每个测试用例的执行信息反馈至服务器端。

作为优选的是,所述分布式自动化软件测试方法还包括:

服务器端根据每个测试用例的执行信息获取该测试用例的实际执行耗时,并将该测试用例的实际执行耗时与经验执行耗时进行比对;

当服务器端比对出一测试用例的实际执行耗时不等于该测试用例的经验执行耗时时:

服务器端基于该测试用例的实际执行耗时对当前测试任务队列中的包含有该测试用例的测试任务的经验执行耗时进行修改,以重新确定该测试任务的执行优先级,并在该测试任务的执行优先级发生变化时对当前测试任务队列进行调整。

作为优选的是,所述分布式自动化软件测试方法还包括:

当服务器端检测到所有测试任务均已完成时,服务器端根据接收到的实时测试信息和测试任务的测试结果生成最终的测试结果和测试报告;

对外显示最终测试结果和测试报告;

将与对应经验执行耗时不相等的测试用例的实际执行耗时上传至上游服务器;

上游服务器根据接收到的测试用例的实际执行耗时对其保存的该测试用例的经验执行耗时进行更新。

根据本发明的第二方面,提供了一种基于mqtt的分布式自动化软件测试系统,以实现上述基于mqtt的分布式自动化软件测试方法,该系统包括软件系统和硬件系统;

所述软件系统包括服务器端、构成客户端集群的多个客户端和主mqtt代理服务器端;

所述硬件系统包括测试服务器和多个测试机;

测试服务器用于同时为服务器端和主mqtt代理服务器端提供运行环境;

测试机用于为对应的客户端提供运行环境;

服务器端和每个客户端均接入主mqtt代理服务器端。

作为优选的是,每个客户端均包括测试用例运行服务端和测试终端;

所述软件系统还包括多个从mqtt代理服务器端,所述多个从mqtt代理服务器端分别部署于多个测试机中;

同一客户端的测试用例运行服务端和测试终端均接入对应的从mqtt代理服务器端,测试用例运行服务端依次将其接收到的测试任务所包含的测试用例队列中的每个测试用例经从mqtt代理服务器端发送至测试终端;

测试终端用于执行测试用例。

作为优选的是,服务器端包括测试管理端和信息显示端;

信息显示端用于在所有测试任务均已完成时显示测试管理端生成的最终测试结果和测试报告,以及在测试过程中实时显示客户端反馈的测试信息;

测试管理端用于实现服务器端具有的除信息显示以外的功能。

本发明的有益效果在于:

本发明的基于mqtt的分布式自动化软件测试方法,一方面,服务器端将彼此之间具有依赖关系的多个测试用例分到同一测试用例组,即测试任务,并根据测试任务的执行优先级依次将每个测试任务发送至空闲的客户端,进而实现测试用例的分布式执行。由于分布式执行的测试用例之间不存在依赖关系,客户端集群中的多个客户端可以并行这些执行测试用例。因此,与现有的分布式自动化软件测试方法相比,本发明的基于mqtt的分布式自动化软件测试方法的耗时更少,效率更高。

另一方面,服务器端与每个客户端之间的通信均遵循mqtt协议。由于mqtt协议属于轻量级的应用层通信协议,与现有的重量级应用层通信协议相比,部署于测试机上的mqtt代理服务器占用的系统资源和带宽均较少。因此,与现有的分布式自动化软件测试方法相比,采用本发明的基于mqtt的分布式自动化软件测试方法能够更进一步地缩短测试耗时,提高测试效率。

本发明的基于mqtt的分布式自动化软件测试系统,用于实现上述基于mqtt的分布式自动化软件测试方法,与上述基于mqtt的分布式自动化软件测试方法具有相同的有益效果。

本发明的其它特征和优点将在随后具体实施方式部分予以详细说明。

附图说明

通过结合附图对本发明示例性实施方式进行更详细的描述,本发明的上述以及其它目的、特征和优势将变得更加明显,其中,在本发明示例性实施方式中,相同的参考标号通常代表相同部件。

图1示出了根据本发明的实施例的基于mqtt的分布式自动化软件测试方法的实现流程图。

图2示出了根据本发明的实施例的基于mqtt的分布式自动化软件测试系统的结构示意图。

图3示出了根据本发明的实施例的测试任务队列的数据结构图。

具体实施方式

下面将更详细地描述本发明的优选实施方式。虽然以下描述了本发明的优选实施方式,然而应该理解,可以以各种形式实现本发明而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本发明更加透彻和完整,并且能够将本发明的范围完整地传达给本领域的技术人员。

实施例:mqtt(messagequeuingtelemetrytransport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于tcp/ip协议上,由ibm在1999年发布。mqtt最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。

因此,mqtt具有以下优点:

1、mqtt是一项成熟的技术,具有较高的可靠性和非常好的技术支持。

2、mqtt客户端部署到测试终端上运行只需要占用极少的资源和带宽,避免影响测试用例执行。

基于mqtt技术可以实现测试管理端、信息显示端和客户端之间的可靠交互。

图1示出了本实施例的基于mqtt的分布式自动化软件测试方法的实现流程图。参照图1,本实施例的基于mqtt的分布式自动化软件测试方法包括以下步骤:

步骤s100、服务器端将测试方案涉及的多个测试用例划归为多个测试任务,每个测试任务所包含的多个测试用例之间具有依赖关系且基于该依赖关系形成测试用例队列;

步骤s200、服务器端根据执行优先级对所述多个测试任务进行排序,得到测试任务队列;

步骤s300、服务器端依次将测试任务队列中的每个测试任务发送至客户端集群中处于空闲状态的客户端;

步骤s400、客户端依次执行其接收到的测试任务所包含的测试用例队列中的每个测试用例;

本实施例中,服务器端与每个客户端之间的通信均遵循mqtt协议。服务器端从上游服务器将测试方案涉及的测试用例下载到本地,上游服务器为svn服务器。服务器端根据测试方案中测试用例的运行信息确定测试用例之间的依赖关系。

本实施例中,客户端集群中的多个客户端并行执行相应测试任务中的相应测试用例。

本实施例的步骤s100所述的服务器端将测试方案涉及的多个测试用例划归为多个测试任务,具体包括:

步骤s110、服务器端对测试方案进行解析,以获取测试方案涉及的多个测试用例之间的依赖关系,并将彼此之间具有依赖关系的多个测试用例划为一个测试任务;

步骤s120、基于测试用例之间的依赖关系,对每个测试任务所包含的多个测试用例进行排序,得到测试用例队列。

本实施例中,服务器端根据测试方案加载测试用例,将彼此之间具有依赖关系的测试用例挂载到同一个链表中,这里的链表也就是测试任务。在所有测试任务均划归完成后,将所有测试任务存储在数组中。本实施例的测试用例队列的数据结构如图3所示。

在本实施例的步骤s200中,服务器端确定测试任务的执行优先级的方法包括:

步骤s210、服务器端基于上游服务器获取每个测试任务所包含的每个测试用例的经验执行耗时,根据每个测试任务所包含的每个测试用例的经验执行耗时确定每个测试任务的经验执行耗时;

步骤s220、服务器端根据每个测试任务的经验执行耗时确定该测试任务的执行优先级,测试任务的经验执行耗时与执行优先级正相关。

本实施例中,服务器端从上游的svn服务器中获取目标测试用例的经验执行耗时数据,该经验执行耗时数据为目标测试用例的执行耗时的历史经验数据,被预存在svn服务器中。一个测试任务的经验执行耗时等于该测试任务所包含的测试用例的经验执行耗时之和。一个测试任务的经验执行耗时越长,该测试任务的执行优先级越高,其在测试任务队列中的位置也就越靠前。

在本实施例的步骤s300中,服务器端确定客户端的当前状态的方法包括:

步骤s310、服务器端同时向客户端集群中的每个客户端发送状态反馈指令;

步骤s320、客户端根据接收到的状态反馈指令将自身的当前状态反馈至服务器端,所述当前状态包括空闲和忙碌。

本实施例的步骤s400所述的客户端依次执行其接收到的测试任务所包含的测试用例队列中的每个测试用例,具体包括:

步骤s410、在客户端执行测试用例的过程中,客户端实时将测试信息反馈至服务器端;

步骤s420、当客户端完成当前测试任务时,客户端将测试结果和每个测试用例的执行信息反馈至服务器端。

本实施例中,服务器端将执行优先级最高的测试任务下发至空闲客户端,客户端依次加载并执行测试任务所包含的多个测试用例,这一过程具体为:服务器端通过mqtt发送消息确认客户端的当前状态,通过网络将执行优先级最高的测试任务下发至空闲客户端,并通过mqtt发送测试启动指令至空闲客户端,空闲客户端根据接收到的测试启动指令依次加载并执行测试任务所包含的多个测试用例。

相应地,本实施例的基于mqtt的分布式自动化软件测试方法还包括以下步骤:

服务器端根据每个测试用例的执行信息获取该测试用例的实际执行耗时,并将该测试用例的实际执行耗时与经验执行耗时进行比对;

当服务器端比对出一测试用例的实际执行耗时不等于该测试用例的经验执行耗时时:

服务器端基于该测试用例的实际执行耗时对当前测试任务队列中的包含有该测试用例的测试任务的经验执行耗时进行修改,以重新确定该测试任务的执行优先级,并在该测试任务的执行优先级发生变化时对当前测试任务队列进行调整。

本实施例的基于mqtt的分布式自动化软件测试方法,在测试前,服务器端根据每个测试任务所包含的每个测试用例的经验执行耗时确定每个测试任务的经验执行耗时,进而根据每个测试任务的经验执行耗时确定该测试任务的执行优先级,以对测试任务的测试顺序进行合理规划。在测试过程中,在满足触发条件下,服务器端根据客户端反馈的测试用例执行信息对测试用例的经验执行耗时进行更新,并对相关测试任务的经验执行耗时进行更新。当测试任务的执行优先级因其经验执行耗时的更新而发生变化时,服务器端对当前测试任务队列进行相应的调整,以实现对测试任务的测试顺序的动态合理规划。

本实施例的基于mqtt的分布式自动化软件测试方法还包括以下步骤:

当服务器端检测到所有测试任务均已完成时,服务器端根据接收到的实时测试信息和测试任务的测试结果生成最终的测试结果和测试报告;

对外显示最终测试结果和测试报告;

将与对应经验执行耗时不相等的测试用例的实际执行耗时上传至上游服务器;

上游服务器根据接收到的测试用例的实际执行耗时对其保存的该测试用例的经验执行耗时进行更新。

本实施例的基于mqtt的分布式自动化软件测试方法基于相应的测试系统来实现,以下对本实施例的基于mqtt的分布式自动化软件测试系统进行说明。

图2示出了本实施例的基于mqtt的分布式自动化软件测试系统的结构示意图。参照图2,本实施例的基于mqtt的分布式自动化软件测试系统包括软件系统和硬件系统;

所述软件系统包括服务器端、构成客户端集群的多个客户端和主mqtt代理服务器端;

所述硬件系统包括测试服务器和多个测试机;

测试服务器用于同时为服务器端和主mqtt代理服务器端提供运行环境;

测试机用于为对应的客户端提供运行环境;

服务器端和每个客户端均接入主mqtt代理服务器端。

本实施例中,每个客户端均包括测试用例运行服务端和测试终端;

所述软件系统还包括多个从mqtt代理服务器端,所述多个从mqtt代理服务器端分别部署于多个测试机中;

同一客户端的测试用例运行服务端和测试终端均接入对应的从mqtt代理服务器端,测试用例运行服务端依次将其接收到的测试任务所包含的测试用例队列中的每个测试用例经从mqtt代理服务器端发送至测试终端;

测试终端用于执行测试用例。

本实施例中,服务器端包括测试管理端和信息显示端;

信息显示端用于在所有测试任务均已完成时显示测试管理端生成的最终测试结果和测试报告,以及在测试过程中实时显示客户端反馈的测试信息;

测试管理端用于实现服务器端具有的除信息显示以外的功能。

本实施例中,测试机采用计算机实现,多个测试机与测试服务器接入同一局域网中。在计算机中,需要部署一个mqttbroker,即mqtt代理服务器端,以实现测试用例运行服务端与测试终端之间的交互。

本实施例中,在各客户端并行进行测试任务的过程中,客户端实时将测试信息通过mqttbroker推送到测试管理端和信息显示端,当一客户端完成测试任务时,该客户端将测试结果及测试用例执行信息通过mqttbroker推送到测试管理端。

当所有的测试任务均执行完毕时,服务器端汇总测试结果,生成测试报告,这一过程具体为:

在测试任务均下发至客户端后,测试管理端通过mqtt消息查询所有客户端的当前状态,当所有客户端反馈的当前状态均为空闲时,判断所有的测试任务均执行完毕;

测试管理端根据测试过程中客户端推送的测试结果和实时测试信息,生成最终测试结果和测试报告,通过mqttbroker推送到信息显示端。

测试管理端将将与对应经验执行耗时不相等的测试用例的实际执行耗时上传至上游的svn服务器;

svn服务器根据接收到的测试用例的实际执行耗时对其保存的该测试用例的经验执行耗时进行更新,以作为后续测试的经验数据。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1