基于SockJS服务器的性能测试方法和性能测试系统与流程

专利2022-06-29  82


本发明涉及服务器测试领域,尤其是涉及一种基于sockjs服务器的性能测试方法、控制终端、测试终端、基于sockjs服务器的性能测试系统、存储介质及计算机设备。



背景技术:

html5新增了websocket特性,可以帮助服务器实现主动“推送”消息到客户端浏览器的功能。但由于一些浏览器缺乏对websocket的支持,越来越多的项目开始广泛使用具有兼容性的sockjs。sockjs是一个浏览器javascript库,它提供了一个连贯的、跨浏览器的javascriptapi,它在浏览器和web服务器之间创建了一个低延迟、全双工、跨域通信通道。兼容性方面,sockjs优先使用原生websocket,如果在不支持websocket的浏览器中,会自动降为轮询的方式。

对于传统的websocket服务器,业内一般使用jmeter工具或者自建工程使用websocketclient类进行性能测试。但是基于sockjs的websocket服务器,目前既没有jmeter支持、也不能通过websocketclient类来连接。唯一的做法是调用一个实现sockjs方法的html网页,让用户通过浏览器使用网页的方式和服务器建立连接。值得注意的是,单个浏览器对于websocket连接数还有限制。

如何解决浏览器对websocket连接数的限制从而达到目标的并发用户数,高效地调度多个网页同时进行测试,是摆在基于sockjs性能测试面前的大山。



技术实现要素:

有鉴于此,本申请提供了一种基于sockjs服务器的性能测试方法、控制终端、测试终端、基于sockjs服务器的性能测试系统、存储介质及计算机设备,主要目的在于解决基于sockjs服务器的性能测试无法达到目标并发用户数,从而影响测试质量和测试效率的技术问题。

根据本发明的第一个方面,提供了一种基于sockjs服务器的性能测试方法,该方法包括:

获取目标并发数和html测试脚本;

根据目标并发数和浏览器对应的websocket协议连接数上限,得到测试终端数量值;

根据测试终端数量值,分配空闲的测试终端到当前测试资源中;

根据测试终端数量值和html测试脚本生成html分发脚本,并将html分发脚本推送到测试终端上;

向测试终端发布测试的指令,以使得测试终端利用html分发脚本进行测试;

接收测试终端发送的测试数据,并根据测试数据生成测试结果。

根据本发明的第二个方面,提供了一种基于sockjs服务器的性能测试方法,其中,向测试终端发布测试的指令,以使得测试终端利用html分发脚本进行测试的方法包括:

接收控制终端推送的html分发脚本;

驱动html分发脚本,以便与被测服务器建立基于sockjs的连接;

接收控制终端发布的测试开始的指令,驱动html分发脚本,以向被测服务器发送测试请求,以及从被测服务器接收请求响应;

将测试产生的日志信息保存在消息中间件中;

消费和处理保存在消息中间件中的日志信息,以生成测试数据,并将测试数据发送给控制终端;

接收控制终端发布的测试结束的指令或等待测试时长截止,驱动html分发脚本,以断开和被测服务器基于sockjs的连接。

根据本发明的第三个方面,提供了一种控制终端,该控制终端包括:

测试任务管理模块,用于获取目标并发数和html测试脚本;

测试终端分配模块,用于根据目标并发数和浏览器对应的websocket协议连接数上限,得到测试终端数量值,以及根据测试终端数量值,分配空闲的测试终端到当前测试资源中;

测试脚本推送模块,用于根据测试终端数量值和html测试脚本生成html分发脚本,并将html分发脚本推送到测试终端上;

测试指令收发模块,用于向测试终端发布测试的指令,以使得测试终端利用html分发脚本进行测试;

测试数据保存模块,用于接收测试终端发送的测试数据,并根据测试数据生成测试结果。

根据本发明的第四个方面,提供一种测试终端,该测试终端包括:

测试脚本接收模块,用于接收控制终端推送的html分发脚本;

测试脚本驱动模块,用于驱动html分发脚本,以便与被测服务器建立基于sockjs的连接,向被测服务器发送测试请求,从被测服务器接收请求响应,以及断开与被测服务器基于sockjs的连接;

