问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用JMeter工具做压力测试对此工具不熟,请教各位高手帮忙解答,万分感谢...

发布网友 发布时间:2022-04-23 20:05

我来回答

2个回答

懂视网 时间:2022-05-02 05:06

前言
表面看来,JMeter与本系列课程似乎关系不大,但实际上在后面的很多场景中起着重要作用:如何获知修改了某些代码或者设置之后系统性能是提升了还是下降了呢?商业的压力测试工具LoadRunner确实很高大上,但是据说费用也不便宜且体积也不小,而目前最高版本的开源免费压力测试工具JMeter3.2压缩包体积才不到53M,而且对于开发人员而非专业测试人员来说,JMeter提供的测试功能已经够强大了。要完整地介绍JMeter,即使把JMeter自带的文档翻译成中文就是一本厚厚的书了。但是在本篇只讲述如何利用JMeter来对Web网站和数据库进行压力测试,因为测试场景的复杂性,本篇实例讲述基于csv文件的参数化测试。
JMeter提供了对不同的协议、服务器及应用的测试支持,如下:
Web – 各种开发语言开发出的网站,比如ASP/ASP.NET/JSP/PHP/Python/Perl等
SOAP / REST Webservices
FTP
Database via JDBC(基于JDBC对数据库进行压力测试)
LDAP
Message-oriented middleware (MOM) via JMS
Mail - SMTP(S), POP3(S) and IMAP(S)
Native commands or shell scripts
TCP
Java Objects
还是那句话:本篇只讲述对Web网站和基于JDBC对数据库进行压力测试。

软件准备
JMeter3.2:为保持与本文有比较好的对照,建议从官网下载3.2版本,下载地址:http://jmeter.apache.org/[preferred]/jmeter/binaries/apache-jmeter-3.2.zip
此软件解压后即可使用。
Tomcat8.5:本实例中的关于Web网站的压力测试都是基于Tomcat8.5的,下载地址:http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.15/bin/apache-tomcat-8.5.15.tar.gz
如果嫌麻烦,可以直接在上一篇《开发人员学Linux(3):CentOS7中安装JDK8和Tomcat8》的环境中进行。
MySQL Community Server5.7:本篇中将以MySQL为例讲述如何对数据库进行压力测试,实际上本篇对MySQL版本没有要求,但后来今后,还是建议下载5.7版本,下载地址:https://dev.mysql.com/downloads/mysql/,同时请下载MySQL的JDBC驱动。
注意:本篇中JMeter在Windows下运行,MySQL数据库及Tomcat服务器均在CentOS7下运行。
使用JMeter对一般性网站进行压力测试
为便于演示,这里以上一篇《开发人员学Linux(3):CentOS7中安装JDK8和Tomcat8》中搭建起来的环境进行压力测试,本人的虚拟机支持桥接模式,IP地址为:192.168.60.198,在Tomcat中有一个简单的提交表单,网址是:http://192.168.60.198:8080/examples/servlets/servlet/RequestParamExample,页面如下图所示:
技术分享 
该页面中有一个Form,查看页面源代码可知该Form提交给当前Servlet,且有两个字段,分别为:firstname和lastname,如下图所示:
技术分享 
下面讲述创建相关的JMeter元素。
1.运行JMeter
首先运行在解压后的JMeter目录下的bin目录找到jmeter.bat来运行JMeter(重要的事情再说一遍:本篇中JMeter在Windows下运行,MySQL数据库及Tomcat服务器均在CentOS7下运行),JMeter支持多种语言,包括中文(其实对中文的支持不彻底),而在中文环境下JMeter的默认语言是中文,因为考虑到必要时候还需要看JMeter目录下的printable_docs目录中的文档,而这里的文档全是英文的,所以我将它设置为英文,如下图所示:
技术分享 
这是设置为英文之后的界面:
技术分享 
2.向“测试计划”添加必要的元素。    
添加测试计划的必要元素的顺序为:ThreadGroup->HTTPRequest->Listener。实际上还应包含TestPlan(测试计划),因创建时默认会创建一个TestPlan,故添加TestPlan的步骤可省略。
2.1添加ThreadGroup
如下图所示:

技术分享


2.2添加HTTP Request Defaults
在ThreadGroup元素上鼠标右键,”Add”-“Config Element”-“HTTP Request Defaults”,HTTP Request Defaults适合于在一个ThreadGroup里面有大量的HTTP Request的情况,很多情况下HTTP Request的一些配置是相同的,那么只需要在HTTP Request Defaults中设置好即可,无需在每个HTTP Request中单独设置,添加HTTP Request Defaults的界面如下图所示:
 

