jmeter关联、下载文件、简单压测
关联
一、什么是关联
关联是请求与请求之间存在数据依赖关系,需要从上一个请求获取下一个请求需要回传回去的数据。
简单地说就是在测试过程中有些数据的值会经常发生变化,要获取并使用这些数据,把这个动态的信息保存下来,我们就要进行关联。
例如:用户登录后,session信息都不同,有些操作要使用session,就需要将这个动态的信息保存下来。
还有经常遇到的场景,第二个请求提交的参数要从第一个请求的返回数据中获取。
二、关联的用法
常用的两种关联用法
1.json Path Extractor提取参数值
2.正则表达式的方法
我们已学生金币充值的接口为例来实验,由于接口需要权限,需要获取登录时的sign值我们就用关联来实现。
登录接口
请求URL
http://api.nnzhp.cn/api/user/login
- 请求方式 post
- 请求参数 参数为key-value形式
参数名 必选 类型 说明
username 是 string 用户名
passwd 是 string 密码
登陆用户名:niuhanyang
密码:aA123456
返回参数说明
参数名 类型 说明
error_code int 错误编码,0为操作成功
login_info object 登录对象信息
userId int 用户id
sign string 签名
login_time string 登录时间
打开jmeter,添加登录接口请求,调用查看结果
获取学生信息接口
请求URL http://api.nnzhp.cn/api/user/stu_info
- 请求方式 get
- 请求参数
参数名 必选 类型 说明
stu_name 是 string 学生姓名
调用接口结果
学生金币充值
请求URL:
http://api.nnzhp.cn/api/user/gold_add
- 请求方式 post
- 参数 ,
该接口有权限验证,需要admin用户才可以做操作,需要添加cookie
cookie中key为登录的用户名,value从登录接口中获取,登陆成功之后会返回sign
参数名 必选 类型 说明
stu_id 是 int 学生id
gold 是 int 金币数量
返回参数说明
参数名 类型 说明
error_code int 错误编码,0为操作成功
msg string 提示信息
第一种方法比较简单,使用插件json path postprocessorh 或 jp@gc - json Path Extractor
如下:在登录接口添加json path postprocessorh,获取需要参数化的值的信息



上面的例子中,返回值只有一个结果,如果存在多个结果的场合,我们怎么取值呢?
现在我们以学生ID为例来实验,可以看到上图中的查看学生信息中反回了多个ID号,我们用上边的方式来试一下
添加json Path Extractor
从学生信息返回的结果看,获取内容的json串取为$.stu_info.id,将stu_id进行参数化为${id},执行
可以看到执行结果是失败的,传入的学生id是我们输入的默认值nono。
我们来看一下学生接口的返回信息
{
"error_code": 0,
"stu_info": [
{
"id": 872,
"name": "A",
"sex": "nn",
"age": 33,
"addr": "士大夫是非得失的士大夫士大夫",
"grade": "33",
"phone": "15221223211",
"gold": 9500
},
{
"id": 1053,
"name": "A",
"sex": "nn",
"age": 33,
"addr": "士大夫是非得失的士大夫士大夫",
"grade": "33",
"phone": "16221223211",
"gold": 100
}
]
}
上述的返回结果中,有两组信息,包含了两个学生的信息,如果用$.stu_info.id,计算机不知道要去获取,所以我们需要指定一下要获取哪一个ID号

执行结果是成功的。
2.正则表达式
需要进行参数化还有一种方法是用正则表达式,如下



下载文件
1.文件上传
文件上传类型
请求URL:
http://api.nnzhp.cn/api/file/file_upload
- 请求方式 post
- 参数
参数名 必选 类型 说明
file 是 file 文件
返回参数说明
参数名 类型 说明
error_code int 错误编码,0为操作成功
msg string 提示信息
在jmeter中添加http请求,选择文件,添加参数信息,执行

可以看到上传文件执行成功了。
2.下载文件
现在我们来试一下下载文件是如何操作的
在网络上找到一个图片资源,获取到图片的地址:http://img4.duitang.com/uploads/item/201209/08/20120908180716_3rrvi.jpeg
我们在jmeter中新建一个HTTP请求,填写相应的参数,执行
可以看到下载成功了,那怎么把图片下载到本地呢?这就需要用到Bean Shell Sampler
BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法;


代码如下:
执行并查看结果:
可以看到在填写的下载路径文件夹下,可以看到下载好的文件

一、什么是压力测试
压力测试通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大的服务级别的测试。通俗地讲,压力测试是为了发现在什么条件下您的应用程序的性能会变得不可接受。
登录接口
请求URL
http://api.nnzhp.cn/api/user/login
- 请求方式 post
请求参数 参数为key-value形式
参数名 必选 类型 说明
username 是 string 用户名
passwd 是 string 密码
登陆用户名:niuhanyang
密码:aA123456
添加线程组,添加http请求,添加聚合报告
设置压测的并发数,这里我们设置100个并发,循环10次,持续30s
下面看一下各个参数的含义:
Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
#Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100,我们设置的为100个用户循环10次,所以一共的请求为100*10=1000
Average:平均响应时间——默认情况下是单个 Request 的平均响应时间(单位是毫秒),当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间
Median:中位数,也就是 50% 用户的响应时间
90% Line:90% 用户的响应时间
Min:最小响应时间
Max:最大响应时间
Error%:本次测试中出现错误的请求的数量/请求的总数
Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的Transaction per Second 数
KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec
根据具体的压测结果与目标需求进行比较来分析是否满足需求以及需要进行的优化操作

