基于Jmeter和Jenkins的自动化性能测试的一站式解决方案

【自动化测试】JMeter+Jenkins自动化接口与性能测试环境部署指南 本文系统介绍了JMeter+Jenkins自动化测试环境的构建与优化,涵盖环境配置、测试计划设计、流水线构建、监控告警及安全合规等核心环节。重点内容包括:1)多系统差异化的工具链安装与参数优化;2)Jenkins权限管理、插件策略及Pipeline设计;3)JMeter高并发测试场景配置与分布式架构部署;4)Prometheus+Grafana监控体系的构建;5)等保2.0合规性配置。通过提供性能参数模板、常见问题解决方案及DevOps整合实践,为企业级自动化测试平台建设提供全流程技术指导,实现测试过程标准 阅读详情

作者: Yu, Qingguo Shen, Vivien Wu,Biyun

背景

性能测试用来保证产品发布后系统的性能满足用户需求,在软件质量保证中起着重要作用。Jmeter是一款广泛使用的性能测试工具,然而,在执行测试前,用户往往需要花费很多额外的精力和时间配置测试环境。同时在进行测试时,使用单台服务器模拟数以千计的用户对目标服务器产生负载,受限于服务器的性能可能无法满足需求,这就需要一个多台服务器的分布式的并发的测试环境。因此我们决定开发一个基于Jmeter和Jenkins的自动化性能测试的一站式解决方案ELP(Easy Load and Performance Testing, 简单的负载性能测试)来解决以上问题。

Jmeter是一款纯java开发并且开源的性能测试工具,其启动方式可以是GUI方式或者nonGUI方式,ELP中使用nonGUI方式启动Jmeter并执行分布式测试,启动命令为:jmeter -n -t testplan.jmx –R slave1,slave2。关于Jmeter的详细信息,请参阅附录[3]。

持续集成(CI,Continuous Integration)作为敏捷编程的基石现在已经被绝大多数的开发团队所广泛采用,自动化的持续集成测试也越来越受欢迎。我们目前使用的持续集成工具是Jenkins,我们的方案和Jenkins 服务器作了无缝的集成。关于Jenkins的详细信息,请参阅附录[1]和[2]。

概述

我们开发了一个Jenkins插件来完成整个性能测试过程,其中Jmeter Master启动在CI服务器上,负责分配和调度Jmeter Slave(启动在Traffic Server上)执行测试任务。关于如何开发Jenkins的插件,请参阅附录[5]。关于如何使用Jmeter进行分布式测试,请参阅附录[4]。ELP的设计需求如下:

1)       简洁的用户界面。

2)       自动完成测试环境的配置。

3)       支持通用的性能测试需求。

4)       调用Jmeter进行分布式测试。

5)       收集目标服务器的性能指标。

6)       根据性能指标数据生成图表报告。

除了以上功能需求,我们尽可能使用已有的资源,我们使用了已有的Jenkins插件Performance Plugin来展示测试结果。目前,这个方案能支持所有通用的性能测试,比如web应用测试,数据库测试等。

下图是ELP的用户界面,用户只需要填写相关配置信息。因为需要解决防火墙问题,因此需要用户输入登录远程服务器的用户名和密码来建立SSH隧道,其中密码经过加密后存储到磁盘。


                                                                                                                                     Figure 1

下图是ELP执行测试后收集到目标服务器性能指标的图形化报告。




                                                                                                                                             Figure 2

下图是执行测试后利用Performance Plugin显示测试结果报告的图片。可以展示每一次测试的结果,也可以展示历史测试结果的趋势图。



Figure3

ELP基本工作流程


1.       在目标服务器上安装ServerAgent,用于收集性能指标。

2.       在每一台Jmeter Slave上安装Jmeter并启动Jmeter Server。

3.       与每台Jmeter Slave建立SSH隧道。

4.       启动分布式测试。

5.       收集性能指标并输出。

6.        展示测试结果。


Figure 4

架构和实现细节

ELP 以Jenkins插件的形式集成到持续集成服务器上。ELP的整体结构图如下图所示。


Figure 5

ELP采用MVC模型开发,M(Model 模型)指保存ELP相关数据的类,V(View 视图)指ELP的用户界面,C(Controller控制器)指接收用户输入数据和控制模型输出的ELPBuilder类。

