压力测试脚本生成方法、装置、设备及介质与流程

文档序号:29418790发布日期:2022-03-26 13:49阅读:113来源:国知局
压力测试脚本生成方法、装置、设备及介质与流程

1.本公开涉及软件测试技术领域,尤其涉及一种压力测试脚本生成方法、装置、设备及介质。


背景技术:

2.jmeter是apache组织开发的基于java的压力测试工具。jmeter可以用于对服务器、网络或对象模拟巨大的负载,来测试它们的强度和分析整体性能。jmeter工具作为当前较为流行的一款开源的性能测试工具,被越来越多地应用于各类服务器、软件系统、软件接口等的性能测试中。通常压力测试脚本的编制都是由性能测试人员手工编制,由于性能测试人员的经验、技术能力存在较大差异,加之jmeter工具及脚本中有大量不易掌握的专业术语和技巧,使得性能测试开展的难度较高。同时由于测试需求的多样性及多变性,测试脚本发生改变的频率较高。因此手工编写的jmeter脚本在实际执行性能测试时往往存在很多错误和偏差,导致效率低下以及测试数据不太准确,甚至无法完成预期的性能测试。
3.为了解决上述问题,现有技术中存在一些辅助生成脚本的录制工具,但是用这些录制工具生成的脚本,可能出现大量的报错或者兼容性问题,一般还需要在jmeter中进行二次开发和调整脚本内容,所以,并没有降低编写jmeter脚本的难度,同时没有生成完整的且准确率高的脚本,对脚本的生成和编写效率的提高没有太大影响。


技术实现要素:

