当前位置: 代码迷 >> 综合 >> 【JMeter】JMeter简介
  详细解决方案

【JMeter】JMeter简介

热度:61   发布时间:2023-10-12 07:06:06.0

文章目录

      • 1. 目录介绍
        • 1.1 backups(备份)
        • 1.2 bin
        • 1.3 docs
        • 1.4 extras
        • 1.5 lib
        • 1.6 licenses
        • 1.7 printable_docs
      • 2. 主要概念
        • 2.1 测试计划
        • 2.2 Threads
        • 2.3 测试片段
        • 2.4 控制器
          • 2.4.1 取样器(Sampler)
          • 2.4.2 逻辑控制器(Logic Controller)
      • 3. 先举个栗子
        • 3.1 添加线程组
        • 3.2 添加HTTP请求
        • 3.3 添加查看结果树
        • 3.4 参数化
        • 3.5 添加断言
        • 3.6 添加断言结果
        • 3.7 添加聚合报告

1. 目录介绍

【JMeter】JMeter简介

1.1 backups(备份)

顾名思义,该目录是个备份目录,是将自己的各个Jmx脚本进行备份,所谓备份便是每次保存都会将该脚本进行保存到该目录下,如果保存多次便会保存多个同样的文件,文件名进行默认递增更改。

1.2 bin

【JMeter】JMeter简介

  1. examples(例子):该目录下存放Jmeter官方给的请求模板
  2. report-template(报告模板):该目录下存放Jmeter的报告模板(Jmeter是有自己的报告的)t
  3. templates(模板):该目录下存放Jmeter的各类配置模板,例如:JDBC、Beanshell、ThinkTime等
    【JMeter】JMeter简介
  4. Beanshell----:Beanshell请求、监听、断言、函数等
  5. Jmeter.bat:启动文件
  6. jmeter.properties:配置文件(属性在官方文档中有解释)
  7. jmeter-server.bat:用于分布式
  8. shutdown.cmd:硬停止
  9. stoptest.cmd:软停止
  10. xxx.sh:Linux下运行
  11. user.properties:用户配置i文件(同上)

1.3 docs

【JMeter】JMeter简介

  1. api:前面谈到Jmeter是开源的,此处便是它的API文档。
  2. css:xxxx
  3. Image:部分图片资源

1.4 extras

存放Build等配置,用于第三方集成构建

1.5 lib

存放各类jar包,组件类函数类等

1.6 licenses

许可证等

1.7 printable_docs

用户手册

2. 主要概念

2.1 测试计划

描述一个性能测试,包含本次测试所有相关功能
【JMeter】JMeter简介
其中各个配置的信息详见另一篇博文:https://blog.csdn.net/qq_34659777/article/details/99960544

2.2 Threads

【JMeter】JMeter简介

  1. Setup thread group:

一种特殊类型的线程,可用于执行预测试操作。即执行测试前进行定期线程组的执行

  1. Teardown thread group:

一种特殊类型的线程,可用于执行测试后动作。即执行测试结束后执行定期的线程组

以上两个线程组,举个例子:loadrunner的脚本除了action里是真正的脚本核心内容,还有初始化“环境”的初始化脚本和测试完毕后对应的清除信息的脚本块,与其对应

  1. Thread group:

通常添加使用的线程,一般一个线程组可看做一个虚拟用户组,其中每个线程为一个虚拟用户

2.3 测试片段

【JMeter】JMeter简介
2.5版本之后新增的一个选项,是一种特殊的线程组,在测试树上与线程组一个层级,但是它不被执行,除非它是一个模块控制器或者被控制器所引用时才会被执行

2.4 控制器

Jmeter有2种控制器:取样器(sampler)和逻辑控制器(Logic Controller)

作用:用这些原件驱动处理一个测试

2.4.1 取样器(Sampler)

【JMeter】JMeter简介
是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元,JMeter 原生支持多种不同的sampler

如 HTTP Request Sampler 、 FTP Request Sampler 、TCP Request Sampler 、JDBC Request Sampler 等

每一种不同类型的 sampler 可以根据设置的参数向服务器发出不同类型的请求。

