发明内容
针对相关技术中对浏览器进行压力测试效率低的问题,目前尚未提出有效的解决方案,为此,本发明的主要目的在于提供一种浏览器的压力测试方法和装置,以解决上述问题。
为了实现上述目的,根据本发明的一个方面,提供了一种浏览器的压力测试方法,该方法包括:获取预先生成的对浏览器进行压力测试的测试模板,其中,测试模板中包括使用HTTP请求对浏览器进行压力测试的测试流程;获取对浏览器进行压力测试的测试参数;使用测试参数按照测试流程对浏览器进行压力测试,记录测试结果。
进一步地,在获取预先生成的对浏览器进行压力测试的测试模板之前,压力测试方法包括:启动浏览器和录制开关;获取浏览器发送和接收的数据包;记录数据包中的HTTP请求的访问路径、访问地址和HTTP请求的版本号,生成测试模板,其中,将访问路径作为测试流程。
进一步地,获取对浏览器进行压力测试的测试参数包括:获取对浏览器进行压力测试的单一线程执行次数、线程数量、两次请求之间的延迟时间和线程创建时间;使用测试参数按照测试流程对浏览器进行压力测试,记录测试结果包括:按照线程数量、两次请求之间的延迟时间和线程创建时间创建测试线程;每个测试线程从测试模板中读取相匹配的测试流程,按照测试流程执行对浏览器的压力测试,直至执行测试得到单一线程执行次数;记录每个测试线程执行压力测试时的测试数据,得到测试结果。
进一步地,记录测试结果包括:记录对浏览器执行压力测试的压力机和浏览器的服务器在压力测试过程中的性能数据,其中,性能数据包括HTTP请求速率、cpu和内存的使用率、磁盘访问频率。
进一步地,记录测试结果包括:每隔预设时间记录一次的方式记录测试结果;输出测试结果。
为了实现上述目的,根据本发明的另一方面,提供了一种浏览器的压力测试装置,该装置包括:第一获取模块,用于获取预先生成的对浏览器进行压力测试的测试模板,其中,测试模板中包括使用HTTP请求对浏览器进行压力测试的测试流程;第二获取模块,用于获取对浏览器进行压力测试的测试参数;测试模块,用于使用测试参数按照测试流程对浏览器进行压力测试,记录测试结果。
进一步地,压力测试装置包括:启动模块,用于在获取预先生成的对浏览器进行压力测试的测试模板之前,启动浏览器和录制开关;第三获取模块,用于获取浏览器发送和接收的数据包;记录模块,用于记录数据包中的HTTP请求的访问路径、访问地址和HTTP请求的版本号,生成测试模板,其中,将访问路径作为测试流程。
进一步地,第二获取模块包括:第一获取子模块,用于获取对浏览器进行压力测试的单一线程执行次数、线程数量、两次请求之间的延迟时间和线程创建时间;测试模块包括:创建模块,用于按照线程数量、两次请求之间的延迟时间和线程创建时间创建测试线程;测试子模块,用于每个测试线程从测试模板中读取相匹配的测试流程,按照测试流程执行对浏览器的压力测试,直至执行测试得到单一线程执行次数;第一记录子模块,用于记录每个测试线程执行压力测试时的测试数据,得到测试结果。
进一步地,测试模块包括:第二记录子模块,用于记录对浏览器执行压力测试的压力机和浏览器的服务器在压力测试过程中的性能数据,其中,性能数据包括HTTP请求速率、cpu和内存的使用率、磁盘访问频率。
进一步地,测试模块包括:第三记录子模块,用于每隔预设时间记录一次的方式记录测试结果;输出模块,用于输出测试结果。
采用本发明实施例,在对浏览器进行压力测试时,由于预先生成了对浏览器进行压力测试的测试模板,该测试模板中记录有使用HTTP请求对浏览器进行压力测试的测试流程。在获取对浏览器进行压力测试的测试参数之后,按照测试参数使用该测试流程对浏览器进行压力测试。通过本发明上述实施例,无需逐个输入测试参数,也无需手动执行测试流程,可以自动获取测试流程和测试参数,解决了现有技术中对浏览器进行压力测试效率低的问题,实现了提高对浏览器进行压力测试的效率的效果。
具体实施方式
首先,在对本发明实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
压力测试:压力测试是对浏览器最大可受理访问量的测试,也是评估浏览器稳定性和可靠性的一项重要指标。浏览器压力测试的目的在于,通过测试得到存放网页的服务器所能够支持的最大用户数,从而在一次或数次大规模的访问量增长之后,监测服务器是否能够正常提供用户浏览服务。一般,压力测试使用多线程技术,模仿很多用户同时访问服务器的情形,同时向服务器发出浏览请求,并监测服务器的反应。
http请求:是指从客户端到服务器端的请求消息,包括:消息首行中,对资源的请求方法、资源的标示符及使用的协议。
xml文件:可扩展标记语言,标准通用标记语言的子集,一种用于标记电子文件使其具有结构性的标记语言。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
图1是根据本发明实施例的浏览器的压力测试方法的流程图,如图1所示该方法包括如下步骤:
步骤S102,获取预先生成的对浏览器进行压力测试的测试模板,其中,测试模板中包括使用HTTP请求对浏览器进行压力测试的测试流程。
步骤S104,获取对浏览器进行压力测试的测试参数。
步骤S106,使用测试参数按照测试流程对浏览器进行压力测试,记录测试结果。
采用本发明实施例,在对浏览器进行压力测试时,由于预先生成了对浏览器进行压力测试的测试模板,该测试模板中记录有使用HTTP请求对浏览器进行压力测试的测试流程。在获取对浏览器进行压力测试的测试参数之后,按照测试参数使用该测试流程对浏览器进行压力测试。通过本发明上述实施例,无需逐个输入测试参数,也无需手动执行测试流程,可以自动获取测试流程和测试参数,解决了现有技术中对浏览器进行压力测试效率低的问题,实现了提高对浏览器进行压力测试的效率的效果。
在上述实施例中,将动态的网页访问行为,记录为静态的xml文件(即上述实施例中的测试模板),通过该测试模板可以对浏览器进行反复测试。
根据本发明的上述实施例,在获取预先生成的对浏览器进行压力测试的测试模板之前,压力测试方法可以包括:启动浏览器和录制开关;获取浏览器发送和接收的数据包;记录数据包中的HTTP请求的访问路径、访问地址和HTTP请求的版本号,生成测试模板,其中,将访问路径作为测试流程。
本实施例中可以通过常用的浏览器来录制http请求(超文本传输协议)的流程,当我们打开浏览器,开启录制开关,那么浏览器的每次请求,都会被录制脚本工具记录下来,当录制开关关闭时,自动生成压力测试的流程模板。
图2是根据本发明实施例的一种可选的浏览器的压力测试方法的流程图。如图2所示,该实施例包括如下步骤:
步骤S202:启动浏览器和录制开关。
具体地,可以在打开浏览器之后开启录制开关,以启动浏览器插件。
步骤S204:获取浏览器发送和接收的数据包。
具体地,浏览器插件在启动之后,截获浏览器发送和接收的数据包。
步骤S206:记录数据包中的HTTP请求的访问路径、访问地址和HTTP请求的版本号,生成测试模板,其中,将访问路径作为测试流程。
可选地,浏览器插件可以记录获取到的数据包中的Full Request URI,cookie,RequestMethod,HTTP Version,ACCEPT等http协议字段的内容,并将以上字段写入一份xml文件当中,该xml文件即为上述的测试模板。
其中的,Full_Request_URI表示访问url的完全路径,cookie表示访问过程中需要添加的cookie,HTTP_Version表示使用的http版本号,这份xml文件中包含了一次http请求的基本信息。
步骤S208,获取预先生成的对浏览器进行压力测试的测试模板,其中,测试模板中包括使用HTTP请求对浏览器进行压力测试的测试流程。
步骤S210,获取对浏览器进行压力测试的测试参数。
步骤S212,使用测试参数按照测试流程对浏览器进行压力测试,记录测试结果。
其中,上述的步骤S208-212的实现方法与上述实施例中的步骤S102-106的实现方法相同,在此不再赘述。
例如,图3中所示的xml文件,该文件按照<id></id>为访问网站的顺序:1,<name></name>表示一次请求,<Full_Request_URI></Full_Request_URI>表示访问url的完全路径,如图3中的http://www.gridsum.com,<cookie></cookie>表示访问过程中需要添加的cookie,<HTTP_Version><HTTP_Version>表示使用的http版本号:1.1。
在本实施例中,浏览器型号、版本号和所适配的终端设备以及终端设备的硬件信息并不作举例说明,浏览器可以包括一切可用于人为通过互联网访问浏览器服务器所提供的网页信息的网络载体。
在本发明的上述实施例中,获取对浏览器进行压力测试的测试参数可以包括:获取对浏览器进行压力测试的单一线程执行次数、线程数量、两次请求之间的延迟时间和线程创建时间。
在该实施例中可以通过压力工具执行模块实现上述步骤。具体地,通过脚本运行模块生成http请求,该脚本运行模块是一个生成http请求的执行程序。在压力工具执行模块执行的开始阶段可以设置为插件的执行方式,并设置以下参数:单一线程执行次数、线程数量、两次请求之间的延迟时间、线程创建时间。
其中,线程数量代表同一时刻发起请求的线程数量,每个线程可以代表一个用户访问;总请求次数=单一线程执行次数*线程数量;两次请求之间的延迟时间表示,在一个线程内一次请求完成到下一次请求将要启动的等待时间;线程创建时间表示期望多久可以创建一个线程。
上述的使用测试参数按照测试流程对浏览器进行压力测试,记录测试结果可以包括:按照线程数量、两次请求之间的延迟时间和线程创建时间创建测试线程;每个测试线程从测试模板中读取相匹配的测试流程,按照测试流程执行对浏览器的压力测试,直至执行测试得到单一线程执行次数;记录每个测试线程执行压力测试时的测试数据,得到测试结果。
具体地,执行该压力工具执行模块时,首先可以将预先获取的http请求的测试模板读取到内存中,然后压力工具执行模块的程序可以根据设定的参数(即上述的测试参数)开始创建线程,每个线程都从该测试模板中获取要执行的http请求信息,并开始执行,每个线程根据设置的参数执行完单一线程执行次数自动结束。
在本发明的上述实施例中,记录测试结果可以包括:记录对浏览器执行压力测试的压力机和浏览器的服务器在压力测试过程中的性能数据,其中,性能数据包括HTTP请求速率、cpu和内存的使用率、磁盘访问频率。
需要进一步说明的是,记录测试结果可以包括:每隔预设时间记录一次的方式记录测试结果;输出测试结果。其中,预设时间可以为5秒。
其中,输出测试结果可以通过如下方法实现:将测试结果生成为结果日志,输出该结果日志。
在该实施例中,当压力工具执行模块工作的时候,监控数据程序也同时开启,记录压力机和服务端的性能数据,其中,性能数据包括:http请求速率、cpu和内存的使用率、磁盘访问频率等),这些性能数据可以按照每5s一次的记录方式,将测试结果输出至结果日志中。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图4是根据本发明实施例的浏览器的压力测试装置的示意图。如图4所示,该装置可以包括:第一获取模块10、第二获取模块30以及测试模块50。
其中,第一获取模块,用于获取预先生成的对浏览器进行压力测试的测试模板,其中,测试模板中包括使用HTTP请求对浏览器进行压力测试的测试流程;第二获取模块,用于获取对浏览器进行压力测试的测试参数;测试模块,用于使用测试参数按照测试流程对浏览器进行压力测试,记录测试结果。
采用本发明实施例,在对浏览器进行压力测试时,由于预先生成了对浏览器进行压力测试的测试模板,该测试模板中记录有使用HTTP请求对浏览器进行压力测试的测试流程。在获取对浏览器进行压力测试的测试参数之后,按照测试参数使用该测试流程对浏览器进行压力测试。通过本发明上述实施例,无需逐个输入测试参数,也无需手动执行测试流程,可以自动获取测试流程和测试参数,解决了现有技术中对浏览器进行压力测试效率低的问题,实现了提高对浏览器进行压力测试的效率的效果。
在上述实施例中,将动态的网页访问行为,记录为静态的xml文件(即上述实施例中的测试模板),通过该测试模板可以对浏览器进行反复测试。
根据本发明的上述实施例,压力测试装置可以包括:启动模块,用于在获取预先生成的对浏览器进行压力测试的测试模板之前,启动浏览器和录制开关;第三获取模块,用于获取浏览器发送和接收的数据包;记录模块,用于记录数据包中的HTTP请求的访问路径、访问地址和HTTP请求的版本号,生成测试模板,其中,将访问路径作为测试流程。
本实施例中可以通过常用的浏览器来录制http请求(超文本传输协议)的流程,当我们打开浏览器,开启录制开关,那么浏览器的每次请求,都会被录制脚本工具记录下来,当录制开关关闭时,自动生成压力测试的流程模板。
浏览器插件在启动之后,截获浏览器发送和接收的数据包,浏览器插件可以记录获取到的数据包中的Full Request URI,cookie,Request Method,HTTP Version,ACCEPT等http协议字段的内容,并将以上字段写入一份xml文件当中,该xml文件即为上述的测试模板。
其中的,Full_Request_URI表示访问url的完全路径,cookie表示访问过程中需要添加的cookie,HTTP_Version表示使用的http版本号,这份xml文件中包含了一次http请求的基本信息。
例如,图3中所示的xml文件,该文件按照<id></id>为访问网站的顺序:1,<name></name>表示一次请求,<Full_Request_URI></Full_Request_URI>表示访问url的完全路径,如图3中的http://www.gridsum.com,<cookie></cookie>表示访问过程中需要添加的cookie,<HTTP_Version><HTTP_Version>表示使用的http版本号:1.1。
在本实施例中,浏览器型号、版本号和所适配的终端设备以及终端设备的硬件信息并不作举例说明,浏览器可以包括一切可用于人为通过互联网访问浏览器服务器所提供的网页信息的网络载体。
根据本发明的上述实施例,第二获取模块可以包括:第一获取子模块,用于获取对浏览器进行压力测试的单一线程执行次数、线程数量、两次请求之间的延迟时间和线程创建时间;测试模块包括:创建模块,用于按照线程数量、两次请求之间的延迟时间和线程创建时间创建测试线程;测试子模块,用于每个测试线程从测试模板中读取相匹配的测试流程,按照测试流程执行对浏览器的压力测试,直至执行测试得到单一线程执行次数;第一记录子模块,用于记录每个测试线程执行压力测试时的测试数据,得到测试结果。
该实施例中可以通过压力工具执行模块实现上述步骤。具体地,通过脚本运行模块生成http请求,该脚本运行模块是一个生成http请求的执行程序。在压力工具执行模块执行的开始阶段可以设置为插件的执行方式,并设置以下参数:单一线程执行次数、线程数量、两次请求之间的延迟时间、线程创建时间。
其中,线程数量代表同一时刻发起请求的线程数量,每个线程可以代表一个用户访问;总请求次数=单一线程执行次数*线程数量;两次请求之间的延迟时间表示,在一个线程内一次请求完成到下一次请求将要启动的等待时间;线程创建时间表示期望多久可以创建一个线程。
在本发明的上述实施例中,测试模块可以包括:第二记录子模块,用于记录对浏览器执行压力测试的压力机和浏览器的服务器在压力测试过程中的性能数据,其中,性能数据包括HTTP请求速率、cpu和内存的使用率、磁盘访问频率。
进一步地,测试模块可以包括:第三记录子模块,用于每隔预设时间记录一次的方式记录测试结果;输出模块,用于输出测试结果。其中,预设时间可以为5秒。
其中,输出测试结果可以通过如下方法实现:将测试结果生成为结果日志,输出该结果日志。
本实施例中所提供的各个模块与方法实施例对应步骤所提供的使用方法相同、应用场景也可以相同。当然,需要注意的是,上述模块涉及的方案可以不限于上述实施例一中的内容和场景,且上述模块可以运行在计算机终端或移动终端,可以通过软件或硬件实现。
从以上的描述中,可以看出,本发明实现了如下技术效果:
采用本发明实施例,在对浏览器进行压力测试时,由于预先生成了对浏览器进行压力测试的测试模板,该测试模板中记录有使用HTTP请求对浏览器进行压力测试的测试流程。在获取对浏览器进行压力测试的测试参数之后,按照测试参数使用该测试流程对浏览器进行压力测试。通过本发明上述实施例,无需逐个输入测试参数,也无需手动执行测试流程,可以自动获取测试流程和测试参数,解决了现有技术中对浏览器进行压力测试效率低的问题,实现了提高对浏览器进行压力测试的效率的效果。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。