1.视图

ELP的用户界面允许用户输入Target Server的主机名,添加每台要使用的TrafficServer的主机名、登录账号及密码,测试计划的文件名,测试数据的文件名等。用户界面是通过设计jelly页面来实现的,具体细节可参阅参考文档[6]。

 

2.模型

模型主要用于保存ELP的相关数据和用于控制访问和修改这些数据的业务逻辑。其中密码经过加密后再存储,取出密码时解密再使用。

 

3.控制器

控制器关联着视图和模型,用于接收用户在用户界面上的输入以及控制模型的数据显示到用户界面。ELP中的ELPBuilder类继承了Hudson.Task.Builder 类。ELP的主要入口点是ELPBuilder类中的perform方法,在perform方法中实现了测试环境的自动配置、建立SSH隧道、执行分布式测试,展示性能指标等功能。 ELP的代码中复用了Jenkins 执行shell的plugin,所以下面各个步骤都是通过shell script实现,非常简洁。相对于使用java的ssh的解决方案,使用shell script大大降低了开发的工作量。

1.       在Target Server上安装ServerAgent并启动。

2.       在每台Traffic Server上安装Jmeter并启动Jmeter Server。

命令:jmeter-server-Djava.rmi.server.hostname=127.0.0.1 -Jserver.rmi.localhostname=127.0.0.1-Jserver.rmi.localport=55601 -Jserver_port=55501(命令中设置的相应属性的含义请参阅文件jmeter.properties内的注释说明。)

3.       在Master与每台Slave之间建立SSH隧道。

命令:sshpass -p'password' ssh -L 55501:127.0.0.1:55501 -L 55601:127.0.0.1:55601 -R55500:127.0.0.1:55500 username@hostname

4.       执行分布式测试。

命令:jmeter -Djava.rmi.server.hostname=127.0.0.1-Jclient.rmi.localport=55500 -n -t testplan.jmx –R slave1, slave2(127.0.0.1:55501)

5.       发布性能指标。

使用JavaScript图表库Highcharts生成性能图形化指标报告。关于Highcharts的使用,请参阅附录[7]。

4. SSH 隧道介绍

ELP中需要建立SSH隧道来绕过CI服务器与Traffic server之间的防火墙,这里重点介绍在CI服务器与Traffic Server间建立SSH隧道的过程。

(1)Jmeter Client 与Jmeter Server间的连接

当Jmeter执行分布式测试时,JmeterClient端(CI服务器)与Jmeter Server端(Traffic Server)通是过Jmeter连接和远程方法调用(RMI)进行通信的。Jmeter连接是由Jmeter Client端建立的,而RMI是双向建立的,即除了要建立一条从Jmeter Client端到Jmeter Server端的连接,还需要建立一条反向连接来返回测试采样结果,因此一共需要建立三条连接,如下图所示。


Figure 6

(2)在CI服务器与Traffic Server之间建立SSH隧道

SSH隧道也叫做SSH端口转发,端口转发分为LocalForward和RemoteForward,这里的local指的是本地端,即CI服务器端;remote指的远程端,即TrafficServer端。

LocalForward指将本地服务器的某个端口转发到远端指定服务器的指定端口。如下图所示,将Jmeter Client端的“A”端口转发到Jmeter Server端指定的服务器127.0.0.1(Server本机)的“B”端口。

在Client端执行命令:ssh -LA:127.0.0.1:B username@hostname



Figure 7

 

RemoteForward指将远程服务器的某个端口转发到本地端指定服务器的指定端口。如下图所示,将Jmeter Server端的“B”端口转发到Jmeter Client端指定的服务器127.0.0.1(Client本机)的“A”端口。

在Client端执行命令:ssh -R B:127.0.0.1:A username@hostname


Figure 8

 

如上文所述,Jmeter在执行分布式测试时,CI服务器与每台TrafficServer间需要建立三条连接。如下图所示:55501端口用于Jmeter连接;55601端口用于CI 服务器到Traffic Server的RMI连接;55500端口用于Traffic Server到CI服务器的RMI连接。

CI服务器与一台Traffic Server建立SSH隧道的命令为:ssh -L 55501:127.0.0.1:55501-L 55601:127.0.0.1:55601 -R 55500:127.0.0.1:55500 username@hostname


