Jmeter的基础讲解

JMeter是一款由Apache开发的基于Java的压力测试工具,主要用于Web应用的测试。本文详细介绍了JMeter的测试计划要素,包括脚本、线程组、采样器、监听器等核心概念,并展示了如何进行基本的性能测试和模拟请求。通过实例操作,讲解了界面菜单、线程组参数设置、采样器配置、监听器选择以及断言、定时器、逻辑控制器等组件的使用。此外,还提到了JMeter中的插件和配置原件,帮助读者掌握JMeter的全面应用。

1.JMeter讲解

1.JMeter是什么?

我这里引用一下百度百科的标准解释:JMeter是Apache组织开发的基于Java的压力测试工具,用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。

2.JMeter测试计划要素是什么?

要素一:一个脚本中测试计划只能有一个

要素二:一个测试计划中至少要有一个线程组

要素三:至少要有一个取样器

要素四:至少要有一个监听器

3.JMeter运行原理是什么?

在JMeter中我们是以线程的方式来运行的。JMeter是通过线程组来驱动多个线程(类似LoadRunner中的虚拟用户)运行脚本对被测试的服务器发起负载,每一个负载机上都可以运行多个线程组。JMeter运行场景不仅可以在GUI方式中完成,还可以使用命令行,并且命令行的运行方式对于负载机的资源消耗会更小。

2.基本使用

1.界面介绍

菜单栏

1. 文件

  • 关闭:关闭当前打开的JMX文件 。
  • 打开:打开一个JMX文件。
  • Templates 模板:对常用的功能使用指导。主要有录制、JDBC测试、webserver测试等等,分为基本步骤和详细截图。 如果点用户链接,则会链接到apache jmeter 网站查看详细的步骤和截图指导。
  • 合并:会将多个JMX合并为一个 。
  • 保存测试计划:仅保存测试计划 工作台中添加的内容不会被保存。
  • 保存测试计划为:将测试计划另存。
  • 另存为:可以对工作台和测试计划或者测试例另存为JMX 注意另存为是点哪个位置,存的就是哪个内容。
  • save as Test fragment:存为一个测试片段,只有线程组、测试计划、工作台不能 保存为一个测试片段。
  • Revert:还原,将现在的jmx还原为已经保存过的JMX

2. 编辑

  • Save Node As Image(保存节点为图片): 将菜单的配置GUI保存为图片。
  • Save Screen As Image(保存屏幕为图片): 将整个jmeter界面保存为图片。
  • Toggle(切换):类似于java中设置断点的意思。

3. 查找

  • Search: 搜索所有配置中匹配的项,匹配成功显示为红色。
  • Reset Search: 重置搜索,清除搜索结果。

4. 运行

  • 启动: 启动运行测试计划
  • Start no pauses(不停顿开始): 无停顿启动运行测试计划 1,可以忽略定时器 2,再启动时运行更快
  • 远程启动/停止: 指定一个远程agent运行/停止测试计划。
  • 远程全部启动/停止: 让所有远程agent运行/停止测试。
  • 停止: 停止执行测试计划。
  • 关闭: 关闭测试计划。
  • Remote Shutdown: 关闭一个指定远程agent。
  • Remote Shutdown All: 关闭所有远程agent。
  • 远程退出: 指定一个远程agent退出执行。
  • 远程退出全部: 所有远程agent退出执行。
  • 清除: 清除选择菜单的执行结果。
  • 清除全部: 清除所有菜单的执行结果。

5. 选项

  • 函数助手对话框: 在编写脚本的时候,使用函数助手可以协助生成指定的代码。
  • 外观: jmeter界面样式。
  • Log Viewer: 日志查看器,选中后可以在右下方查看运行日志。
  • SSL管理器: 导入外置的SSL管理器,用于更好的管理证书, JMeter代理服务器不支持记录 SSL(https)。
  • 选择语言: 选择界面的语言,目前支持中文、英文、法语、德语等等。中文版很多翻译不全,可以直接使用英文版的。
  • Collapse All: 展开所有菜单。
  • Expand All: 折叠所有菜单

6. 帮助

  • What’s this node?: 当鼠标放在某个菜单的时候显示其含义。
  • Enable debug: 开启调试。
  • Disable debug: 取消调试。
  • Create a heap dump: 创建堆转储。这是创建当JVM崩溃的堆转储。这个文件可以用堆分析工具(如JHAT),以确定根本原因进行分析。

 2.简单的模拟性能测试

(不懂的可以转换中文)

(测试百度网站)

1.线程组

进程: 一个正在执行的程序对应一个进程