测试指令收发模块,用于接收控制终端发布的测试开始的指令,以及接收控制终端发布的测试结束的指令;

日志信息处理模块,用于将测试产生的日志信息保存在消息中间件中,以及消费和处理保存在消息中间件中的日志信息,以生成测试数据;

测试结果发送模块,用于将测试数据发送给控制终端。

根据本发明的第五个方面,提供了一种基于sockjs服务器的性能测试系统,该系统包括至少一台上述的控制终端和至少一台上述的测试终端。

根据本发明的第六个方面,提供了一种存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述基于sockjs服务器的性能测试方法。

根据本发明的第七个方面,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述基于sockjs服务器的性能测试方法。

本发明提供的一种基于sockjs服务器的性能测试系统包括了至少一个控制终端和至少一个测试终端,其中,控制终端和测试终端可以分别执行基于sockjs服务器的性能测试方法,来实现测试任务的统一调度,使测试任务的全过程可以实现自动化,节省了人力物力,提升了测试的准确度和效率,另外,控制终端执行的基于sockjs服务器的性能测试方法可以根据目标并发数,自动分配测试终端的数量,生成相应数量的html分发脚本,并将html分发脚本推送到测试终端上,使得测试终端可以利用html分发脚本进行测试,该方法实现了基于sockjs服务器多并发数的测试要求,提升了sockjs服务器性能测试质量和测试效率。

上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1示出了本发明实施例提供的一种基于sockjs服务器的性能测试方法的流程示意图;

图2示出了本发明实施例提供的另一种基于sockjs服务器的性能测试方法的流程示意图;

图3示出了本发明实施例提供的又一种基于sockjs服务器的性能测试方法的流程示意图;

图4示出了本发明实施例提供的一种控制终端的结构示意图;

图5示出了本发明实施例提供的一种测试终端的结构示意图;

图6示出了本发明实施例提供的一种基于sockjs服务器的性能测试系统的结构示意图;

图7示出了本发明实施例提供的一种html测试脚本的结构示意图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

本申请实施例针对基于sockjs服务器的性能测试无法达到目标并发用户数,影响了测试质量和测试效率的问题,提出了一种基于sockjs服务器的性能测试系统,该性能测试系统包括至少一台控制终端和至少一台测试终端,通过该系统,可以实现针对基于sockjs服务器的测试任务的统一调度。在本实施例中,基于sockjs服务器的性能测试系统可以采用“1 n”模式,即系统内包含一台控制终端和多台测试终端,其中,控制终端可以通过socket长连接的方式管理所有测试终端,而每台测试终端相对独立,即各测试终端之间无交互,然后,每台测试终端可以与基于sockjs的服务器通过websocket协议进行通讯。

在一个实施例中,如图1所示,提供了一种基于sockjs服务器的性能测试方法,以该方法应用于上述实施例中的控制终端为例,包括以下步骤:

101、获取目标并发数和html测试脚本。

其中,目标并发数指的是同一时间内用户与被测服务器建立连接的数量;html(hypertextmarkuplanguage)即超文本标记语言,是一种标识性的语言,它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的internet资源连接为一个逻辑整体;测试脚本(testingscript)指的是自动执行测试过程的计算机可读指令,它可以被创建或使用测试自动化工具自动生成,或用编程语言编程来完成,也可综合前三种方法来完成;html测试脚本指的是用html语言编写的测试脚本,包含有测试规则、测试时长和连接信息等测试信息。

具体的,控制终端可以作为用户交互的界面,获取到具体的测试需求,该测试需求包括目标并发数和html测试脚本,在本实施例中,目标并发数和html测试脚本可以由用户输入,也可以根据测试参数自动生成。

102、根据目标并发数和浏览器对应的websocket协议连接数上限,得到测试终端数量值。

