【Jmeter-控件的基本使用】

Jmeter-控件的基本使用

下面记录Jmeter的一些常用控件


文章目录

  • Jmeter-控件的基本使用
  • 前言
  • 一、线程组
  • 二、控制器
    • 事物控制器:
    • 条件控制器
    • 循环控制器
    • 随机控制器
  • 三、采样器/取样器
    • Http Request Sampler
    • Debug Sampler
    • BeanShell Sampler
  • 四、监听器
    • View Result Tree
    • Aggregate Report
    • Backend Listener
  • 五、定时器
    • Constant Timer
    • Gaussiant Random Timer
    • Constant Throughput Timter
  • 六、响应断言
    • Respose Assertion
    • Size Assertion
    • Xpath Assertion
    • Json Assertion


前言

Jmeter是Apache的一个开源免费的压测工具,底层是java实现,能跨平台,并且支持二次开发,可以对服务器、网络、对象模拟负载进行压力测试,也可以用于接口测试,支持分布式 多节点部署
下载地址:https://jmeter.apache.org/download_jmeter.cgi
(安装步骤可参考网上教程)


以下是本篇文章正文内容

一、线程组

如下图所示支持创建这四种线程组,线程组是用来创建http请求的可配置并发数等,是所有测试计划的一个开始点,所有的请求都要在线程组下面进行,其中最常用普通的Thread Group
setUp Thread Group:相当于是前置处理,可以用来获取参数等操作
tearDown Thread Group:相当于后置处理。
【Jmeter-控件的基本使用】_第1张图片
创建线程组:TestPlan -> Threads ->ThreadGroup
线程组属性如下如图所示,线程组下面主要是添加 Sampler
属性解析:
action to be tabke after a Sampler error:该区域下有5个值可以选,是用例处理错误的,当有一个Sampler出现错误

Continue:是否继续执行下面的请求
Start next thread Loop:开启下一个线程池
Stop Thread:如果存在多个线程时,结束当前线程,
Stop Test :结束当前测试,正在运行中的请求会在完成后停止
Stop Test Now:出现错误立刻停止测试执行

Thread Properties:该区域是一些并发配置

Number of Threads(user):开启的线程数
Ramp-up period(seconds):并发数是在多少s内启动起来
Loop Count:在压测时,一般是线程组下面的请求循环执行,这里配置循环次数
Same user on each iteration:勾选这个选项表示 线程组下的请求 按照顺序执行,不勾选就是并发执行(没有顺序)
Delay Yhread creation until need:这是一个性能优化,需要时创建线程 可以延迟线程的创建 减少不必要的资源损失
Specify Thread lifetime:定时配置,设置并发时长,如果这里配置了并发市场为 60s ,如果60s内没执行完,则请求会结束,运行中的会等待完成,但是不会去创建新线程了

【Jmeter-控件的基本使用】_第2张图片

二、控制器

创建控制器,在线程组上右键 Add->Logic Controller ->控制器
【Jmeter-控件的基本使用】_第3张图片
jmeter提供了很多中控制器,根据需要选取,其中常用控制器:

事务控制器:Transaction Controller:
条件控制器:If Controller
循环控制器:Loop Controller
随机控制器:Random Controller

事物控制器:

事务控制器下,添加当成事物的Sampler(http request)

Generate parent sample:勾选这一选项,则事务控制器下的Sampler会被当成是一个整体,这样使用 Aggregate Report(聚合报告)来查看运行结果时,会显示一个整体的情况,不勾选的话,则分别展示每个Sampler的情况
Include duration of timer and …:如果增加了pre processors 或者 post processors 则他们的结果也需要统计

【Jmeter-控件的基本使用】_第4张图片

条件控制器

条件控制器类似于条件语句,条件控制器下也可以添加Samplers 如果满足条件则执行 Samplers,否则不执行
下面这个输入框内,输入条件语句,也可以点击下方按钮,会有一个默认的语句,断言最后一个线程组下的最后一个Sampler,如果最后一个Sampler响应成功则执行条件控制器下的Samplers
【Jmeter-控件的基本使用】_第5张图片

循环控制器

循环控制器下添加Samples,可实现循环请求

Loop Count:循环次数

【Jmeter-控件的基本使用】_第6张图片

随机控制器

随机控制器下添加多个 Samplers ,则实现随机选择Sampler执行
【Jmeter-控件的基本使用】_第7张图片

三、采样器/取样器

采样器可以模拟用户操作,向服务器发送请求,记录响应时间和响应信息
采样器的创建:线程组 右键 add -> sampler ->采样器
常用采样器:

HTTP Request Sampler
Debug Sampler
BeanShell Sampler

Http Request Sampler

发起http请求的采样器

protocol:发起http 或 https请求
Server Name or IP:服务器ip或者域名地址
Port Number:端口号
Get Post等请求
Path:访问的接口路径 如果get请求还可以拼接上参数
下面还可以选择参数类型,根据需要添加参数

【Jmeter-控件的基本使用】_第8张图片

Debug Sampler

一般用来调试用,来打印参数等作用