线程: 一个进程有多个执行线程

线程组: 按照线程性质对线程分组

三者关系: 一个进程有多个线程组,一个线程组有多个线程

操作:在测试计划>>添加>>Threads>>线程组

1. 线程组主要包含三个参数:线程数、准备时长(Ramp-Up Period(in seconds))、循环次数。

2. 线程数:虚拟用户数。一个虚拟用户占用一个线程。设置多少虚拟用户数在这里也就是设置多少个 线程数。

3. 准备时长(秒):设置的虚拟用户数需要多长时间全部启动。如果线程数为20 ,准备时长为10 ,那么需要10秒钟启动20个线程。也就是每秒钟启动2个线程。

4. 循环次数:每个线程发送请求的次数。如果线程数为20 ,循环次数为100 ,那么每个线程发送 100次请求。总请求数为20*100=2000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止 运行脚本。

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

6. 持续时间(秒):测试持续时间

7. 启动延迟(秒):测试延迟启动时间 

2.sampler(采样器)

作用:向服务器发送请求,记录响应信息,记录响应时间的最小单元(http,https,ftp,jdbc等)

1.操作:在线程组>>添加>>sampler>>http请求(常用)

 

 

一个HTTP请求有着许多的配置参数,下面将详细介绍:

名称:本属性用于标识一个取样器,建议使用一个有意义的名称。

注释:对于测试没有任何作用,仅用户记录用户可读的注释信息。

服务器名称或IP :HTTP请求发送的目标服务器名称或IP地址。

端口号:目标服务器的端口号。

方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、 DELETE等。

Content encoding :内容的编码方式,默认值为iso8859

路径:目标URL路径(不包括服务器地址和端口)

注意事项:

1:参数传递中Parameters和Body Data不能同时使用,必须要保证其中至少一个为空,否则提示错误

2:在传递的参数中,接口参数名和参数值两边不能有空格,否则会报错

3.监听器

作用:监听器可以动态的监控JMeter测试执行的过程,实时查看测试结果

1.操作:在线程组>>添加>>监听器>>聚合报告/查看结果树

通过察看结果树,我们可以看到每个请求的结果,其中红色的是出错的请求,绿色的为通过

Thread Name:线程组名称

Sample Start: 启动开始时间

Load time:加载时长

Latency:等待时长

Size in bytes:发送的数据总大小

Headers size in bytes:发送数据的其余部分大小

Sample Count:发送统计

Error Count:交互错误统计

Response code:返回码 Response

message:返回信息 Response

headers:返回的头部信息

lable:对应每一个http请求,显示的是http请求的Name,如百度http请求name为baidu

#Samples:表示这一次的测试中一共发出了多少请求,如上图所示,sougou和baidu的http请求 每个都发出30个请求

Average:平均响应时间,指的是所有的请求的平均响应时间,如上图的30个请求的总的响应时间 除以30得出的平均响应时间,默认的情况下是单个请求的平均响应时间,但当使用了“事务控制器” 时,则以事物为单位显示平均响应时间

Median:中位数,也就是50%用户的响应时间

90%Line:90%用户的响应时间

Min:最小响应时间

Max:最大的响应时间

Error%:本次测试中出现错误的请求的数量/请求的总数,如上图所示,本次的测试中,sougou的 http请求66.6%的请求出错,而baidu的请求则没有出错的请求

Throughput:吞吐量,默认情况下表示每秒完成的请求数,如上图所示,每秒完成的请求数分别 为6.6个每秒,6.2个每秒

Recived KB/Sec:每秒从服务器端接收到的数据量,以kb为计算的单位 

4.jmeter中插件的讲解

jmeter组件描述

1.测试计划是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。 2.线程组:代表一定数量的并发用户,它可以用来模拟并发用户发送请求。 3、取样器(Sampler):模拟各种请求。所有实际的测试任务都由取样器承担,存在很多种请求。 如:HTTP 、ftp请求等等。 4、监听器:负责收集测试结果,同时也被告知了结果显示的方式。功能是对取样器的请求结果显 示、统计一些数据(吞吐量、KB/S……)等。 6、断言:用于来判断请求响应的结果是否如用户所期望,是否正确,非常实用 7、定时器:负责定义请求(线程)之间的延迟间隔,模拟对服务器的连续请求。 5、逻辑控制器:允许自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的 请求序列。 8. 配置元件维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。 9. 前置处理器和后置处理器负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的 设置,后置处理器则常常用来处理响应的数据。

1.断言

作用:断言(Assertions)可以用来判断响应的数据是否符合预期

