学习总结——JMeter做http接口功能测试

JMeter对各种类型接口的测试

默认做接口测试前,已经给出明确的接口文档(如,http://test.nnzhp.cn/wiki/index.php?doc-view-59);本地配好了JMeter 3.x的运行环境;

打开JMeter,添加一个线程组和该线程组的查看结果树。以下的几种接口请求我们都在这个线程组中添加和运行。

如果你的JMeter返回数据是乱码,解决办法是,在JMeter安装路径的bin目录下,打开文件jmeter.properties,把Sampleresult.default.encoding的值改为 utf-8 即可。

1. 普通的以key-value传参的get请求

e.g. 获取用户信息

添加http请求;填写服务器域名或IP;方法选GET;填写路径;添加参数;运行并查看结果。

 

 2. 以Json串传参的post请求

e.g. 获取用户余额

添加http请求;填写服务器域名或IP;方法选POST;填写路径;在参数区域选Body Data标签;写入Json串参数,注意Json格式;运行并查看结果。

 

 *注意:

Json传参时,往往参数相对复杂,规模较大,很多时候是Json串再嵌套Json串,在写入body的时候如果哪里格式不对会影响传参,而JMeter本身是不能对Json进行格式校验的(Postman可以进行简单的Json校验),我们可以借助这个网站来校验你的Json串的格式,www.bejson.com 再把确保格式正确的Json串填入body。

3.  请求时需要http权限验证

e.g. 修改用户余额

添加http请求;填写服务器域名或IP;方法选POST;填写路径;填写参数;

 

添加授权管理器,右击线程组->添加->配置元件->HTTP授权管理器;

 

打开HTTP授权管理器,在基础URL添加路径;填写用户名、密码(接口文档会给出);添加域即请求的服务器域名或IP;其他默认;

 

运行请求并查看结果。(该接口暂时有问题请求返回500,只要掌握需要权限验证的接口如何做就好)

4.  请求时需要添加请求标头

e.g. 获取用户信息2

添加http请求;填写服务器域名或IP;方法选POST;填写路径;填写参数;

 

添加HTTP信息头管理器,右击线程组->添加->配置元件->HTTP信息头管理器;

 

打开HTTP信息头管理器,参照接口文档填写好header信息;

 

运行请求并查看结果。

5.  请求时需要添加Cookie

e.g. 修改用户余额2

添加http请求;填写服务器域名或IP;方法选POST;填写路径;填写参数;

 

添加HTTP Cookie管理器,右击线程组->添加->配置元件->HTTP Cookie管理器;

 

打开Cookie管理器,参照接口文档填写好Cookie信息;

 

 发送请求并查看结果。

6.  请求通过某个接口上传文件

    e.g.上传文件

    添加http请求;填写服务器域名或IP;方法选POST;填写路径;在参数区域选Files Upload标签,添加文件全名(包含绝对路径,也可以点击浏览按钮添加),写入参数名;发送请求并查看结果。

 

JMeter的参数化

1. 指定参数值

这种方法常用来解决线程组中多个请求共用相同的数据,比如我们以上所有请求都有相同的IP地址,当地址改变时可以一改全改。

添加用户定义的变量,右击线程组->添加->配置元件->用户定义的变量;

 

打开用户定义的变量,添加变量,写好名称和值;

 

脚本中用到该值的所有地方都可以引用这个变量名了,引用变量的格式为 ${变量名};

 

2. 借助函数生成参数

测试过程中,有时候数据不适合被指定,可选择借助函数来生成,以下是最常用的几种。

  •     用函数生成随机数:(__Random)

在Jmeter中点击 选项->函数助手对话框;

 

在弹出的对话框中选__Random,填写随机数的范围,点击生成按钮,就看到你需要的字符串了;

 

尝试在请求中使用生成的随机数,把刚拷贝的字符串粘贴到请求的参数里;

 

发送请求,查看请求中参数值的情况,参数生效了。

 

  •    用函数生成当前时间:(__time)

 

  •    用函数生成通用的唯一识别码:(__UUID)

 

3. 文件传参

用于读取在文件中维护的参数,如参数文件内容如下;

 

注意,Jmeter读取文件总的参数是从第一行就开始了的,千万不要犯下面的错误。

 

在Jmeter中右击线程组->添加->配置元件->CSV Data Set Config;

 

打开设置窗口,写入参数文件的全名(含绝对路径),变量名,Delimiter就用默认的逗号,表示在准备参数文件时参数表的列之间用逗号隔开;

 

在请求中引用参数时应该是酱紫的:${username}  ${pwd},用它们来顶替对应的参数值。

4. 关联传参

在线程组内,当你想用一个请求的响应结果作为另一个请求的入参时就需要用到关联。

  • 用正则表达式关联

思路是先从某个请求的响应数据中提取你需要的值,在把这个值在另一个请求中入参,操作如下:

在需要被提取响应数据的请求下添加正则表达式提取器,右击添加->后置处理器->正则表达式提取器;

 

在正则表达式提取器中填写 引用名称,不说也知道用途;正则表达式,最简单的办法是在响应数据中把要提取的目标值左右若干字符包含目标值的一行拷贝出来,粘贴到正则表达式框内,在把目标值用一对小括号替换,括号里用添上合适的匹配符本例如(.*); 注意在响应数据中拷贝时尽量避开需要转义的字符如果不能避开,请转义;模板通常固定填$1$;匹配数字1代表区匹配的第一个值;缺省值是在匹配失败时取得的值,通常用来检查匹配是否成功;

 

用${age}入参给另一个请求,查看结果传参成功。

 

  • 用Json Path Extractor 插件关联

只针对Json格式的Response 取值,右击请求添加->后置处理器->JSON Path Extractor;

 

在JSON Path Extractor中填入引用名和JSONPath Expression;

 

在另一个请求中入参,也和上面的结果一样转参成功。

注意,JSON Path Extractor这个插件只能在Jmeter3.x以上的版本安装。

Jmeter添加断言检查结果

右击请求添加->断言->响应断言;

 

添加并写入希望在响应结果中看到的内容;

 

发送请求,查看结果;

 

 Jmeter操作Mysql

测试计划添加.jar包 mysql-connector-java-5.1.7-bin.jar用于使Jmeter可以读取Mysql;

 

 线程组添加 JDBC Connection Configuration (添加->配置元件-> JDBC Connection Configuration)用于配置Jmeter和Mysql的连接;

 

JDBC Driver class是固定的,Jmeter操作各类数据的Driver参考下图;

 

线程组添加JDBC Request(添加->Sampler-> JDBC Request) 用于写sql来操作Mysql;

 

发送请求,成功访问Msql。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/415332.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【PDF技巧】网上下载的pdf文件怎么才能编辑

不知道大家有没有遇到过网上下载的PDF文件不能编辑的情况,今天我们来详细了解一下导致无法编辑的原因即解决方法有哪些。 第一种原因:PDF文件中的内容是否是图片,如果确认是图片文件,那么我们想要编辑,就可以先使用PD…

Sqlmap进行http头注入及流量分析

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 利用 SQLMap 进行 HTTP 头注入的方式对于 Less-19 注入点的注入 SQLMap 工具我使用kali中自带的 注入准备 先使用bp将Less-19靶场的包抓下来保存到 txt 文件中,输入账号 admin…

day56 日期类 集合

日期类: 获取毫秒值: 1970.1.1午夜之间的时间差 System.currentTimeMillis() java.util.Date: 获取当前时间 new Date(); 指定的格式显示日期: java.text.SimpeDateFormat 格式化(日期-》文本)和解析日期(文本-》日期…

【leetcode】回文子串 动态规划

/*** param {string} s* return {number}*/ var countSubstrings function(s) {let dpnew Array(s.length).fill().map(()>new Array(s.length).fill(false));let num0;for(let i0;i<s.length;i){for(let j0;j<i;j){//在首尾相等时&#xff0c;如果长度时1或者2&…

浅谈XSS简单漏洞xss-labs-master(初级)

一、环境以及xss漏洞简介 网上很多gethub自己下就行 XSS简介&#xff1a; 当用户访问被XSS注入的网页&#xff0c;XSS代码就会被提取出来。用户浏览器就会解析这段XSS代码&#xff0c;也就是说用户被攻击了。 用户最简单的动作就是使用浏览器上网&#xff0c;并且浏览器中有J…

如何在阿里云申请沃通SSL证书

沃通CA已经与阿里云平台达成长期合作&#xff0c;沃通WoSign品牌SSL证书上线阿里云平台以来&#xff0c;成为阿里云平台热销的国产品牌证书。有SSL证书应用需求的阿里云用户&#xff0c;可直接在阿里云平台申请沃通WoSign SSL证书&#xff0c;快捷部署到已有的阿里云产品中。沃…

阿里云2核4G服务器租用价格85元一年,30元3个月

阿里云2核4G服务器多少钱一年&#xff1f;2核4G服务器1个月费用多少&#xff1f;2核4G服务器30元3个月、85元一年&#xff0c;轻量应用服务器2核4G4M带宽165元一年&#xff0c;本文阿里云服务器网整理的2核4G参加活动的主机是ECS经济型e实例和u1云服务器&#xff0c;阿里云服务…

uniapp:启动图 .9png 制作教程

1、工具安装&#xff1a;自行下载Android Studio 2、制作.9png 注意上图3条黑线的位置&#xff0c;意思是&#xff1a;标注黑线的位置可以进行缩放。 对其大多数启动图来说&#xff0c;标注以上3条黑线即可。

什么是Boot Guard?电脑启动中的信任链条解析

“无事可干”的黑客们早已经把目光从操作系统转移到固件上了&#xff0c;毕竟一旦攻破了固件的大门&#xff0c;那么在其上的操作系统也会门户洞开。现在电脑或者x86服务器系统中固件众多&#xff1a; UEFI在其中居于中间地位&#xff0c;它的安全性也是重中之重。我们在前文中…

element teble嵌套表单

以下代码是组件代码 并不是上图的代码 &#xff0c;只是大致功能是一样的&#xff0c;emm 主要是table列表里面嵌套form表单 并有添加校验&#xff0c; 其余功能代码是组件传参 或其他逻辑使用的未用到可不用 <template><div><el-form :rules"rules"…

2024.2.28 网络

思维导图 整理面试题 1、什么是回调函数 答&#xff1a;将函数作为参数传到另一个函数里面&#xff0c;当那个函数执行完之后&#xff0c;再执行传进去的这个函数。这个过程就叫做回调。 2、结构体和共用体的区别 答&#xff1a;结构体的每个成员都会分配内存&#xff0c;…

为什么会对猫毛过敏?如何缓解?浮毛克星—宠物空气净化器推荐

猫咪过敏通常是因为它们身上的Fel d1蛋白质导致的&#xff0c;这些蛋白质附着在猫咪的皮屑上。猫咪舔毛的过程会带出这些蛋白质&#xff0c;一旦接触就可能引发过敏症状&#xff0c;比如打喷嚏等。因此&#xff0c;减少空气中的浮毛数量有助于减轻过敏现象。猫用空气净化器可以…

HarmonyOS开发云工程与开发云函数

创建函数 您可直接在DevEco Studio创建函数、编写函数业务代码、为函数配置调用触发器。 1.右击“cloudfunctions”目录&#xff0c;选择“New > Cloud Function”。 2.输入函数名称后&#xff0c;点击“OK”。 函数名称仅支持小写英文字母、数字、中划线&#xff08;-&a…

rtthread stm32h743的使用(三)uart串口设备使用

我们要在rtthread studio 开发环境中建立stm32h743xih6芯片的工程。我们使用一块stm32h743及fpga的核心板完成相关实验&#xff0c;核心板如图&#xff1a; 1.建立新工程&#xff0c;选择相应的芯片型号及debug引脚及调试器 2.打开cubemux&#xff0c;设置外部时钟及串口外设…

大数据分布式计算工具Spark实战讲解(数据输入实战)

Python数据容器转RDD对象 PySpark支持通过SparkContext对象的parallelize成员方法&#xff0c;将&#xff1a; - list - tuple - set - dict - str 转换为PySpark的RDD对象 注意&#xff1a; •字符串会被拆分出1个个的字符&#xff0c;存入RDD对象 •字典仅有key会被存入…

【饮食】如何有效的补充维生素,矿物质?学习笔记(附膳食营养素参考摄入量DRIs)

程序员养生指南之 【饮食】如何有效的补充维生素&#xff0c;矿物质&#xff1f;学习笔记&#xff08;附膳食营养素参考摄入量DRIs&#xff09; 文章目录 一、维生素补充1、需要补充维生素的情况2、食补&#xff1a;缺啥补啥3、补充剂&#xff08;无脑吃&#xff09; 二、膳食营…

面试笔记系列八之JVM基础知识点整理及常见面试题

类实例化加载顺序 加载&#xff1a;当程序访问某个类时&#xff0c;JVM会首先检查该类是否已经加载到内存中。如果尚未加载&#xff0c;则会进行加载操作。加载操作将类的字节码文件加载到内存&#xff0c;并为其创建一个Class对象。 连接&#xff08;验证、准备、解析&#x…

【MySQL面试复习】了解过索引吗?(索引的底层原理)/B 树和B+树的区别是什么?

系列文章目录 在MySQL中&#xff0c;如何定位慢查询&#xff1f; 发现了某个SQL语句执行很慢&#xff0c;如何进行分析&#xff1f; 系列文章目录了解过索引吗&#xff1f;(索引的底层原理)B 树和B树的区别是什么&#xff1f; 了解过索引吗&#xff1f;(索引的底层原理) 如果没…

行为树入门:BehaviorTree.CPP Groot2练习(叶子节点)(2)

以《行为树BehaviorTree学习记录1_基本概念》练习。 1 SequenceNode顺序控制节点 代码下载 git clone https://gitee.com/Luweizhiyuan2020/ros2_bt.git例程 1.1 sequence 顺序执行 下载版本SequenceNode1。 1.2 ReactiveSequence 异步执行 注意&#xff1a; ①only a…

Ruoyi框架上传文件

axios资料&#xff1a;axios中文文档|axios中文网 | axios axiosjson 默认情况下&#xff0c;axios将JavaScript对象序列化为JSON。 submit(data) {if (data && this.definitionId) {// 启动流程并将表单数据加入流程变量startProcess(this.definitionId, JSON.string…