技术分享

2.3添加HTTP Request
在ThreadGroup元素上鼠标右键,通过”Add”-“Sampler”-“HTTP Request”来添加HTTP Request。
 

技术分享

2.4添加Listener
在ThreadGroup元素上鼠标右键,通过”Add”-“Listener”来添加Listener,在这里根据需要添加Listener,本人一般会添加如下Listener:
Summary Report:可以对测试的结果有一个概要了解,结果中包含了测试次数、平均/最大/最小响应时间、并发吞吐量、接收/发送的字节数等信息;
View Result Tree:由于默认情况下判断某个测试是否成功是以是否收到了内容来判断的,比如请求某个需要授权的页面,如果未授权则会被导向到登录页面,在JMeter看来未发生40X、50X这类HTTP Code的错误则仍会被当做测试结果正确,加View Result Tree后就可以看到客户端和服务器端发送及响应的数据。
View Results in Table:和Summary Report类似,但侧重点不同。
 

技术分享





2.5添加CSV Data Set Config
前面的form表单中可以看出需要firstname和lastname两个值,我们可以直接分别指定固定的值,也可以设定从csv文件中数据中的一系列符合要求的值。
在ThreadGroup元素上鼠标右键,通过”Add”-“Config Element”-“CSV Data Set Config”来添加CSV Data Set Config。
 

技术分享

2.6参数配置
按照上述步骤创建的TestPlan最终效果如下图所示:
 

技术分享

在这里再次强调一下,我们测试的是安装在CentOS7中的Tomcat8自带的实例程序,CentOS7虚拟机采用桥接方式,IP地址为192.168.60.198,请求的URL地址为:http://192.168.60.198:8080/examples/servlets/servlet/RequestParamExample

HTTP Request Defaults的配置信息如下图:
 

技术分享

CSV Data Set Config的配置信息如下图:
 

技术分享



注意:在这里提到了一个名为Tomcat_performance_test_parameter.csv的文件,这个文件和当前JMeter项目文件Tomcat-based-test-plan-JMeter3.2_Demo.jmx放在同一目录下。可以使用NotePad++之类的文本编辑软件创建这个文件,并将文件编码设置为utf-8,文件内容如下:
 

技术分享

HTTP Request的配置信息如下图:
 

技术分享
Thread Group的配置信息
 

技术分享

注意:为了便于展示结果,这个将测试次数改为100了。
2.7测试结果
执行完测试后即可在Listener中查看结果。
Summary Report界面

技术分享

View Results in Table界面
 

技术分享
View Results Tree默认界面:
 

技术分享

默认是以Text形式显示响应数据,如果响应数据是XML/JSON/HTML的话,可以更改为相对应的显示方式,这样更直观。在本例中以浏览器方式显示响应数据的界面如下:
 

技术分享


基于模板创建压力测试计划
前面讲述了一个简单但完整的HTTP Web压力测试例子,基本上大多数同一类型的压力测试总有一些共同的元素,为此可以使用模板来创建压力测试计划。
1.选择从模板创建压力测试计划,如下图:
 

技术分享


2.在弹出的对话框中选择”Building a Web Test Plan”,如下图所示:
 

技术分享

3.点击”Create”即可基于模板的压力测试项目的创建,如下图所示:
 

技术分享

然后根据我们自己的需要增加或删除一些元素,然后进行相应设置即可进行压力测试了。
使用JMeter对数据库进行压力测试
前面讲过JMeter支持多种压力测试,下面讲一下JMeter对数据库进行压力测试。
1.数据库准备
首先准备好需要进行压力测试的数据库,本次以本人以前学习爬虫时所使用的一个数据,基本信息如下:
数据库版本:mysql-5.1.58
数据库名:netskycn
查询用表名:ty_content(含748007条数据,2.2GB)。
ty_content的创建脚本如下:

CREATE TABLE `ty_content` (
    `Id` INT(11) NOT NULL AUTO_INCREMENT,
    `ArticleId` INT(11) NOT NULL,
    `Content` MEDIUMTEXT NOT NULL,
    `ContentHash` VARCHAR(32) NOT NULL,
    `CreateAt` DATETIME NOT NULL,
    `IsVisible` TINYINT(1) NULL DEFAULT ‘1‘,
    PRIMARY KEY (`Id`),
    UNIQUE INDEX `IDX_ContentHash` (`ContentHash`),
    INDEX `IDX_ArticleId` (`ArticleId`)
)
COLLATE=‘utf8_general_ci‘
ENGINE=MyISAM;

