Jmeter常用获取数据的几种方式

还没用过聊天机器人?给我发消息试试。

Jmeter在互联网测试中应用非常多,可以用来做接口测试或者性能测试,算是非常不错的一个工具。今天我们来聊聊Jmeter获取数据的几种方法。

1、手动写入

所有可以固定的参数,我们都可以通过手动写入的方式。如以下图中,HTTP信息头管理器中的Content-Type的值是application/json,通过手动写入的方式来获得数据。

2、正则表达式提取器

对于前后接口有关联,需要将前一个接口的返回值做为后一个接口的请求参数。对于这种参数,我们没有办法提前写入。为了整个项目的连贯性,所以我们需要用到正则表达式提取器来提取前一接口的返回值,然后传递给下一接口。

在第一个接口添加>后置处理区>正则表达式提取器。如下图:

要检查的响应字段:根据实际选择。

引用名称:即后面使用要引用的变量名字

正则表达式:用于将需要的数据提取出来

模板: 表示要提取第几个值,1表示第一个,2表示第二个,0表示随机,-1表示所有。

匹配数据: 0表示随机,1表示全部

数据的传递使用

前面一个接口是创建订单,从返回值中得到orderId。现在测试取消这个订单,需要orderId,我们用正则表达式提取器已经提取出来,可以直接拿来使用。

使用方法如下$:

3、读取文件

CSV Data Set Config可以从指定文件中读取数据,filename即文件路径,Variable Names即做为变量名。如果有多列就写多个,逗号隔开,如果是一列就写一个。如果读取文件第二列,前面一个逗号',var',第N列前面N-1个逗号。

4、数据库查询

在有些使用场景,我们需要去数据库中查询一些数据。这个时候我们就要用到JDBC Connection Config及JDBC Request。

JDBC Connection Config负责连接数据库,JDBC Request负责查询。

JDBC Connection Config的设置中Variable Name与JDBC Request中保持一致,正确填写Database URL, Username,Password,这样可以和数据库建立连接。

JDBC Request中Variable Name与前面一致。SQL Query中输入要执行的SQL语句。Variable Name即要传递的变量名,MySQL查询出来的数据在第几列,前面N-1个逗号。

在使用变量时需要注意,上面设置是拿的整列,在实际使用中需要用$获得第一个数据,如"token":"$"。当然此处也可以获取其他指定行数据。

5、使用随机数

在配置元件中有个Random Variable,非常好用。输入最大和最小值。

6、用时间戳做为变量

有时候随机数可能不能满足我们对于参数的要求,我们可以采用时间戳+随机数的方式,大大减低数据重复的可能性。$获取时间戳。

7、返回值存入文件再使用

前面我们说了采用正则表达式提取器来传递参数,能满足我们大部分场景,当使用场景如下时就会显得不那么好用了:在压力测试时,我们需要每个用户都是登录情况下操作。如果我们在前面调用登录接口,势必大大影响整个系统的处理能力,这样不能能客观得到接口的性能。

我们可以采用如下处理方式,批量注册或者登陆一批用户(当然总数是够跑一次测试的),把他们的登录信息存入一个文档。 再把他们从文件中读取处理,放入headers。

登录接口加入后置处理器正则表达式提取器及BeanShell PostProcessor,正则表达式提取器来提取,采用beanshell脚本来做到存储。

今天只是粗略介绍了Jmeter获取数据的几种方式。当然可能有其他更好,更多的方式,欢迎讨论。

本文来自企鹅号 - 全球大搜罗媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏MelonTeam专栏

android bitmap的缓存策略

不论是android还是ios设备,流量对于用户而言都是宝贵的。在没有wifi的场景下,如果加载批量的图片消耗用户过多流量,被其知晓,又要被念叨一波~ ? 如...

2456
来自专栏用户2442861的专栏

linux grep工作常用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/d...

1184
来自专栏牛肉圆粉不加葱

Spark Task 的执行流程② - 创建、分发 Task

task 的创建本应该放在分配 tasks 给 executors一文中进行介绍,但由于创建的过程与分发及之后的反序列化执行关系紧密,我把这一部分内容挪到了本文...

771
来自专栏Python、Flask、Django

python中用requests获取API参数

2096
来自专栏python3

查看php-fpm内存占用

ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n...

1102
来自专栏编程

Nutch重要命令使用说明

之前几篇博文对nucth抓取周期的几个命令做了说明,本篇博文将对nutch抓取周期以外的几个重要的命令的使用进行详细的说明。 1. mergesegs 合并多个...

2025
来自专栏desperate633

Java多线程之死锁(Deadlock)及死锁避免(Deadlock Prevention)线程死锁(Thread Deadlock)更复杂的死锁情况数据库死锁死锁避免(Deadlock Preven

死锁就是当两个或者多个线程阻塞了 ,正在等到所需要的锁,但这些锁被其他也在等待的线程锁持有。死锁常常发生在多个线程在同一个时刻,需要同一些锁,但是他们获取锁的顺...

961
来自专栏PHP实战技术

Linux下自动化监控内存、存储空间!

距离上一次更新文章已经过去一段时间了,小编在这段时间因为一些琐事,加上身体生病不能及时更新文章,今天身体逐渐恢复就急忙来更新文章,今天思梦给大家...

3486
来自专栏gaoqin31

设计模式之 策略模式

定义 :封装了一些列算法,它们之前可以相互替换,此模式使得算法的改变,不会影响到使用它们的客户端

1283
来自专栏腾讯Bugly的专栏

Android 混淆那些事儿

本文主要讲述了代码混淆和资源混淆的原理,Studio默认的混淆方案,混淆的参数,以及如何对Apk进行代码混淆(自定义混淆文件)和资源混淆(结合微信混淆和美团混淆...

8875

扫码关注云+社区

领取腾讯云代金券