1、LDAPMessage-oriented middleware (MOM) via JMSMail - SMTP(S), POP3(S) and IMAP(S)Native commands or shell scriptsTCPJava Objects还是那句话:本篇只讲述对Web网站和基于JDBC对数据库进行压力测试。2.软件准备2.1JMeter3.2为保持与本文有比较好的对照,建议从官网下载3.2版本,下载地址:http:/jmeter.apache.org/preferred/jmeter/binaries/apache-jmeter-3.2.zip此软件解压后即可使用。2.2Tom
2、cat8.5本实例中的关于Web网站的压力测试都是基于Tomcat8.5的,下载地址:如果嫌麻烦,可以直接在上一篇开发人员学Linux(3):CentOS7中安装JDK8和Tomcat8的环境中进行。2.3MySQL Community Server5.7本篇中将以MySQL为例讲述如何对数据库进行压力测试,实际上本篇对MySQL版本没有要求,但后来今后,还是建议下载5.7版本,下载地址:注意:本篇中JMeter在Windows下运行,MySQL数据库及Tomcat服务器均在CentOS7下运行。3.软件使用3.1使用JMeter对一般性网站进行压力测试为便于演示,这里以上一篇开发人员学Lin
3、ux(3):CentOS7中安装JDK8和Tomcat8中搭建起来的环境进行压力测试,本人的虚拟机支持桥接模式,IP地址为:192.168.60.198,在Tomcat中有一个简单的提交表单,网址是:/192.168.60.198:8080/examples/servlets/servlet/RequestParamExample,页面如下图所示:该页面中有一个Form,查看页面源代码可知该Form提交给当前Servlet,且有两个字段,分别为:firstname和lastname,如下图所示: 下面讲述创建相关的JMeter元素。3.1.1.运行JMeter首先运行在解压后的JMeter目录
4、下的bin目录找到jmeter.bat来运行JMeter(重要的事情再说一遍:本篇中JMeter在Windows下运行,MySQL数据库及Tomcat服务器均在CentOS7下运行),JMeter支持多种语言,包括中文(其实对中文的支持不彻底),而在中文环境下JMeter的默认语言是中文,因为考虑到必要时候还需要看JMeter目录下的printable_docs目录中的文档,而这里的文档全是英文的,所以我将它设置为英文,如下图所示:这是设置为英文之后的界面:3.1.2.向“测试计划”添加必要的元素。添加测试计划的必要元素的顺序为:ThreadGroup-HTTPRequest-Listener
5、。实际上还应包含TestPlan(测试计划),因创建时默认会创建一个TestPlan,故添加TestPlan的步骤可省略。3.1.2.1添加ThreadGroup如下图所示:3.1.2.2添加HTTP Request Defaults在ThreadGroup元素上鼠标右键,”Add”-“Config Element”-“HTTP Request Defaults”,HTTP RequestDefaults适合于在一个ThreadGroup里面有大量的HTTP Request的情况,很多情况下HTTP Request的一些配置是相同的,那么只需要在HTTP Request Defaults中设置
6、好即可,无需在每个HTTP Request中单独设置,添加HTTP Request Defaults的界面如下图所示:3.1.2.3添加HTTP Request在ThreadGroup元素上鼠标右键,通过”Add”-“Sampler”-“HTTP Request”来添加HTTP Request。3.1.2.4添加Listener在ThreadGroup元素上鼠标右键,通过”Add”-“Listener”来添加Listener,在这里根据需要添加Listener,本人一般会添加如下Listener:Summary Report:可以对测试的结果有一个概要了解,结果中包含了测试次数、平均/最大/最
7、小响应时间、并发吞吐量、接收/发送的字节数等信息;View Result Tree:由于默认情况下判断某个测试是否成功是以是否收到了内容来判断的,比如请求某个需要授权的页面,如果未授权则会被导向到登录页面,在JMeter看来未发生40X、50X这类HTTP Code的错误则仍会被当做测试结果正确,加View Result Tree后就可以看到客户端和服务器端发送及响应的数据。View Results in Table:和SummaryReport类似,但侧重点不同。3.1.2.5添加CSV Data Set Config前面的form表单中可以看出需要firstname和lastname两个值
8、,我们可以直接分别指定固定的值,也可以设定从csv文件中数据中的一系列符合要求的值。在ThreadGroup元素上鼠标右键,通过”Add”-“Config Element”-“CSV Data Set Config”来添加CSV DataSet Config。3.1.2.6参数配置按照上述步骤创建的TestPlan最终效果如下图所示:在这里再次强调一下,我们测试的是安装在CentOS7中的Tomcat8自带的实例程序,CentOS7虚拟机采用桥接方式,IP地址为192.168.60.198,请求的URL地址为:8080/examples/servlets/servlet/RequestPara
9、mExampleHTTP 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了。3.1.2.
10、7测试结果执行完测试后即可在Listener中查看结果。Summary Report界面View Results in Table界面View Results Tree默认界面:默认是以Text形式显示响应数据,如果响应数据是XML/JSON/HTML的话,可以更改为相对应的显示方式,这样更直观。在本例中以浏览器方式显示响应数据的界面如下:3.2基于模板创建压力测试计划前面讲述了一个简单但完整的HTTP Web压力测试例子,基本上大多数同一类型的压力测试总有一些共同的元素,为此可以使用模板来创建压力测试计划。1.选择从模板创建压力测试计划,如下图:2.在弹出的对话框中选择”Buildinga
11、Web Test Plan”,如下图所示:3.点击”Create”即可基于模板的压力测试项目的创建,如下图所示:然后根据我们自己的需要增加或删除一些元素,然后进行相应设置即可进行压力测试了。3.3使用JMeter对数据库进行压力测试前面讲过JMeter支持多种压力测试,下面讲一下JMeter对数据库进行压力测试。3.3.1.数据库准备首先准备好需要进行压力测试的数据库,本次以本人以前学习爬虫时所使用的一个数据,基本信息如下:数据库版本:mysql-5.1.58数据库名:netskycn查询用表名:ty_content(含748007条数据,2.2GB)。ty_content的创建脚本如下:CR
12、EATE TABLE ty_content ( IdINT(11) NOT NULL AUTO_INCREMENT, ArticleIdINT(11) NOT NULL, ContentMEDIUMTEXT NOT NULL, ContentHashVARCHAR(32) NOT NULL, CreateAtDATETIME NOT NULL, IsVisibleTINYINT(1) NULL DEFAULT 1, PRIMARYKEY (Id), UNIQUEINDEX IDX_ContentHash (ContentHash), INDEXIDX_ArticleId (ArticleId)
13、COLLATE=utf8_general_ciENGINE=MyISAM;3.5.2.JDBC驱动准备JDBC驱动可从各数据库厂商官网下载,这里本人已下载好的MySQL JDBC驱动mysql-connector-java-5.1.36.jar,将其复制到JMeter目录下的lib目录中。3.5.3.创建TestPlan可以基于模板创建JDBC Test Plan,如下图所示:3.5.4.修改配置信息1.首先添加CSV Data SetConfig,并且准备MySQL_JDBC_ArticleID.csv文件,MySQL_JDBC_ArticleID.csv内容如下:在这个文件中共有6964条
14、数据,它来自于ty_content表中ArticleId的统计(不含重复数据)。CSV Data Set Config的配置信息如下:JDBC Connection Configuration配置信息如下:Thread Group配置信息如下:JDBC Request配置信息如下:最终测试效果:4.总结本篇讲述了如何使用JMeter来进行Web和数据库压力测试,为快速创建压力测试计划,可给予模板进行创建。可以看出一个JMeter压力测试计划必须包含如下元素:ThreadGroup、与压力测试计划对应的Request(如HTTP Request或JDBC Request)、Listener(可以根据需要添加多个Listener),并且为了减小缓存的影响,我们介绍了如何利用csv文件将测试中的参数信息保存起来。本文未尽之处就是如何对需要身份验证的Web网站进行压力测试,对于带有验证码的需要在压力测试期间暂时禁用验证码功能。另外对于多种验证方式,所使用的方法也有区别,在这期间我试过针对性地对一些需要身份验证的网站建立压力测试计划,但没发现太多共性的东西,故在本篇中没有讲述这方面的内容,等后期有时间再总结整理这方面的内容。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1