2.JDBC驱动准备
JDBC驱动可从各数据库厂商官网下载,这里本人已下载好的MySQL JDBC驱动mysql-connector-java-5.1.36.jar,将其复制到JMeter目录下的lib目录中。
3.创建TestPlan
可以基于模板创建JDBC Test Plan,如下图所示:
 

技术分享


4.修改配置信息
1.首先添加CSV Data Set Config,并且准备MySQL_JDBC_ArticleID.csv文件,MySQL_JDBC_ArticleID.csv内容如下:
 

技术分享

在这个文件中共有6964条数据,它来自于ty_content表中ArticleId的统计(不含重复数据)。
CSV Data Set Config的配置信息如下:
 

技术分享

JDBC Connection Configuration配置信息如下:

技术分享

 
Thread Group配置信息如下:
 

技术分享


JDBC Request配置信息如下:
 

技术分享

最终测试效果:
 

技术分享


总结:
本篇讲述了如何使用JMeter来进行Web和数据库压力测试,为快速创建压力测试计划,可给予模板进行创建。可以看出一个JMeter压力测试计划必须包含如下元素:ThreadGroup、与压力测试计划对应的Request(如HTTP Request或JDBC Request)、Listener(可以根据需要添加多个Listener),并且为了减小缓存的影响,我们介绍了如何利用csv文件将测试中的参数信息保存起来。
本文未尽之处就是如何对需要身份验证的Web网站进行压力测试,对于带有验证码的需要在压力测试期间暂时禁用验证码功能。另外对于多种验证方式,所使用的方法也有区别,在这期间我试过针对性地对一些需要身份验证的网站建立压力测试计划,但没发现太多共性的东西,故在本篇中没有讲述这方面的内容,等后期有时间再总结整理这方面的内容。

本文出自 “周公(周金桥)的专栏” 博客,请务必保留此出处http://zhoufoxcn.blog.51cto.com/792419/1931864

开发人员学Linux(4):使用JMeter对网站和数据库进行压力测试

标签:virtualbox   linux   centos   ssh   jmeter   压力测试   

热心网友 时间:2022-05-02 02:14

供参考
场景:测试java程序模块的性能(就是那种用JAVA语言编写且可以独立打包成JAR包的功能模块的性能测试,一般的测试工具是无法提供对这样的对象的性能测试的支持的,当然通过JMETER来测试,也是需要进行一定的辅助开发才行。);
1、右击测试计划-> 添加 -> Threads(Users) -> 线程组
2、设置线程属性,用于并发请求。
介绍:
线程数: 10
Ramp-Up Period(in seconds) : 2
循环次数: 4
含义:2秒种(内)启动10个线程,每个线程循环调用4次java请求 。(所以总体来说就是要执行40次请求。)
3、线程组右击 -> 添加 -> Sampler -> Java请求
以上是设置JMETER性能测试场景,而在这之前需要建立辅助测试类:

建立测试辅助类也有几个要点需要注意;
A.在JAVA工程中引入需要使用到的JMETER所属的核心的类包文件,ApacheJMeter_java.jar ,ApacheJMeter_core.jar ,这2个jar包在 %JMETER_HOME%/lib/ext/下,即在JMETER的资源目录的/lib/ext/可以找到;(原因:因为你将要写的辅助测试类将会使用到里面的一些方法,诸如SampleResult ,AbstractJavaSamplerClient,JavaSamplerContext等);
B.将写好并编辑测试无误的测试辅助类的工程打包成JAR包,然后再放回JMETER的资源目录的/lib/ext/下;(原因:这样,重新启动JMETER后,JMETER工具将会自动识别你刚加入的JAVA请求测试对象。在其“JAVA请求”—>”类名称”下拉选择框中就会出现你编写的测试辅助类,如果没有出现,请仔细检查以上的操作步骤;要不就无法接下来的测试工作。)

以下贴出我写的测试辅助类:(并不是所有的都适用,但可以作为概要,提示参考)
package com.test.jmeter;

import java.util.Random;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;

