本发明涉及软件测试技术领域,特别涉及基于Jmeter可持续集成自动化性能测试的领域。
背景技术:
随着对软件、系统的性能要求越来越高,为了避免因为突然的用户并发请求,造成系统崩溃等不希望发生的情况,对系统进行非常必要的接口性能测试。但通常是运用Jmeter GUI模式来模拟用户并发的场景但Jmeter可视化界面会消耗计算机很多资源,并且运行的结果是保存在Jmeter运行的内存中,一旦运行时间太长,内存增长到一定程度,就会报错,甚至假死。因此,需要使用非GUI的模式来进行测试。
但使用非GUI模式测试时会面临一些问题,当需要变更测试环境,就需要手动去修改测试计划,改变为对应的测试服务器;又当需要进行不同场景测试时需要设计不同测试策略,必须重新更改测试计划甚至重新设计新的测试计划;Jmeter非GUI模式下只能产生监控数据,但要将数据变成易于查看分析的图片还要借助于命令行生成监控图片,但监控图和测试报告未集成在一起,极度的不方便测试人员去分析。在测试数据方面,需要手动的增加测试数据来满足某些接口的测试前提。这些问题都会给测试人员带来大大小小的不可避免的麻烦和错误。
技术实现要素:
本发明的目的是提供一种基于Jmeter可持续集成自动化性能测试的方法,解决目前在接口性能测试时,使用非GUI模式测试存在的测试资源浪费和无法持续性测试的问题。
本发明解决其技术问题,采用的技术方案是:基于Jmeter可持续集成自动化性能测试的方法,包括以下步骤:
步骤1、定义测试场景类型以及相关参数配置;
步骤2、设计Jmeter基础测试计划;
步骤3、设计Python脚本生成测试数据、修改测试计划和完善测试报告;
步骤4、通过Jenkins参数化构建创建可视化配置页面;
步骤5、输出测试报告。
进一步的是,步骤4中,所述设计Python脚本生成测试数据包括如下步骤:
步骤401、根据各个接口对应数据规则,分别为每个接口设计相应规则的测试数据生成方法;
步骤402、设计脚本根据传入场景参数值匹配对应的数据生成方法;
步骤403、设计连接数据库脚本,检查并清理数据库中脏数据,然后根据接口配置相应数据表并在对应表中生成数据。
进一步的是,步骤4中,所述设计Python脚本修改测试计划包括如下步骤:
步骤411、设计测试环境修改方法,使用Python正则或ElementTree匹配修改Jmeter测试计划jmx文件中接口的统一测试环境配置节点;
步骤412、根据不同测试场景定义不同测试场景修改方法;
步骤413、设计测试场景修改方法,使用Python正则或ElementTree匹配修改Jmeter测试计划jmx文件,根据传入测试场景参数值匹配相应修改方法,修改测试计划中并发用户数、测试持续时间等,以及将目标待测接口置于Enable状态,将不需要测试的接口置于Disable状态。
进一步的是,步骤4中,所述设计Python脚本完善测试报告包括如下步骤:
步骤421、分析Jmeter生成HTML测试报告构成方式及内容展示原理;
步骤422、创建监控数据展示HTML基础模板页面;
步骤423、设计Python脚本更新监控数据展示基础模板插入资源监控图,并修改已生成的HTML报告加入资源监控展示页面。
进一步的是,步骤5中具体为:在Jenkins上展示已完善后的HTML性能测试报告并邮件发送完整的测试报告。
本发明的有益效果是,通过上述基于Jmeter可持续集成自动化性能测试的方法,首先设计选择在Jenkins平台进行可视化的参数化构建,而不需要开发web界面来实现。其次,在测试前运行python脚本往数据库中插入测试数据在每次测试前保证测试数据完整,测试数据相同并可持续性测试,让多次的测试结果更具有可对比性。并且,测试前实现测试环境和测试策略(测试类型)的参数化构建配置,让多种测试策略更新操作更便捷,节省测试时间。同时,将资源监控图整合到HTML结果报告中,利于测试人员更加便捷,更加全面的分析测试结果。
具体实施方式
下面结合实施例,详细描述本发明的技术方案。
本发明所述基于Jmeter可持续集成自动化性能测试的方法,首先,定义测试场景类型以及相关参数配置;其次,设计Jmeter基础测试计划;然后,设计Python脚本生成测试数据、修改测试计划和完善测试报告;最后,通过Jenkins参数化构建创建可视化配置页面;输出测试报告。
实施例
本发明实施例基于Jmeter可持续集成自动化性能测试的方法,具体应用时,可包括如下步骤:
1.1定义测试场景(测试策略)
定义各个测试场景,如T1、T2、...、Tn,以及各个场景下需要修改的参数。
1.2Jmeter设计基础测试测试计划
为了后面测试进程的顺利运行,需要先在Jmeter中设计基础测试脚本,其中包括所有待测试接口及接口参数、断言的配置(断言是一种Jmeter元件,用来对响应结果设定某个条件,便于测试人员判断此次请求是否成功)以及服务器指标监控。
1.3设计生成测试数据的Python脚本
1)根据各个接口对应数据规则,分别为每个接口设计相应规则的测试数据生成方法;
2)设计脚本根据传入场景参数值匹配对应的数据生成方法;
3)设计连接数据库脚本,检查并清理数据库中脏数据,根据接口配置相应数据表。
1.4设计修改测试计划的Python脚本
1)设计测试环境修改方法,使用Python正则或ElementTree匹配修改Jmeter测试计划jmx文件中接口的统一测试环境配置节点;
2)根据不同测试场景定义不同测试场景修改方法;
3)设计测试场景修改方法,使用Python正则或ElementTree匹配修改Jmeter测试计划jmx文件,根据传入测试场景参数值匹配相应修改方法,修改测试计划中并发用户数、测试持续时间等,以及将目标待测接口置于Enable状态,将不需要测试的接口置于Disable状态。
1.5设计完善HTML报告的Python脚本
1)分析Jmeter生成HTML测试报告构成方式及内容展示;
2)创建HTML监控数据展示基础模板;
3)设计Python脚本更新监控数据展示基础模板插入资源监控图,并修改已生成的HTML报告加入资源监控展示页面。
1.6创建Jmeter测试计划生成测试报告的执行脚本(本例中,执行脚本为:shell)
1)编写Jmeter非GUI模式测试命令行,并将测试计划和生成报告地址参数化;
2)编写命令行调用Jmeter的CMDrunner.jar包,将监控数据CPU.jtl等生成监控展示图。
1.7Jenkins参数化构建配置
Jenkins平台下选择构建一个自由风格的项目,选择参数化构建过程中的Extended Choice Parameter,根据已定义的测试场景和各个场景下需要修改的参数类型以及测试环境进行可视化页面配置。
1.8构建测试生成测试数据和修改测试计划
Jenkins工程配置中在项目构建中调用1.3和1.4中Python脚本,并向脚本传入构建配置的参数值,实现测试数据和测试计划的修改。
1.9生成测试结果和HTML报告
Jenkins工程配置中在项目构建中调用1.6中脚本,执行测试并生成HTML测试报告。
1.10完善HTML性能测试报告
Jenkins工程配置中在项目构建中调用1.5中脚本,更新HTML性能测试报告并邮件通知。