基于jmeter的性能测试平台及方法与流程

文档序号:17661742发布日期:2019-05-15 22:25阅读:801来源:国知局
基于jmeter的性能测试平台及方法与流程

本发明属于软件技术领域,具体来说涉及一种基于python语言的软件性能实现方法,以及基于jmeter的性能测试平台。



背景技术:

现有的对软件的性能测试领域,其开源压测工具jmeter具有操作简单易上手,扩展性强的优点,但也存在需要多次重写脚本、脚本维护工作量大,性能测试效率较低的问题。申请号为201810350848.5的发明申请,公开了一种基于jmeter的自动化性能测试方法及系统,通过将测试结果拷贝到安装了jmetergui的电脑中,无需多次重写脚本,提高了工作效率。而申请号为201710253469.x的发明申请中,通过设置测试平台中间件,实现了一套多任务多用户的系统,从而减少了脚本的维护工作。但是,上述技术方案尚无法在同一个脚本中对不同梯度压力情况下的结果进行分析的问题;其服务监控功能只能通过插件实现、gui模式下对执行机资源消耗较高而非gui模式下生成的监控结果无法实时查看。此外,jmeter自带测试报告内容过于简单无法满足作为正式测试报告使用。因此,如何开发出一种新型的软件性能压测系统,以克服上述问题,是本领域技术人员需要研究的方向。



技术实现要素:

本发明提供了一种基于jmeter的性能测试方法,其采用的技术方案如下:

一种基于jmeter的性能测试方法,其包括如下步骤:

s1:打开jmeter编写测试脚本、设置线程数、持续时间、并配置backendlistener;

s2:将s1所得测试脚本保存至服务器本地文件夹并将脚本信息存入mysql数据库;

s3:配置监控信息和场景信息并通过http请求将信息提交至控制模块并存入mysql数据库;

s4:启动测试场景、将启动命令传递给控制模块,控制模块在收到该启动命令后从mysql数据库读取脚本信息;

s5:根据步骤s4读取的脚本信息启动jmeter进程,通过backendlistener将服务监控结果存入influxdb。

优选的是,上述基于jmeter的性能测试方法中,还包括步骤s6:

根据步骤s5读取的服务监控信息生成监控任务并放入celery队列中,监控任务通过ssh连接从被测应用服务器获取服务器资源使用情况,通过sql查询从influxdb获取服务最新监控结果,并处理成echart可读数据格式存入redis,并在监控结果超出场景配置监控阈值时生成报警信息发送至钉钉。

更优选的是,上述基于jmeter的性能测试方法中,还包括步骤s7:通过定时任务从redis获取处理后监控结果并通过echart插件实时生成监控结果展示图。

进一步优选的是,上述基于jmeter的性能测试方法中,还包括步骤s8:按照梯度压力配置情况分段分析测试结果生成聚合报告并将测试结果存入mysql数据库。

更进一步优选的是,上述基于jmeter的性能测试方法中,还包括步骤s9:自动生成word版报告并通过邮件发送至项目相关人员。

本发明还公开了一种基于jmeter的性能测试平台,以实现上述实现方法,

其采用的技术方案如下:

一种基于jmeter的性能测试平台,其包括:平台前端,控制模块,监控模块,调度模块和发压模块;所述平台前端连接控制模块、用于对控制模块发送请求;所述控制模块分别连接监控模块和调度模块,用于根据请求调用监控模块和调度模块协同工作、并自动生成报告;所述监控模块连接应用服务器、用于存储应用服务器的资源信息并存储至redis;所述调度模块连接发压模块、用于启动jmeter进程,对应用服务器进行发压。

通过采用上述技术方案:本发明通过发压与监控同步工作的方式,使测试人员能够实时监控测试结果,从而能够及时发现接口性能问题。前端通过请求控制模块从redis中获取监控结果并通过前端echart插件做图展示.其配置的场景可重复利用,从而可以快速方便的进行回归测试,测试结束后能够自动生成测试报告。

与现有技术相比,本发明能够在对应用服务器进行压测过程中,简化测试监控及结果处理,便于测试人员将精力集中在性能瓶颈分析上,减少测试人员繁杂对结果收集和数据整理工作,提高测试效率。

附图说明

下面结合附图与具体实施方式对本发明作进一步详细的说明:

图1为实施例1功能模块示意图;

图2为实施例1的数据处理流程示意图;

各附图标记与部件名称对应关系如下:

1、平台前端;2、控制模块;3、监控模块;4、调度模块;5、发压模块。

具体实施方式

为了更清楚地说明本发明的技术方案,下面将结合各个实施例作进一步描述。

如图1-2所示为实施例1:

一种基于jmeter的性能测试平台,包括:平台前端1,控制模块2,监控模块3,调度模块4和发压模块5;所述平台前端1连接控制模块2、用于对控制模块2发送请求;所述控制模块2分别连接监控模块3和调度模块4,用于根据请求调用监控模块3和调度模块4协同工作、并自动生成报告;所述监控模块3连接应用服务器、用于存储应用服务器的资源信息并存储至redis;所述调度模块4连接发压模块5、用于启动jmeter进程,对应用服务器进行发压。

实践中,其工作过程如下:

首先,打开jmeter编写测试脚本,设置线程数,持续实际等配置,配置backendlistener。接着,通过平台前端1上传脚本,通过控制模块2将脚本保存至服务器本地文件夹并将脚本相关信息存入mysql数据库。平台前端1配置监控信息、场景信息并通过http请求提交信息至控制模块2并保存至mysql数据库。启动测试场景,前端通过http请求将启动命令传递给控制模块2,控制模块2收到命令后从mysql读取场景配置信息。控制模块2根据读取脚本信息调用调度模块api启动jmeter进程,jmeter通过backendlistener将服务监控结果存入influxdb。控制模块2根据读取的监控信息生成监控任务并放入celery队列中,监控任务通过ssh连接从被测应用服务器获取服务器资源使用情况,通过sql查询从influxdb获取服务监控结果,最后处理成echart可读数据格式存入redis,若处理过程中发现监控结果超出场景配置监控阈值,则将报警信息发送至钉钉。前端监控页面通过定时任务请求控制模块2,控制模块2从redis获取处理后监控结果反馈至平台前端并通过echart插件实时做图展示。场景结束后控制模块2按照梯度压力配置情况分段分析测试结果生成聚合报告并将最终结果存入mysql数据库。项目结束后控制模块2根据标记选中结果自动生成word版报告并通过邮件发送至项目相关人员。

以上所述,仅为本发明的具体实施例,但本发明的保护范围并不局限于此,任何熟悉本领域技术的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。本发明的保护范围以权利要求书的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1