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非加密协议,请求都能 ...
随机推荐
- 手动模拟一个类似jquery的ajax请求
var $ = { parms:function(obj){ var str = ''; for(var k in obj){ str +=k+'='+obj[k]+'&'; } str = ...
- 3.3.3 char 类型
char类型原本用于表示单个字符.不过,现在情况已经有所变化.如今,有些Unicode字符可以用一个char值描述,另外一些Unicode字符则需要两个 char 值. char类 ...
- 【Codeforces 1091D】New Year and the Permutation Concatenation
[链接] 我是链接,点我呀:) [题意] 把1~n的n!种排列依次连接成一个长度为nn!的序列. 让你在这个序列当中找长度为n的连续段,使得连续段中的数字的和为n(n-1)/2 输出符合要求的连续段的 ...
- 47. Spring Boot发送邮件【从零开始学Spring Boot】
(提供源代码) Spring提供了非常好用的JavaMailSender接口实现邮件发送.在Spring Boot的Starter模块中也为此提供了自动化配置.下面通过实例看看如何在Spring Bo ...
- 线段树题集 (cf版)
lazy区间修改 : http://acm.hdu.edu.cn/showproblem.php?pid=4902 (hdu4902) http://acm.hdu.edu.cn/showpr ...
- noip模拟赛 蒜头君的排序
分析:其实就是求m个区间的逆序对个数,题目真的是明摆着让我们用莫队算法,套用树状数组就可以了. 具体怎么转移呢?如果移动R,那么对区间[l,r]有影响的是R左边的元素,我们只需要看有多少在R左边比a[ ...
- 1827 tarjan+缩点
#include<stdio.h> #include<stack> #include<iostream> #include<string.h> #inc ...
- [bzoj 1041][HAOI2008]圆周上的整点(枚举)
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1041 分析:实质上是求(a,b,c)勾股数的个数,其中c是确定的. 对于勾股数有一组通式: a ...
- SQLITE报错database is locked的解决办法
用firedac连接SQLITE数据库,空间tdbedit绑定字段name,如下语句修改其值时报错. procedure TForm1.Button3Click(Sender: TObject);be ...
- [Elasticsearch] 集群的工作原理 - 第一部分
本文翻译自Elasticsearch官方指南的life inside a cluster一章. ES就是为高可用和可扩展而生的. 扩展能够通过购置性能更强的server(垂直扩展或者向上扩展,Vert ...