具体的,控制终端可以通过用户输入的方式直接获取测试终端数量值,也可以根据目标并发数和浏览器对应的websocket协议连接数上限自动生成测试终端数量值。其中,自动生成测试终端数据量值的方法为:将目标并发数和浏览器对应的websocket协议连接数上限相除,得到第一数量值,若第一数量值为整数,则取第一数量值作为测试终端数量值,若第一数量值为小数,则将第一数量值向上取整的值作为测试终端数量值。具体的,假设获取的目标并发数为a,获取的浏览器对应的websocket协议连接数上限为b,则生成的测试终端数量值为n=a/b,如果n为整数,则n即为测试终端数量值,如果n不为整数,则将n向上取整,将大于等于n的最接近n的整数作为测试终端数量值。例如,目标并发数为100,待测浏览器对websocket连接数上限为32,则测试终端数量值为n=100/32=3.125,将n向上取整,得到测试终端数量值为4。

103、根据测试终端数量值,分配空闲的测试终端到当前测试资源中。

具体的,控制终端可以在测试终端资源池中搜寻与测试终端数量值数量相同的使用状态为空闲的测试终端,并将其分配当前测试资源中。在本实施例中,控制终端可以采用轮询算法,依次检查测试终端资源池中每一台测试终端的使用状态,当检测到资源池中有使用状态为空闲的测试终端时,向其发送冻结指令,并将该测试终端纳入到当次测试资源中,当当次测试资源中的测试终端的数量与测试终端数量值相等时,停止轮询,测试终端分配完毕。

104、根据测试终端数量值和html测试脚本生成html分发脚本,并将html分发脚本推送到测试终端上。

具体的,控制终端可以根据测试终端数量值,将html测试脚本中的连接信息分割为与测试终端数量值数量相同的份数,并保留html测试脚本中的测试规则和测试时长,然后根据测试规则、测试时长以及分割后的连接信息生成与测试终端数量值数量相同的html分发脚本,最后将该html分发脚本推送到每一台测试终端上。例如,html测试脚本中包含100个连接信息,且测试终端数量值为4,则控制终端会将这100个连接信息分为4份,并结合html测试脚本中的测试规则和测试时长生成4个html分发脚本,需要说明的是,连接信息的分割方法可以是平均的,也可以是不平均的,且分割后的每个html分发脚本中的连接信息互不重复且连接信息的数量不超过浏览器对应的websocket协议连接数上限,例如,在本例中,生成的4个html分发脚本中每个html分发脚本均可以包含25个互不重复的连接信息。

105、向测试终端发布测试的指令,以使得测试终端利用html分发脚本进行测试。

具体的,在测试的开始阶段和结束阶段,控制终端可以统一向所有测试终端发布测试开始的指令或测试结束的指令,使得所有测试终端能够根据指令驱动html分发脚本开始进行测试或强制结束测试。

106、接收测试终端发送的测试数据,并根据测试数据生成测试结果。

具体的,控制终端可以实时接收测试终端发送的测试数据,也可以在测试结束后统一接收测试终端发送的测试数据,然后,控制终端可以将接收到的测试数据保存在数据库中,进一步的,控制终端还可以将测试数据从数据库中提取出来,并对该测试数据进行处理然后展现在界面上,或者将实时接收到的测试数据进行处理后实时展示在控制终端的界面上。

本实施例提供的基于sockjs服务器的性能测试方法,首先获取了目标并发数和html测试脚本,然后根据目标并发数自动生成了测试终端数量值并自动分配了空闲的测试终端到当前测试资源中,最后根据html测试脚本自动生成相应数量的html分发脚本,并将html分发脚本推送到测试终端上,使得测试终端可以利用html分发脚本进行测试,本实施例提供的基于sockjs服务器的性能测试方法实现了sockjs服务器多并发数的测试要求,提升了sockjs服务器性能测试质量和测试效率。

进一步的,作为上述实施例具体实施方式的细化和扩展,为了完整说明本实施例的实施过程,提供了基于sockjs服务器的性能测试方法,以该方法应用于上述实施例中的控制终端为例,如图2所示,该方法包括以下步骤:

201、获取测试参数,并根据测试参数,生成html测试脚本。