4.鉴于上述问题,本发明提供了一种压力测试脚本生成方法,以至少部分解决脚本编写效率低的问题。
5.本公开的第一个方面提供了一种压力测试脚本生成方法,包括:创建并生成初始模板脚本,所述初始模板脚本包括实现压力测试的最小测试元件集合;根据测试策略,修改所述初始模板脚本内的测试元件;获取测试对象的配置信息,以对所述测试元件进行参数配置;将参数配置后的所述初始模板脚本存储为目标压力测试脚本。
6.可选地,所述最小测试元件集合包括:测试计划、线程组、http cookie管理器、http请求默认值、http信息头管理器、csv数据文件配置、用户参数、定时器、http请求、正则表达式提取器、逻辑控制器、断言和监听器。
7.可选地,所述根据测试策略,修改所述初始模板脚本内的测试元件包括:增减所述初始模板脚本内测试元件的数量、类型,构建测试逻辑,以实施所述测试策略。
8.可选地,所述增减所述初始模板脚本内测试元件的数量、类型,构建测试逻辑,以实施所述测试策略包括:设置各所述测试元件之间的嵌套关系,构成测试逻辑;基于所述测试逻辑设置线程组,以提升运行效率。
9.可选地,所述初始模板脚本中的各个测试元件均配置有建议参数。
10.可选地,所述获取测试对象的配置信息,以对所述测试元件进行参数配置包括:获取待测试接口的配置信息,读取所述待测试接口的请求协议类型、请求对象名称或ip地址、
请求路径、端口号、请求方法参数中的至少一项;将配置信息填写至相应的所述测试元件中,完成参数配置。
11.可选地,所述方法还包括:设置所述目标压力测试脚本中监听器的监听点,以监听所述目标压力测试脚本运行中产生的多项性能数据。
12.本公开的第二个方面提供了一种压力测试脚本生成装置,包括:初始脚本创建模块,用于创建并生成初始模板脚本,所述初始模板脚本包括实现压力测试的最小测试元件集合;元件修改模块,用于根据所述测试策略,修改所述初始模板脚本内的测试元件;参数配置模块,用于获取测试对象的配置信息,以对所述测试元件进行参数配置;脚本生成模块,用于将参数配置后的所述初始模板脚本存储为目标压力测试脚本。
13.本公开的第三个方面提供了一种电子设备,包括:存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时,实现所述压力测试脚本生成方法中的各个步骤。
14.本公开的第四个方面提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现所述压力测试脚本生成方法中的各个步骤。
15.在本公开实施例采用的上述至少一个技术方案能够达到以下有益效果:
16.本公开提供了一种压力测试脚本生成方法,可以生成包括基本压力测试的测试元件的初始压力测试脚本,简化了选择测试元件的难度;各初始测试元件均配置有建议参数,提高了数据配置的效率,测试人员只需根据需求修改若干参数即可,降低了参数配置的缺失率,提高了参数配置的精准性,避免脚本由于参数配置出错而不能正常执行的问题;同时,通过本方法配置的脚本,易读性和易理解性高,可以快速准确的生成脚本,提高了脚本编写效率。
附图说明
17.为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:
18.图1示意性示出了本公开实施例提供的一种压力测试脚本生成方法的流程图;
19.图2示意性示出了本公开实施例提供的一种压力测试脚本生成装置的结构框图;
20.图3示意性示出了本公开实施例提供的一种电子设备的结构框图;
具体实施方式
21.以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
22.在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
23.在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的
含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
24.附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。
25.因此,本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。在本公开的上下文中,计算机可读介质可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,计算机可读介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。计算机可读介质的具体示例包括:磁存储装置,如磁带或硬盘(hdd);光存储装置,如光盘(cd-rom);存储器,如随机存取存储器(ram)或闪存;和/或有线/无线通信链路。
26.图1示意性示出了本公开实施例提供的一种压力测试脚本生成方法的流程图。
27.如图1所示,本公开实施例提供的一种压力测试脚本生成方法,包括s110~s140。
28.s110,创建并生成初始模板脚本,所述初始模板脚本包括实现压力测试的最小测试元件集合。
29.其中,初始模板脚本中的最小测试元件集合可以包括:测试计划、线程组、http cookie管理器、http请求默认值、http信息头管理器、csv数据文件配置、用户参数、定时器、http请求、正则表达式提取器、逻辑控制器、断言和监听器等。该生成初始jmeter脚本的测试元件是为满足压力测试的最小测试元件的集合。根据实际应用需求,可以自定义增加其他的相应测试元件来扩展初始模板脚本。
30.其中,初始模板脚本中的各个测试元件的初始名称为建议名称,测试人员可以根据实际需求修改测试元件的名称;初始模板脚本中的各个测试元件均配置有建议参数,在实际应用中测试人员可以根据实际需求来修改配置信息。
31.初始模板脚本由测试人员自定义,为每次编写压力测试脚本提供初始版本,测试人员仅需要在此基础上进行修改即可,以提升脚本编写效率。
32.s120,根据测试策略,修改所述初始模板脚本内的测试元件。
33.在本公开实施例中,压力测试的策略是根据性能测试的需求确定,主要包括:并发用户数,并发用户加载时间,执行次数,循环次数,测试持续时间等。
34.修改初始模板脚本的方法可以为增减所述初始模板脚本内测试元件的数量、类型,构建测试逻辑,以实施所述测试策略。该修改并不仅限于对初始模板脚本内的已有测试单元的数量的修改,还可以根据需求新增不同类型的测试单元,数量不限。
35.在修改测试元件数量、类型的过程中,还可以包括操作s121~s122。
36.s121,设置各所述测试元件之间的嵌套关系,构成测试逻辑。
37.s122,基于所述测试逻辑设置线程组,以提升运行效率。
38.在本公开其中一个实施例中,压力测试的脚本元件支持多个元件的重复选择,同时支持元件间的嵌套关系,即一个测试元件可以包含多个测试元件作为一组测试元件。例如,一个测试计划可以包含多个线程组和http请求,一个线程组也可以包含多个http请求。
39.s130,获取测试对象的配置信息,以对所述测试元件进行参数配置。
40.在该操作中,获取待测试接口的配置信息,读取所述待测试接口的请求协议类型、请求对象名称或ip地址、请求路径、端口号、请求方法参数中的至少一项;将配置信息填写至相应的所述测试元件中,完成参数配置。
41.例如,在接口说明中,明确请求协议类型是http请求或是https请求,明确服务器名称或者ip地址,明确请求路径和端口号,明确请求方法是get参数还是post参数,是否验证cookie等。确定好参数后,则可进入下一步选择相应的测试元件,例如,明确是http请求,则选择测试元件http请求,并将从接口说明中获得的http请求的相关参数配置在测试元件http请求中。当请求的目标需要进行身份或者权限的验证时,则在下一步选择压力脚本测试元件时,需要选择测试元件http cookie管理器并配置相关参数。
42.在本公开其中一个实施例中,测试元件的建议名称和建议配置,均可以由测试人员根据实际需求进行灵活修改。对于数据量较大的参数,测试元件支持外部批量导入的csv参数;对数据量较小的参数,也可以由测试人员直接手动配置测试元件中的参数。在实际应用中,由于测试元件已配置了建议名称和建议参数,测试人员仅需根据实际需求修改部分参数即可,从而简化参数配置的操作,提升配置效率。
43.s140,将参数配置后的所述初始模板脚本存储为目标压力测试脚本。
44.该方法还可以包括操作s150::设置所述目标压力测试脚本中监听器的监听点,以监听所述目标压力测试脚本运行中产生的多项性能数据。通过添加监听器,例如查看结果树和聚合报告,来监听tps、平均响应时间、最小响应时间、最大响应时间、错误率、并发用户数、每秒从客户端发送的数据量、每秒从服务器端接收的数据量等性能数据,用来判断压力测试的性能数据是否符合预期的性能指标要求。
45.在本公开实施例中,经监听器监测的性能测试数据可以以表格、柱状图、曲线直观显示,以便查看。其中图表的参数,可以根据性能指标需求,进行自定义的设置。
46.在本公开实施例中,生成jmeter压力测试脚本以.jmx文件的形式直接保存到主机指定的文件夹中;如果脚本文件包含csv文件,则将jmx文件和csv文件同时保存到主机指定的文件夹中。
47.下面将以一实施例对压力测试脚本生成方法进行具体说明。
48.在该实施例中,场景应用实例为:10个不同用户在1s内进入新建项目页面。
49.根据该实例的测试需求,定制该压力测试策略为:设置并发用户数10,线程启动时间1s,循环次数1。
50.根据该场景应用实例的接口说明,筛选出被测接口相关的请求参数。在该实施例中,该被测接口的请求参数包括:
51.登录地址,http://git.cngi.edu.cn/login.do;
52.新建项目地址,http://git.cngi.edu.cn/inputproject.do。
53.然后,选择初始模板脚本中的测试元件并进行参数配置。其中,csv数据源用于存放10个不同的用户名和密码;添加2个http请求:登录和新建项目,配置http请求的参数;登录的请求参数包括请求协议配置http,请求服务器为git.cngi.edu.cn,端口号是80,方法是post,路径是/dologin.do,参数是logintype和password,其中参数配置从csv数据源中获取。其中,新建项目的请求参数包括:请求协议配置http,请求服务器为
git.cngi.edu.cn,端口号是80,方法是get,路径是/inputproject.do。
54.在该实施例中,为此次的2个http请求,增加相应的http header管理器、cookie管理器、响应断言、结果树、聚合报告。
55.其中,http header管理器配置包括:user-agent配置为mozilla/5.0(windows nt 6.2,wow64;trident/7.0;rv:11.0)like gecko;accept配置为image/gif,image/jpeg,image/pjpeg,application/x-ms-application,application/xaml+xml,application/x-ms-xbap,*/*;accept-language配置为zh-cn。cookie管理器的cookies策略选择standard。登录的响应断言包含200和jsessionid。新建项目的响应断言包含文本新建项目。
56.最后,保存并生成目标jmeter脚本文件。运行脚本后,可以查看相应运行结果,如生成的聚合报告。
57.本公开提供了一种压力测试脚本生成方法,可以生成包括基本压力测试的测试元件的初始压力测试脚本,简化了选择测试元件的难度;各初始测试元件均配置有建议参数,提高了数据配置的效率,测试人员只需根据需求修改若干参数即可,降低了参数配置的缺失率,提高了参数配置的精准性,避免脚本由于参数配置出错而不能正常执行的问题;同时,通过本方法配置的脚本,易读性和易理解性高,可以快速准确的生成脚本,提高了脚本编写效率。
58.图2示意性示出了本公开实施例提供的一种压力测试脚本生成装置的结构框图。
59.如图2所示,本公开实施例的一种压力测试脚本生成装置200,包括:初始脚本创建模块210,元件修改模块220,参数配置模块230,脚本生成模块240。
60.初始脚本创建模块210用于创建并生成初始模板脚本,所述初始模板脚本包括实现压力测试的最小测试元件集合。
61.元件修改模块220用于根据所述测试策略,修改所述初始模板脚本内的测试元件。
62.参数配置模块230用于获取测试对象的配置信息,以对所述测试元件进行参数配置。
63.脚本生成模块240用于将参数配置后的所述初始模板脚本存储为目标压力测试脚本。
64.根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
65.可以理解的是,初始脚本创建模块210、元件修改模块220、参数配置模块230、脚本生成模块240可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本发明的实施例,初始脚本创建模块210、元件修改模块
220、参数配置模块230、脚本生成模块240中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以以对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式的适当组合来实现。或者,初始脚本创建模块210、元件修改模块220、参数配置模块230、脚本生成模块240中的至少一个可以至少被部分地实现为计算机程序模块,当该程序被计算机运行时,可以执行相应模块的功能。
66.需要说明的是,本公开的实施例中压力测试脚本生成装置部分与本公开的实施例中压力测试脚本生成方法部分是相对应的压力测试脚本生成装置部分的描述具体参考压力测试脚本生成方法部分,在此不再赘述。
67.图3示意性示出了本公开实施例提供的一种电子设备的结构框图。
68.如图3所示,本实施例中所描述的电子设备,包括:电子设备300包括处理器310、计算机可读存储介质320。该电子设备300可以执行上面参考图1描述的方法,以实现对特定操作的检测。
69.具体地,处理器310例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic)),等等。处理器310还可以包括用于缓存用途的板载存储器。处理器310可以是用于执行参考图1描述的根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
70.计算机可读存储介质320,例如可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,可读存储介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。可读存储介质的具体示例包括:磁存储装置,如磁带或硬盘(hdd);光存储装置,如光盘(cd-rom);存储器,如随机存取存储器(ram)或闪存;和/或有线/无线通信链路。
71.计算机可读存储介质320可以包括计算机程序321,该计算机程序321可以包括代码/计算机可执行指令,其在由处理器310执行时使得处理器310执行例如上面结合图1所描述的方法流程及其任何变形。
72.计算机程序321可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序321中的代码可以包括一个或多个程序模块,例如包括321a、模块321b、
……
。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器310执行时,使得处理器310可以执行例如上面结合图1所描述的方法流程及其任何变形。
73.根据本发明的实施例,初始脚本创建模块210、元件修改模块220、参数配置模块230、脚本生成模块240中的至少一个可以实现为参考图3描述的计算机程序模块,其在被处理器310执行时,可以实现上面描述的相应操作。
74.本公开还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
75.本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可
以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
76.尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1