Figure 9

(3)CI服务器与多台TrafficServer间建立SSH隧道

目前网上很少有关于使用多台Jmeter Slave时建立SSH隧道的资料。我们在ELP里的解决方案是:如果使用多台TrafficServer就执行多条命令,CI服务器与每台Traffic Server间的连接通过不同的端口来区分。具体实现方法是:每增加一台Traffic Server,CI服务器端需要指定另外两个空闲端口用于Jmeter连接以及Client端到Server端的RMI连接,Traffic Server端需要指定一个端口用于Server端到Client端的RMI连接。

当增加另外一台Traffic Server时,指定不同的端口(假设CI服务器端指定的端口为55502和55602,Traffic Server端指定的端口为55500),再执行一条相同命令:ssh -L 55502:127.0.0.1:55502-L 55602:127.0.0.1:55602 -R 55500:127.0.0.1:55500 username@hostname


小结

后续计划使用Mesos集群管理器来调度和分配Jmeter Slave,这样能优化ELP的性能,并且能大大提高资源的利用率。同时,计划设计一种方案替换项目中目前所用到的公司内部的组件,并尝试把项目开源。


参考资料

1.        The official web site for Jenkins: http://jenkins-ci.org/

2.        The description about Jenkins on Wikipedia: http://en.wikipedia.org/wiki/Jenkins_%28software%29

3.        https://jmeter.apache.org/

4.        https://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.pdf

5.        http://ccoetech.ebay.com/tutorial-dev-jenkins-plugin-distributed-jenkins  

6.        https://wiki.jenkins-ci.org/display/JENKINS/Basic+guide+to+Jelly+usage+in+Jenkins

7.        http://www.highcharts.com


Jenkins集成Jmeter实现自动化性能测试:从原理到实战部署 持续集成与持续部署(CI/CD)是现代软件工程的核心实践,旨在通过自动化流程提升软件交付效率与质量。其核心原理在于将代码集成、构建、测试、部署等环节串联为标准化流水线,确保每次变更都能快速、可靠地验证。在质量保障体系中,性能测试是关键环节,用于评估系统在高负载下的稳定性与扩展性。传统手动执行性能测试存在效率低下、易出错、难以持续的问题。通过将Apache Jmeter这一主流性能测试工具,与Jenkins这一业界标准的CI/CD引擎集成,可以实现性能测试的自动化执行、结果分析与报告生成。这种集成方案的技术价 阅读详情

相关推荐

ApacheJMeter_ssh2:Apache JMeter 的 SSH 插件

概述 SSH2 Sampler 适用于通过 SSH 会话执行命令(例如 iostat)和脚本(多个命令)并返回输出的 Apache JMeter。 这个插件的灵感来自插件。 一个主要变化是它使用 ganymed-ssh2 代替 Jsch 进行 SSH 操作。 安装 用 maven 构建这个项目 将 ApacheJMeter_ssh2-1.0.0.jar 文件放入 JMeter 的 lib/ext 目录 将 ganymed-ssh2-261.jar 放入 JMeter 的 lib 目录 运行 JMeter,并在 Samplers 类别中找到“SSH2 Command”/“SSH2 Script”采样器 用法 使用插件很简单(假设熟悉 SSH 和 JMeter): SSH2 命令/SSH2 脚本 创建新的测试计划 添加线程组 添加采样器 > SSH2 命令/SSH2 脚本 指定要连接的主机、端

Jenkins + Jmeter 构建接口、性能测试 (Windows平台)

Jenkins + Jmeter 可以很轻松的进行打包发布程序后自动进行接口冒烟测试,或者定时性能测试。以下是详尽的Jenkins + Jmeter 安装配置及创建一个任务。   本教程详尽的描写了Jenkins + Jmeter平台搭建的过程,从下载、安装、配置到构建任务,事无巨细。另外还讲解了其他扩展插件,丰富测试脚本和构建方法。

tomoyachen 1万+

利用jenkins+jmeter搭建性能测试平台