其中,测试参数包括目标并发数、连接参数、测试时长、业务数据和响应断言,具体的,连接参数可以包括用户登录名、登录名对应的密码以及被测服务器的ip地址等;测试时长为测试持续的时间,根据该参数,测试终端可以在未接到控制终端发布的结束测试的指令之前自动停止测试;业务数据指的是带有具体场景的测试数据,使得该测试数据更接近真实的场景;响应断言指的是测试结果的预测,根据该参数,可以分析测试结果是否正确。

具体的,控制终端可以首先根据目标并发数和连接参数,生成与目标并发数数量相同的连接信息,然后,根据业务数据和响应断言,生成测试规则,最后,根据连接信息、测试规则和测试时长,生成html测试脚本。

在本实施例中,如图7所示,生成的html测试脚本共包括6个功能模块,分别为脚本参数维护模块、多线程管理模块、连接管理模块、发送测试数据模块、接收响应结果模块和打印日志模块。其中,脚本参数维护模块可用于保存测试参数,在测试开始之后,脚本参数维护模块可以将测试参数发送给其他模块,以使其他模块可以根据对应的测试参数执行相应的动作;多线程管理模块可用于根据目标并发数参数开辟相应数量的线程,以模拟多用户与被测服务器通讯的场景;连接管理模块可用户根据登录名和登录名对应的密码等用户信息与被测服务器建立连接;接收响应结果模块可用于接收响应数据,并根据响应断言参数对该响应数据进行响应断言;打印日志模块可将测试的全过程,包括建立连接的过程、发送测试数据的过程、接收响应数据的过程以及断开连接的过程生成日志信息,并将该日志信息保存在消息中间件中等待处理。

202、获取目标并发数,并根据目标并发数和浏览器对应的websocket协议连接数上限,得到测试终端数量值。

具体的,控制终端可以通过用户输入的方式直接获取测试终端数量值,也可以根据目标并发数和浏览器对应的websocket协议连接数上限自动生成测试终端数量值。其中,自动生成测试终端数据量值的方法为:将目标并发数和浏览器对应的websocket协议连接数上限相除,得到第一数量值,若第一数量值为整数,则取第一数量值作为测试终端数量值,若第一数量值为小数,则将第一数量值向上取整的值作为测试终端数量值。具体的,假设获取的目标并发数为a,获取的浏览器对应的websocket协议连接数上限为b,则生成的测试终端数量值为n=a/b,如果n为整数,则n即为测试终端数量值,如果n不为整数,则将n向上取整,将大于等于n的最接近n的整数作为测试终端数量值。例如,目标并发数为100,待测浏览器对websocket连接数上限为32,则测试终端数量值为n=100/32=3.125,将n向上取整,得到测试终端数量值为4。

203、根据测试终端数量值,分配空闲的测试终端到当前测试资源中。

具体的,控制终端可以在测试终端资源池中搜寻与测试终端数量值数量相同的使用状态为空闲的测试终端,并将其分配当前测试资源中。在本实施例中,控制终端可以采用轮询算法,依次检查测试终端资源池中每一台测试终端的使用状态,当检测到资源池中有使用状态为空闲的测试终端时,向其发送冻结指令,并将该测试终端纳入到当次测试资源中,当当次测试资源中的测试终端的数量与测试终端数量值相等时,停止轮询,测试终端分配完毕。

204、根据测试终端数量值和html测试脚本生成html分发脚本,并将html分发脚本推送到测试终端上。

具体的,控制终端可以根据测试终端数量值,将html测试脚本中的连接信息分割为与测试终端数量值数量相同的份数,并保留html测试脚本中的测试规则和测试时长,然后根据测试规则、测试时长以及分割后的连接信息生成与测试终端数量值数量相同的html分发脚本,最后将该html分发脚本推送到每一台测试终端上。例如,html测试脚本中包含100个连接信息,且测试终端数量值为4,则控制终端会将这100个连接信息分为4份,并结合html测试脚本中的测试规则和测试时长生成4个html分发脚本,需要说明的是,连接信息的分割方法可以是平均的,也可以是不平均的,且分割后的每个html分发脚本中的连接信息互不重复且连接信息的数量不超过浏览器对应的websocket协议连接数上限,例如,在本例中,生成的4个html分发脚本中每个html分发脚本均可以包含25个互不重复的连接信息。

