JMETER的安装介绍以及使用

 

Apache JMeter™官网 https://jmeter.apache.org/

推荐博客:https://www.cnblogs.com/iceb/p/7094047.html

阿帕奇JMeter的™应用程序是开源软件,旨在为负载测试功能行为和测量性能的100%纯Java应用程序。它最初是为测试Web应用程序而设计的,但后来扩展到其他测试功能。

  • 能够加载和性能测试许多不同的应用程序/服务器/协议类型:
    • Web - HTTP,HTTPS(Java,NodeJS,PHP,ASP.NET,...)
    • SOAP / REST Web服务
    • FTP
    • 数据库通过JDBC
    • LDAP
    • 面向消息的中间件(MOM)通过JMS
    • 邮件 - SMTP(S),POP3(S)和IMAP(S)
    • 本机命令或shell脚本
    • TCP
    • Java对象
  • 全功能的测试IDE,允许快速测试计划记录(来自浏览器或本机应用程序),构建和调试
  • 从任何兼容Java的操作系统(Linux,Windows,Mac OSX,...)加载测试的命令行模式(非GUI /无头模式
  • 完整且随时可呈现的动态HTML报告
  • 通过从最流行的响应格式,HTMLJSON, XML任何文本格式中提取数据的能力,轻松实现相关性
  • 完全可移植性和100%Java纯度
  • 完整的多线程框架允许多个线程进行并发采样,并通过单独的线程组同时对不同函数进行采样。
  • 缓存和离线分析/重放测试结果。
  • 高度可扩展的核心:

     

     

    • 可插拔采样器允许无限的测试功能。
    • 可编写脚本的采样器(与Groovy和BeanShell 等JSR223兼容的语言)
    • 可以使用可插拔定时器选择多个负载统计信息。
    • 数据分析和可视化插件具有很好的可扩展性和个性化。
    • 函数可用于为测试提供动态输入或提供数据操作。
    • 通过Maven,Graddle和Jenkins的第三方开源库轻松持续集成

    我们为什么使用Jmeter

     

    如何使用Jmeter 

    • 开源免费,基于Java编写,可集成到其他系统可拓展各个功能插件
    • 支持接口测试,压力测试等多种功能,支持录制回放,入门简单
    • 相较于自己编写框架或其他开源工具,有较为完善的UI界面,便于接口调试
    • 多平台支持,可在Linux,Windows,Mac上运行
  • 安装JDK,配置环境变量(具体步骤不做介绍)
  • 安装JMeter,到官网上下载JMeter压缩包。解压后,同样的也要配置环境变量。

  • 新建一个环境变量名:JMETER_HOME, 变量值为你解压JMeter的路径,比如:E:\应用软件\JMeter\apache-jmeter-2.13

  • 在pass中添加%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;

  •  

    在cmd中打jmeter,如果启动了就代表设置成功

     

     

     

     

     

     

    •  

       

      Jmeter的目录结构 

    • /bin 目录(常用文件介绍)

      examples:目录下包含Jmeter使用实例

      ApacheJMeter.jar:JMeter源码包

      jmeter.bat:windows下启动文件

      jmeter.sh:Linux下启动文件

      jmeter.log:Jmeter运行日志文件

      jmeter.properties:Jmeter配置文件

      jmeter-server.bat:windows下启动负载生成器服务文件

      jmeter-server:Linux下启动负载生成器文件

    • /docs目录——Jmeter帮助文档
    • /extras目录——提供了对Ant的支持文件,可也用于持续集成
    • /lib目录——存放Jmeter依赖的jar包,同时安装插件也放于此目录
    • /licenses目录——软件许可文件,不用管
    • /printable_docs目录——Jmeter用户手册

    添加虚拟用户组

    如下图所示,右击“测试计划”>添加>Threads(Users)>线程组。这里xmeter君需要解释一下“线程组”的意思:JMeter是由Java实现的,并且使用一个Java线程来模拟一个用户,因此线程组(Thread Group)就是指一组用户的意思,换句话说一个线程组就是一组虚拟用户(virtual users),这些虚拟用户用来模拟访问被测系统。

    JMETER的安装介绍以及使用_第1张图片

    新建线程组

    接下来xmeter君给大家介绍下“线程组”中常用到的一些设置。

    1)线程数:这里就是指虚拟用户数,默认的输入是“1”,则表明模拟一个虚拟用户访问被测系统,如果想模拟100个用户,则此处输入100。

    2)Ramp-Up Period (in seconds): 虚拟用户增长时长。不明白别着急,xmeter君给你举个栗子:比如你测试的是一个考勤系统,那么实际用户登录使用考勤系统的时候并不是大家喊1、2、3 - 走起,然后一起登录。实际使用场景可能是9点钟上班,那么从8:30开始,考勤系统会陆陆续续有人开始登录,直到9:10左右,那么如果完全按照用户的使用场景,设计该测试的时候此处应输入40(分钟)* 60(秒)= 2400。但是实际测试一般不会设置如此长的Ramp-Up时间,原因嘛,难道你做一次测试要先等上40分钟做登录操作?一般情况下,可以估计出登录频率最高的时间长度,比如此处可能从8:55到9:00登录的人最多,那这里设置成300秒,如果“线程数”输入为100,则意味着在5分钟内100用户登录完毕。

    3)循环次数:该处设置一个虚拟用户做多少次的测试。默认为1,意味着一个虚拟用户做完一遍事情之后,该虚拟用户停止运行。如果选中“永远”,则意味着测试运行起来之后就根本停不下来了,除非你把它强制咔嚓。

    JMETER的安装介绍以及使用_第2张图片

    线程组的设置

    添加被测页面

    接下来的一步就是要加入实际被测页面,右击“线程组” > “添加” > “Sampler” > “HTTP请求”。

    JMETER的安装介绍以及使用_第3张图片

    添加“HTTP请求”

    接下来需要设置一下“HTTP请求” Sampler的属性,如下所示:

    1)名称:输入“百度”,就是被测试网页的描述性文字

    2)服务器名称或IP:被测服务器的网站名字,也可以是IP地址。剩下的属性可以按照被测系统的属性按需配置,现在都可以为空。

    JMETER的安装介绍以及使用_第4张图片

    设置HTTP请求的属性

    现在的测试脚本已经可以运行了,先点击下面如图所示的第一步:点击保存脚本按钮;然后点击如图所示的第二步:点击运行测试按钮。

    JMETER的安装介绍以及使用_第5张图片

    保存与运行测试

    等等,xmeter君,为什么我的测试跑完了没啥反应?嗯,其实测试已经跑完了,你可以去“选项” > “Log Viewer”看看运行的日志。如果你还是看不到日志,你可以点击下面所示的三角箭头展开或者收起日志视图。日志视图中可以看到“线程组 1-1”的启动和结束时间,表明测试已经跑完。

    JMETER的安装介绍以及使用_第6张图片

    测试日志视图

    这JMeter运行看着也太不直观了吧?那如果我的测试有问题了,怎么发现啊?别着急,JMeter提供了“监听器”让用户来观察测试结果。

    添加结果监听器

    如下图所示,右击“线程组” > “监听器” > “察看结果树”来查看性能测试过程中请求和响应信息。添加完毕后,保存测试脚本,再次运行。

    JMETER的安装介绍以及使用_第7张图片

    添加查看结果树

    运行测试完毕之后,点击“察看结果树” > “百度”,点击下图中3所示位置,你可以看到一些测试期间一些有用的信息,比如发送的请求的信息和响应数据等。接下来可以试着改一下“线程组”里的“线程数”为10,就是模拟10个用户访问。别改太大哦,否则小心度娘把你的IP地址给封了 :-)

    JMETER的安装介绍以及使用_第8张图片

    察看结果树截图

     

     

    通过JMeter生成HTML性能报告

     

    有时候我们写性能报告的时候需要一些性能分布图,JMeter是可以生成HTML性能报告的

      一、准备工作

      1:jmeter3.0版本之后开始支持动态生成测试报表

      2:jdk版本1.7以上

      3:需要jmx脚本文件

      二、基本操作步骤

      首先执行cmd命令:进入jmeter的安装目录bin目录里面

      输入命令:jmeter -n -t 目录 test.jmx -l result.jtl -e -o 目录/tmp/ResultReport

      举个栗子:jmeter -n -t D:\apache-jmeter-3.2\bin\yqjr.jmx -l result.jtl -e -o D:\apache-jmeter-3.2\bin\HttpReport

      参数说明:

      ● -n: 非GUI模式执行JMeter

      ● -t: 执行测试文件所在的位置

      ● -l: 指定生成测试结果的保存文件,jtl文件格式

      ● -e: 测试结束后,生成测试报告

      ● -o: 指定测试报告的存放位置

      说明:

      这段命令中,第一处标粗的是我的接口脚本跟路径,第二处标粗的是自动生成的jtl文件,第三处标粗的是报告文件夹路径,

      这一段命令在cmd下执行命令即可(注意,必须在脚本文件路径下执行cmd,否则需要cmd下执行切换路径)

      注意:

      结尾的 ResultReport 是自己手动创建的报告文件夹。每次启动命令之前,文件夹内容必须和 jtl 文件一起清空,否则这段指令会报错!!!

     
    JMETER的安装介绍以及使用_第9张图片
    二、如果已经存在结果文件(.jtl),可运行如下命令生成报告 
    jmeter -g result.jtl -o /tmp/ResultReport 
    参数: 
    -g : result.jtl 已经存在的.jtl文件的路径。 
    -o :用于存放html报告的目录 
    这种没有日志打印,下面是截图: 
    这里写图片描述

    无论采用哪种方式,执行完后会在执行的目录生成如下文件或文件夹:

    JMETER的安装介绍以及使用_第10张图片

    双击打开index.html文件,就可以看到报告了。如图:

    JMETER的安装介绍以及使用_第11张图片

    这个报告总体分为两部分:Dashboard和Charts。

    先看一下Dashboard中都有什么?

    Test and Report informations:测试和报告信息: 测试结果保存文件/测试开始时间/测试结束时间/展示过滤器。 
    JMETER的安装介绍以及使用_第12张图片
    APDEX(Application Performance Index):应用程序性能满意度的标准,范围在 0-1之间,1表示达到所有用户均满意,可以在配置文件设置。 

  • JMETER的安装介绍以及使用_第13张图片

  •  

  • Requests Summary: 请求摘要,请求的通过率(OK)与失败率(KO),百分比显示。 
    JMETER的安装介绍以及使用_第14张图片
    Statistics: 综合统计图,数据分析,基本将 Summary Report 和 Aggrerate Report 的结果合并。 
    JMETER的安装介绍以及使用_第15张图片
    Errors: 错误情况统计图,依据不同的错误类型,将所有错误结果展示。 
    这里写图片描述
    Top 5 Errors by sampler:Top5错误信息采样 ,只显示前五条错误信息。
    JMETER的安装介绍以及使用_第16张图片

    接下来看一下Charts里的内容:

    Charts里如图所示分为三大块:时间维度信息(Over Time)、吞吐量(Thorughput)、响应时间(Response Times)

    JMETER的安装介绍以及使用_第17张图片

    Over Time 
    ● Response Times Over Time脚本运行时间内响应时间分布曲线 
    JMETER的安装介绍以及使用_第18张图片
    ● Response Time Percentiles Over Time (successful responses) 脚本运行时间内成功响应的请求,响应时间百分位 
    JMETER的安装介绍以及使用_第19张图片
    ● Active Threads Over Time 脚本运行时间内的活动线程分布 
    JMETER的安装介绍以及使用_第20张图片
    ● Bytes Throughput Over Time脚本运行时间内的吞吐量,单位是byte 
    JMETER的安装介绍以及使用_第21张图片
    ● Latencies Over Time脚本运行时间内毫秒级的响应延时 
    JMETER的安装介绍以及使用_第22张图片
    ● Connect Time Over Time脚本运行时间内平均连接时间 
    JMETER的安装介绍以及使用_第23张图片

    Throughput

    ● Hits Per Second (excluding embedded resources) 每秒点击数曲线 
    JMETER的安装介绍以及使用_第24张图片
    ● Codes Per Second (excluding embedded resources)每秒状态码分布曲线 
    JMETER的安装介绍以及使用_第25张图片
    ● Transactions Per Second 每秒事物数曲线 
    JMETER的安装介绍以及使用_第26张图片
    ● Response Time Vs Request 响应时间中值与每秒请求数关系曲线 
    JMETER的安装介绍以及使用_第27张图片
    ● Latency Vs Request 延迟时间中值与每秒请求数关系曲线 
    JMETER的安装介绍以及使用_第28张图片

    Response Times

    ● Response Time Percentiles毫秒级百分位响应时间曲线 
    JMETER的安装介绍以及使用_第29张图片
    ● Response Time Overview 响应时间概述柱状图 
    JMETER的安装介绍以及使用_第30张图片
    ● Time Vs Threads 活动线程与平均响应时间变化曲线 
    JMETER的安装介绍以及使用_第31张图片
    ● Response Time Distribution响应时间分布图 
    JMETER的安装介绍以及使用_第32张图片

     

     使用这个软件要明白QPSTPS、并发数

   一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢。系统吞吐能力越低,反之越高。

系统吞吐量几个重要參数:QPS(TPS)、并发数、响应时间(RT)

  QPS: 每秒钟处理完请求的次数;注意这里是处理完。具体是指发出请求到服务器处理完成功返回结果。

  TPS:每秒钟处理完的事务次数,一般TPS是对整个系统来讲的。一个应用系统1s能完成多少事务处理,一个事务在分布式处理中,可能会对应多个请求,对于衡量单个接口服务的处理能力,用QPS比较多。

  并发数:系统同一时候处理的request/事务数

  RT:响应时间,处理一次请求所需要的平均处理时间

计算关系:

  QPS = 并发量 / 平均响应时间

  并发量 = QPS * 平均响应时间

 

你可能感兴趣的:(JMETER,software)