Java Request Sampler 和 Beanshell Request Sampler 是两种特殊的可定制的 Sampler (暂不讨论)

2.4.2 逻辑控制器(Logic Controller)

【JMeter】JMeter简介
包含两类原件:

一类是控制Test Plan中Sampler节点发送请求的逻辑顺序控制器,常用的有:If Controller、Swith Controller、Loop Controller、Random Controller等

另一类是用来组织和控制Sampler节点的,如Transaction Controller、Throughput Controller等

3. 先举个栗子

3.1 添加线程组

【JMeter】JMeter简介
【JMeter】JMeter简介
线程组参数详解:

  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. 调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)
    持续时间(秒):测试持续时间,会覆盖结束时间
    启动延迟(秒):测试延迟启动时间,会覆盖启动时间
    启动时间:测试启动时间,启动延迟会覆盖它。当启动时间已过,手动只需测试时当前时间也会覆盖它。
    结束时间:测试结束时间,持续时间会覆盖它。

现在先试一个简单的例子,后面再进行详细的配置。

3.2 添加HTTP请求

【JMeter】JMeter简介
这里我用了聚合数据的新闻API:
【JMeter】JMeter简介
接口文档如上,在JMeter中填写就是这个样子:
【JMeter】JMeter简介
Http请求主要参数详解:

  1. Web服务器

协议:向目标服务器发送HTTP请求协议,可以是HTTP或HTTPS,默认为HTTP
服务器名称或IP :HTTP请求发送的目标服务器名称或IP
端口号:目标服务器的端口号,默认值为80,非必填项

  1. Http请求

方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。
路径:目标URL路径(URL中去掉服务器地址、端口及参数后剩余部分)
Content encoding :编码方式,默认为ISO-8859-1编码,也可配置为utf-8

  1. 下面的几个多选框

自动重定向:如果选中该项,发出的http请求得到响应是301/302,jmeter会重定向到新的界面

Use keep Alive:jmeter 和目标服务器之间使用 Keep-Alive方式进行HTTP通信(默认选中)

Use multipart/from-data for HTTP POST :当发送HTTP POST 请求时,使用

  1. Parameters

parameter是指函数定义中参数

  1. Body Data

实体数据,就是请求报文里面主体实体的内容,一般我们向服务器发送请求,携带的实体主体参数,可以写入这里

  1. Files Upload

指的是:从HTML文件获取所有有内含的资源:被选中时,发出HTTP请求并获得响应的HTML文件内容后还对该HTML 进行Parse 并获取HTML中包含的所有资源(图片、flash等):(默认不选中)
如果用户只希望获取特定资源,可以在下方的Embedded URLs must match 文本框中填入需要下载的特定资源表达式,只有能匹配指定正则表达式的URL指向资源会被下载

3.3 添加查看结果树

【JMeter】JMeter简介
【JMeter】JMeter简介

3.4 参数化

【JMeter】JMeter简介
在这里我们添加一个新的变量:
【JMeter】JMeter简介
然后在之前的HTTP请求中调用,调用格式为${keji_type}:
【JMeter】JMeter简介
启动就会在结果树中查看到相应的结果。

3.5 添加断言

【JMeter】JMeter简介
因为我们刚刚查找的是科技类的文章,所以我们来断言,响应结果中是否有“科技”字段。
【JMeter】JMeter简介

3.6 添加断言结果

【JMeter】JMeter简介
【JMeter】JMeter简介

3.7 添加聚合报告

存放性能测试报告,在每次测试之前需要点击小扫把按钮清除之前的调试结果。
【JMeter】JMeter简介
【JMeter】JMeter简介
聚合报告参数详解:

  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 吞吐量。

这样,我们就完成了一个完整HTTP接口的JMeter性能测试脚本编写。

其他JMeter的使用教程在我的另一篇博客中做了整合,传送门:
https://blog.csdn.net/qq_34659777/article/details/85765309

最后总结一下:
如果你对此文有任何疑问,如果你也需要接口项目实战,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入:软件测试技术群:593462778,群里的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。

作者:暗潮汹涌
原创不易,欢迎转载,但未经作者同意请保留此段声明,并在文章页面明显位置给出原文链接。