当前位置: 首页 > article >正文

JMeter基础篇

目录

总目录:

一、JMeter简介:

-用途:

-优缺点:

二、JMeter安装:

三、项目简介:

-学生管理系统:

-API接口清单:

查询:

新增:

更新:

删除:删除单个,删除多个。

四、JMeter基本使用:

-示例:

-JMeter线程组相关:

-JMeter并发执行和顺序执行:

-JMeter两个特殊线程组:

-JMeter线程组常用属性:

-http请求默认值:

-信息头管理器:

五、参数化:

1.参数化--用户定义的变量:

2.参数化--CSV数据文件设置(用得更广):

3.参数化--用户参数(不常用):

4.参数化--函数:

六、直连数据库:

步骤:

七、断言:

1.响应断言:

举例:

模式匹配规则:

测试字段:

-响应代码报错示例:

2.大小断言:

-示例:

3.断言持续时间:

下章导航:


总目录:

一、JMeter简介:

-用途:

JMeter是Apache组织使用Java开发的一款测试工具:

1.可以使用对服务器、网络或对象模拟巨大的负载。

2.通过创建带有断言的脚本来验证程序是否能返回期望的结果。

-优缺点:

优点:

1.开源、免费 2.跨平台 3.支持多协议 4.小巧 5.功能强大

缺点:

1.不支持IP欺骗

2.使用JMeter无法验证JS程序,也无法验证页面UI,所以要和Selenium配合来完成Web2.0应用的测试。

二、JMeter安装:

1).JMeter是使用Java编写的,必须安装Java环境:

1.JDK:Java SE Development Kit(java开发工具包,为Java程序开发提供环境支持)

2.JRE:Java Runtime Environment(java运行环境,为Java程序运行提供环境支持)

2).下载并安装JMeter

下载:Apache JMeter - Download Apache JMeter

安装:直接解压缩即可

三、项目简介:

-学生管理系统:

学生管理系统:对学生信息进行增删改查,对应的RESTful语法风格如下。

查:URL+GET (查所有,查指定,根据某些参数进行查找,模糊查询) 状态码确定就是200

增:URL+POST ()状态码201或200

改:URL+PUT 状态码201或200

删:URL+DELETE 状态码确定为204

-API接口清单:

附件内容是相关接口清单,请根据清单描述,测试各个接口实现。

PS:该系统是严格遵循RESTful架构风格的实现,通过练习以强化对RESTful架构风格的理解与认识。

查询:

新增:

更新:

删除:删除单个,删除多个。

四、JMeter基本使用:

设置接口三要素查询所有学院信息:

1.测试计划--右键--线程--添加线程组

2.线程组--右键--取样器--http请求

3.测试计划--右键--添加监听器--查看结果树

4.点击运行,查看结果

测试要遵循接口的文档进行一步步测试。

-示例:

目的:查询所有。

http://127.0.0.1:8000/api/departments/

查看结果:【查看结果树】

-JMeter线程组相关:

进程:正在运行的程序

线程:是进程中的执行线索

线程组:进程中有许多线程,为了方便管理,可以对线程按照性质分组,分组的结果就是线程组

PS:三者关系,一个进程可以包含多个线程组,一个线程组可以包含多个线程。

-JMeter并发执行和顺序执行:

并发执行:多个线程同时执行

顺序执行:多个线程顺序执行

-JMeter两个特殊线程组:

setUp线程组:最优先执行的线程组

tearDown线程组:最后执行的线程组

-JMeter线程组常用属性:

线程组的配置:

线程数:组内线程个数

Ramp-Up时间(秒):程序准备时间

循环次数:每个线程要执行的次数

调度器:调度器配置包括持续时间和启动延迟。

-http请求默认值:

http请求默认值:被复用的内容的封装。

若多个线程的http请求所需信息一致,可通过HTTP请求默认值来设置,就不需要对单个的http请求进行设置重复信息了,只需对该http请求设置独特的信息。

-信息头管理器:

新增修改实现时提交的数据是JSON格式的,需声明提交的数据的内容类型;

五、参数化:

定义:动态的获取、设置或生成数据,是一种由程序驱动代替人工驱动的数据设计方案,提高脚本的编写效率及编写质量

以下四种方式实现参数化:

1.用户定义的变量

2.CSV数据文件设置

3.用户参数

4.函数

1.参数化--用户定义的变量:

调用格式:${变量名}

通俗点说:用一个名称来代替一小段数据。即下图中红色字体的部分。

只能代表一小段内容,不适合大量数据的参数化。

2.参数化--CSV数据文件设置(用得更广):

CSV : 逗号分隔值,是一种简洁且常见的数据存储格式,存储语法如下图所示:

对于批量数据的参数化。

实现步骤:

1.使用CSV文件存储测试数据

2.编写被复用的学院新增脚本模板

注意2:编码集使用UTF-8无BOM格式

3.关联脚本与数据(将文件数据导入脚本)

操作步骤:

1.先准备好数据,并将其csv.txt格式,具体数据的保存是:每行里的数据用","英文下的逗号隔开。不同行数据用“回车”隔开。数据保存为“UTF-8”格式。

2.测试计划-右键“添加”-配置原件-CSV数据文件设置:

文件名:数据的存储路径

文件编码:utf-8

变量名称(西文逗号间隔):将各列的名称列举出来,不同名称用英文逗号间隔。

忽略首行(只在设置了变量名称后才生效):False

分隔符(用'\t'代替制表符):,

是否允许带引号?:False

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

遇到文件结束符停止线程?:True

线程共享模式:所有现场

3.配置线程组的参数:

循环次数:永远

对于这里面线程组的配置:

循环次数:选择【永远】,除非知道具体的数据条数,可不选【永远】直接在后面写上具体条数。

3.参数化--用户参数(不常用):

也是处理批量数据。但csv数据文件设置需要额外添加txt文件数据。而用户参数无需额外添加文件数据。

实现步骤:

1.编写被复用的学院新增脚本模板

2.使用用户参数存储测试数据

3.将数据导入脚本模板

4.设置执行次数

具体操作步骤:

1.HTTP请求-用户参数:点击添加变量多一行数据;点击添加用户多一列数据。

2.线程组属性:用线程数模拟几个人,所以有几个人线程数就写几。此处无需设置循环次数。

3.消息体数据进行变量替换:

4.参数化--函数:

常见函数:

_counter计数器函数TRUE(每个用户都有自己的计数器)FALSE(所有用户共用一个计数器)

_Random随机数函数 参数1:取值范围最小值(包含) 参数2:取值范围最大值(包含)

_time获取当前时间的函数 无参:获取的是距离 1970/01/01 00:00:00的毫秒值

参数1:yyyyMM_dd HH:mm:ss 格式化成 年|月_日 时:分:秒 格式

_time:

六、直连数据库:

通过直连数据库让程序代替接口访问数据库,如果二者预期结果不一致,就找到了程序缺陷。

获取某条学院的名字,放在百度搜索:

1.Jmeter不具备直连数据库功能,必须整合第三方(jar包)实现

2.配置数据库的连接

3.通过JDBC Ruquest请求向数据库发送SQL语句并接受提取响应结果

4.结果获取规则可以通过Debug Sampler组件查看

5.将提取到的响应结果,在百度上

步骤:

1.新建一个测试计划,并添加上jar包(sqlite-jdbc-3.21.0.jar),这样JMeter就有了直连数据库的功能。

2.添加JDBC请求。线程组-添加-取样器-JDBC Request

3.JDBC Connection Configuration的具体配置:

jdbc:sqlite:具体数据库的文件路径

例如:jdbc:sqlite:E:\项目\studentManagementSystem\db.sqlite3

4.JDBC Request的参数配置:

5.可在察看结果树中查看结果。

6.HTTP请求参数的配置:

协议:http

服务器名称或IP:www.baidu.com

端口号:80

val_30对应黑马学院1

在线程组中添加调试取样器但并不需要设置任何东西。

7.一切弄好后,再次运行,然后查看结果树。结果如下:

七、断言:

在HTTP请求中进行添加断言。

1.响应断言:

断言:让程序代替人工判断响应结果是否符合预期

分类:

响应断言 = 断言状态码和响应体

大小断言 = 判断响应内容的字节长度

断言持续时间 = 判断响应时间

步骤:

1.按照之前的实现编写测试脚本

2.为被判断的取样器添加断言组件

3.直接运行查看结果断言通过:无提示。断言失败:给出错误。

举例:

判断响应文本:

1.包含“老张”:

结果无报错:

2.不包含“老张hahha”:

结果报错:

模式匹配规则:

常用“包括”和”相等“。

“包括”:判断某些内容是否包含。

“匹配”:正则表达式用到的内容

“相等”:判断是否完全相等

“字符串”:

“否”:在前面的选择基础上结果取反。

“或者”:

测试字段:

常用“响应文本”和“响应代码”:

“响应文本”:最终通过一系列条件判断得到的内容。

“响应代码”:查的状态码是200;增的状态码是201或200;改的状态码是201或200;删的状态码是204.如果判断值为2000或其他数则直接报错。

-响应代码报错示例:

2.大小断言:

判断请求得到的结果数据有多少。

“响应字段的大小”的选择:

完整响应:

响应头:

响应的消息体:

响应代码:

响应消息:

-示例:

因为没有添加判断条件,所以侧边栏爆红。这样可以看到全部的响应结果。

3.断言持续时间:

同样的添加断言方式。

1000ms = 1s

注意单位是毫秒

下章导航:

JMeter进阶篇...


http://www.kler.cn/a/387828.html

相关文章:

  • 【stable diffusion部署】超强AI绘画Stable Diffusion,本地部署使用教程,完全免费使用
  • 24.11.13 Javascript3
  • springboot项目中,使用ProGuard 对代码进行混淆
  • 《EasyQuotation 与MongoDB在股市信息的奇妙融合》
  • 外星人入侵
  • 应对JSON解析键值对乱序问题的实用解决方案
  • react useRef
  • 水库汛限水位是什么?如何进行安全监测
  • Android HandlerThread 基础
  • 修复 Ubuntu中 “Command ‘python’ not found” 的错误
  • 软件工程概论项目(一),git环境的配置和平台代码的拉取
  • 电子设计竞赛准备经历分享
  • w025基于SpringBoot网上超市的设计与实现
  • 数据分析:16s扩增子网络分析之SparCC
  • java.lang.NoClassDefFoundError: org/springframework/aot/AotDetector问题解决
  • ubuntu 安装 mongodb 笔记记录
  • LabVIEW编程基础教学(二)--数据类型
  • IEEE 1588:电信网络的精确时间协议 (PTP)
  • 【学习笔记】SAP ABAP——OPEN SQL(一)【SELECT语句】
  • linux服务器vim的四种模式
  • J2V8学习一 --- 介绍
  • 实现uniapp-微信小程序 搜索框+上拉加载+下拉刷新
  • 数学基础 -- 线性代数之线性无关
  • Django的manage.py命令用法
  • Unity 实现一个内存紧凑,高效,兼容度高,支持序列化的Map
  • 【K8S系列】Kubernetes 新创建的 Service 或 Pod 无法被发现问题【已解决】