205、向测试终端发布测试开始的指令和测试结束的指令。

具体的,在测试的开始阶段和结束阶段,控制终端可以统一向所有测试终端发布测试开始的指令或测试结束的指令,使得所有测试终端能够根据指令驱动html分发脚本开始进行测试或强制结束测试。

206、接收测试终端发送的测试数据,并将测试数据保存在数据库中。

具体的,控制终端可以实时接收测试终端发送的测试数据,也可以在测试结束后统一接收测试终端发送的测试数据,然后,控制终端可以将接收到的测试数据保存在数据库中。

207、根据测试数据生成测试结果,并展示测试结果。

具体的,控制终端可以将测试数据从数据库中提取出来,并对该测试数据进行处理然后展现在界面上,也可以将实时接收到的测试数据进行处理后实时展示在控制终端的界面上。

本实施例通过自动生成具有多并发测试功能的html测试脚本,将原有的单用户连接、单独发送消息、单独接收响应数据改造成为多用户并发连接、多用户发送消息和多用户接收响应数据的模式,使得sockjs服务器的性能测试更接近于真实的多用户并发的应用场景,提高了sockjs服务器的测试质量和测试效率。另外,生成的html测试脚本还可以将测试全过程通过日志信息的方式保存下来,使得用户可以非常便利的追踪测试的进程以及查找测试中出现的问题,进一步提高了测试质量和测试效率。

在另一个实施例中,如图3所示,还提供了一种基于sockjs服务器的性能测试方法,该方法也是步骤105的具体展示,以该方法应用于上述实施例中的测试终端为例,包括以下步骤:

301、接收控制终端推送的html分发脚本。

具体的,测试终端可以接收控制终端推送的html分发脚本,并将该html分发脚本保存在测试终端的磁盘上。

302、驱动html分发脚本,以便与被测服务器建立基于sockjs的连接。

具体的,测试终端可以通过web驱动技术,调用html分发脚本中的javascript的方法与被测服务器建立基于sockjs的连接,其中,调用顺序、调用参数、调用时间由html分发脚本中的测试参数决定。

303、接收控制终端发布的测试开始的指令,驱动html分发脚本,以向被测服务器发送测试请求,以及从被测服务器接收请求响应。

具体的,测试终端可以在接收到控制终端发布的测试开始的指令之后,驱动html分发脚本,以向被测服务器发送测试请求,然后从被测服务器接收响应数据,发送测试请求和接收响应数据的过程可以持续到测试结束。

304、将测试产生的日志信息保存在消息中间件中。

具体的,测试终端驱动html分发脚本开始进行测试之后,会实时生成一系列的日志信息,包括建立连接的日志信息、发送测试数据的的日志信息、接收响应数据的日志信息以及断开连接的日志信息,测试终端可以将所有的日志信息统一保存在消息中间件中。

305、消费和处理保存在消息中间件中的日志信息,以生成测试数据,并将测试数据发送给控制终端。

具体的,测试终端可以通过消费和处理消息中间件中的日志信息,将原始的测试数据加工为有效的测试数据,如实际并发数、响应时间、响应成功率、出错详情等,例如,原始的测试数据为:

{"time":"time1","user":"user1","action":"send","content":"aaaa"}和

{"time":"time2","user":"user2","action":"receive","content":"bbbb"},

处理为有效的测试数据为:

{"time":"time2","user":"user2","key":"response","value":"time2-time1"}。

再例如,原始的测试数据为:

{"time":"time1","user":"user1","action":"receive","content":"500-internalerror"},

处理为有效的测试数据为:

{"time":"time1","user":"user1","key":"success","value":"false"}。

306、接收控制终端发布的测试结束的指令或等待测试时长截止,驱动html分发脚本,以断开和被测服务器基于sockjs的连接。

