jmeter接口测试应用
一.jmeter下载
安装jmeter:
地址https://jmeter.apache.org/download_jmeter.cgi
下载 【apache-jmeter-XXX. zip 】解压缩,运行bin目录下的jmeter.bat或者在bin目录地址栏输入cmd打开命令行,输入jmeter,打开jmeter图形化界面
jmeter有很多插件在lib目录下,需要时可直接下载到lib目录下安装使用
二.jmeter核心元件
● 测试计划:测试起点,所有组件的容器,一般是这个项目的名称
● 线程组:代表一定数量的用户,发送请求
● 取样器:向服务器发送请求的最小单元,就是每一个接口请求
● 逻辑控制器:结合取样器实现一些复杂的逻辑(常用循环控制器),例如做csv数据驱动时,需要使用循环处理器读取csv文件的数据,文件里有几组数据就循环几次
● 前置处理器:在请求之前的工作(例如设置用户参数)
● 后置处理器:在请求之后的工作,主要是处理响应数据,(json提取器(登录成功之后提取token值)、正则表达式提取器)
● 断言:判断请求是否成功(响应断言、大小断言、json断言)
● 定时器:负责请求时间的延时间隔,常用的有固定、高斯、随机
● 配置元件:配置信息(http请求默认值、http信息头管理器(如果参数是json格式传参,必须要添加这个设置)、用户定义的变量)
● 监听器:收集结果(查看结果树、汇总报告、聚合报告)
各大元件的执行顺序:
配置元件>前置处理器>定时器>取样器>后置处理器>断言>监听器
元件的作用域:jmeter所有原件都是依赖取样器运行
逻辑控制器只会对其下面的子节点生效,
如果父节点不是取样器,那么作用域就是当前元件的父节点下的所有节点
三.各元件应用
1.取样器:
就是发送http请求的信息,包括请求url,请求方法、请求参数,与postman添加request请求一样
2.配置元件
http请求默认值:一般同一个项目所用的服务器地址和ip是一致的,还包括所有接口都要使用的公共参数,可以给线程组添加一个这样一个配置元件,设置ip地址,将参数都添加到这个http请求默认值的参数中,那么这个线程组下面的所有请求都能够使用这个http请求默认值,只需要根据每个接口使用到的资源地址不同再在后面进行拼接即可

http请求默认值:项目涉及测试环境和生产环境时,可以添加两个http请求默认值,他们的服务器地址不同,需要时切换使用

http信息头处理器:post请求的参数格式如果是json格式,那么必须要设置请求头中content-type的值为application/json,可以给单个请求增加http信息头处理器

3.用户定义的变量 使用(可以在测试计划、线程组和取样器分别设置用户变量的值)
在接口中,有些变量存在重复使用的情况,例如账号、密码、登录后获取的token值,可以使用【配置元件】-用户定义的变量进行配置,在需要用到变量的地方,使用${变量名}使用

4.断言 --json path提取器
接口返回信息后,可以使用json path提取器进行提取,使用自带的json path表达式尝试提取

想要提取响应结果里面的msg值,使用$.msg获取,如果想要获取data里面的token值,使用$.data.token获取

将获取到的token值赋值给变量token,【后置处理器】--json提取器

在需要用到token鉴权的接口直接使用${token}来使用token的值
通常情况下,将 Token 放在请求头中时,对应的键名为 "Authorization"。常见的做法是将 Token 放在 "Authorization" 请求头的值中,通常以 "Bearer " 开头(由于项目设置原因,下面这个token是放在URL后面的)
headers = {
"Authorization": f"Bearer {token}"
}

5.csv数据驱动 (参数化)
csv数据文件设置(配置元件) 结合 循环控制器(逻辑控制器---适用于线程组) 使用,可以将csv文件中的数据依次给到用例
比如在测试注册/登录模块时,需要考虑很多账号和密码异常的情况:
1.账号正确+密码正确
2.账号不存在
3.账号为空
4.密码错误
5.密码为空
6.账号长度不符合
7.账号全部是数字/字母/含有特殊字符.........
这些非等价类可以用一个请求来执行完测试,就要用到csv数据驱动,使用循环控制器将文件的数据进行循环测试,每循环一次,就把文件里面每一行的参数给到测试用例执行
循环控制器,文件中有4组不同的账号和密码,那么就指定循环4次

csv数据文件设置,filename是文件的路径;变量名字是文件中的首行变量;要忽略首行,因为首行是变量名称

