JMeter是一个软件,使负载测试或业绩为导向的业务(功能)测试不同的协议或技术。它主要对 Apache JServ(现在称为如Apache Tomcat项目)的性能进行测试。Apache后来重新设计JMeter 增强的图形用户界面和添加功能测试能力。
这是一个具有图形界面,使用Swing 图形API 的
Java
桌面应用程序,因此可以运行在任何环境/工作站接 受一个Java 虚拟机,例如:在Windows,Linux,MAC等。
JMeter 支持的协议是:
web:HTTP,HTTPS站点的Web1.0的Web 2.0 (ajax, flex and flex-ws-amf)
Web Services: SOAP / XML-RPC
通过JDBC驱动程序的数据库
目录: LDAP
面向消息的服务通过JMS
Service: POP3, IMAP, SMTP
FTP 服务
jmeter 好像还可以对wss/ws接口进行测试,有知道小伙伴欢迎留言,我们一起学习呀~!
JMeter 特点
它是免费的。开放源码软件。
它具有简单,直观的图形用户界面。
JMeter中负载和性能测试许多不同的服务器类型:网站 – HTTP,HTTPS,SOAP,数据库通过JDBC,LDAP, JMS,邮件 – POP3 它是独立于平台的工具。在Linux / UNIX,JMeter中JMeter中shell脚本点击可以调用。在Windows上,它可 以调用启动jmeter.bat文件。
它具有完整的Swing和轻量级组件支持(预编译的JAR使用包javax.swing中*)。
JMeter 测试计划存储为XML格式。这意味着可以使用文本编辑器生成一个测试计划。
它的完整的多线程框架,允许并发多线程和同步采样不同的功能由单独的线程组采样。
它是高度可扩展的。 也可用于执行应用程序的自动化测试和功能测试。
JMeter是如何工作的
?
JMeter中模拟一组用户发送到目标服务器的请求和回报目标服务器/应用程序的性能/功能的统计数字表明, 通过表格,图形等下图描述了这个过程
JMeter的下载安装及部署 :
• 配置JDK
PS:JDK版本建议使用1.8以上。
下载jdk后,对JDK进行环境变量的设置,
•
下载解压JMeter压缩包,并且配置环境变量
下载地址:
http://jmeter.apache.org/download_jmeter.cgi
JMeter解压之后即可使用,无需安装。
1、解压apache-jmeter-5.0.zip 文件至目录,我的是D:\Program Files目录。
2、 点击我的电脑----属性----高级----环境变量----在系统变量中----点击新建,
3、 变量名输入:JMETER_HOME
变量值输入: D:\Program Files \apache-jmeter-5.0\bin
4、 然后编辑CLASSPATH变量,加上
%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar
操作完上面的步骤,我们就可以点击Jmeter中bin目录下面的jmeter.bat文件即可打开Jmeter了。
组件\作用域介绍:
JMeter中共有8类可被执行的元件(测试计划与线程组不属于元件),这些元件中,取样器是典型的不与其它元件发生交互作用的元件,逻辑控制器只对其子节点的取样器有效,而其它元件(config elements 、timers 、post-processors、assertions、listeners、)需要与取样器
(sampler)等元件交互。
配置元件(config elements )
:元件会影响其作用范围内的所有元件。
前置处理程序(Per-processors)
:元件在其作用范围内的每一个sampler元件之前执行。
定时器(timers )
:元件对其作用范围内的每一个sampler 有效;
后置处理程序(Post-processors)
:元件在其作用范围内的每一个sampler元件之后执行。
断言(Assertions)
:元件对其作用范围内的每一个sampler 元件执行后的结果执行校验。
监听器(Listeners)
:元件收集其作用范围的每一个sampler元件的信息并呈现。
在jmeter中,元件的作用域是靠测试计划的的树型结构中元件的父子关系来确定的,
作用域的原则是
:
取样器(sampler)元件不和其它元件相互作用,因此不存在作用域的问题。
逻辑控制器(Logic Controller)元件只对其子节点中的取样器 和 逻辑控制器作用。
除取样器 和逻辑控制器 元件外,其他6类元件,如果是某个sampler的子节点,则该元件公对其父子节点起作用。 如果其父节点不是sampler ,则其作用域是该元件父节点下的其他所有 后代节点(包括子节点, 子节点的子节点等)。
组件介绍--执行顺序:
元件执行顺序的规则很简单,在同一作用域名范围内,测试计划中的元件按 照如下顺序执行。
1)配置元件(config elements )
2)前置处理程序(Per-processors)
3)定时器(timers )
4)取样器(Sampler)
5)后置处理程序(Post-processors) (除非Sampler 得到的返回结果为空)。
6)断言(Assertions)(除非Sampler 得到的返回结果为空)。
7)监听器(Listeners)(除非Sampler 得到的返回结果为空)
有三点需要注意:
一、前置处理器、后置处理器和断言等元件只能对 取样器作用,因此,如果在它们的作用域内没有任
何取样器,则不会被执行。
二、 如果在同一作用域范围内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序一
次执行。
三、一个断言在测试树中是分等级的。如果它的父元件是请求,它就被应用于那个请求。如果它的父元
件是控制器,它就影响所有那个控制器下的所有请求
。
组件介绍--线程组:
组件介绍--Debug PostProcessor-1:
当执行脚本后,在察看结果树里,会显示执行过程里相关的参数以及数值
![](https://img-blog.csdnimg.cn/84bc648b233c4be7948cc9f711dc4fdc.png)
组件介绍--Random Variable:
![](https://img-blog.csdnimg.cn/6e1affb31a5c449cbedf48934bd8a440.png)
组件介绍--HTTP请求默认值 :该组件的设置,是提供给往后所有的http请求使用的
组件介绍--仅一次控制器:
无论在线程组设置了多少次循环,在该组件下的组件只执行一次, 常用的场景是:用户登录、token的创建等。
![](https://img-blog.csdnimg.cn/6ec9832ec06b4191a434ed6e83d6d84d.png)
组件介绍--HTTP请求:
![](https://img-blog.csdnimg.cn/7c26d801b6bc445ea8b3a4ced4cde720.png)
组件介绍--关联:作用:获取上一个请求里某个/某些值
如:一个请求的返回结果如下,需要获取token值:
![](https://img-blog.csdnimg.cn/7065d01d8e1847d4916d1bf1fe86a0d0.png)
获取token值的表达式是:
![](https://img-blog.csdnimg.cn/46abfabcb81342a3a85313877a41825b.png)
1)引用名称:下一个请求要引用的参数名称,如填写token,则可用${token}引用它。
2)正则表达式:
() :括起来的部分就是要提取的;
. :匹配任何字符串。
+ :一次或多次;
? :不要太贪婪,在找到第一个匹配项后停止。
3)模板:用$$引用起来,如果在正则表达式中有多个正则表达式,则可以是$2$$3$等等,表示解析到的第 几个值给title。如:$1$表示解析到的第1个值
4)匹配数字:0代表随机取值,1代表全部取值,通常情况下填0
5)缺省值:如果参数没有取得到值,那默认给一个值让它取。
组件介绍--响应断言:
当模匹配规则为“包括”和“匹配”时,支持正则表达式;当为 “Equals”或“Substring”时是完全匹配。
![](https://img-blog.csdnimg.cn/94fea18301274442abb747a698b6fd8c.png)
组件介绍--JDBC Connection Configuration:
![](https://img-blog.csdnimg.cn/4ec8d8ed842e4d36b5c450e135d312ab.png)
![](https://img-blog.csdnimg.cn/ff2602a1054148c18822bc005b806ea7.png)
Database URL:
jdbc:mysql://${mysql_ip}:${mysql_port}/${dbName}useUnicode=true&characterEncoding=utf8&allow MultiQueries=true
JDBC Driver class:
com.mysql.jdbc.Driver
jmeter连接mysql需要mysql的驱动包,然后把驱动包放在jmeter的lib里
![](https://img-blog.csdnimg.cn/78ff389080684fc9a2fbb25c7370e887.png)
组件介绍--JDBC Request:
该组件就是发送jdbc请求的执行器
![](https://img-blog.csdnimg.cn/172dc986832145e18503ef0c23be9dc9.png)
![](https://img-blog.csdnimg.cn/7572b5fd235243849f2ccd0129b18956.png)