本文来自于csdn,本文设计了另一套较为简单的集成测试框架,借助xsltproc来实现jtl报告到html报告的转换。目前网络上大部分都是jenkins+ant+jmeter的框架,考虑到配置ant时要涉及一些文件拷贝,还要修改编写build.xml文件,而搭建框架的很多都是新手,不具备太强的专业知识,故设计了另一套较为简单的集成测试框架,借助xsltproc来实现jtl报告到html报告的转换,这样就免去了文件转移及新手编写build.xml中遇到各种问题的调试时间。1.配置jmeter测试环境,注意修改Jmeter的bin目录下jmeter.properties文件的配置:jmeter.s

MySQL数据库远程访问权限设置

授权给主机为ip的user用户开放,所有数据库及对应表的所有权限,并且密码设置为123456(快速简洁)#添加一个用户user地址ip的无权限用户(可以插入新增用户信息时,附带把权限也查进去,执行时会有告警,因为表中有约束,不用深究)alter uesr ‘mysql’@‘%’ identified by ‘123456’ mysql_native_password by ‘123456’;use mysql;

2301_80119299的博客 8834

深入解析Lora模块的工作原理与应用场景

本文深入解析了Lora模块的工作原理与应用场景。Lora模块作为物联网领域的核心无线通信组件,凭借其独特的扩频调制与半双工通信技术,实现了远距离、低功耗的数据传输。文章详细拆解了其技术内核,包括空中唤醒等低功耗奥秘,并提供了地址、信道、空中速率等关键参数的实战配置指南。最后,探讨了Lora模块在智能家居、智慧农业、城市监测等广域物联网场景中的具体应用,为开发者提供了从理论到实践的完整参考。

weixin_29174385的博客 333

2022 七校联合NewStarCTF 公开赛赛道 WEEK5|MISC

2022 七校联合NewStarCTF 公开赛赛道 WEEK5|MISC

zerorzeror的博客 3119

Jmeter+jenkins接口性能测试平台实践整理

最近两周在研究jmeter+Jenkin的性能测试平台测试dubbo接口,分别尝试使用maven,ant和Shell进行构建,jmeter相关设置略。 一、Jmeter+jenkins+Shell+tomcat 安装Jenkins,JDK,tomcat,并设置环境变量,安装在Jenkins中performance-plugin插件。 1.准备测试脚本和测试数据,拷贝至Jenkins的workspace的对应的项目工作目录下:

nhb687096的博客 110

告别浏览器崩溃!EasyPlayer.js长时间播放FLV视频内存泄漏排查指南

本文针对EasyPlayer.js长时间播放FLV视频导致浏览器内存泄漏和崩溃的问题,提供了一套系统性排查与解决方案。核心策略包括将视频编码从H.265转为H.264以降低解码压力,以及将传输协议从HTTP-FLV切换至WebRTC以优化资源管理。文章还详细介绍了播放器实例生命周期管理、浏览器开发者工具监控等精细化排查手段,帮助开发者实现稳定、长时间的多路视频播放。

weixin_29229055的博客 175

Gatling+Jenkins流水线实现性能测试自动化

