jmeter的使用

jmeter的下载

点击下载路径直接下载

下载完成之后解压缩至指定目录,然后打开路径下的 bin目录,找到 jmeter.bat双击即可打开jmeter


jmeter常用组件

测试计划: 起点,所有组件的容器

线程组: 代表有一定数量的用户

取样器: 向服务器发送请求的最小单元

逻辑控制器: 结合取样器实现一些复杂的逻辑

前置处理器: 在请求之前的工作

后置处理器: 在请求之后的工作

定制器: 负责在请求质检的延迟间隔。固定、高斯、随机

配置元件: 配置信息

断言: 用于判断请求是否成功

监听器: 负责收集结果

执行顺序: 测试计划>>>线程组>>>配置元件>>>前置处理器>>>定时器>>>取样器>>>后置处理器>>>断言>>>监听器

作用域: 辅助组件(除测试计划、线程组、取样器之外的组件)作用于父组件、同级组件,以及同级组件下的所有子组件



一、Threads(Users)

1、线程组

线程组元件可以理解为一个测试计划的开始(jmeter其它的元件都要放在线程组下)

右击测试计划>>>添加>>>Threads(Users)>>>线程组



在取样器错误后要执行的动作

(1)继续:继续执行接下来的操作

(2)Start Next Thread Loop: 开始下一次循环

(3)停止线程:退出该线程,不在执行此线程的操作

(4)停止测试:等待当前执行的采样器结束后,结束整个测试

(5)Stop Test Now:立刻停止测试

线程属性

(1)线程数:相当于模拟的用户数量,一个用户占一个线程,模拟200个用户就是200个线程

注:进行参数化时,需配置对应的线程数量

(2)Ramp-Up Period (in seconds):设置多长时间内启动全部线程。例如线程数为100,时间设定为10s,那么就是10s加载 100个线程,每秒启动的线程数=100/10=10

(3)循环次数: 如果填具体的数值,就是循环对应的次数,例如线程数为200,循环次数为10,则每个线程发10次请求;如果选择“永远”,则一直执行下去,直到手动停止

(4)Delay Thread creation until needed:默认不勾选,测试开始时,所有的线程就被创建完。勾选此项,延迟线程创建,直到需要才创建

调度器配置

(1)持续时间(秒): 脚本持续运行的时间

(2)启动延迟(秒):脚本延迟启动的时间

二、Sampler

1、HTTP请求

选择线程组右键>>>添加>>>Sampler>>>HTTP请求


POST

Basic

(1)协议:向目标服务器发送http请求时的协议,http/https,大小写不敏感,默认http

(2)服务器名称或IP: http请求发送的目标服务器名称或者IP地址,比如www.baidu.com

(3)端口号:目标服务器的端口号,默认值为80

HTTP请求

(1)方法:发送http请求的方法,例:GET\POST

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

(3)内容编码:内容的编码方式(Content-Type=application/json;charset=utf-8)

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

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

(6)对POST使用multipart/from-data:当发送HTTP POST 请求时,使用

参数

 请求 URL 中添加参数,函数定义中参数,而argument指的是函数调用时的实际参数,简略描述为:parameter=形参(formal parameter),

消息体数据

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

文件上传

从HTML文件获取所有有内含的资源:被选中时,发出HTTP请求并获得响应的HTML文件内容后还对该HTML

三、配置元件

HTTP信息头管理器

设置jmeter发送的HTTP请求头所包含的信息

右键>>>添加>>>配置元件>>>HTTP信息头管理器


信息头,也就是请求头,会跟随HTTP请求一起发送到服务器。比如需要传输User-Agent 、cookie、token或其他某些信息,或是需要伪造请求头的时候。

HTTP Cookie管理器

右键>>>添加>>>配置元件>>>HTTP Cookie管理器


如果你有一个 HTTP 请求,其返回结果里包含一个 cookie,那么 Cookie 管理器会自动将该 cookie 保存起来,而且以后所有的对该网站的请求都使用同一个 cookie。

HTTP请求默认值

管理公用的HTTP请求配置数据

线程组右键>>>添加>>>配置元件>>>HTTP请求默认值


配置线程组下所有【HTTP请求】的请求行和请求体的默认值,与【HTTP请求】放在同级目录。配置后,每个【HTTP请求】无需重复配置,特殊的请求也可以单独配置,单独配置的优先级更高

CSV 数据文件设置

CSV 数据文件变量是指从外部 csv 文件读取数据出来作为变量

选择请求>>>添加>>>配置元件>>>CSV 数据文件设置


设置CSV数据文件

文件名:csv文件路径,可以是绝对路径或者相对路径

文件编码:编码格式,与所选文件编码格式保持一致

变量名称:如果文件中只有一个变量,直接写变量名,如果有多个变量,用英语的逗号隔开

是否允许带引号?

设置为true,参数文件包含引号时,实际的数据为引号中的数据。比如参数文件中的数据为"1",当使用该参数时,实际取得值为1

设置为false,参数文件包含引号时,实际取得值为全部的值。比如参数文件中的数据为"1",当使用该参数时,实际取得值为"1"

遇到文件结束符再次循环?:

设置为true后,参数文件中的数据循环使用,测试按照线程组中的设置执行。比如csv 文件共有 10 条记录,但线程数有 15 个,循环 10 次后,重头开始循环取值

设置为false后,参数文件不再循环遍历取值

遇到文件结束符停止线程:当执行完参数文件中所有参数后,直接停止线程

线程共享模式:

所有线程(All threads):参数文件对所有线程共享,这包括同一测试计划中的不同线程组(测试计划下的所有线程组下的所有线程共享参数文件,所有线程之前参数取值互相影响,线程在同一次迭代下取值相同)

当前线程组(Current thread group): 只对当前线程组中的线程共享(当前线程组下的所有线程公用一个参数文件,同一个线程组下的线程之前取值相互影响,线程在同一次迭代下取值相同)

当前线程(Current thread): 仅当前线程获取(即每个线程获取一个参数文件,各个线程之间参数取值互不影响,线程在同一次迭代下取值相同)

注:

1)当参数文件的位置与线程组在同级下,线程组下存在循环控制器时,循环控制器下的参数取值相同

2)线程组下存在循环控制器时,当参数文件在循环控制器下,循环控制器下每次迭代时重新取值

3)线程组下存在仅一次控制器,参数文件在仅一次控制器下,当参数在仅一次控制器下取值一次之后,之后无论哪次迭代参数取值都不变,类似于unique once

注:创建CSV文件最好用notepad创建,编码格式为UTF-8

前置处理器

jmeter支持的变量

jmeter支持的变量类型:用户自定义变量;函数生成变量;BeanShell 变量;数据文件变量

用户自定义变量

选中请求>>>添加>>>前置处理器>>>用户参数

变量引用格式为:${user}

函数生成变量

内置的函数

点击菜单栏选项>>>函数助手对话框>>>下拉选择>>>选择对应函数

后置处理器

json提取器

接口需要关联时,提取接口指定数据

选择请求右键>>>添加>>>后置处理器>>>json提取器

(1)引用名称:请求要引用的变量名称,如填写 result_num

(2)jsonpath表达式:匹配需要的内容。

(3)匹配数字:0 代表随机取值,1 代表全部取值,

(4)默认值:如果参数没有取得到值,那默认给一个值让它取


断言

响应断言

检查点,比较预期结果与实际结果

选择一个请求右键>>>添加>>>断言>>>响应断言

断言成功,查看结果为绿标;断言失败,查看结果为红标

apply to

(1)Main sample and sub-samples:作用于父节点取样器及对应子节点取样器

(2)Main sample only:只作用于父节点取样器

(3)sub-samples only:只作用于子节点取样器

(4)JMeter Variable Name to use:作用于jmeter变量(输入框内输入变量名称)

要测试的响应字段

(1)响应文本(Text Response):从服务器返回的响应文本,比如body,包含HTTP头

(2)响应代码(Response Code) :比如 200、404

(3)响应消息(Response Message) :比如 OK

(4)Response Headers:响应头,比如 Set-Cookie 头

(5)Document(text):通过Apache Tika追踪的各种类型文档的文本

(6)lonore Status:指示JMeter设置sampler status的初始状态为success。sample status是否成功,由已Response status和断言结果决定,当选中Ignore Status时,Response status被强制设置为success,不执行进一步的断言判断。仅第一次断言时使用

模式匹配规则

(1)包括:响应内容包括需要匹配的内容即代表响应成功,支持正则表达式

(2)匹配:响应内容要完全匹配需要匹配的内容即代表响应成功,大小写不敏感,支持正则表达式。

(3)Equals:响应内容要完全等于需要匹配的内容才代表成功,大小写敏感,需要匹配的内容是字符串正则表

达式

(4)Substring:返回结果包含指定结果的字串,但是 subString 不支持正则字符串

(5)否:不进行匹配

Custom failure message: 自定义失败消息

监听器

察看结果树

察看请求发送和返回的信息

查看结果树可以放在线程组下或者某个配置下,右键>>>添加>>>监听器>>>查看结果树

所有数据写入一个文件

(1)文件名:可以通过浏览,选择一个文件,这样jmeter在执行的过程中,会将所有的信息输出到文件,也支持打开一个结果文件进行浏览

(2)Log/Display Only(显示日志内容):

仅日志错误:表示只输入报错的日志信息

Successes:表示只输出正常响应的日志信息

不勾选:表示输出所有的信息

(3)Configuer:配置需要输出的内容

Search: 在输入框中输入想查询的信息,点击查找(Search),可以在请求列表中进行查询,并在查询出的数据上加上红色的边框

结束数显示类型切换: 通过结果树上面的下来看可以进行切换,包含多种显示方式,默认Text

取样器结果: 取样器的详细结果,可以切换取样器的显示方式Raw/Parsed

请求: 显示当前取样器发送的详细请求内容,支持查找

响应数据: 显示请求得到的响应内容,支持查找

Scroll automaticlly?: 当执行的取样器较多,设置是否滚屏显示

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容

  • 概念介绍 测试计划 测试计划是JMeter脚本的根元素,其中可以包含其他元件,例如,线程、配置元素、定时器、前置处...
    王_建峰阅读 224评论 0 0
  • JMeter 一、 性能测试 1、 性能测试是什么 基于协议模拟用户发出请求,对服务器形成一定负载,来测试服务器的...
    零落满身尘埃阅读 300评论 0 0
  • 一. 性能测试 1.0 为什么要进行性能测试? 评估当前系统的能力 寻找性能瓶颈,优化系统性能 评估软件是否满足未...
    執著_af43阅读 436评论 0 0
  • 简介 性能压测工具,在我们项目开发过程中肯定免不了要经常使用,来检测我们完成的接口或者整体服务的抗压水平。Apac...
    Ricky_Wong阅读 474评论 0 0
  • 测试计划:是使用jmeter进行测试的起点,是其他测试元件的容器,一个完整的测试计划 包括一个或多个线程组,逻辑控...
    测试猴阅读 3,100评论 0 4