Jmeter

1.JDK安装

由于Jmeter是基于java开发,首先需要下载安装JDK

1. 官网下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

2. JDK下载

3. 安装下载的JDK

4. 配置系统环境变量

2 JMeter安装

  1. 官网下载地址:http://jmeter.apache.org/download_jmeter.cgi
  2. 下载最新JMeter下载完成后解压zip包

  1. Jmeter文件目录介绍

  1. 双击JMeter解压路径(apache-jmeter-5.1.1\bin)bin下面的jmeter.bat即可运行

3. Jmeter八类可执行元件

3.1可执行元件

1、配置元件
  用来提供对静态数据配置的支持。例CSV Data Set config可以将本地数据文件形成数据池(Date Pool)。

2、定时器(具有LR的Think_time功能)
  用于操作之间设置等待时间,等待时间是性能测试中常用的控制客户端QPS的手段。可以理解为模拟用户思考时间

3、前置处理器
  用于在实际的请求发出之前对即将发出的请求进行特殊处理。例当url中有SessionID一类的信息时,可以通过该处理器填充发出请求实际的SessionID。

4、后置处理器(具有类似于LR中的关联功能)
  用于对Sampler发出请求后得到的服务器响应数据进行处理,一般用于提取响应中的特定数据。

5、断言(具有类似于LR中的检查点功能)
  用于检查测试中得到的响应数据是否符合预期。断言一般用来设置检查点,验证测试过程中的数据交互是否与预期一致。

6、监听器(具有类似于LR中的日志功能)
  用来对测试结果数据进行处理和可视化显示的一系列原件。图形结果、查看结果树、聚合报告等都是比较常用的原件。注意:监听器不是用来监听系统资源的元件

7、取样器–Sampler
  是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元,如 HTTP Request Sampler ,FTP Request Sampler 等,每一种不同类型的Sampler可以根据设置的参数向服务器发送不同的请求。

8、逻辑控制器

逻辑控制器的作用域只对其子节点的sampler有效,作用是控制采样器的执行顺序。分为两类元件:一类用于控制Test Plan中Sampler节点发送请求的逻辑顺序控制器,常用的有 如果(If)控制器、Swirch控制器、Runtime控制器、循环控制器等。另一类用来对Test Plan中的脚本进行分组,方便Jmeter统计执行结果以及脚本运行时的控制。如事务控制器、吞吐量控制器等。

3.2元件的执行顺序

1、配置元件(Config Elements)

2、前置处理器(Pro-processors)

3、定时器(Timers)

4、取样器(Sampler)

5、后置处理器(Post-processors)

6、断言(Assertions)

7、监听器(Listeners)

需注意事项:

a)前置处理器、后置处理器和断言等元件功能对取样器作用。因此,如果在它们的作用域内没有任何取样器,则不会被执行;

b)如果在同一作用域范围内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序依次执行。

4.测试实例

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

4.1 接口地址

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

4.2 请求参数

ie:编码方式,默认为utf-8

wd: 搜索词

4.3 返回结果

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

5.JMeter脚本编写

jmeter打开后会自动生成一个空的test plan,可以基于这个这个测试计划建立自己的测试计划

5.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. 延迟创建线程直到需要:直到需要时延迟线程的创建。

5. 调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)

持续时间(秒):测试持续时间,会覆盖结束时间

启动延迟(秒):测试延迟启动时间,会覆盖启动时间

5.2 添加HTTP请求

右键点击“线程组” -> “添加” -> “取样器” -> “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

3.同请求一起发送参数

在请求中发送的URL参数,用户可以将URL中所有参数设置在本表中,表中每行为一个参数(对应URL中的 name=value),注意参数传入中文时需要勾选“编码”

5.3 添加察看结果树

右键点击“线程组” -> “添加” -> “监听器” -> “察看结果树”

这时,我们运行Http请求,修改响应数据格式为“HTML Source Formatted”,可以看到本次搜索返回结果页面标题为”jmeter性能测试_百度搜索“。

5.4 添加用户自定义变量

我们可以添加用户自定义变量用以Http请求参数化,右键点击“线程组” -> “添加” -> “配置元件” -> “用户定义的变量”:

新增一个参数wd,存放搜索内容:

并在Http请求中使用该参数,格式为:${wd}

5.5 添加断言

右键点击“HTTP请求” -> “添加”-> “断言” -> “响应断言”

我们校验返回的文本中是否包含搜索词,添加参数${wd}到要测试的模式中:

5.6 添加断言结果

右键点击“HTTP请求” -> “添加”-> “监听器” -> “断言结果”

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

5.7 添加聚合报告

右键点击“线程组” -> “添加” -> “监听器” -> “聚合报告”,用以存放性能测试报告

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

6. 执行性能测试

6.1 配置线程组

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

6.2 执行测试

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

7. 分析测试报告

待性能测试执行完成后,打开聚合报告可以看到:

聚合报告参数详解:

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

Jmeter基础教程相关推荐

  1. Jmeter基础教程合集

    环境搭建 1.安装java 8.0以上版本 2.下载jmeter并安装.安装参考网址:https://blog.csdn.net/wust_lh/article/details/86095924 3. ...

  2. Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现

    自Spring Cloud Alibaba发布第一个Release以来,就备受国内开发者的高度关注.虽然Spring Cloud Alibaba还没能纳入Spring Cloud的主版本管理中,但是凭 ...

  3. [SQL基础教程] 1-5 表的删除和更新

    [SQL基础教程] 1-5 表的删除和更新 表的删除 语法 DROP TABLE <表名>; 法则 1-12 删除的表无法恢复 表定义的更新 语法 ALTER TABLE<表名> ...

  4. python 包用法_Python 基础教程之包和类的用法

    Python 基础教程之包和类的用法 这篇文章主要介绍了 Python 基础教程之包和类的用法的相关资料, 需要的朋友可以参考下 Python 是一种面向对象.解释型计算机程序设计语言,由 Guido ...

  5. Spring Cloud Alibaba 基础教程:Nacos 生产级版本 0.8.0

    Spring Cloud Alibaba 基础教程:Nacos 生产级版本 0.8.0 昨晚Nacos社区发布了第一个生产级版本:0.8.0.由于该版本除了Bug修复之外,还提供了几个生产管理非常重要 ...

  6. Python培训基础教程都教哪些

    根据相关数据统计,目前学习Python技术的同学大多数是零基础,都是从其他行业转型来学习的,那么Python培训基础教程都教哪些呢?好不好学呢?来看看下面的详细介绍. Python培训基础教程都教哪些 ...

  7. 深度学习之Pytorch基础教程!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:李祖贤,Datawhale高校群成员,深圳大学 随着深度学习的发展 ...

  8. python平稳性检验_时间序列预测基础教程系列(14)_如何判断时间序列数据是否是平稳的(Python)...

    时间序列预测基础教程系列(14)_如何判断时间序列数据是否是平稳的(Python) 发布时间:2019-01-10 00:02, 浏览次数:620 , 标签: Python 导读: 本文介绍了数据平稳 ...

  9. %3c- r语言运算符,R语言基础教程之运算符

    原标题:R语言基础教程之运算符 运算符类型 在R编程中有以下类型的运算符 - 算术运算符 关系运算符 逻辑运算符 赋值运算符 其他运算符1.算术运算符 下表显示了R语言支持的算术运算符.运算符对向量的 ...

  10. python分类器鸢尾花怎么写_python机器学习基础教程-鸢尾花分类

    一: 环境准备: 1.导入的库: importnumpy as npimportmatplotlib.pyplot as pltimportpandas as pdimport mglearn 2.导 ...

最新文章

  1. 用树莓派获取天气状况
  2. JSP+servlet生成验证码并验证
  3. ASP.NET MVC项目 解决session失效
  4. [BUUCTF-pwn]——mrctf2020_shellcode
  5. 信息奥赛一本通(1413:确定进制)
  6. 小汤学编程之JAVA基础day13——I/O流
  7. Python基础__Python序列基本类型及其操作(1)
  8. 公司安排员工扫地,引发员工不满,程序员:保洁阿姨都请不起?
  9. matlab角点坐标获取,MatLab角点检测(harris经典程序) | 学步园
  10. Jsp+Ssh+Mysql+Redis实现的Java Web订餐点餐
  11. android定义dialog
  12. java 过滤js事件_java中的过滤器与监听器
  13. 如何正确获取安卓内置SD卡的路径
  14. 如何利用情感词典做中文文本的情感分析?
  15. PS学习笔记--去掉图片上不想要的部分
  16. 补助系统C语言,领钱了!全国各省信息系统项目管理师证书技能提升补贴说明...
  17. Web服务器及性能优化
  18. Dubbo 线上 Thread pool is EXHAUSTED 问题跟踪
  19. Python开发——8.模块
  20. 流行和声(7)min7b5/半减七和弦

热门文章

  1. ibm服务器刷主板系统,IBM X3850 X5服务器更换主板后修改主板信息
  2. pgAdmin III简介
  3. 金税三期工程第二阶段数据级灾备项目需求
  4. Maven Pom文件详解
  5. android zip winrar,WinRAR Zip Unzip Archive
  6. php709,深度爆料评测bt2020与bt709有什么区别?哪个好?良心点评实际情况
  7. 广义S变换的地震高分辨率处理中的应用
  8. oracle11 g ora 03113,解决oracle11g ORA-32004: obsolete or deprecated parameter(s)
  9. qt中使用mysql模糊查询_mysql数据库模糊查询简介
  10. 在Java编程中,为什么char类型数组可以直接用数组名打印,而其他类型数组打印结果而是地址值。