Jmeter

Jmeter工作原理:

jmeter通过线程组来驱动多个线程运行测试脚本对被被测试服务器发起负载。
向服务器提交请求,从服务器获取请求返回的结果。也可以用来做压力测试或者接口测试。

jmeter安装、环境变量配置

下载jmeter
Apache JMeter - Download Apache JMeter

image.png

安装并配置jdk1.8以上环境,此处忽略jdk的安装与环境配置。

Jmeter 目录介绍

image.png

backups:脚本备份目录,格式为jmx
bin目录:存放jmeter的启动脚本,配置文件,模块文件
jmeter.bat :启动jmeter
jmeter properties:核心配置文件
docs:离线帮助文件
extras:存放与第三方的集成构建文件,集成Ant、Jenkins
lib目录:存放jar包
licenses:许可证文件

Jmeter执行接口测试流程

1、拿到API接口文档(或者使用Fiddler抓包)、熟悉接口业务、接口地址、鉴权方式、入参、出参、错误码
2、编写接口测试用例
测试思路:
正例:输入正常参数,查看接口成功返回
反例:
参数:空,参数类型错误,长度错误、错误码覆盖等等....
3、使用接口工具执行
4、Jmeter+Ant+Jenkins实现持续集成并输出接口自动化测试报告,通过电子邮件发送

Jmeter常用组件简介

1.线程组:模拟用户
2.配置元件:进行测试环境和测试数据的初始化,类似与自动化脚本中的参数化
3.前置处理器:对要发送的请求做预处理,类似自动化脚本参数化
4.取样器:往服务器发送请求
5.后置处理器:对收到的服务器请求进行数据提取
6.断言:将收到的响应结果和预期结果做比对
7.监听器:查看脚本运行的结果和日志
8.定时器:等待一段时间
9.测试片段:封装基本功能,不能单独执行

测试计划(Test Plan)

image.png

[图片上传中...(image.png-9bf3dc-1659925683804-0)]

线程组(Thread Group)

image.png

配置元件(Configuration)

进行测试环境或者测试数据的初始化


image.png

image.png

逻辑控制器(Logic Controller)

image.png

如果(if)控制器

判断参数结果==设定的值,则发起请求
添加:线程组--逻辑控制器--if控制器
配置:
使用js语法:"${name}"=="baidu"
使用jmeter函数方式:
操作步骤:
1.添加线程组
2.用户定义变量
3.添加if控制器,判断name是否等于baidu
4.添加http请求,用来访问百度
5.添加if控制器,判断name是否等于itcast
6.添加http请求,用来访问传智
7.添加查看结果树

循环控制器

控制循环次数,配置次数
操作流程:
需求:循环访问100次
步骤:
1.添加线程组
2.添加循环控制器
3.添加http请求
4.添加查看结果树
循环控制器中的循环次数配置m,线程组中的循环次数配置n:
关系:如果同时配置,循环控制器下http的实际执行次数是m*n
区别:两个循环次数的作用域不同

foreach控制器

与用户定义的变量或者正则表达式提取器配合使用,循环读取返回变量中的值,执行一次或者多次
(1)与用户定义变量配合:
添加:线程组--逻辑控制器--ForEach控制器
配置:
用户定义变量:变量名(固定前缀+连续数字)
ForEach控制器
变量前缀:用户定义的变量配置中的固定前缀
起始数字:连续数字的最小值-1
结束数字:连续数字的最大值
输出变量名称:依次读取变量值后存储到参数中,供http引用
http请求:引用输出的变量名称
(2)与正则表达式配合使用
a、先通过正则表达式提取器,提取出请求中所有满足条件的数据
b、添加ForEach控制器,并配置提取所有满足条件的数据,并保存为变量
c、在其子节点下,添加http请求并引用变量,即可循环读取正则

定时器

同步定时器

当前需要进行大量用户的并发测试时,为了让用户能真正的同时执行,添加同步定时器,用于阻塞线程,直到线程达到预先配置的值,才可以执行取样器操作。
配置:
并发数:同时达到多少用户才开始发送请求
超时时间:
必须配置:否则当虚拟用户数无法被并发数整除时,会一致挂起
配置不能太短:必须比并发加载时间要长。否则无法达到并发数的要求,数据就会被释放掉

常数吞吐量定时器

常数吞吐量定时器可以让jmeter以指定数字的吞吐量(以每分钟的样本数为单位,而不是每秒)执行。
添加方式:测试计划--线程组--http请求--右键添加定时器--Constant TroughtputTimer
操作流程:
1.添加线程组,循环次数设成永远
2.添加http请求
3.添加常数吞吐定时器
4.添加查看结果树
5.查看监听器-聚合报告
配置:吞吐量值:QPS*60

取样器(Sample)

image.png

断言(Assertion)

响应断言、json断言(只响应json格式的断言)、断言响应时间


image.png

监听器(monitor)--聚合报告

image.png

监听器(monitor)--图形结果

image.png

监听器—用表格查看结果

image.png

正则表达式提取器

image.png

image.png

正则表达式实例:
正则表达式:数据提取器,一般简单的通用语法就是:左边界(.?)右边界,左右边界就是为了能准确定位到想匹配的内容。(.?) 是替换了想要提取的内容,里面的'?'为非贪婪匹配,(非贪婪模式就是说在遇到第一个右边界后就停止匹配,这样就可以精确拿到想要的内容)。建议均使用非贪婪匹配,除非特殊情况
正则表达式提取案例
image.png

正则表达式引用
image.png

xpath提取器

添加:线程组--http请求--后置处理器--xpath提取器
配置:xpath path:xpath匹配规则
匹配数字:1代表第一个结果,-1代表所有结果,0表示随机


1665983239632.png

json提取器

添加:线程组--http请求--后置处理器--json提取器
配置:
引用名称:配置后的数据存储的变量名
json path:json路径。$.weatherinfo.city
引用:直接引用变量名即可


1665983433176.png

Jsonpath表达式实现接口关联

从根目录开始查找(绝对路径):$.expires_in

从任意目录开始查找(相对路径):$..expires_in


1659926380907.png

Jmeter执行顺序、作用域

顺序:
测试计划》线程组》配置原件》前置处理器》定时器》取样器》后置处理器》断言》监听器
作用域:
必须组件:测试计划、线程组、取样器
辅助组件:除了必须组件以外
辅助组件作用于父组件,同级组件,以及同级组件下的所有子组件

Jmeter参数化

1.用户定义变量(全局参数)
2.用户参数(针对每个用户取不同的值,不能针对同一个用户取不同的值)
3.csv数据文件(针对每个用户循环取不同的值)
4.counter函数
不需要提前准备测试数据,jmeter自动添加计数方式来完成参数化
true:每个用户分别统计
False:所有用户使用全局计数

jmeter直连数据库

连接准备:
1.打开数据库,确认数据库的表和对应的字段
2.加载mysql的jdbc驱动
3.配置jdbc connection configuration
create pool name:给连接池命名,用于后续引用
数据库url:jdbc:oracle:thin:@10.1.1.221:1521:ORCL
用户名:
密码:

image.png

image.png

if控制器

循环控制器

foreach控制器

同步定时任务

常数吞吐量定时器

分布式测试原理、测试步骤

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

推荐阅读更多精彩内容