6.接口关联
网页需要在用户登录的前提下才能进行操作,即登录之后的操作需要带上登录成功以后返回的token值,使用json提取器将token的值提取出来,并且赋值给一个变量,在需要使用的地方用${变量名}引用,放在其他请求的参数中或者是拼接在url中-------json path
7.数据库数据驱动
jmeter连接数据库:配置元件----JDBC Connection Configuration,填写四项信息:

添加一个取样器JDBC Request,可以直接写sql语句

可将查询出来的值赋值给一个变量,在需要用到的地方${变量名}进行引用
8.jmeter断言
- json断言:使用json path提取相关数据,对比预期结果
- 响应断言:响应头,响应行信息
- 持续时间断言:项目要求接口需要在xx ms内返回数据
补充
jmeter参数化的方式:
- 用户定义的变量----配置元件【用户定义的变量】,作用范围是针对线程组
- 用户参数------前置处理器【用户参数】
- 逻辑控制器+CSV数据驱动----逻辑控制器+配置原件【csv数据驱动】,作用范围是针对取样器
jmeter连接数据库验证接口数据正确性:
jmeter连接数据库执行sql查询的数据定义为一个变量(例:username),在想要引用这个变量时${username}是无法使用的,sql是一个独立的语法结构,jmeter不知道sql执行后会返回几条数据,故jmeter会将我们自己定义的变量+jmeter自己生成的数字来生成这个变量名,我们要引用变量时,应该使用${username_1},可以添加调试取样器查看数据库返回的数据
如果需要测试登录接口,从数据库获取用户名和密码后,发现密码是加密的,我们引用账号和密码时,无法正常发送请求(这个问题还没找到方法解决?)
jmeter批量生成数据,插入数据库(20条):
步骤:
1.添加jdbc 数据库配置信息
2.添加循环控制器(循环次数20)
3.循环控制器子级添加计数器(从1开始递增),计数器变量设置为n
4.循环控制器子级添加jdbc request,Query Type选择update statement,写入insert 语句,例:insert into test_user(username,psssword) values("username_${n}","xxxxxx")
jmeter接口录制功能
操作步骤:
1.添加线程组,---录制
2.在测试计划中添加非测试元件--http代理服务器
3.打开电脑代理设置,手动--使用代理服务器,IP127.0.0.1,端口写一个没有占用的端口(例8900),http代理服务器端口填写8900,目标控制器选择录制线程组

