一种浏览器页面压力测试方法与设备与流程

专利检索2022-05-10  11



1.本技术涉及信息技术领域,尤其涉及一种浏览器页面压力测试技术。


背景技术:

2.互联网服务供应商通常需要知道自己所提供的服务能承受的最大负载,以便据此优化用户体验。在浏览器页面压力测试过程中,需要完全模拟用户对于网页的访问操作,以便测试由浏览器发出经过各个代理以及服务的流量对于服务器的负载(即全链路负载测试)。
3.目前市场上有许多页面压力测试的方案,但是这些方案在模拟用户操作方面,几乎都是通过建立无头浏览器模拟用户的操作。对于每一个模拟的用户都需要建立一个浏览器进程,攻击发起方需要占用极多资源,动辄需要投入上百台机器。有时虽然数量上建立了许多浏览器进程,但是由于压力过大,导致浏览器解析缓慢,进而发挥不出正常状态下十分之一的性能,如此便不能有效地模拟用户的行为。


技术实现要素:

4.本技术的一个目的是提供一种浏览器页面压力测试方法与设备。
5.根据本技术的一个方面,提供了一种浏览器页面压力测试方法,其中,所述方法包括:
6.启动无头浏览器;
7.通过所述无头浏览器模拟关于目标页面的访问流程,并记录在该访问流程中所述无头浏览器发出的全部请求信息;
8.通过测试服务器在预定时间内重放所述全部请求信息。
9.进一步地,通过所述无头浏览器模拟关于目标页面的访问流程,包括:若所述目标页面需要认证,则操作所述无头浏览器完成认证过程,获取用户相关信息;通过所述无头浏览器模拟关于所述目标页面的访问流程。
10.进一步地,操作所述无头浏览器完成认证过程,包括:操作所述无头浏览器,利用预备的用户识别信息完成认证过程。
11.进一步地,通过所述无头浏览器模拟关于目标页面的访问流程,包括:通过所述无头浏览器模拟关于所述目标页面的访问流程,当所述无头浏览器呈现所述目标页面的关键信息,标志该访问流程结束。
12.进一步地,记录在该访问流程中所述无头浏览器发出的全部请求信息,包括:记录在该访问流程中所述无头浏览器发出的全部请求信息,将所述全部请求信息保存为关于所述全部请求信息的har文件。
13.进一步地,所述全部请求信息包括:全部请求的内容信息;全部请求的次序信息。
14.进一步地,通过测试服务器在预定时间内重放所述全部请求信息,还包括:所述测试服务器发出的请求流量依次通过nginx服务器、中间件、后端服务器和数据库。
15.根据本技术的另一个方面,还提供了一种浏览器页面压力测试设备,其中,所述设备包括:
16.启动模块,用于启动无头浏览器;
17.模拟访问模块,用于通过所述无头浏览器模拟关于目标页面的访问流程,并记录在该访问流程中所述无头浏览器发出的全部请求信息;
18.压力测试模块,用于通过测试服务器在预定时间内重放所述全部请求信息。
19.根据本技术的又一个方面,还提供了一种计算设备,其中,该设备包括用于存储计算机程序指令的存储器和用于执行计算机程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发所述设备执行所述的浏览器页面压力测试方法。
20.根据本技术的又一个方面,还提供了一种计算机可读介质,其上存储有计算机程序指令,所述计算机可读指令可被处理器执行以实现所述的浏览器页面压力测试方法。
21.本技术提供的方案中,先启动无头浏览器,通过所述无头浏览器模拟关于目标页面的访问流程,并记录在该访问流程中所述无头浏览器发出的全部请求信息,然后通过测试服务器在预定时间内重放所述全部请求信息。与现有技术相比,本技术可省略浏览器解析环节,同时保证有效地模拟用户的操作。本技术在产生高负荷测试流量的同时,节省了测试流量发起方的性能开销,降低了压力测试的成本。
附图说明
22.通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本技术的其他特征、目的和优点将会变得更明显:
23.图1是根据本技术实施例的一种浏览器页面压力测试方法流程图;
24.图2是根据本技术实施例的一种har文件的示意图;
25.图3是根据本技术实施例的一种浏览器页面压力测试设备示意图。
26.附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
27.下面结合附图对本技术作进一步详细描述。
28.在本技术一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
29.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
30.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的装置或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘(cd

rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
31.本技术实施例提供了浏览器页面压力测试方法,在产生高负荷测试流量的同时,节省了测试流量发起方的性能开销,降低了压力测试的成本。
32.在实际场景中,实现该方法的设备可以是用户设备、网络设备或者用户设备与网络设备通过网络相集成所构成的设备。其中,所述用户设备包括但不限于智能手机、平板电脑、个人计算机(pc)等终端设备,所述网络设备包括但不限于网络主机、单个网络服务器、多个网络服务器集或基于云计算的计算机集合等实现。在此,云由基于云计算(cloud computing)的大量主机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟计算机。
33.图1是根据本技术实施例的一种浏览器页面压力测试方法流程图,该方法包括步骤s101、步骤s102和步骤s103。
34.步骤s101,启动无头浏览器。
35.例如,所述无头浏览器(headless browser)是指没有用户图形界面(gui)的浏览器。在此,可以使用puppeteer(控制headless chrome的node.js api)来实现所述步骤s101。
36.步骤s102,通过所述无头浏览器模拟关于目标页面的访问流程,并记录在该访问流程中所述无头浏览器发出的全部请求信息。
37.例如,假设所述目标页面是云主机列表页面,运行测试程序操作所述无头浏览器访问该页面url(uniform resource locator,统一资源定位器)即可实现关于该页面的访问流程。
38.在一些实施例中,所述全部请求信息包括:全部请求的内容信息;全部请求的次序信息。
39.例如,假设所述目标页面是云主机列表页面,该页面的顶部还包含用户信息,那么所述全部请求信息可以包括获取n台云主机信息的请求,以及获取用户信息的请求;其中,所述全部请求的内容信息可以包括云主机相关信息及用户相关信息。所述全部请求的次序信息可以包括两种次序,一种是顺序请求,如用户头像依赖用户id,那么先发起获取用户信息的请求,再根据用户id发起获取用户头像的请求;另一种请求次序是随机的,由浏览器控制。
40.在一些实施例中,所述步骤s102包括:通过所述无头浏览器模拟关于所述目标页面的访问流程,当所述无头浏览器呈现所述目标页面的关键信息,标志该访问流程结束。
41.例如,所述目标页面可能会展示许多信息,假设所述目标页面是云主机列表页面,那么该页面的关键信息是云主机相关的所有信息,在云主机相关的所有信息全部展示出来之后,即可认为该页面已经展示完成,而不必关心用户头像是否展示完成。在此,将所述无头浏览器呈现所述目标页面的关键信息作为关于该页面访问流程结束的标志,可以节省性能开销,提高测试效率。
42.在一些实施例中,所述步骤s102包括:若所述目标页面需要认证,则操作所述无头浏览器完成认证过程,获取用户相关信息;通过所述无头浏览器模拟关于所述目标页面的访问流程。
43.例如,所述目标页面需要认证的场景包括:该页面用于提供需要用户登陆的服务。所述用户相关信息包括相关的cookie、session等信息。
44.在一些实施例中,所述步骤s102包括:操作所述无头浏览器,利用预备的用户识别信息完成认证过程。
45.例如,所述用户识别信息可以包括用户名和密码等信息。在此,可以运行测试程序操作所述无头浏览器,在用户名和密码框中输入预备的用户名和密码,并点击登录,完成认证过程,以获取相关的cookie、session等信息。
46.在一些实施例中,所述步骤s102包括:记录在该访问流程中所述无头浏览器发出的全部请求信息,将所述全部请求信息保存为关于所述全部请求信息的har文件。其中,har(http档案规范)是一个用来储存http请求/响应信息的通用文件格式,基于json。
47.步骤s103,通过测试服务器在预定时间内重放所述全部请求信息。
48.例如,所述测试服务器是测试请求的发起端,即发起测试请求的客户端。所述预定时间可以是1秒、10秒、60秒等较短的时间,可以根据具体情况确定所述预定时间。重放(replay),即重发请求,因为所述全部请求信息是预先录制好的,故称为重放所述全部请求信息。在此,因为关于所述全部请求信息的har文件中包含了上次请求的全部信息,所以session以及鉴权等不需要考虑。在此种情况下,对于请求量限制的瓶颈往往在服务器本身的文件描述符数量限制,而不再受内存、cpu等限制。
49.在一些实施例中,所述测试服务器发出的请求流量依次通过nginx服务器、中间件、后端服务器和数据库。
50.例如,在所述步骤s103中,所述测试服务器发起测试请求,产生请求流量。在所述步骤s103之后,所述测试服务器发出的请求流量依次通过nginx服务器、中间件(即中间服务器)、后端服务器和数据库(如mysql数据库)。在此,后端服务器和数据库可以统称为后端服务。请求流量到达后端服务之后,cpu超负荷意味着短时间流量极大,给后端服务造成巨大压力,后端服务消耗了很多的cpu资源。
51.与现有技术相比,本技术实施例可省略浏览器解析环节,同时保证有效地模拟用户的操作。应用本技术实施例之后,测试服务器仅需要发送请求,省略了浏览器解析环节,极大地节省了浏览器页面压力测试的性能消耗,启动之后并发极高。
52.例如,在现有技术方案中,从浏览器输入url到页面渲染需要经过如下步骤:(1)浏览器发起获取页面的http请求;(2)获取html后,解析html文本;(3)根据解析后的结果绘制页面,又称为关键渲染路径,这个步骤是浏览器的主要能耗来源;(4)根据解析后的结果,发起动态的异步api请求,这个步骤是服务端的主要压力来源;此后,根据请求结果进一步绘制画面。
53.而本技术实施例通过记录经过浏览器发出的全部请求信息,直接重放所述全部请求信息,而无需经过浏览器解析环节,并且本技术实施例在测试时并发极高,从而有效地达到测试服务端负载的目的。
54.图3是根据本技术实施例的一种浏览器页面压力测试设备示意图,该设备包括启动模块301、模拟访问模块302和压力测试模块303。
55.启动模块301,启动无头浏览器。
56.例如,所述无头浏览器(headless browser)是指没有用户图形界面(gui)的浏览器。在此,可以使用puppeteer(控制headless chrome的node.js api)来实现所述启动模块301。
57.模拟访问模块302,通过所述无头浏览器模拟关于目标页面的访问流程,并记录在该访问流程中所述无头浏览器发出的全部请求信息。
58.例如,假设所述目标页面是云主机列表页面,运行测试程序操作所述无头浏览器访问该页面url(uniform resource locator,统一资源定位器)即可实现关于该页面的访问流程。
59.在一些实施例中,所述全部请求信息包括:全部请求的内容信息;全部请求的次序信息。
60.例如,假设所述目标页面是云主机列表页面,该页面的顶部还包含用户信息,那么所述全部请求信息可以包括获取n台云主机信息的请求,以及获取用户信息的请求;其中,所述全部请求的内容信息可以包括云主机相关信息及用户相关信息。所述全部请求的次序信息可以包括两种次序,一种是顺序请求,如用户头像依赖用户id,那么先发起获取用户信息的请求,再根据用户id发起获取用户头像的请求;另一种请求次序是随机的,由浏览器控制。
61.在一些实施例中,所述模拟访问模块302用于:通过所述无头浏览器模拟关于所述目标页面的访问流程,当所述无头浏览器呈现所述目标页面的关键信息,标志该访问流程结束。
62.例如,所述目标页面可能会展示许多信息,假设所述目标页面是云主机列表页面,那么该页面的关键信息是云主机相关的所有信息,在云主机相关的所有信息全部展示出来之后,即可认为该页面已经展示完成,而不必关心用户头像是否展示完成。在此,将所述无头浏览器呈现所述目标页面的关键信息作为关于该页面访问流程结束的标志,可以节省性能开销,提高测试效率。
63.在一些实施例中,所述模拟访问模块302用于:若所述目标页面需要认证,则操作所述无头浏览器完成认证过程,获取用户相关信息;通过所述无头浏览器模拟关于所述目标页面的访问流程。
64.例如,所述目标页面需要认证的场景包括:该页面用于提供需要用户登陆的服务。所述用户相关信息包括相关的cookie、session等信息。
65.在一些实施例中,所述模拟访问模块302用于:操作所述无头浏览器,利用预备的用户识别信息完成认证过程。
66.例如,所述用户识别信息可以包括用户名和密码等信息。在此,可以运行测试程序操作所述无头浏览器,在用户名和密码框中输入预备的用户名和密码,并点击登录,完成认证过程,以获取相关的cookie、session等信息。
67.在一些实施例中,所述模拟访问模块302用于:记录在该访问流程中所述无头浏览器发出的全部请求信息,将所述全部请求信息保存为关于所述全部请求信息的har文件。其中,har(http档案规范)是一个用来储存http请求/响应信息的通用文件格式,基于json。
68.压力测试模块303,通过测试服务器在预定时间内重放所述全部请求信息。
69.例如,所述测试服务器是测试请求的发起端,即发起测试请求的客户端。所述预定时间可以是1秒、10秒、60秒等较短的时间,可以根据具体情况确定所述预定时间。重放(replay),即重发请求,因为所述全部请求信息是预先录制好的,故称为重放所述全部请求信息。在此,因为关于所述全部请求信息的har文件中包含了上次请求的全部信息,所以
session以及鉴权等不需要考虑。在此种情况下,对于请求量限制的瓶颈往往在服务器本身的文件描述符数量限制,而不再受内存、cpu等限制。
70.在一些实施例中,所述测试服务器发出的请求流量依次通过nginx服务器、中间件、后端服务器和数据库。
71.例如,在执行所述压力测试模块303过程中,所述测试服务器发起测试请求,产生请求流量。在执行所述压力测试模块303之后,所述测试服务器发出的请求流量依次通过nginx服务器、中间件(即中间服务器)、后端服务器和数据库(如mysql数据库)。在此,后端服务器和数据库可以统称为后端服务。请求流量到达后端服务之后,cpu超负荷意味着短时间流量极大,给后端服务造成巨大压力,后端服务消耗了很多的cpu资源。
72.与现有技术相比,本技术实施例可省略浏览器解析环节,同时保证有效地模拟用户的操作。应用本技术实施例之后,测试服务器仅需要发送请求,省略了浏览器解析环节,极大地节省了浏览器页面压力测试的性能消耗,启动之后并发极高。
73.例如,在现有技术方案中,从浏览器输入url到页面渲染需要经过如下步骤:(1)浏览器发起获取页面的http请求;(2)获取html后,解析html文本;(3)根据解析后的结果绘制页面,又称为关键渲染路径,这个步骤是浏览器的主要能耗来源;(4)根据解析后的结果,发起动态的异步api请求,这个步骤是服务端的主要压力来源;此后,根据请求结果进一步绘制画面。
74.而本技术实施例通过记录经过浏览器发出的全部请求信息,直接重放所述全部请求信息,而无需经过浏览器解析环节,并且本技术实施例在测试时并发极高,从而有效地达到测试服务端负载的目的。
75.综上所述,本技术实施例在产生高负荷测试流量的同时,节省了测试流量发起方的性能开销,降低了压力测试的成本。
76.另外,本技术的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本技术的方法和/或技术方案。而调用本技术的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据程序指令运行的计算机设备的工作存储器中。在此,本技术的一些实施例提供了一种计算设备,该设备包括用于存储计算机程序指令的存储器和用于执行计算机程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发所述设备执行前述本技术的多个实施例的方法和/或技术方案。
77.此外,本技术的一些实施例还提供了一种计算机可读介质,其上存储有计算机程序指令,所述计算机可读指令可被处理器执行以实现前述本技术的多个实施例的方法和/或技术方案。
78.需要注意的是,本技术可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(asic)、通用目的计算机或任何其他类似硬件设备来实现。在一些实施例中,本技术的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本技术的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,ram存储器,磁或光驱动器或软磁盘及类似设备。另外,本技术的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
79.对于本领域技术人员而言,显然本技术不限于上述示范性实施例的细节,而且在不背离本技术的精神或基本特征的情况下,能够以其他的具体形式实现本技术。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本技术的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本技术内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
转载请注明原文地址:https://win.8miu.com/read-150338.html

最新回复(0)