具体的,测试终端可以在接收控制终端发布的测试结束的指令时强制停止测试,也可以在测试时长截止的时候自动停止测试,在接收到测试结束的指令或测试时长截止时,测试终端会驱动html分发脚本,以断开和被测服务器基于sockjs的连接。然后,测试终端会将日志信息处理后得到的测试数据发送给控制终端,并在所有数据发送完毕后,自动删除html分发脚本和日志信息,进入空闲状态。

进一步的,作为图1、图2所示方法的具体实现,本实施例提供了一种控制终端,如图4所示,该控制终端包括:测试任务管理模块41、测试终端分配模块42、测试脚本推送模块43、测试指令收发模块44和测试数据保存模块45,其中:

测试任务管理模块41,可用于获取目标并发数和html测试脚本;

测试终端分配模块42,可用于根据目标并发数和浏览器对应的websocket协议连接数上限,得到测试终端数量值,以及根据测试终端数量值,分配空闲的测试终端到当前测试资源中;

测试脚本推送模块43,可用于根据测试终端数量值和html测试脚本生成html分发脚本,并将html分发脚本推送到测试终端上;

测试指令收发模块44,可用于向测试终端发布测试的指令,以使得测试终端利用html分发脚本进行测试;

测试数据保存模块45,可用于接收测试终端发送的测试数据,并根据测试数据生成测试结果。

在具体的应用场景中,控制终端还包括测试参数获取模块,该测试参数获取模块具体可用于获取测试参数,并根据测试参数,生成html测试脚本,测试参数包括目标并发数、连接参数、测试时长、业务数据和响应断言;其中,根据测试参数生成html测试脚本,包括:根据目标并发数和连接参数,生成与目标并发数数量相同的连接信息;根据业务数据和响应断言,生成测试规则;根据连接信息、测试规则和测试时长,生成html测试脚本。

在具体的应用场景中,测试脚本推送模块43还可用于根据测试终端数量值,将html测试脚本中的连接信息分割为与测试终端数量值数量相同的份数;保留html测试脚本中的测试规则和测试时长;根据测试规则、测试时长以及分割后的连接信息生成与测试终端数量值数量相同的html分发脚本。

在具体的应用场景中,测试终端分配模块42还可用于采用轮询算法,依次检查测试终端资源池中每一台测试终端的使用状态;向使用状态为空闲的测试终端发送冻结指令,并将测试终端纳入到当次测试资源中;当当次测试资源中的测试终端的数量与测试终端数量值相等时,停止轮询。

需要说明的是,本实施例提供的控制终端所涉及各功能单元的其它相应描述,可以参考图1、图2中的对应描述,在此不再赘述。

进一步的,作为图3所示方法的具体实现,本实施例提供了一种测试终端,如图5所示,该测试终端包括:测试脚本接收模块51、测试脚本驱动模块52、测试指令收发模块53、日志信息处理模块54和测试结果发送模块55,其中:

测试脚本接收模块51,可用于接收控制终端推送的html分发脚本;

测试脚本驱动模块52,可用于驱动html分发脚本,以便与被测服务器建立基于sockjs的连接,向被测服务器发送测试请求,从被测服务器接收请求响应,以及断开与被测服务器基于sockjs的连接;

测试指令收发模块53,可用于接收控制终端发布的测试开始的指令,以及接收控制终端发布的测试结束的指令;

日志信息处理模块54,可用于将测试产生的日志信息保存在消息中间件中,以及消费和处理保存在消息中间件中的日志信息,以生成测试数据;

测试结果发送模块55,可用于将测试数据发送给控制终端。

需要说明的是,本实施例提供的测试终端所涉及各功能单元的其它相应描述,可以参考图3中的对应描述,在此不再赘述。

进一步的,本实施还例提供了一种基于sockjs服务器的性能测试系统,如图6所示,该系统包括至少一台上述实施例中的控制终端和至少一台上述实施例中的测试终端。其中,控制终端可以通过socket长连接的方式管理所有测试终端,而每台测试终端相对独立,即各测试终端之间无交互,然后,每台测试终端可以与基于sockjs服务器通过websocket协议进行通讯。

