jmeter详细介绍

jmeter工具介绍

    • 一、原理
    • 二、与loadrunner对比
    • 三、目录结构
    • 四、体系结构及控件使用

一、原理

向服务器提交请求,并从服务器取回请求返回的结果。
即建立一个线程池,多线程运行取样器产生大量负载,在运行过程中通过断言来验证结果的正确性,通过监听器来记录测试结果。

二、与loadrunner对比

  • loadrunner由c语言开发,jmeter纯java开发
  • jmeter开源,loadrunner收费
  • jmeter小巧,下载下来直接解压到指定目录下,配置jdk环境就可以了。loadrunner太大,将近4GB
  • jmeter不支持ip欺骗,loadrunner支持。

三、目录结构

jmeter详细介绍_第1张图片

  • bin目录
    jmeter详细介绍_第2张图片
    examples:存放jmeter使用实例
    ApacheJMeter.jar :Jmeter源码包
    jmeter.sh:启动文件
    jmeter.properties:jmeter配置文件
    jmerter-server:启动负载生成器文件
    jmeter.log:
  • /docs目录——帮助文档
  • /extras目录——提供对Ant的支持文件,也用于持续集成
  • /lib目录——jar包,安装插件也放这里
  • /printable_docs目录——用户手册

四、体系结构及控件使用

1.结构
jmeter详细介绍_第3张图片
2.常用控件

  1. 测试计划(Test Plan)
    一个jmx文件只能有一个测试计划,测试计划中可以定义变量(多是不常变化的数据,例如服务器ip,数据库ip等),引入jar包,编辑测试模式。
    run thread groups consecutively:独立运行每个线程组
    run teardown thread groups after shutdown of main threads:主线程结束后运行tear down线程组
    functional test mode:函数测试模式(只有当你需要记录每个请求从服务器取得的数据到文件时才需要选择函数测试模式。选择这个选项很影响性能。)
    jmeter详细介绍_第4张图片

  2. 工作台(最新版没有工作台,可用代理服务台【http代理服务器】)
    控件暂存区,测试过程中把暂时不用的控件放到这里。这里的控件不会保存在jmx文件里,如果要保存,要及时把控件归位。jmeter详细介绍_第5张图片

  3. 线程组(Thread Users)
    一个测试计划内可以存在多个线程组。每个线程组之间的变量相互独立。
    jmeter详细介绍_第6张图片

  • Thread Group
    Name:线程组名称
    Comments:描述/备注
    Action to be taken after a sampler error:取样器错误后执行以下操作
    continue/start next thread group/stop thread/stop test/stop test now:继续/启动下个线程/停止线程/停止测试/立刻停止
    thread properties:线程属性
    number of threads(users):线程数量
    ramp-up period(in seconds):线程启动间隔时间
    loop count:循环次数
    scheduler configuration:调度器配置
    duration:持续时间
    startup delay:启动延迟
    jmeter详细介绍_第7张图片

  • setup thread group
    测试初始化操作,即线程组开始之前执行的内容,用于初始化测试环境,测试数据准备等。jmeter详细介绍_第8张图片

  • tear down线程组
    测试执行后操作,即线程组执行完成之后执行的内容。可用于清理测试环境,清空测试数据等。
    jmeter详细介绍_第9张图片

4.Test Fragment 测试片段
与线程组同级别,但是默认不会执行。只有被模块控制器引用的时候才会执行。
5.Sampler 取样器(在线程组下add)
模拟用户操作,向服务器发出http请求、webservice或java请求等。
jmeter详细介绍_第10张图片

  1. http请求(Http request)较为常用
    例如:Get方法
    jmeter详细介绍_第11张图片
    post方法:
    jmeter详细介绍_第12张图片

  2. Flow control Action 测试活动(老版本叫Test Action)
    请求的执行动作,放在取样器后定义,例如执行某个请求之后暂停等操作。
    jmeter详细介绍_第13张图片

  3. debug sampler 调试取样器
    一般只需要改动name,把需要关注的变量填写在name里,多个变量用逗号隔开即可
    jmeter详细介绍_第14张图片
    jmeter详细介绍_第15张图片

6.Pre Processors 前置处理器
取样器请求前执行的操作,可以是获取测试数据,修改参数等。
平时很少用到,常用的是后置处理器。
jmeter详细介绍_第16张图片
7.Post Processors 后置处理器
请求执行后的处理,常用的是正则表达式提取器和jason提取器
jmeter详细介绍_第17张图片

  1. regular expression extractor 正则表达式提取器
    需要某个请求的response里的内容时,可以通过正则表达式来提取。用调试取样器来看正则取出来的内容对不对。
    引用名称:提取的内容赋给变量,这里的引用名称就是变量名称
    jmeter详细介绍_第18张图片
    8.Logic Controller 逻辑控制器
    jmeter详细介绍_第19张图片
  • if控制器
    根据指定表达式的值决定是否执行该节点下的子节点,默认使用JavaScript的语法进行判断。如果if控制器里的语句为真,则继续执行。为假,不执行。
    Interpret Condition as Variable Expression?:选中这一项时表示:判断变量值是否等于字符串true
    Evaluate for all children:如果选中这一项,在每个子结点执行前都会计算表达式

