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进阶篇...

相关推荐
文人sec2 天前
性能测试-jmeter9-逻辑控制器、定时器压力并发
测试工具·jmeter·性能优化·模块测试
CesareCheung3 天前
JMeter分布式压力测试
分布式·jmeter·压力测试
测试界清流3 天前
jmeter使用技巧
jmeter
春时似衿里3 天前
jmeter配置数据库连接步骤
数据库·jmeter
新知图书3 天前
JMeter的安装部署
jmeter
程序员杰哥3 天前
什么是Jmeter? Jmeter工作原理是什么?
自动化测试·软件测试·python·测试工具·jmeter·职场和发展·测试用例
乐神嘎嘎嘎3 天前
Jmeter测试
jmeter
卓码软件测评3 天前
第三方软件测试机构【性能测试工具用LoadRunner还是JMeter?】
java·功能测试·测试工具·jmeter·性能优化
BatyTao4 天前
Jmeter执行数据库操作
数据库·jmeter
二宝哥4 天前
性能测试工具Jmeter之java.net.BindException: Address already in use
jmeter