基于上述如图1、图2和图3所示方法,相应的,本实施例还提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述如图1、图2和图3所示的基于sockjs服务器的性能测试方法。

基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景所述的方法。

基于上述如图1、图2和图3所示的方法,图4和图5所示的控制终端和测试终端的实施例以及图6所示的系统,为了实现上述目的,本实施例还提供了一种计算机设备,该计算机设备具体可以为个人计算机、服务器、智能手机、平板电脑、智能手表、或者其它网络设备等,该计算机设备包括存储介质和处理器;存储介质,用于存储计算机程序;处理器,用于执行计算机程序以实现上述如图1、图2和图3所示的基于sockjs服务器的性能测试方法。

可选的,该实体设备还可以包括用户接口、网络接口、摄像头、射频(radiofrequency,rf)电路,传感器、音频电路、wi-fi模块等等。用户接口可以包括显示屏(display)、输入单元比如键盘(keyboard)等,可选用户接口还可以包括usb接口、读卡器接口等。网络接口可选的可以包括标准的有线接口、无线接口(如wi-fi接口)等。

本领域技术人员可以理解,本实施例提供的一种计算机设备结构并不构成对该实体设备的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置。

存储介质中还可以包括操作系统、网络通信模块。操作系统是管理上述实体设备硬件和待识别软件资源的程序,支持信息处理程序以及其它待识别软件和/或程序的运行。网络通信模块用于实现存储介质内部各组件之间的通信,以及与信息处理实体设备中其它硬件和软件之间通信。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以借助软件加必要的通用硬件平台的方式来实现,也可以通过硬件实现。通过应用本申请的技术方案,控制终端和测试终端可分别执行基于sockjs服务器的性能测试方法来实现测试任务的统一调度,且控制终端可以根据目标并发数,自动分配测试终端的数量,生成相应数量的html分发脚本,并将html分发脚本推送到测试终端上,使得测试终端可以利用html分发脚本进行测试,以此实现了基于sockjs服务器多并发数的测试要求。与现有技术相比,本系统节省了人力物力,提升了测试的准确度和效率,达到了目标的测试并发数,提升了sockjs服务器性能测试质量。

本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本申请所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。

上述本申请序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本申请的几个具体实施场景,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都应落入本申请的保护范围。


技术特征:

1.一种基于sockjs服务器的性能测试方法,其特征在于,所述方法包括:

获取目标并发数和html测试脚本;

根据所述目标并发数和浏览器对应的websocket协议连接数上限,得到测试终端数量值;

根据所述测试终端数量值,分配空闲的测试终端到当前测试资源中;

根据所述测试终端数量值和所述html测试脚本生成html分发脚本,并将所述html分发脚本推送到所述测试终端上;

向所述测试终端发布测试的指令,以使得所述测试终端利用所述html分发脚本进行测试;

接收所述测试终端发送的测试数据,并根据所述测试数据生成测试结果。

2.根据权利要求1所述的方法,其特征在于,在所述获取html测试脚本之前,所述方法还包括:

获取测试参数,并根据所述测试参数,生成html测试脚本,所述测试参数包括目标并发数、连接参数、测试时长、业务数据和响应断言;

其中,所述根据所述测试参数,生成html测试脚本,包括:

根据所述目标并发数和连接参数,生成与所述目标并发数数量相同的连接信息;

根据所述业务数据和响应断言,生成测试规则;

根据所述连接信息、测试规则和测试时长,生成html测试脚本。

3.根据权利要求2所述的方法,其特征在于,所述根据所述目标并发数和浏览器对应的websocket协议连接数上限,得到测试终端数量值,包括:

将所述目标并发数和所述浏览器对应的websocket协议连接数上限相除,得到第一数量值;

若所述第一数量值为整数,则取所述第一数量值作为测试终端数量值;

若所述第一数量值为小数,则将所述第一数量值向上取整的值作为测试终端数量值;

所述根据所述测试终端数量值和所述html测试脚本生成html分发脚本,包括:

根据所述测试终端数量值,将所述html测试脚本中的连接信息分割为与所述测试终端数量值相同的份数;

保留所述html测试脚本中的测试规则和测试时长;