注:新版本JMeter中的If Controller,在Expression输入框中直接输入判断的表达式,如1 == 1、${threadNum} > 2,而不做求值计算(true/false)就执行JMeter是没有效的,达不到预期的效果。利用JMeter自带的函数助手(Function Helper)中的__jexl3函数或__groovy函数,对判断条件的表达式进行求值计算,生成对应的求值运算函数,然后将此运算函数复制到If Controller的Expression输入框中即可
jmeter详细介绍_第20张图片
jmeter详细介绍_第21张图片
把条件结果改为真,再次执行,发现该控制器下的请求也执行了。
jmeter详细介绍_第22张图片
jmeter详细介绍_第23张图片

  • 事务控制器
    jmeter详细介绍_第24张图片
    Generate parent sample:勾选后,该控制器下的所有结果将在父结点中展示,如图
    jmeter详细介绍_第25张图片
    Include duration of timer and pre-post processors in generated sample:选中这一项会统计定时器(timer)的时间,否则只统计采样器(sample)的时间——没用过,后续补充

  • 循环控制器
    指定该控制器下的请求执行次数,可以填写具体数值,也可以设置为变量。
    选中永远,会一直循环执行。
    jmeter详细介绍_第26张图片

  • while控制器
    后续补充

  • once only controller 仅一次控制器
    该控制器下的请求,针对每个线程只执行一次。

  • foreach controller foreach控制器
    foreach控制器一般和用户自定义变量一起使用。该控制器下的请求,根据设置的参数,相应执行多少次。
    input variable prefix:输入变量前缀
    start index for loop(exclusive):开始循环字段(不包含)(注:该处不填,默认从1开始。若无1,不执行
    end index for loop(inclusive):结束循环字段(含)
    output variable name:输出变量名称(注:每次执行前会把取到的变量值赋给输出变量名称,所以需要调用自定义变量的值时,应当要传输出变量名
    add"" before number:数字之前加上下划线
    jmeter详细介绍_第27张图片
    实例:如上,变量前缀是account,勾选了加下划线的选项,那用户自定义变量命名规范为account
    +数字,如下所示:
    jmeter详细介绍_第28张图片jmeter详细介绍_第29张图片
    执行结果如下:
    jmeter详细介绍_第30张图片

  • 简单控制器
    这是Jmeter里最简单的一个控制器,它可以让我们组织我们的采样器和其它的逻辑控制器(分组功能),提供一个块的结构和控制,并不具有任何的逻辑控制或运行时的功能。
    jmeter详细介绍_第31张图片

  • switch控制器
    通过给switch value赋值来指定执行哪个节点。
    switch value可赋值为数值,指定执行该控制下某个节点。(注:switch控制器下的节点是从0开始计数的
    switch value 也可赋值为某个节点名称。
    switch value如果不填,默认执行第一个节点
    实例:jmeter详细介绍_第32张图片
    执行结果如下:
    在这里插入图片描述

  • Throughput Controller 吞吐量控制器
    控制其下的子节点的执行次数与负载比例分配
    Total Executions:设置运行次数
    Percent Executions:设置运行比例(1~100之间)
    jmeter详细介绍_第33张图片
    没用到,后续补充

7.Config Element 配置元件
jmeter详细介绍_第34张图片

  • CSV数据文件设置
    多用于数据读取测试数据
    实例:jmeter详细介绍_第35张图片
    jmeter详细介绍_第36张图片
    jmeter详细介绍_第37张图片

  • HTTP信息头管理器
    定义信息头,在其覆盖下的所有元件都会使用该信息头。
    jmeter详细介绍_第38张图片

  • HTTP cookie管理器
    暂时没用到,后续补充,参照【链接】Jmeter使用入门
    https://www.cnblogs.com/ceshisanren/p/5639895.html

  • JDBC Connection Configuration
    只用于数据库连接操作。该控件通常要配合JDBC Request使用
    实例:
    填写数据库地址信息以及账号密码,选择mysql jdbc 驱动(注:事先下载的数据库jdbc驱动jar包放到jmeter安装路径的lib目录下即可
    jmeter详细介绍_第39张图片
    添加取样器JDBC Request,填写相应的sql语句等相关信息
    jmeter详细介绍_第40张图片
    执行结果如下:
    jmeter详细介绍_第41张图片

  • 用户定义的变量略

8.Timer 定时器
类似思考时间,控制取样器的间隔时间。
jmeter详细介绍_第42张图片

  • 固定定时器
    固定定时器不计入单个取样器的响应时间,只计入事务控制器的时间。
    jmeter详细介绍_第43张图片

  • 高斯随机定时器
    指定时间范围内随机。
    jmeter详细介绍_第44张图片

  • 同步定时器
    loadrunner中集合点的存在,取样器到该定时器下会暂停,达到指定线程数后并发。
    没用过,后续补充jmeter详细介绍_第45张图片

9.断言
判断请求响应值是否正确的控件,常用的是响应断言。
jmeter详细介绍_第46张图片
实例:设置如果返回的code不是300,就判定为错误(注:断言要放在请求内部
jmeter详细介绍_第47张图片
jmeter详细介绍_第48张图片
jmeter详细介绍_第49张图片
10.Listener 监听
查看请求执行结果的控件,常用的是察看结果树和聚合报告
jmeter详细介绍_第50张图片

  • 察看结果树
    可查看请求响应的结果、请求内容和响应数据。
    可自定义把数据写入 某个文件内,请求很多的时候,可以通过查找功能进行定位查看。 jmeter详细介绍_第51张图片

  • 聚合报告
    jmeter详细介绍_第52张图片
    lable:sampler的名字
    样本:每个sampler发出的请求数
    平均值:平均响应时间,默认情况下是单个请求的平均响应时间,如果使用事务控制器,就是指单个事务平均响应时间。
    中位数:50%用户的响应时间
    90%百分位:90%用户的响应时间
    95%百分位:95%用户的响应时间
    99%百分位:99%用户的响应时间
    最小值:最小响应时间
    最大值:最大响应时间
    注:以上单位为ms
    异常%:错误请求所占百分比
    吞吐量:默认表示每秒完成的请求数(TPS)

压测综合实例:
jmeter详细介绍_第53张图片

你可能感兴趣的:(jmeter详细介绍)