背景:Gatling作为一款新兴的性能测试工具,具有高性能高稳定性,方便的代码维护管理等特点。 环境:gatling-charts-highcharts-bundle-3.31 + jenkins 步骤: 一、安装 1.安装Gatling 官网(https://gatling.io/open-source/start-testing/)下载免费安装版,解压即可。前提是,操作系统已安装Ja...

aduocd的博客 1158

GK2302量产工具下载方法,GK2302开卡教程,GK2301LT怎么开卡方法,附GK2302开卡工具,GK2301LT量产软件下载

​每种量产软件的操作流程可能略有不同,因此必须按照要求操作。为确保安全,建议使用量产部落网下载的原版量产开卡软件。

A520091000的博客 2123

从零开始:使用Labelme完成图像语义分割标注全流程

本文详细介绍了如何使用Labelme工具完成图像语义分割标注的全流程,从环境安装、数据准备到核心标注操作,并重点讲解了如何将标注结果转换为PASCAL VOC等深度学习框架可用的标准数据集格式。文章还提供了关键的避坑指南和高效技巧,帮助初学者快速上手,高效产出高质量的标注数据。

weixin_29073241的博客 492

基于Jmeter跟Jenkins的自动化性能测试的一站式解决方案(转)

  www.MyException.Cn  网友分享于:2015-08-26  浏览:0次   基于Jmeter和Jenkins的自动化性能测试的一站式解决方案 作者: Yu, Qingguo Shen, Vivien Wu,Biyun 背景 性能测试用来保证产品发布后系统的性能满足用户需求,在软件质量保证中起着重要作用。Jmeter是一款广泛使用的性能...

weixin_34413065的博客 221

015:机载三维激光扫描技术相关知识

机载三维激光扫描系统(LiDAR)是集激光、GPS、INS等尖端技术于一体的三维航空遥感技术,能高效准确获取地表三维信息。该系统由GPS、INS、激光扫描测距系统、成像装置和工作平台组成,各部件协同工作以获取精确的空间定位、运动状态、地表三维坐标及真实色彩信息。通过制定飞行计划、安置GPS基站、激光扫描测量、惯性测量及获取高清数码影像等步骤,机载LiDAR技术能实时获取大范围高精度三维数据。该技术具有扫描速度快、精度高、全数字特征等优势,广泛应用于测绘、工程、环境监测和城市建设等领域,如城市三维模型重建、灾

qq_31762031的博客 1726

Jmeter +Maven+jenkins 接口性能全自动化测试

背景:首先用jmeter录制或者书写性能测试的脚本,用maven添加相关依赖,把性能测试的代码提交到github,在jenkins配置git下载性能测试的代码,配置运行脚本和测试报告,配置运行失败自动发邮件通知,这样一来性能测试的job配置完成。接着,把性能测试的job配置成开发job的下游job,一旦开发有了新的代码提交运行开发自己的job后,就会自动触发我们性能测试的job。这样我们就实现了接口

Linda的自动化测试之旅 1万+

基于RK3588的YOLOv11目标检测NPU加速系统设计与实现——模型转换(RKNN)、量化与板端部署全流程(含环境搭建与疑难解析)

而RK3588芯片则是一款性能强劲的边缘计算芯片,将YOLOv11部署在RK3588上,可实现本地化的智能检测应用,比如工业质检中的产品缺陷识别、安防领域的异常行为监测等。比如,优化模型的推理速度,可通过调整模型的输入尺寸、使用更高效的推理框架等方式实现;可以使用RK提供的量化工具来完成这一过程,按照工具的使用说明,对ONNX模型进行量化,生成适用于RK3588的模型文件。现在,你已经掌握了从环境搭建到模型部署的全流程,赶快动手实践,让YOLOv11在RK3588上绽放智能光彩,打造属于你的AI应用吧!

m0_71589036的博客 45

基于STM32的智能鱼缸设计

为了缓解学习、生活、工作带来的压力,提升生活品质,许多人喜欢在家中、办公室等场所养鱼。为节省鱼友时间、劳力、增加养鱼乐趣;为此,本文基于STM32单片机设计了一款智能鱼缸。该鱼缸可以实现水温检测、水质检测、自动或手动换水、氛围灯灯光变换和自动或手动喂食等功能为一体的控制系统,可通过控制键进行一键控制。...

1万+

3步掌握JMeter与Jenkins自动化性能测试!

别急,今天我要揭秘的,就是如何利用JMeter和Jenkins这对黄金搭档,让自动化性能测试成为你手中的“瑞士军刀”,轻松切割难题,提升效率的同时保证软件质量!

伤心的辣条 1101

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【性能测试】Jenkins+Ant+Jmeter自动化框架的搭建思路

前言前面讲了Jmeter在性能测试中的应用及扩展。随着测试的深入,我们发现在性能测试中也会遇到不少的重复工作。比如某新兴业务处于上升阶段,需要在每个版本中,对某些新增接口进行性能测试,有时还需要在一天中的不同时段分别进行性能测试,如果一味地采取手动触发的方式,当接口数较多时,就会出现大量重复工作。这个时候我们应该思考,是否有一种方法,可以定时、批量运行已经设计好的Jmeter脚本,并自动输出测试报告。下面就结合Jenkins+Ant+Jmeter,介绍一种性能测试自动化框架的搭建方法。

nhb687096的博客 996

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

上一篇: MapReduce的详细过程
下一篇: jQuery动态载入JS文件研究
ebay
博客等级 码龄24年 109粉丝 69原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值