启动http代理服务器,进行网页操作,线程组就会出现很多取样器,抓取接口成功,可以在取样器下看到请求数据、请求方法
jmeter函数使用---【函数助手】
在jmeter中,函数格式为:${}定义,${__函数名(参数)}使用
1.时间戳函数 ${__time(,)}当前时间戳,以毫秒展示,${__time(yyyy-MM-dd HH:mm:ss)}当前时间戳,以年月日 时分秒展示
2.随机数
${__Random(1,100)} 生成1-100的随机数
3.V函数,进行变量拼接
${__V(,)}
4.计数器n,在【配置元件】-【计数器】指定开始数,以及最大计数数值
jmeter生成测试报告
命令:jmeter -n -t[jmx文件名] -l [结果数据] -e -o [html报告文件]
-n 非GUI模式执行jmeter
-t 测试计划保存路径,jmx文件,以及文件名
-l 保存后生成的测试结果文件
-e 测试结束后生成测试报告
-o 存放报告的路径
jmeter接口测试应用的更多相关文章
- http接口测试——Jmeter接口测试实例讲解
摘要: 最近做的项目需要测试很多接口,上网查一查,发现完整讲述接口测试的资料太少,所以最近自己做完这个项目,把测试的东西整理一下和大家分享一下,希望对看到的人有所帮助 一.测试需求描述 1. ...
- jmeter接口测试教程
一.Jmeter接口测试步骤: 1.添加线程组
- 通过Jenkins跑Jmeter接口测试脚本,我想当有接口跑失败时Jenkins发送邮件通知,这个如何弄呢
通过Jenkins跑Jmeter接口测试脚本,我想当有接口跑失败时Jenkins发送邮件通知,这个如何弄呢
- jenkins+ANT+jmeter 接口测试环境搭建
目的 jmeter很早就接触了,最近又在接触项目的时候整了一下.写这篇博客主要有两个目的 1,为了给自己搭建jmeter做一个总结. 2,在部署过程中遇到过一些坑,在这分享出来,也希望能给需要的人一个 ...
- JMeter接口测试系列:Jmeter+jenkins+ant 的自动化构建
在JMeter接口测试不断深入的过程中,发现可以和jenkins和ant一起搭配进行自动化的构建.下面是jmeter自动化构建的整理笔记. 准备环境 需要本机上确定安装了jmeter.ant和jenk ...
- Jmeter接口测试-断言
JMeter接口测试-断言 对应qq群号:616961231 一个http请求发出,怎么判断执行的是否正确呢? 通过检查服务器响应数据,是否符合预期的数据, 如果是,任务成功, 如果否, 任务失败 ...
- jmeter接口测试实战-创建用户
jmeter接口测试实战-创建用户 相信大多数看到标题的同学都会有疑问, 创建用户不是很简单吗, 调用一下创建用户接口, 传入指定入参, 用户即可创建成功, 今天我们的实战来讲讲创建场景.通过接口创建 ...
- JMeter接口测试实战-动态数据验证
JMeter接口测试实战-动态数据验证 说到验证就不得不说断言, 先来看下JMeter官方给出断言(Assertion)的定义, 用于检查测试中得到的响应数据等是否符合预期,用以保证测试过程中的数据交 ...
- JMeter 接口测试-if控制器
JMeter 接口测试-if控制器 使用场景: 当业务场景是用户登录才能支付操作, 不登录点击支付, 页面会跳转到登录页面. 对于接口也是这样, 一个接口需要执行前, 需要有前提条件, 比如0状态 ...
- Jmeter接口测试实战-数据传递
Jmeter接口测试实战-数据传递 接口与接口之间没有关联的测试是缺乏意义和没有灵魂的,只有数据在不同接口之间传递才能勾画出业务场景重要的链路. 我们用较为通用的http/https协议,接口普遍返回 ...
随机推荐
- Linux内核及补丁编译
Linux内核及补丁编译 一.源码下载 1.查看当前linux内核版本 uname -r 2.获取对应版本的linux源码 方式1:源方式下载 sudo apt search linux-source ...
- 【已解决】如果将MySQL数据库中的表生成PDM
数据库表PDM关系图 | 原创作者/编辑:凯哥Java | 分类:经验分享 有时候,我们需要MySQL数据库中的表生成对应的PDM文件,这里凯哥就讲讲第一种将MySQL数据库的表生成对应的PDM文 ...
- 【YashanDB数据库】YAS-02024 lock wait timeout, wait time 0 milliseconds
[标题]错误码处理 [问题分类]锁等待超时 [关键字]YAS-02024 [问题描述]执行语句时候,因锁等待超时执行语句失败 [问题原因分析]数据库默认锁等待时间为0秒,如果执行语句存在锁等待过长会执 ...
- 【YashanDB知识库】同时设置默认值和非空约束时报错YAS-02070
[问题分类]功能使用 [关键字]YAS-02070 [问题描述] SQL create table test01(id int,name varchar(10)); insert into test0 ...
- 开源文档管理系统 MinDoc 安装和使用教程
说到文档管理,很多团队的文档管理都是一团糟,每个员工在自己本地写了各种 Word 文档.Excel 表格.甚至还有手写的便签,到处都是,找起来就像大海捞针.有些聪明的团队开始用飞书来管理团队文档,但是 ...
- Dell存储备份告警:
创建时间 修改日期 对象名称 消息 类型 告警状态 已确认 告警定义 类型 23-3-12 11:59:26 23-3-12 11:59:37 copyMirrorswap 2 CMs Operati ...
- nuxt(搁置)
https://nuxt.com.cn/docs/getting-started/installation 开始使用 全栈Web应用和网站 Nuxt使用约定和一套规范的目录结构来自动化重复的任务,让开 ...
- Codeforces Round 973 (Div. 2) D
性质1:题目操作相当于将前面的数搬到了后面,将其视为柱状图,则是把前面柱的高度转移至后面柱的高度 性质2:最后移成的序列以单调不下降序列为最优,易证明当存在下降时,可通过操作使答案更优或不变差 性质3 ...
- SuperMap iServer&iPortal&iEdge结合CAS 5.3服务器实现单点登录
2023-10-19 更新,由于阿里云maven镜像仓库里缺失了很多CAS5.3 依赖,如果缺少可以用附件里的同步到本地仓库 链接:https://pan.baidu.com/s/14DhRci_Am ...
- linux(centos7)安装curl和composer
linux(centos7)安装curl和composer 先安装curl:直接用yum装,yum curl 使用命令下载: curl -sS https://getcomposer.org/inst ...