根据所述测试规则、测试时长以及所述分割后的连接信息,生成与所述测试终端数量值数量相同的html分发脚本。

4.根据权利要求1-3任一项所述的方法,其特征在于,所述根据所述测试终端数量值,分配空闲的测试终端到当前测试资源中,包括:

采用轮询算法,依次检查测试终端资源池中每一台测试终端的使用状态;

向使用状态为空闲的测试终端发送冻结指令,并将所述测试终端纳入到当次测试资源中;

当所述当次测试资源中的测试终端的数量与所述测试终端数量值相等时,停止轮询。

5.一种基于sockjs服务器的性能测试方法,其特征在于,所述向所述测试终端发布测试的指令,以使得所述测试终端利用所述html分发脚本进行测试,包括:

接收控制终端推送的html分发脚本;

驱动所述html分发脚本,以便与被测服务器建立基于sockjs的连接;

接收所述控制终端发布的测试开始的指令,驱动所述html分发脚本,以向所述被测服务器发送测试请求,以及从所述被测服务器接收请求响应;

将测试产生的日志信息保存在消息中间件中;

消费和处理保存在消息中间件中的日志信息,以生成测试数据,并将所述测试数据发送给所述控制终端;

接收所述控制终端发布的测试结束的指令或等待测试时长截止,驱动所述html分发脚本,以断开与所述被测服务器基于sockjs的连接。

6.一种控制终端,其特征在于,所述控制终端包括:

测试任务管理模块,用于获取目标并发数和html测试脚本;

测试终端分配模块,用于根据所述目标并发数和浏览器对应的websocket协议连接数上限,得到测试终端数量值,以及根据所述测试终端数量值,分配空闲的测试终端到当前测试资源中;

测试脚本推送模块,用于根据所述测试终端数量值和所述html测试脚本生成html分发脚本,并将所述html分发脚本推送到所述测试终端上;

测试指令收发模块,用于向所述测试终端发布测试的指令,以使得所述测试终端利用所述html分发脚本进行测试;

测试数据保存模块,用于接收所述测试终端发送的测试数据,并根据所述测试数据生成测试结果。

7.一种测试终端,其特征在于,所述测试终端包括:

测试脚本接收模块,用于接收控制终端推送的html分发脚本;

测试脚本驱动模块,用于驱动所述html分发脚本,以便与被测服务器建立基于sockjs的连接,向所述被测服务器发送测试请求,从所述被测服务器接收请求响应,以及断开与所述被测服务器基于sockjs的连接;

测试指令收发模块,用于接收控制终端发布的测试开始的指令,以及接收控制终端发布的测试结束的指令;

日志信息处理模块,用于将测试产生的日志信息保存在消息中间件中,以及消费和处理保存在消息中间件中的日志信息,以生成测试数据;

测试结果发送模块,用于将所述测试数据发送给控制终端。

8.一种基于sockjs服务器的性能测试系统,其特征在于,所述系统包括至少一台如权利要求6所述的控制终端和至少一台如权利要求7所述的测试终端。

9.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。

10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。

技术总结
本发明公开了一种基于SockJS服务器的性能测试方法、控制终端、测试终端、基于SockJS服务器的性能测试系统、存储介质及计算机设备,涉及服务器测试领域。其中基于SockJS服务器的性能测试系统包括至少一台控制终端和至少一台测试终端,其中控制终端执行的方法包括:获取目标并发数和HTML测试脚本;根据目标并发数得到测试终端数量值;根据测试终端数量值,分配空闲的测试终端到当前测试资源中;根据测试终端数量值和HTML测试脚本生成HTML分发脚本,并将HTML分发脚本推送到测试终端上,使得测试终端利用HTML分发脚本进行测试;接收测试终端发送的测试数据,并根据测试数据生成测试结果。上述方法实现了基于SockJS服务器多并发数的测试要求,提升了SockJS服务器性能测试质量和效率。

技术研发人员:虞秉磊
受保护的技术使用者:平安医疗健康管理股份有限公司
技术研发日:2020.01.17
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-26434.html

最新回复(0)