jmeter_jmeter 教程 - CSDN
jmeter 订阅
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。Apache jmeter 可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。 展开全文
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。Apache jmeter 可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。
信息
外文名
JMeter
开发公司
Apache
应用平台
Java
功    能
对软件做压力测试
Jmeter作用
JMeter的作用1.能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试(通过JDBC)。2.完全的可移植性和100% 纯java。3.完全 Swing 和轻量组件支持(预编译的JAR使用 javax.swing.*)包。4.完全多线程 框架允许通过多个线程并发取样和 通过单独的线程组对不同的功能同时取样。5.精心的GUI设计允许快速操作和更精确的计时。6.缓存和离线分析/回放测试结果。JMeter的高可扩展性1.可链接的取样器允许无限制的测试能力。2.各种负载统计表和可链接的计时器可供选择。3.数据分析和可视化插件提供了很好的可扩展性以及个性化。4.具有提供动态输入到测试的功能(包括Javascript)。5.支持脚本编程的取样器(在1.9.2及以上版本支持BeanShell)。在设计阶段,JMeter能够充当HTTP PROXY(代理)来记录IE/NETSCAPE的HTTP请求,也可以记录apache等WebServer的log文件来重现HTTP流量。当这些HTTP客户端请求被记录以后,测试运行时可以方便的设置重复次数和并发度(线程数)来产生巨大的流量。JMeter还提供可视化组件以及报表工具把量服务器在不同压力下的性能展现出来。相比其他HTTP测试工具,JMeter最主要的特点在于扩展性强。JMeter能够自动扫描其lib/ext子目录下.jar文件中的插件,并且将其装载到内存,让用户通过不同的菜单调用。
收起全文
精华内容
参与话题
  • 1、本课程针对JMETER软件性能测试八大组件:配置元件、前置处理器、定时器、sampler(采样器)、后 置处理器、断言、监听器以及逻辑控制器等内容全方位讲解。 2、参数化、badboy测试脚本开发以及...
  • Jmeter接口测试+压力测试

    万次阅读 多人点赞 2017-08-09 22:03:56
    jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单。因为jmeter是java开发的,所以运行的时候必须先要安装jdk才可以。jmeter是...

      jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单。因为jmeter是java开发的,所以运行的时候必须先要安装jdk才可以。jmeter是免安装的,拿到安装包之后直接解压就可以使用,同时它在linux/windows/macos上都可以使用。
      jmeter可以做接口测试和压力测试。其中接口测试的简单操作包括做http脚本(发get/post请求、加cookie、加header、加权限认证、上传文件)、做webservice脚本、参数化、断言、关联(正则表达式提取器和处理json-json path extractor)和jmeter操作数据库等等。

    接口测试

    Jmeter-http接口脚本

    一般分五个步骤:(1)添加线程组 (2)添加http请求 (3)在http请求中写入接入url、路径、请求方式和参数 (4)添加查看结果树 (5)调用接口、查看返回值

    • jmeter 发get请求

      这里写图片描述

    这里写图片描述

    • jmeter 发post请求

      这里写图片描述

    • jmeter 添加cookie

      需要在线程组里添加配置元件—HTTP Cookie 管理器

    这里写图片描述

    这里写图片描述

    • jmeter 添加header
      需要在线程组里面添加配置元件—HTTP信息头管理器
      这里写图片描述

    这里写图片描述

    • jmeter 上传文件

      这里写图片描述

    • jmeter 参数化
      入参经常变化的话,则可以设置成一个变量,方便统一修改管理;如果入参要求随机或可多种选择,则通过函数生成器或者读取文件形成一个变量。所以参数化有三种方式:用户定义的变量、函数生成器、读取文件。

      (1)用户定义的变量
        需要添加配置元件-用户定义的变量。

    这里写图片描述

    这里写图片描述

    (2)函数生成器
      需要用到函数助手功能,可以调用函数生成一些有规则的数据。常用的几个函数有_uuid、_random、_time。_uuid会生成一个随机唯一的id,比如在避免java请求重发造成未处理数据太多的情况,接口请求可加一个唯一的请求id唯一的响应id进行一一对应;随机数_random,可以在你指定的一个范围里取随机值;取当前时间_time,一些时间类的入参可以使用,如{__time(,)} 是生成精确到毫秒的时间戳、{__time(/1000,)}是生成精确到秒的时间戳、${__time(yyyy-MM-dd HH:mm:ss,)} 是生成精确到秒的当前时间。

    这里写图片描述

    (3)从文件读取
      需要在线程组里面添加配置元件-CSV Data Set Config
      其中Recycle on EOF:设置True后,允许循环取值
    这里写图片描述
      具体的例子如下所示:

    这里写图片描述

    这里写图片描述

    这里写图片描述

    • jmeter 断言
        jmeter断言用来检测响应返回的结果和我们预期的是否一致。若针对整个线程组的话,则在线程组下添加断言-响应断言;若只是针对某个请求的话,则在请求下添加断言-响应断言。

    这里写图片描述

    这里写图片描述

    • jmeter关联

        接口请求之间存在参数调用,为了保存这个参数,建立jmeter关联。比如登陆接口和购买商品接口,购买商品接口就需要登陆接口返回的token等登陆信息,jmeter关联就可以保存这个token信息,方便购买商品接口使用。
        jmeter关联可以通过二种方式来完成,获取到返回结果中指定的值。它们分别是正则表达式提取器、 json path extractor。
      (1)正则表达式提取器
      若想获取的返回值未匹配到,可以把正则表达式两边匹配的数据扩大点。

      这里写图片描述

      a. 关于正则表达式

      ():括起来的部分就是要提取的。
      .:匹配除换行外的任何字符串。
      +:代表+号前面的字符必须至少出现一次(一次或多次)。
      ?:代表?前面的字符最多可以出现一次,在找到第一个匹配项后停止(0次或1次)。
      :代表号前面的字符可以不出现,也可以出现一次或者多次(0次、1次或者多次)
      (.*):贪婪模式,匹配尽可能多的字符
      (.*?)或(.+?):匹配尽可能少的字符,一旦匹配到第一个就不往下走了。

      b. 关于模板

      若想提取多个值的话,比如是a和b这两个值,则可以写成:$1$$2$。无论要提取多少个值,引用名称就是一个的,比如名称为id,${id_go}:获取整个字符串ab,${id_g1}:获取的是a,${id_g2}:获取的是b。
      下面有一个具体的实例,如下图所示:

    这里写图片描述

    这里写图片描述

    这里写图片描述

    (2)json path extractor
      jmeter通过安装json path extractor插件来处理json串,提取json串中的字段值。插件的下载地址:https://jmeter-plugins.org/?search=jpgc-json,下载完成,解压后,直接把lib文件夹放到jmeter相应目录下面。特别说明:jmeter 2.xx左右的版本尝试过无法使用该插件,在jmeter 3.xx左右的版本装完插件后能正常使用。
      需要在请求下创建后置处理器-jp@gc-JSON Path Extractor,具体的实例如下所示:

    这里写图片描述

    这里写图片描述

    这里写图片描述

      关于json path相关插件的方法和使用,推荐可以看这篇博客: http://www.jianshu.com/p/56a607fc0d8f

    • jmeter 操作数据库
        操作数据库基本有四个步骤:(1)导入mysql的jdbc的jar包 (2)创建数据库的连接配置,线程组里添加配置元件-JDBC Connection Configuration (3)线程组里添加jdbc request,写sql语句 (4)添加察看结果树,点击启动按钮,就能看到执行的SQL。具体的实例如下截图所示:

      这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

      特别说明:jmeter还可以操作oracle、postgreSQL、msSQL、mongodb等等数据库,同时不同的数据库,JDBC Connection Configuration填写的Database url格式和JDBC Driver驱动名称也不相同。jmeter数据库驱动列表如下表所示:

    数据库 驱动 数据库url
    mysql com.mysql.jdbc.Driver jdbc:mysql://host:port/{dbname}?allowMultiQueries=true
    oracle org.postgresql.Driver dbc:postgresql:{dbname}

    Jmeter-webservice接口脚本

      基本分为五个步骤:(1)先需要通过soapui工具获取到webservice接口的请求地址、请求报文和请求soapaction。(2)jmeter新建一个线程组 (3)线程组下建立SOAP/XML-RPC Request,写入请求url、请求报文、请求soapaction。(3)启动jmeter,调用接口,通过察看结果树查看返回值。
      soapui获取信息的实例如下图所示:

    这里写图片描述

      soapui提交完后,点击raw,可看到soapation,有些接口若没返回soapation,则jmeter里也就不用填。

    这里写图片描述
       jmeter-webservice脚本实例如下图所示:

    这里写图片描述

    压力测试

      压力测试分两种场景:一种是单场景,压一个接口的;第二种是混合场景,多个有关联的接口。压测时间,一般场景都运行10-15分钟。如果是疲劳测试,可以压一天或一周,根据实际情况来定。

    压测任务需求的确认

    压测前要明确压测功能和压测指标,一般需要确定的几个问题:

    1. 固定接口参数进行压测还是进行接口参数随机化压测?
    2. 要求支持多少并发数?
    3. TPS(每秒钟处理事务数)目标多少?响应时间要达到多少?
    4. 压服务器名称还是压服务器IP,一般都是压测指定的服务器

    压测设置

    1. 线程数:并发数量,能跑多少量。具体说是一次存在多少用户同时访问
    2. Rame-Up Period(in seconds):表示JMeter每隔多少秒发动并发。理解成准备时长:设置虚拟用户数需要多长时间全部启动。如果线程数是20,准备时长为10,那么需要10秒钟启动20个数量,也就是每秒钟启动2个线程。
    3. 循环次数:这个设置不会改变并发数,可以延长并发时间。总请求数=线程数*循环次数
    4. 调度器:设置压测的启动时间、结束时间、持续时间和启动延迟时间。

    压测结果查看

      运行完后,聚合报告会显示压测的结果。主要观察Samples、Average、error、Throughput。

    1. Samples:表示一共发出的请求数
    2. Average:平均响应时间,默认情况下是单个Request的平均响应时间(ms)
    3. Error%:测试出现的错误请求数量百分比。若出现错误就要看服务端的日志,配合开发查找定位原因
    4. Throughput:简称tps,吞吐量,默认情况下表示每秒处理的请求数,也就是指服务器处理能力,tps越高说明服务器处理能力越好。

    压测结果的分析

    1. 有错误率同开发确认,确定是否允许错误的发生或者错误率允许在多大的范围内;

    2. Throughput吞吐量每秒请求的数大于并发数,则可以慢慢的往上面增加;若在压测的机器性能很好的情况下,出现吞吐量小于并发数,说明并发数不能再增加了,可以慢慢的往下减,找到最佳的并发数;

    3. 压测结束,·登陆相应的web服务器查看CPU等性能指标,进行数据的分析;

    4. 最大的tps:不断的增加并发数,加到tps达到一定值开始出现下降,那么那个值就是最大的tps。

    5. 最大的并发数:最大的并发数和最大的tps是不同的概率,一般不断增加并发数,达到一个值后,服务器出现请求超时,则可认为该值为最大的并发数。
    6. 压测过程出现性能瓶颈,若压力机任务管理器查看到的cpu、网络和cpu都正常,未达到90%以上,则可以说明服务器有问题,压力机没有问题。
    7. 影响性能考虑点包括:数据库、应用程序、中间件(tomact、Nginx)、网络和操作系统等方面。

    jmeter在linux下进行压力测试

    1. jmeter 在linux安装
        简单说下,就是要先安装jdk,同时再配置环境变量,最后再上传jmeter压缩的安装包,在linux下解压完安装包就可以使用了。推荐博客:http://blog.csdn.net/zhemeteor/article/details/51315874

    2. jmeter在linux运行
      进入jmeter下的bin目录下运行脚本,未配置jmeter环境变量的条件下,运行的命令:

    ./jmeter -n -t a.jmx -l res.jtl

    其中a.jmx是准备好的jmeter脚本,res.jtl是测试结果文件,测试结果文件可以导入到jmeter察看结果树下查看。

    jmeter添加负载机

    展开全文
  • JMeter性能测试,完整入门篇

    万次阅读 多人点赞 2018-06-25 11:27:20
    原文转自:https://blog.csdn.net/lovesoo/article/details/78579547Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件。...本文为JMeter性能测试完整入门篇,从Jmeter下载安装到编写一个完整...


    原文转自:https://blog.csdn.net/lovesoo/article/details/78579547

    Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件。相比Loadrunner而言,JMeter小巧轻便且免费,逐渐成为了主流的性能测试工具,是每个测试人员都必须要掌握的工具之一。

    本文为JMeter性能测试完整入门篇,从Jmeter下载安装到编写一个完整性能测试脚本、最终执行性能测试并分析性能测试结果。

    运行环境为Windows 10系统,JDK版本为1.8,JMeter版本为3.3。

    2. Jmeter安装

    2.1 JDK安装

    由于Jmeter是基于java开发,首先需要下载安装JDK (目前JMeter只支持到Java 8,尚不支持 Java 9) 
    1. 官网下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 
    2. 选择Java SE 8u151/ 8u152,点击JDK下载 
    这里写图片描述
    3. 安装下载的JDK 
    4. 配置系统环境变量

    2.2 JMeter安装

    1. 官网下载地址:http://jmeter.apache.org/download_jmeter.cgi
    2. 下载最新JMeter 3.3版本:apache-jmeter-3.3.zip 
      这里写图片描述
    3. 下载完成后解压zip包
    4. 启动JMeter 
      双击JMeter解压路径(apache-jmeter-3.3\bin)bin下面的jmeter.bat即可 
      这里写图片描述

    3. 测试实例

    我们选取最常见的百度搜索接口:

    3.1 接口地址

    http://www.baidu.com/s?ie=utf-8&wd=jmeter性能测试

    3.2 请求参数

    ie:编码方式,默认为utf-8 
    wd: 搜索词

    3.3 返回结果

    搜索结果,我们可以通过校验结果中是否含有搜索词wd来判断本次请求成功或失败。

    4. JMeter脚本编写

    4.1 添加线程组

    右键点击“测试计划” -> “添加” -> “Threads(Users)” -> “线程组” 
    这里写图片描述 
    这里可以配置线程组名称,线程数,准备时长(Ramp-Up Period(in seconds))循环次数,调度器等参数: 
    这里写图片描述 
    线程组参数详解: 
    1. 线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。 
    2. Ramp-Up Period(in seconds)准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数为10,准备时长为2,那么需要2秒钟启动10个线程,也就是每秒钟启动5个线程。 
    3. 循环次数:每个线程发送请求的次数。如果线程数为10,循环次数为100,那么每个线程发送100次请求。总请求数为10*100=1000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。 
    4. Delay Thread creation until needed:直到需要时延迟线程的创建。 
    5. 调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远) 
    持续时间(秒):测试持续时间,会覆盖结束时间 
    启动延迟(秒):测试延迟启动时间,会覆盖启动时间 
    启动时间:测试启动时间,启动延迟会覆盖它。当启动时间已过,手动只需测试时当前时间也会覆盖它。 
    结束时间:测试结束时间,持续时间会覆盖它。

    因为接口调试需要,我们暂时均使用默认设置,待后面真正执行性能测试时再回来配置。

    4.2 添加HTTP请求

    右键点击“线程组” -> “添加” -> “Sampler” -> “HTTP请求” 
    这里写图片描述 
    对于我们的接口http://www.baidu.com/s?ie=utf-8&wd=jmeter性能测试,可以参考下图填写: 
    这里写图片描述 
    Http请求主要参数详解:

    1. Web服务器 
      协议:向目标服务器发送HTTP请求协议,可以是HTTP或HTTPS,默认为HTTP 
      服务器名称或IP :HTTP请求发送的目标服务器名称或IP 
      端口号:目标服务器的端口号,默认值为80 
      2.Http请求 
      方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。 
      路径:目标URL路径(URL中去掉服务器地址、端口及参数后剩余部分) 
      Content encoding :编码方式,默认为ISO-8859-1编码,这里配置为utf-8
    2. 同请求一起发送参数 
      在请求中发送的URL参数,用户可以将URL中所有参数设置在本表中,表中每行为一个参数(对应URL中的 name=value),注意参数传入中文时需要勾选“编码”

    4.3 添加察看结果树

    右键点击“线程组” -> “添加” -> “监听器” -> “察看结果树” 
    这里写图片描述 
    这时,我们运行Http请求,修改响应数据格式为“HTML Source Formatted”,可以看到本次搜索返回结果页面标题为”jmeter性能测试_百度搜索“。 
    这里写图片描述

    4.4 添加用户自定义变量

    我们可以添加用户自定义变量用以Http请求参数化,右键点击“线程组” -> “添加” -> “配置元件” -> “用户定义的变量”: 
    这里写图片描述 
    新增一个参数wd,存放搜索词: 
    这里写图片描述 
    并在Http请求中使用该参数,格式为:${wd} 
    这里写图片描述

    4.5 添加断言

    右键点击“HTTP请求” -> “添加”-> “断言” -> “响应断言” 
    这里写图片描述 
    我们校验返回的文本中是否包含搜索词,添加参数${wd}到要测试的模式中: 
    这里写图片描述

    4.6 添加断言结果

    右键点击“HTTP请求” -> “添加”-> “监听器” -> “断言结果” 
    这里写图片描述

    这时,我们再运行一次就可以看到断言结果成功或失败了 
    这里写图片描述

    4.7 添加聚合报告

    右键点击“线程组” -> “添加” -> “监听器” -> “聚合报告”,用以存放性能测试报告 
    这里写图片描述 
    这样,我们就完成了一个完整Http接口的JMeter性能测试脚本编写。

    5. 执行性能测试

    5.1 配置线程组

    点击线程组,配置本次性能测试相关参数:线程数,循环次数,持续时间等,这里我们配置并发用户数为10,持续时间为60s 
    这里写图片描述

    5.2 执行测试

    点击绿色小箭头按钮即可启动测试,测试之前需要点击小扫把按钮清除之前的调试结果。 
    这里写图片描述

    6. 分析测试报告

    待性能测试执行完成后,打开聚合报告可以看到: 
    这里写图片描述

    聚合报告参数详解: 
    1. Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值 
    2. #Samples:请求数——表示这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100 
    3. Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,以Transaction 为单位显示平均响应时间 
    4. Median:中位数,也就是 50% 用户的响应时间 
    5. 90% Line:90% 用户的响应时间 
    6. Min:最小响应时间 
    7. Max:最大响应时间 
    8. Error%:错误率——错误请求数/请求总数 
    9. Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数 
    10. KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec

    一般而言,性能测试中我们需要重点关注的数据有: #Samples 请求数,Average 平均响应时间,Min 最小响应时间,Max 最大响应时间,Error% 错误率及Throughput 吞吐量。

    7. 源码下载

    至此,我们使用JMeter完成了一个完整的Http接口性能测试流程,从脚本编写,执行到最终结果分析。

    完整的脚本源码下载链接: https://pan.baidu.com/s/1eS90cVo 密码: st15

    展开全文
  • Jmeter教程(一) - 入门

    万次阅读 多人点赞 2020-05-29 11:26:47
    一、下载 登录官网Jmeter下载,得到...将下载得到的压缩包解压即可,这里我解压到自己电脑的路径为E:\Mysoftware\apache-jmeter-5.0。 三、运行 点击bin目录下的jmeter.bat即可启动Jmeter。 启动后可以看到...

    Jmeter教程(一) - 入门
    Jmeter教程(二) - 自定义变量模拟多用户
    Jmeter教程(三) - Linux中使用命令行进行压测

    一、下载

    登录官网Jmeter下载,得到压缩包jmeter-5.0.tgz,下载地址:http://jmeter.apache.org/download_jmeter.cgi
    在这里插入图片描述

    二、安装

    将下载得到的压缩包解压即可,这里我解压到自己电脑的路径为E:\Mysoftware\apache-jmeter-5.0

    三、运行

    点击bin目录下的jmeter.bat即可启动Jmeter。
    在这里插入图片描述
    启动后可以看到一个java编写的图形界面。
    在这里插入图片描述

    四、一个简单的压测实例

    现有一个http请求接口http://localhost:8080/goods/to_list,要使用Jmeter对其进行压测,测试步骤如下:

    a.新建一个线程组。
    在这里插入图片描述
    b. 设置线程组参数。这里配置为:10个线程,同时启动,循环一次。
    在这里插入图片描述
    c. 新增http请求默认值。 在上一步创建的线程组上,新增http请求默认值,所有的请求都会使用设置的默认值,这设置协议为http,IP为localhost,端口为8080
    在这里插入图片描述
    在这里插入图片描述
    d. 添加要压测的http请求。
    在这里插入图片描述
    下图第一个红框内的协议、IP、端口不需要设置,会使用步骤c中设置的默认值,只需设置请求路径Path即可,这里填入/goods/to_list
    在这里插入图片描述
    e. 新增监听器,用于查看压测结果。这里添加三种:聚合报告、图形结果、用表格查看结果,区别在于结果展现形式不同。
    在这里插入图片描述
    f. 点击运行按钮开始压测,并查看结果。
    在这里插入图片描述

    五、如何查看系统负载何性能瓶颈

    服务器上执行以下命令:

    top
    

    如下图所示,可以看到系统负载load average情况,1分钟平均负载,5分钟平均负载,15分钟平均负载分别是1.58, 0.50, 0.23;同时可以看到最耗费资源的进程为mysql
    在这里插入图片描述

    展开全文
  • Jmeter性能测试从入门到精通-全程实战 全程实战,每个知识点通过实际项目演练讲解 理论实践结合,既会做,又知道为什么这样做 讲解时同其他工具做对比,加深理解,了解区别 分享技巧,用起来事半功倍 从基础讲...
  • jmeter详细介绍

    千次阅读 2019-07-05 15:49:10
    jmeter工具介绍一、原理二、与loadrunner对比三、体系结构 一、原理 向服务器提交请求,并从服务器取回请求返回的结果。 即建立一个线程池,多线程运行取样器产生大量负载,在运行过程中通过断言来验证结果的正确性...

    一、原理

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

    二、与loadrunner对比

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

    三、目录结构

    在这里插入图片描述

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

    四、体系结构及控件使用

    1.结构
    在这里插入图片描述
    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:函数测试模式(只有当你需要记录每个请求从服务器取得的数据到文件时才需要选择函数测试模式。选择这个选项很影响性能。)
      在这里插入图片描述

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

    3. 线程组(Thread Users)
      一个测试计划内可以存在多个线程组。每个线程组之间的变量相互独立。
      在这里插入图片描述

    • 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:启动延迟
      在这里插入图片描述

    • setup thread group
      测试初始化操作,即线程组开始之前执行的内容,用于初始化测试环境,测试数据准备等。在这里插入图片描述

    • tear down线程组
      测试执行后操作,即线程组执行完成之后执行的内容。可用于清理测试环境,清空测试数据等。
      在这里插入图片描述

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

    1. http请求(Http request)较为常用
      例如:Get方法
      在这里插入图片描述
      post方法:
      在这里插入图片描述

    2. Flow control Action 测试活动(老版本叫Test Action)
      请求的执行动作,放在取样器后定义,例如执行某个请求之后暂停等操作。
      在这里插入图片描述

    3. debug sampler 调试取样器
      一般只需要改动name,把需要关注的变量填写在name里,多个变量用逗号隔开即可
      在这里插入图片描述
      在这里插入图片描述

    6.Pre Processors 前置处理器
    取样器请求前执行的操作,可以是获取测试数据,修改参数等。
    平时很少用到,常用的是后置处理器。
    在这里插入图片描述
    7.Post Processors 后置处理器
    请求执行后的处理,常用的是正则表达式提取器和jason提取器
    在这里插入图片描述

    1. regular expression extractor 正则表达式提取器
      需要某个请求的response里的内容时,可以通过正则表达式来提取。用调试取样器来看正则取出来的内容对不对。
      引用名称:提取的内容赋给变量,这里的引用名称就是变量名称
      在这里插入图片描述
      8.Logic Controller 逻辑控制器
      在这里插入图片描述
    • 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输入框中即可
    在这里插入图片描述
    在这里插入图片描述
    把条件结果改为真,再次执行,发现该控制器下的请求也执行了。
    在这里插入图片描述
    在这里插入图片描述

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

    • 循环控制器
      指定该控制器下的请求执行次数,可以填写具体数值,也可以设置为变量。
      选中永远,会一直循环执行。
      在这里插入图片描述

    • 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:数字之前加上下划线
      在这里插入图片描述
      实例:如上,变量前缀是account,勾选了加下划线的选项,那用户自定义变量命名规范为account
      +数字,如下所示:
      在这里插入图片描述在这里插入图片描述
      执行结果如下:
      在这里插入图片描述

    • 简单控制器
      这是Jmeter里最简单的一个控制器,它可以让我们组织我们的采样器和其它的逻辑控制器(分组功能),提供一个块的结构和控制,并不具有任何的逻辑控制或运行时的功能。
      在这里插入图片描述

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

    • Throughput Controller 吞吐量控制器
      控制其下的子节点的执行次数与负载比例分配
      Total Executions:设置运行次数
      Percent Executions:设置运行比例(1~100之间)
      在这里插入图片描述
      没用到,后续补充

    7.Config Element 配置元件
    在这里插入图片描述

    • CSV数据文件设置
      多用于数据读取测试数据
      实例:在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    • HTTP信息头管理器
      定义信息头,在其覆盖下的所有元件都会使用该信息头。
      在这里插入图片描述

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

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

    • 用户定义的变量略

    8.Timer 定时器
    类似思考时间,控制取样器的间隔时间。
    在这里插入图片描述

    • 固定定时器
      固定定时器不计入单个取样器的响应时间,只计入事务控制器的时间。
      在这里插入图片描述

    • 高斯随机定时器
      指定时间范围内随机。
      在这里插入图片描述

    • 同步定时器
      loadrunner中集合点的存在,取样器到该定时器下会暂停,达到指定线程数后并发。
      没用过,后续补充在这里插入图片描述

    9.断言
    判断请求响应值是否正确的控件,常用的是响应断言。
    在这里插入图片描述
    实例:设置如果返回的code不是300,就判定为错误(注:断言要放在请求内部
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    10.Listener 监听
    查看请求执行结果的控件,常用的是察看结果树和聚合报告
    在这里插入图片描述

    • 察看结果树
      可查看请求响应的结果、请求内容和响应数据。
      可自定义把数据写入 某个文件内,请求很多的时候,可以通过查找功能进行定位查看。 在这里插入图片描述

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

    压测综合实例:
    在这里插入图片描述

    展开全文
  • jmeter基本使用

    万次阅读 2018-01-22 22:31:24
    2. JMeterPlugins-Standard-1.4.0、JMeterPlugins-Extras-1.4.0 3. ServrerAgent-2.2.1 2.jmeter测试过程 2.1 线程组 ) 新建测试计划(步骤省略)后,选择添加线程组,进入线程组设置页面,其中线程数代
  • jmeter3.0下载

    2020-07-30 23:33:22
    自动化测试工具,基于性能、压力等测试。jmeter,让开发和测试工程师可以在一个平台上高效协同,即时反馈,把每一个需求追踪到底.
  • jmeter 的基本使用

    千次阅读 2019-05-18 00:18:46
    最近项目准备开发一个抽奖活动,我作为质保呢,被产品给点到了,产品同学专门分享了一片关于抽奖活动测试的文章到群里,而这篇文章里面的主要测试工具就是jmeter,恰好我也了解一些jmeter的基础,正好趁着这次测试的...
  • JMeter做压力测试教程及结果分析

    万次阅读 多人点赞 2020-10-09 14:07:33
    一、测试工具: JMeter 二、JMeter介绍: Apache JMeter是Apache组织开发的基于Java的压力测试工具。...(1)因为JMeter是使用JAVA写的,所以使用JMeter之前,先安装JAVA环境, oracle官网下载JDkht...
  • jmeter界面设置为中文,永久中文

    万次阅读 多人点赞 2018-06-30 10:53:59
    找到jmeter下的bin目录,打开jmeter.properties 文件第三十七行修改为language=zh_CN去掉前面的#,以后打开就是中文界面了
  • 最新版JMeter在Mac下安装详细教程

    万次阅读 2017-12-25 17:03:05
    Step 1: Download Apache JMeter:http://jmeter.apache.org/download_jmeter.cgi下载Binaries中的 ...解压apache-jmeter-3.3.tgz, 使用命令:tar -zxvf apache-jmeter-3.3.tgzStep 3: 打开刚解压到的文件a
  • Jmeter安装目录/bin/jmeter.properties中sampleresult.default.encoding默认为ISO-8859-1,将参数修改为 sampleresult.default.encoding=utf-8 即可 同时注意将注释符号#去掉,否则不会生效
  • Jmeter日志输出和日志级别设置

    万次阅读 2016-05-04 14:52:25
    Jmeter运行出现问题可以通过调整jmeter的日志级别定位问题,但运行测试时建议关闭jmeter日志,jmeter打印日志耗费系统性能。 Jmeter日志默认存放在%JMeter_HOME%\bin目录,文件名通常是JMeter.log。日志记录与...
  • jmeter历史版本下载

    万次阅读 2018-03-07 17:34:17
    jmeter历史版本下载:历史版本
  • jmeter设置全局变量以及调用方法
  • Jmeter环境变量配置详解

    万次阅读 多人点赞 2018-07-16 07:31:13
    我在网上看了好多博客 讲的都不够详细 对于初学者来说,很难配置好,在这写个博客 注:在安装Jmeter之前,请先检查下电脑有没有装JDK:开始->运行->然后输入cmd->进入命令行界面,输入java -...
  • Windows版JMeter下载安装

    万次阅读 热门讨论 2019-06-11 17:01:05
    进入apache官网... 配置环境变量(JMETER_HOME=D:\JMeter\apache-jmeter-5.1.1) 配置环境变量(classpath=%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\l...
  • JMeter 日志和错误信息

    万次阅读 2018-09-12 14:54:39
    如果JMeter发现一个错误,一个消息将被写入日志文件。日志文件名在jmeter.properties文件中定义。一般定义为jmeter.log。并且 在JMeter启动目录。   最后欢迎大家访问我的个人网站:1024s...
  • Jmeter:修改内存配置

    万次阅读 2017-10-14 23:48:34
    在压测过程中jmeter报内存溢出,可能的原因有很多。要注意下面三点: 1、单击压测过程中使用过多的线程,官网建议1000-2000。具体看机器的配置和启动应用的情况。(A single JMeter client running on a 2-3 GHz ...
1 2 3 4 5 ... 20
收藏数 61,518
精华内容 24,607
关键字:

jmeter