发明内容
针对相关技术中在进行压力测试时存储大量测试数据占用内存的问题,目前尚未提出有效的解决方案,为此,本发明的主要目的在于提供一种压力测试方法和装置,以解决上述问题。
为了实现上述目的,根据本发明的一个方面,提供了一种压力测试方法,该方法包括:记录响应时间和响应时间对应的请求数量,其中,响应时间为发送HTTP请求至服务器并接收到服务器回应的时间;获取服务器的处理器的当前性能参数;基于响应时间和响应时间对应的请求数量计算服务器的处理器的平均响应时间;获取处理器的预设性能参数和处理器的对于HTTP请求的预设响应时间;依据当前性能参数、预设性能参数、平均响应时间以及预设响应时间得到测试结果。
进一步地,获取服务器的处理器的当前性能参数包括:当压力测试启动之后,实时获取服务器的处理器的CPU使用率、内存占用率以及网络带宽使用率。
进一步地,依据当前性能参数、预设性能参数、平均响应时间以及预设响应时间得到测试结果包括:比较当前性能参数和预设性能参数的大小,以及平均响应时间和预设响应时间的大小,得到比较结果;读取比较结果所指示的测试结果。
进一步地,依据当前性能参数、预设性能参数、平均响应时间以及预设响应时间得到测试结果包括:计算当前性能参数和预设性能参数的第一比率,并计算平均响应时间和预设响应时间的第二比率;对第一比率和第二比率进行加权计算,得到加权参数;读取加权参数所指示的测试结果。
进一步地,基于响应时间和响应时间对应的请求数量计算服务器的处理器的平均响应时间包括:计算服务器在压力测试过程中接收到的HTTP请求的总数量Qsum,其中,Qsum=Q1+Q2+…Qn,Q1、Q2、…、Qn表示对应各个不同的响应时间的请求数量;使用总数量计算平均响应时间,t=(T1*Q1+T2*Q2+…Tn*Qn)/Qsum,其中,T1、T2、…、Tn表示各个不同的响应时间。
为了实现上述目的,根据本发明的一个方面,提供了一种压力测试装置,该装置包括:记录模块,用于记录响应时间和响应时间对应的请求数量,其中,响应时间为发送HTTP请求至服务器并接收到服务器回应的时间;第一获取模块,用于获取服务器的处理器的当前性能参数;计算模块,用于基于响应时间和响应时间对应的请求数量计算服务器的处理器的平均响应时间;第二获取模块,用于获取处理器的预设性能参数和处理器的对于HTTP请求的预设响应时间;确定模块,用于依据当前性能参数、预设性能参数、平均响应时间以及预设响应时间得到测试结果。
进一步地,第一获取模块包括:获取子模块,用于当压力测试启动之后,实时获取服务器的处理器的CPU使用率、内存占用率以及网络带宽使用率。
进一步地,确定模块包括:比较模块,用于比较当前性能参数和预设性能参数的大小,以及平均响应时间和预设响应时间的大小,得到比较结果;第一读取模块,用于读取比较结果所指示的测试结果。
进一步地,确定模块包括:第一计算子模块,用于计算当前性能参数和预设性能参数的第一比率,并计算平均响应时间和预设响应时间的第二比率;第二计算子模块,用于对第一比率和第二比率进行加权计算,得到加权参数;第二读取模块,用于读取加权参数所指示的测试结果。
进一步地,计算模块包括:第三计算子模块,用于计算服务器在压力测试过程中接收到的HTTP请求的总数量Qsum,其中,Qsum=Q1+Q2+…Qn,Q1、Q2、…、Qn表示对应各个不同的响应时间的请求数量;第四计算子模块,用于使用总数量计算平均响应时间,t=(T1*Q1+T2*Q2+…Tn*Qn)/Qsum,其中,T1、T2、…、Tn表示各个不同的响应时间。
采用本发明上述实施例,在web网站上进行压力测试时,汇总每个htttp请求的响应时间,得到响应时间和请求数量的对应关系,然后基于响应时间和响应时间对应的请求数量计算服务器的处理器的平均响应时间,并依据当前性能参数、预设性能参数、平均响应时间以及预设响应时间得到测试结果。在上述实施例中,按照一定的时间粒度给这些http请求的时间进行归类,响应时间和请求数量的数据占用恒定的内存空间,不许大量的内存,解决了现有技术中在进行压力测试时存储大量测试数据占用内存的问题,实现了占用恒定内存即可实现对服务器的压力测试的效果。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
图1是根据本发明实施例的压力测试方法的流程图,如图1所示该方法包括如下步骤:
步骤S102,记录响应时间和响应时间对应的请求数量,其中,响应时间为发送HTTP请求至服务器并接收到服务器回应的时间。
步骤S104,获取服务器的处理器的当前性能参数。
步骤S106,基于响应时间和响应时间对应的请求数量计算服务器的处理器的平均响应时间。
步骤S108,获取处理器的预设性能参数和处理器的对于HTTP请求的预设响应时间。
步骤S110,依据当前性能参数、预设性能参数、平均响应时间以及预设响应时间得到测试结果。
采用本发明上述实施例,在web网站上进行压力测试时,汇总每个htttp请求的响应时间,得到响应时间和请求数量的对应关系,然后基于响应时间和响应时间对应的请求数量计算服务器的处理器的平均响应时间,并依据当前性能参数、预设性能参数、平均响应时间以及预设响应时间得到测试结果。在上述实施例中,按照一定的时间粒度给这些http请求的时间进行归类,响应时间和请求数量的数据占用恒定的内存空间,不许大量的内存,解决了现有技术中在进行压力测试时存储大量测试数据占用内存的问题,实现了占用恒定内存即可实现对服务器的压力测试的效果。
在本发明的上述实施例,可以通过压力计数器记录响应时间和请求数量,具体地,压力计数器可以自动记录程序发送一个http请求到收到http回应的时间,该时间称为响应时间。每一个响应时间会对应一个请求数量,当有两次请求时间相同的时候,请求数量为2,之后每当新增一次请求,响应时间和之前的一次请求时间相同,那么对应的请求数量便会加1,响应时间精确到0.01ms。表1示出了响应时间和请求数量的对应关系。
表1:
响应时间(ms) |
请求数量(次) |
1.21 |
10 |
2.21 |
20 |
3.22 |
70 |
在上述实施例中,响应时间的粒度为:0.01ms(毫秒)。
具体地,在获取到响应时间和响应时间对应的请求数量之后,基于响应时间和响应时间对应的请求数量计算服务器的处理器的平均响应时间可以包括:计算服务器在压力测试过程中接收到的HTTP请求的总数量Qsum,其中,Qsum=Q1+Q2+…Qn,Q1、Q2、…、Qn表示对应各个不同的响应时间的请求数量;使用总数量计算平均响应时间,t=(T1*Q1+T2*Q2+…Tn*Qn)/Qsum,其中,T1、T2、…、Tn表示各个不同的响应时间。
例如,T(1…n)表示获取到不同的响应时间,Q(1…n)表示对应的请求数量。总请求数量Qsum=Q1+Q2+…Qn;平均响应时间=(T1*Q1+T2*Q2+…Tn*Qn)/Qsum。
根据本发明的上述实施例,获取服务器的处理器的当前性能参数可以包括:当压力测试启动之后,实时获取服务器的处理器的CPU使用率、内存占用率以及网络带宽使用率。
具体地,可以通过扩展监控模块获取处理器的性能参数。扩展监控模块监控接收压力的服务器,当压力测试程序启动后,扩展监控模块会自动启动并开始监控接收压力的服务器,该模块内置了最常用的性能指标比如:cpu使用率、内存使用量、网络带宽吞吐量、服务器并发连接数、网站请求次数等。
在本发明一个可选的实施例中,依据当前性能参数、预设性能参数、平均响应时间以及预设响应时间得到测试结果可以包括:比较当前性能参数和预设性能参数的大小,以及平均响应时间和预设响应时间的大小,得到比较结果;读取比较结果所指示的测试结果。
具体地,通过监控数据报表模块汇总从压力模块的计数器、扩展模块中输出的数据,并对这些数据进行计算,给出建议报表。
例如,获取到的预设性能参数可以为:预设CPU使用率70%;预设内存占用率50%;预设网络带宽使用率80%;预设响应时间1s等;获取到的当前CPU使用率80%;当前内存占用率40%;当前网络带宽使用率60%;平均响应时间0.9s。
上述的预设性能参数可以自定义更改。
比较当前性能参数和预设性能参数的大小,以及平均响应时间和预设响应时间的大小,得到:当前CPU使用率超过70%;当前内存占用率低于50%;当前网络带宽使用率低于80%;平均响应时间小于1s的比较结果,从数据表中读取该比较结果指示的测试结果。
在得到测试结果之后,可以依据当前性能参数、预设性能参数、平均响应时间、预设响应时间、比较结果以及测试结果生成测试报表,输出该测试报表。
在本发明的另一个可选的实施例中,依据当前性能参数、预设性能参数、平均响应时间以及预设响应时间得到测试结果可以包括:计算当前性能参数和预设性能参数的第一比率,并计算平均响应时间和预设响应时间的第二比率;对第一比率和第二比率进行加权计算,得到加权参数;读取加权参数所指示的测试结果。
例如,获取到的预设性能参数可以为:预设内存占用率50%;预设响应时间1s等;获取到的当前内存占用率40%;平均响应时间0.9s。
计算第一比率为0.8,计算第二比率为0.9,获取预设权重参数0.3和0.7,得到加权参数为:0.87。然后从数据表中读取该加权参数对应的测试结果。
数据表中可以按照加权参数的值的区间保存测试结果,如加权参数的值为[0,1]对应的测试结果可以为:服务器的性能良好。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
为了实现上述目的,根据本发明的一个方面,提供了一种压力测试装置,如图2所示,该装置可以包括:记录模块10、第一获取模块30、计算模块50、第二获取模块70以及确定模块90。
其中,记录模块10用于记录响应时间和响应时间对应的请求数量,其中,响应时间为发送HTTP请求至服务器并接收到服务器回应的时间;第一获取模块30用于获取服务器的处理器的当前性能参数;计算模块50用于基于响应时间和响应时间对应的请求数量计算服务器的处理器的平均响应时间;第二获取模块70用于获取处理器的预设性能参数和处理器的对于HTTP请求的预设响应时间;确定模块90用于依据当前性能参数、预设性能参数、平均响应时间以及预设响应时间得到测试结果。
采用本发明上述实施例,在web网站上进行压力测试时,汇总每个htttp请求的响应时间,得到响应时间和请求数量的对应关系,然后基于响应时间和响应时间对应的请求数量计算服务器的处理器的平均响应时间,并依据当前性能参数、预设性能参数、平均响应时间以及预设响应时间得到测试结果。在上述实施例中,按照一定的时间粒度给这些http请求的时间进行归类,响应时间和请求数量的数据占用恒定的内存空间,不许大量的内存,解决了现有技术中在进行压力测试时存储大量测试数据占用内存的问题,实现了占用恒定内存即可实现对服务器的压力测试的效果。
在本发明的上述实施例,可以通过压力计数器记录响应时间和请求数量,具体地,压力计数器可以自动记录程序发送一个http请求到收到http回应的时间,该时间称为响应时间。每一个响应时间会对应一个请求数量,当有两次请求时间相同的时候,请求数量为2,之后每当新增一次请求,响应时间和之前的一次请求时间相同,那么对应的请求数量便会加1,响应时间精确到0.01ms。
具体地,计算模块可以包括:第三计算子模块,用于计算服务器在压力测试过程中接收到的HTTP请求的总数量Qsum,其中,Qsum=Q1+Q2+…Qn,Q1、Q2、…、Qn表示对应各个不同的响应时间的请求数量;第四计算子模块,用于使用总数量计算平均响应时间,t=(T1*Q1+T2*Q2+…Tn*Qn)/Qsum,其中,T1、T2、…、Tn表示各个不同的响应时间。
例如,T(1…n)表示获取到不同的响应时间,Q(1…n)表示对应的请求数量。总请求数量Qsum=Q1+Q2+…Qn;平均响应时间=(T1*Q1+T2*Q2+…Tn*Qn)/Qsum。
根据本发明的上述实施例,第一获取模块可以包括:获取子模块,用于当压力测试启动之后,实时获取服务器的处理器的CPU使用率、内存占用率以及网络带宽使用率。
具体地,可以通过扩展监控模块获取处理器的性能参数。扩展监控模块监控接收压力的服务器,当压力测试程序启动后,扩展监控模块会自动启动并开始监控接收压力的服务器,该模块内置了最常用的性能指标比如:cpu使用率、内存使用量、网络带宽吞吐量、服务器并发连接数、网站请求次数等。
在本发明的一个实施例中,确定模块可以包括:比较模块,用于比较当前性能参数和预设性能参数的大小,以及平均响应时间和预设响应时间的大小,得到比较结果;第一读取模块,用于读取比较结果所指示的测试结果。
在本发明的另一个实施例中,确定模块可以包括:第一计算子模块,用于计算当前性能参数和预设性能参数的第一比率,并计算平均响应时间和预设响应时间的第二比率;第二计算子模块,用于对第一比率和第二比率进行加权计算,得到加权参数;第二读取模块,用于读取加权参数所指示的测试结果。
具体地,通过监控数据报表模块汇总从压力模块的计数器、扩展模块中输出的数据,并对这些数据进行计算,给出建议报表。
本实施例中所提供的各个模块与方法实施例对应步骤所提供的使用方法相同、应用场景也可以相同。当然,需要注意的是,上述模块涉及的方案可以不限于上述实施例一中的内容和场景,且上述模块可以运行在计算机终端或移动终端,可以通过软件或硬件实现。
从以上的描述中,可以看出,本发明实现了如下技术效果:
采用本发明上述实施例,在web网站上进行压力测试时,汇总每个htttp请求的响应时间,得到响应时间和请求数量的对应关系,然后基于响应时间和响应时间对应的请求数量计算服务器的处理器的平均响应时间,并依据当前性能参数、预设性能参数、平均响应时间以及预设响应时间得到测试结果。在上述实施例中,按照一定的时间粒度给这些http请求的时间进行归类,响应时间和请求数量的数据占用恒定的内存空间,不许大量的内存,解决了现有技术中在进行压力测试时存储大量测试数据占用内存的问题,实现了占用恒定内存即可实现对服务器的压力测试的效果。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。