Jmeter properties
Jmeter variable
System variable
有这样三那个选项,他们的值都是bool型,填写 true代表该类型的参数会打印,false表示不打印

运行debug Sampler 可以在结果树中会在Resonse中打印出参数值
因此用来打印参数调试用例【Jmeter-控件的基本使用】_第9张图片

BeanShell Sampler

beanShell Sampler用来编写类Java脚本,实现某些自定义功能,如下图所示:
【Jmeter-控件的基本使用】_第10张图片

四、监听器

用来监控测试过程,实时查看测试结果
创建监听器:线程组右键->add -> listener ->监听器
【Jmeter-控件的基本使用】_第11张图片

常用监听器:

查看结果树:View Result Tree
聚合报告:Aggregate Report
后端监听器:Backend Listener

View Result Tree

添加该空间后 执行Sampler会记录每一个Sampler的请求和响应信息,并且可以看请求是否成功,如果失败则显示红色,能直观看出请求的成功失败
【Jmeter-控件的基本使用】_第12张图片

Aggregate Report

聚合报告,一般用来汇总压测数据

Samples :总的发动请求个数
Average:平均响应时间(毫秒)
Median:中位数响应时间(毫秒)(前50%)
90%Line 95%Line 99%Line:表示90% 95% 99%的请求的响应时间都在多少毫秒以内
Min Max 最大最小响应时间
Error 失败率
Throughput 流量,表示每秒请求多少次
receive:每秒接收多少字节的
sent:每秒发送多少字节

【Jmeter-控件的基本使用】_第13张图片

Backend Listener

后端监听器,需要与第三方监控体系配合使用例如Graphite、InfluxDB等,常用InfluxDB 时序数据库,一般搭配一个前端展示工具来展示压测数据
【Jmeter-控件的基本使用】_第14张图片

五、定时器

定时器时用来控制采样器发出请求间隔时间的组件

常见定时器:

固定定时器:Constant Timer
高斯定时器:Gaussiant Random Timer
吞吐量定时器:Constant Throughput Timter
并发定时器:Sycronized Timter
创建定时器:线程组右键 ->add->timer ->定时器
【Jmeter-控件的基本使用】_第15张图片

Constant Timer

固定定时器,顾名思义 固定每个请求的间隔时间 单位毫秒
【Jmeter-控件的基本使用】_第16张图片

Gaussiant Random Timer

高斯随机定期器,也即是使用高斯曲线来实现 请求的间隔时间的随机性,例如两个请求之间的间隔时间不确定,需要模拟随机的一个间隔时间时使用
参数解析:

Deviation:等待偏移量A
Constant Delay Offset :等待时间B

计算方式大概是 等待时间间隔随机范围大概为: B-A ~~B+A 之间
【Jmeter-控件的基本使用】_第17张图片

Constant Throughput Timter

实际的并发值与吞吐量不一致,通过流量吞吐量 来控制请求,比如控制1分钟内发起60个请求
参数解析:

Target throughput:每个请求的间隔时间,这里单位是分钟
Calculate Throughput base on:表示作用在什么线程上,有多个选择,一般选择 all active threads
【Jmeter-控件的基本使用】_第18张图片

六、响应断言

如果用来压测的话,一般断言能少用就少用,断言会影响Jmeter的性能,会影响发出压力的能力,从而影响压测结果

常见断言:

响应断言:Respone Assertion
大小断言:Size Assertion
Xpath断言:Xpath Assertion
Json断言:Json Assertion

为Sampler增加断言:sampler右键 ->add ->Assertions->断言
【Jmeter-控件的基本使用】_第19张图片

Respose Assertion

响应断言,下图所示,Field to Test 中包含很多断言类型

text Response:响应的文本
Response code:响应状态码
Response Headers:响应头信息

在Pattern matching Rules 填写 匹配规则:包含、相等 …等规则
再在下面 Patterns to test 下填写期望结果

【Jmeter-控件的基本使用】_第20张图片

Size Assertion

对返回的响应的大小进行断言,对于响应内容的大小 是否小于或者大于某预定值来判断响应结果是否正确
例如可以对Response body的大小进行断言,则需要在下面的Respnse Size Field to Test 选择 Response body
再填写预定的大小以及选择比较逻辑
【Jmeter-控件的基本使用】_第21张图片

Xpath Assertion

有时候response的结果是xml格式的,使用Xpath 查找到响应结果的某元素,获取这个元素断言结果是否符合预期
下面的输入框中写如Xpath定位元素的规则

【Jmeter-控件的基本使用】_第22张图片

Json Assertion

有些http请求Response的响应结果是Json格式,因此使用Json断言

Assert Json Path exists:使用JsonPath来提取元素
Additionally assert value:提取到的元素时候与下面期望值一致
Match as regular expression:匹配规则是否是正则表达式
Expected value:期望值

如果Additionally assert value不勾选的话,则 只要提取到的元素存在就断言成功,不会与下面的期望值比较
【Jmeter-控件的基本使用】_第23张图片

你可能感兴趣的:(Jmeter学习,jmeter,java,开发语言)