public class jmeterForCommunication extends AbstractJavaSamplerClient{

private static long start = 0;
private static long end = 0;

/**
* 重写构造函数
*/
@Override
public void setupTest(JavaSamplerContext context) {
// TODO Auto-generated method stub
super.setupTest(context);
start = System.currentTimeMillis();
}

/**
* 重写析构函数
*/
@Override
public void teardownTest(JavaSamplerContext context) {
// TODO Auto-generated method stub
super.teardownTest(context);
end = System.currentTimeMillis();
// 总体耗时
System.err.println("cost time:" + (end - start) / 1000 + "秒。");
}

/**
* 用户后续调用计算产生随机数
*/
public static double computer(double a,double b){
return a * b / a * a;
}

/**
* JMeter界面中可手工输入参数,代码里面通过此方法获取
*/
public Arguments getDefaultParameters() {

Arguments args = new Arguments();

return args;
}

/**
* 重写JMETER的runTest启动方法,测试用例的入口,相当于JAVA程序的main方法;
*/
@Override
public SampleResult runTest(JavaSamplerContext arg0) {
// TODO Auto-generated method stub
SampleResult sr = new SampleResult();
sr.sampleStart();

Random random = new Random();
for(int i=0; i<10000; i++){
computer(random.nextDouble(),random.nextDouble());
}

sr.setSuccessful(true);
sr.sampleEnd();
return sr;
}
/**
public static void main(String []args){

}
*/
PS:另外通过测试类调用要测试的JAR包的功能的代码,我这里就不贴出来了,一是因为每个人的会不一样,二是也涉及到公司的信息也不能外传;

4、线程组右击 -> 添加 -> * -> 用表格察看结果:(有很多种*,但也不是所有的都要打开使用到,一般打开2到3个足以,因为开多了也会一定程度上影响JMETER的测试收集数据的准确性。)

备注提示:
有一些快捷键操作可以方便快速使用,比如:
Ctrl + R,开始运行,
Ctrl + E,清除历史结果
手把手教你用jmeter做压力测试(详图)

JMeter需要Java环境,配置完成后,在解压的二进制包内启动Jmeter.bat。启动后,会有提示,强调GUI模式仅用于测试创建和调试,而非压力测试执行。执行命令行测试时,使用`jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]`命令,并调整Java堆内存参数以满足需求。JMe...

ISTA3E测试

ISTA3E程序是对相同产品的集合包装的综合模拟性能测试,集合包装件被定义为将一个产品、多个产品或包装件放置在滑板或托盘上,固定在一起或是作为一个单元运输。例如:一台机器由带瓦楞底托的托盘上、瓦楞侧围、顶盖包装,用缠绕膜缠绕在托盘上...

自动化工具Jmeter简单压力测试例子

启动jmeter自动化工具,界面显示如下图所示。在“测试计划”单击鼠标右键,选择【添加】-【Threads(Users)】-【线程组】,添加一个线程组。添加完线程组后,开始设置线程组。“线程组”可以类似于虚拟用户组,设置“线程数”为100,即我们要测试的是100个用户并发的情况;“Ramp-Up Period(in seconds)...

如何用Jmeter做压力测试

在“服务器名称或ip”设置127.0.0.1,端口号设置:8080,“方法”设置post,路径设置网站登录的地址,如“/exam/operatorAction”。登录需传入用户、密码。在“同请求一起发送参数”列表中添加参数。参数值根据web应用设置。如login_user=0001;login_password=1;actFlag=login。一般网站登录后,在tomcat...

如何用Jmeter做压力测试

场景设计中。 关于场景的设计过程我所了解的情况来看;正确的压力测试",优秀 &lt;,重点考虑的问题,但其实工具并不是最重要的;5秒响应、带宽模拟等)测试环境的业务基础数据必须合理(0年到N年的基础数据)测试场景所产生的负载必须合理(

如何用Jmeter做压力测试

1. 运行jmeter 2. 左边树将出现测试计划、工作台两根节点。3. 选择测试计划,按右键-》添加-》threads(users)线程组 线程组能设置以多少个线程并发做压力测试。在”循环次数”设置不选择永远,循环次数设置1。4. 现在先介绍如何设置登录http请求,选择线程组,右键――添加――》sampler-―》http ...

自动化工具Jmeter简单压力测试例子

首先启动JMeter自动化工具,界面的显示如下所示。在“测试计划”上点击鼠标右键,选择【添加】-【线程(用户)】-【线程组】,以添加一个新的线程组。在线程组添加完成后,我们来设置线程组的相关参数。“线程组”可以看作是虚拟用户组,在这里设置“线程数”为100,意味着我们将测试100个用户并发的情况...

资深测试工程师讲解【Jmeter压力测试】工具的安装以及使用教程

第一步是下载Jmeter。访问Jmeter官网,选择下载压缩包,解压后得到的应为apache-jmeter-4.0.zip,确保后缀正确且解压后包含所需环境变量.jar文件。Jmeter版本与Java开发工具包(JDK)版本需匹配,4.0版本推荐使用JDK1.8或更高版本。安装路径需正确配置环境变量,包括JMeter_HOME和classpath。新建系统变量,...

Jmeter验证码注册接口压力测试实战

在CSV数据文件配置中填写如下信息,然后修改验证码接口中HTTP请求的请求体,最后再执行一次,发现每次请求使用的手机号是不同的,并且请求成功 修改线程组参数,添加聚合报告等,对接口进行压力测,这里可以把察看结果树禁用了,因为在请求很多的情况下,会影响工具性能。最后等结果 需要注意的是启动jmeter....

jmeter怎么用

1. JMeter简介 JMeter是一款开源的性能测试工具,专门用于对Web应用进行压力测试。它能够模拟多线程的请求,对静态或动态资源进行测试,并生成详细的性能报告。2. 安装与启动 下载JMeter安装包并解压后,启动JMeter应用程序。3. 创建测试计划 新建一个测试计划,并在其中添加线程组以设定并发用户数量。接着...

如何执行压力测试

通常,网站在访问业务功能之前需要先登录。接下来,我们将介绍如何使用JMeter登录系统并对主要业务进行压力测试。1. 运行JMeter。2. 左侧会出现测试计划、工作台两个节点。3. 选择测试计划,右键点击添加线程组(users)。线程组可以设置并发多少个线程进行压力测试。在“循环次数”中,不选择“永远”,设置...

常用的压力测试工具 web压力测试工具 网络压力测试工具 免费压力测试工具 app压力测试工具 接口压力测试工具 开源压力测试工具 服务器压力测试工具 并发压力测试工具
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
珍珠粉可以天天敷脸吗 教你自制珍珠粉面膜 中超什么时候成立 交通刷卡金是什么 哪吒V上市进入倒计时,车身超4米,轴距为2420mm,续航里程401km. 关于倩女幽魂爆鬼问题 倩女幽魂什么是大宝队 关于倩女幽魂爆鬼分红的问题 泰国绿咖喱中的咖喱酱是如何制作的,它的独特口味来源于哪些香料?_百度... 好看电视剧,推荐个,现代都市剧,古装剧,战争爱情剧都可以,要经典,确确 ... 去北京上大学转户口好不好 为什么我用jmeter压力测试后用表格查看结果显示status和byte分别都是警告和0字节? 10岁孩子听什么歌 小学生庆国庆歌唱比赛主持词(附歌单) 录取再送100分 找一首儿童歌曲:一只小青蛙站在,木头上,他睡着啦,一只小苍蝇在时钟上 他睡着啦。。 求儿童歌曲:“好想看奥运”的曲谱! 幸福拍手歌歌词是什么意思? 适合小学生的合唱歌曲,内容以爱国为主 求中国经典儿童歌曲 美团外卖只能用一张身份证注册吗? 一个手机可以同时上两个美团外卖吗? 一个身份证能注册两个美团外卖吗? 火炬入川的路线和时间. 为什么qq的幸运字符我发过消息,可是都快一天了,那个消息数量还是没有变,延迟有那么久吗? QQ幸运字符双方都要发信息吗? QQ幸运字符语音通话算不算互发消息? QQ幸运字符怎么发了消息它没有显示? 超验骇客最后世界停电了是怎么回事 太阳能灭蚊灯老要求我用电线充电,对吗? 花园里放太阳能灭蚊灯有用么?能抓住蚊子么? 太阳能灭蚊灯接线具体怎么弄? LED可灯具可靠性试验项目和相关表格资料! 下面这个表中耐震压力表,什么意思 公办200多分可以上的大专有哪些? 高考200分左右,能上什么大学 高考200分能上什么专科学校? 200分能上什么大专? 高考200分左右,可以上哪些大学 铁路学校多少分 电视一直卡在这个界面,该怎么办? 200多分,武汉有哪些好的高职高专院校? 一般高铁职业学校的分数线是多少? 200分左右能上怎么样的铁路学校 电视卡住了,一直重复一个画面,怎么办? 电视突然画面不动只有声音怎么解决? 在河南 考200分能上什么大专学校? 高考考了200多分,在湖南,能去哪些省内高职的学校 谢谢 电视机网络电视卡住了,画面不动,也听不到声音,怎么解决? 河南郑州200分以上的大专 解释下开关电源的几种保护OCP; OLP; OVP; OTP; ESD;UVLO 今年200分能去石家庄铁道职业技术学院吗?