专栏首页软测小生Jmeter 参数化的多种方式

Jmeter 参数化的多种方式

前言

在使用Jmeter进行性能测试时,需要并发多个用户,模拟真实用户行为,此时就需要模拟多个不同用户同时请求,每个用户请求中的imei或uuid动态变化。Jmeter提供了参数化的功能,配置元件、函数助手以及前置处理器中的用户参数,均能够帮助我们解决这个问题。

配置元件-CSV Data Set Config

配置元件是最常使用的一种方式,CSV Data Set Config 可以从指定的文本文件或csv文件一行一行的读取文本内容,通过分隔符拆解每行内容,并把内容与变量名一一对应起来,每个请求取文件中不同行的值,实现并发多个用户的需求。我们可以在配置元件中找到它。CSV数据文件设置页面如下:

其中,参数含义如下: Filename:引用文件地址,可以填相对路径或绝对路径。相对路径的根节点是Jmeter的启动目录,如果测试执行是分发到多台远程负载机上的,使用相对路径能够避免因Jmeter安装路径不同导致的参数化文件无法取到的问题。另外,也可以利用Jmeter的变量来参数化参数文件的路径,使用${paraUrl},同时在元件【User Defined Variables】中设置文件路径。 File encoding:读取参数文件时的编码格式,建议填写UTF-8,避免打开乱码情况。 Variable Names(comma-delimited):即HTTP请求中希望随请求变化的变量名称。如果有多个变量,需使用符号隔开,该符号应与引用文件中变量之间的符号一致。若该处填写的变量名称多余引用文件中的参数列数,则多余的参数将无法取到值。 Ignore first line(only used if Variable Names is not empty):忽略首行,当引用文件中首行设置了变量名时,该项设为 true,此时每次请求读取文件时会自动忽略首行,直接读取第二行的数据。 Delimiter(use '\t' for tab):即用来分隔引用文件中的分隔符,如果引用文件中使用tab分隔,此处填写'\t'。

Allow quoted data?:是否允许引用的数据,如果选择true,则表示可以允许拆分完成的参数之间有分隔符出现。比如,引用文件中的值为:"31,celling",998d9e385a0c25b0e750,如果此处选择true,则拆分后的参数为31,celling和998d9e385a0c25b0e750。 Recycle on EOF?:参数文件是否循环遍历。 Stop thread on EOF?:当读取到参数文件末尾时,是否停止读取线程,默认为 false。当 Recycle on EOF? 设置为 true 时,此项不起任何作用。当且仅当 Recycle on EOF? 为 false 时,此项配置才生效。 Sharing mode:参数文件共享模式。主要有以下三种模式:

  • All threads:参数文件对所有线程共享,包括同一测试计划中的不同线程组;
  • Current thread group:只对当前线程组中的线程共享;
  • Current thread:仅对当前线程获取。

函数助手

CSV Data Set Config元件可以动态替换指定数据的参数值,如果我们想让某个值的内容是随机生成的,可以使用函数来生成。位置在快捷工具栏的倒数第二位:

介绍一个生成随机字符串的函数,__RandomString。Random string lengh:生成的字符串长度。 Chars to use for random string generation:指定用哪个字符作为种子进行随机生成,可支持中文、数字、字母。 Name of variable in which to store the result (optional):可选项,填了之后,运行脚本后可以在Debug Sampler中看到这个变量的值。 填写好参数之后,点击Generate,会生成一串字符${__RandomString(30,abt2345函数kji助手,)},可直接作为请求中的参数化数据,如下图所示。

运行结果可以看到,每次请求时携带imei参数均为随机生成的字符串:

当然,函数助手中有很多强大的函数,在此不一一列举。

访问地址参数化

在实际测试过程中,有时测试地址会发生变化,将访问地址参数化之后,只需改动参数对应的值就可以改变访问地址。具体过程如下: -在HTTP请求中设置参数URL和PORT

-在User Defined Variables中定义URL和PORT具体值

用户参数

在该元件中,可以看到有“Add Variable”、“Add User”、“Delete Variable”、“Delete User”,在进行参数化取值时,根据用户进行区分。

比如,有两个线程,分别要取变量imei的值,则可以分别从此处取值,效果与其他方法相同。

结束语

参数化能够帮助我们把固定数据动态化,更加贴合实际的模拟用户请求,利用好参数化功能可以有效提高测试效率,更加合理评估线上服务性能或进行性能调优。想了解更多Jmeter的知识,请持续关注吧~

本文分享自微信公众号 - 软测小生(ruancexiaosheng)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • postman接口测试-参数化

    在环境变量里面设置好参数,比如 url=http://www.baidu.com 某一类型的 BaseUrl 全部都是 www.baidu.com, 参数化之后...

    软测小生
  • 玩转Linux命令 tail命令详解

    前几天看到一同事正在使用这个命令,感觉有点陌生,然后就问了一嘴,-f是啥意思,同事说,他也忘了,他知其然不知其所以然。 今天突然看到关于这个命令的详细介绍,所以...

    软测小生
  • 05|指标关系:你知道并发用户数应该怎么算吗?

    我在性能综述的那三篇文章中,描述了各种指标,比如 TPS、RPS、QPS、HPS、CPM 等。我也强调了,我们在实际工作的时候,应该对这些概念有统一的认识。

    软测小生
  • Jmeter 参数化的多种方式

    其中,参数含义如下: Filename:引用文件地址,可以填相对路径或绝对路径。相对路径的根节点是Jmeter的启动目录,如果测试执行是分发到多台远程负载机上...

    用户5521279
  • SQL Server 常用函数

      三个参数,第一个参数需要截取的,第二个参数,截取字符串的起始位置(起始位置是1),第三个参数需要截取字符串的长度。

    _一级菜鸟
  • 让人头大的各种锁,从这里让你思绪清晰

    说到了锁我们经常会联想到生活中的锁,在我们日常中我们经常会接触到锁。比如我们的手机锁,电脑锁,再比如我们生活中的门锁,这些都是锁。

    码农小胖哥
  • 让人头大的各种锁,从这里让你思绪清晰

    说到了锁我们经常会联想到生活中的锁,在我们日常中我们经常会接触到锁。比如我们的手机锁,电脑锁,再比如我们生活中的门锁,这些都是锁。

    歪脖贰点零
  • 让人头大的各种锁,从这里让你思绪清晰

    说到了锁我们经常会联想到生活中的锁,在我们日常中我们经常会接触到锁。比如我们的手机锁,电脑锁,再比如我们生活中的门锁,这些都是锁。

    用户1516716
  • 让人头大的各种锁,从这里让你思绪清晰

    说到了锁我们经常会联想到生活中的锁,在我们日常中我们经常会接触到锁。比如我们的手机锁,电脑锁,再比如我们生活中的门锁,这些都是锁。

    程序员小明
  • JMeter如何实现参数名称和个数动态变化的接口请求

    2、直接在Maven 项目下开发自定义函数,然后打包,该方法、简单、高效

    jmeter技术研究

扫码关注云+社区

领取腾讯云代金券