1.响应断言

操作:在线程组>>添加>>断言>>响应断言

 

2.json断言

操作:在线程组>>添加>>断言>>json断言

3.Xpath断言

定义:Xpath即为XML路径语言,它是一种用来确定XML文档中某部分位置的语言。xpath基于XML的树状结 构,提供在数据结构树中寻找节点的能力

操作:在线程组>>添加>>断言>>xpath断言

2.定时器

定时器(Timer)负责定义请求之间的延迟间隔

操作:在线程组>>添加>>定时器>>固定定时器

3.逻辑控制器

1.事务控制器

操作:在线程组>>添加>>逻辑控制器>>事务控制器

2.循环控制器

操作:在线程组>>添加>>逻辑控制器>>循环控制器

 

4.后置处理器

http请求默认值,会在发送http请求的时候,自带这些参数,复用的作用

1.http请求默认值(常用)

操作:线程组>>配置原件>>http请求默认值

 

2.正则表达式

常见的正则表达式如下(在线正则表达式)

操作须知

1)确定取值的范围

2)确定取值的左右边界,最好是能够唯一确定的值的边界

3)如果要查看我们的值是否正确,可以使用Debug Sampler 引用${变量名} 

操作:线程组>>添加>>后置处理器>>正则表达式提取器

3.JSON Extractor

通过json表达式提取数据

操作:线程组>>添加>>后置处理器>>JSON Extractor

 

 

 

 

5.监听器

作用:css/JQuery测试程序只适用于文本响应,可以根据Jsoup或Jodd对响应数据进行过滤和查看

1.察看结果树之cssJQuery_Tester

操作:线程组>>监听器>>察看结果树(cssJQuery_Tester)

2.:察看结果树之HTML

html模式有三种选项 HTML:HTML视图将响应以HTML方式展示。渲染的HTML可能无法和游览器显示的界面比较,图片和样式表等不 会下载,界面显示比较乱 HTML(source formatted),呈现出由Jsoup格式话的HTML源代码,跟Text模式基本没有区别 HTML(download resources),会下载HTML代码引用的图像,样式表等,呈现出更具体的HTML样式

3.察看结果树之json模式

json模式中有2中选项 JSON:JSON视图将显示树形风格的响应,和Text有明显的区别 JSON Path Tester:JSON路径测试视图将允许测试JSON-PATH表达式,从特定响应中查看提取的数据

4.察看结果树之Document

Document:视图将显示从各种类型的文档中提取文本

解决方式:下载tika-app-x.x.jar,并放在JMETER_HOME/lib目录下

5.察看结果树之RegExp Tester

RegExp Tester:Regexp仅使用于我那本响应。点击"Test"按钮,系统将应用regexp对上面板中的文本进 行查询,结果显示在面板中

示范:视频 提取里面的文本内容视频 name=tj_trvideo class=mnav>(.*?) 注意点:提取的内容,左右边界时唯一的

6.察看结果树之Xpath Tester

Xpath Tester:Xpath仅适用于文本响应。上面板显示了纯文本,点击"Test"按钮,系统就会刷选,显示最 终的信息

可以在游览器(谷歌)中选定元素右键copy对应的copy xpath

6.配置原件

1.用户自定义变量

当脚本中重复出现相同的变量的时候,可以使用用户定义变量来代替相同的参数

操作:线程组>>配置原件>>用户定义的变量

 

 

 

 

2.请求元件之参数化txt

操作:线程组>>配置原件>>CSV数据文件设置

 

 

 

 

当进行批量数据操作的时候,为了方便可以使用参数化来实现

3.请求元件之参数化csv

当进行批量数据操作的时候,为了方便可以使用参数化来实现

操作:线程组>>配置原件>>CSV数据文件设置

 

 

 

在注册接口中,用户名不能重复,我们需要使用不同的手机号注册,如果使用TXT可能不能很好的管理 数据,如果使用CSV类型,就方便很多,其他的用法和TXT是一样的,只是创建数据更加方便,我们以注 册接口完成操作:http://xg.plk123.cn/api/user/reg.do (参数phone,yzmCode,userPwd,agentCode)

7.函数助手

1.csvRead

当进行批量数据操作的时候,为了方便可以使用csvRead函数助手来实现

操作:选项>>函数注释对话框>>_CsvRead

 

 

2.randomstring

有的时候有一些参数是不断变化的,我们如果使用csv去做,还是要准备很多不同的数据,但是如果我们用 randomstring的话,就可以避免这个问题,但是随机生成的可能会有重复的数据

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值