我们在本地jmeter看一下添加的压力机

或者直接点击全部运行按钮,进行运行,就可以进行压测啦,大家一起来试一下吧
jmeter关联、下载文件、简单压测的更多相关文章
- jmeter简单压测、下载文件
一.jmeter做简单压测(单机) 1.添加需要压测的HTTP请求 2.添加聚合报告 3.设置压测场景 4.查看聚合报告 二.多机同时进行压测 1.在需要连接的电脑上打开jmeter bin目录下的 ...
- jmeter之登录接口的一次简单压测与分析
前言:登录接口的一次简单压测与分析 1.接口文档 2.配置元件 3.结果分析 1.接口文档 a.拿到接口文档 接口地址:http://localhost:8080/jpress/admin/login ...
- day2.jmeter简单压测,下载文件,Charles手机抓包准备
一.压测 压测衡量一个系统的好坏:1.tps每秒钟处理的事物数,2.qps响应时间 添加聚合报告,更改线程组,运行接口请求 **添加压力机 1.首先确保都在同一网段 2.其他电脑要先启动jmeter- ...
- jmeter简单压测设置
参数化 随机参数 时间参数 顺序自增函数 文件读取 直接引用 响应断言 用来查看sessionid 关联 关联引用 jmeter操作数据库 安装连接程序包 ip 端口号 哪个数据库 可以执行多条s ...
- Jmeter安装与使用(压测)
一.介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态和动态资源的性能,例如:静态文件,Java Se ...
- JMeter使用教程2——MySQL压测
之前写过一篇JMeter使用教程,只是介绍了http请求的压力测试,想到MySQL的测试也挺必要的,于是写下这篇记录一下.如果不知道怎么下载和安装,可以看一下上一篇关于JMeter的文章,地址是:ht ...
- jmeter 插件安装之阶梯式压测(五)
一.Jmeter插件安装 jmeter-plugins-manager-1.4.jar 下载地址:https://jmeter-plugins.org/install/Install/ 下载之后将插件 ...
- JMeter在linux上分布式压测步骤(二)
哈喽,我又来了~ 前提:三台linux虚拟机,一台作为master,另外两台作为slave. 一.server端 1.修改1099端口,client和server通信的端口,可以不修改,默认就是109 ...
- jmeter针对websocket协议的压测
之前一直没有接触过websocket协议,所以一直对websocket的压测存在疑惑,在网上参考文章并不断尝试之后,终于有所得:第一次用jmeter的websoket插件,用的ws非加密协议,请求都能 ...
随机推荐
- Linux学习笔记(六) 进程管理
1.进程基础 当输入一个命令时,shell 会同时启动一个进程,这种任务与进程分离的方式是 Linux 系统上重要的概念 每个执行的任务都称为进程,在每个进程启动时,系统都会给它指定一个唯一的 ID, ...
- 怎么提交小程序给微信?微信小程序的提交审核流程
开发者开发好一款微信小程序后,如何将其提交给微信审核呢?今天正好有空,就整理了一下小程序的提交流程,以供大家参考.如果要发布小程序,那么你需要申请真正的小程序账号,拿到appId,才能在手机预览.及提 ...
- Xshell(smarTTY)连接Linux虚拟机失败(未开放22端口)解决办法
1.关闭防火墙: 命令:sudo ufw disable 2.安装openssh-server以及openssh-client: 命令:sudo apt-get install openssh-ser ...
- 第十一节:Web爬虫之数据存储(数据更新、删除、查询)
接着上一节的内容 5.MySQL数据更新 结果是将id=3的name进行更新操作,结果如下: 6.MySQL数据去重及更新 结果是判断数据是否有重复的,如果有重复的将不再存储,若没有重复的就更新数据进 ...
- 【Codeforces 923A】Primal Sport
[链接] 我是链接,点我呀:) [题意] 题意 [题解] 考虑怎么得到数字x2=N,假设是质数p的倍数 那么x1肯定在x2-p+1~x2这个范围内才行 因为p的倍数要刚好大于等于x1, 所以x1肯定是 ...
- Linux学习总结(19)——Linux中文本编辑器vim特殊使用方法
1. vim比对功能 在linux的环境下 用于观察两个文件的一致性的时候我们一般用diff这个命令来比对,但是这个命令不能你特别详细的比对出 具体的位置或者行对比.这里就用到了vim的对比功能 vi ...
- [luoguP1373] 小a和uim之大逃离(DP)
传送门 题解 代码 #include <cstdio> #include <iostream> #define N 802 #define mod 1000000007 int ...
- Minimum Transport Cost Floyd 输出最短路
These are N cities in Spring country. Between each pair of cities there may be one transportation tr ...
- leetcode算法学习----155. 最小栈(MinStack )
下面题目是LeetCode算法155题: https://leetcode.com/problems/min-stack/ 题目1:最小函数min()栈 设计一个支持 push,pop,top 操作, ...
- 1.3-动态路由协议RIP①
Dynamic Routing Protocol:动态路由协议 现代IP网络中,主要的动态路由协议: AD/管理距离: 1:DV/距离向量协议:RIP(120)/IGRP(100) 2:LS/链路状态 ...