Jmeter 参数化

Posted xia-qing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jmeter 参数化相关的知识,希望对你有一定的参考价值。

参数化在接口性能,接口自动化都必须用到,需要重点掌握,接下来就针对Jmeter 4.0  6种参数化方式做介绍。

1、用户定义的变量
  应用场景:可定义同时被应用到多个线程且不常变动的公共参数,例如请求协议,IP地址,请求方式,资源,端口号等
  变量定义步骤:

  1)新增用户定义变量的组件:单击测试计划再右键点击--选择添加--配置原件--点击用户定义的变量

  技术分享图片

  2)设置你要的变量

  技术分享图片

  3)调用变量:  ${变量名}--在对应的地方调用变量,第二步定义了三个变量,本步均已调用如下

  技术分享图片

  设置"用户定义的变量"有什么用处呢,最大的好处就是易于维护脚本,例如我们请求的IP地址一般不会变,且每个请求都必须用到,如果变化了,几个请求还好逐个修改就好,可若是成千上万个请求呢,

  这时你就要庆幸你在最初设置的变量了,只要修改当初你设置的变量值即可,所有调用了这个变量的值都会一起修改,大大节省了维护脚本的时间及成本。

  注:要把"用户定义的变量"这个组件放在最外面,这样才会作用于整个测试计划内的线程,个人建议,在开始创建线程的时候就要完成参数化。

2、函数助手

  就是Jmeter中有提供了一些帮助我们完成某项功能的函数,可能不好理解,那么我们以一个例子来解释Jmeter中常用函数的功能以及如何使用。

  例子:百度账号登录功能

  先来看看百度账号登录的界面,如下截图

  技术分享图片

  1)首先找到Jmeter的函数助手,参考如下。

  技术分享图片

  2)何时需要使用到函数呢,那就是我们要实现某个功能的时候,要实现某个功能首先应该想到的是,是否有一个函数可以帮我们去解决,若没有对应的函数方法则考虑自己封装一个。

  我们来分析百度用户名密码登录功能,其至少需要我们输入两个请求参数,分别为用户名,密码,然后通过点击登录按钮触发。

    1>我们在做并发测试等多线程操作时,用户名是不能重复的,那么是否有一个函数可以帮我们实现这个功能呢

    _RandomString------随机字符串,可以真实模拟客户数据,具体设置参考下图。

    技术分享图片

    2>那如果是用手机号登录呢,那我们要实现手机号的随机,而手机号一般都有前三位数字的限定,函数设置参考下图。

    __Random----随机数,可获得某个范围内的随机整数。

    手机号前三位我们固定取135,那么调用函数时就是135${__Random(00000000,99999999,)}。

    由于除了固定的前三位,还有8位数字要随机产生,所以最小值是八个零,最大值是八个九

    技术分享图片

    3>若提供一些固定的值给你,如何去将这些值作为你的请求参数。

    _CSVRead---数据以csv文件方式提供,则用此函数来实现读取,需要准备一个csv文件(文件内只有两列,分别为user_name,user_pwd,含若干条数据)

    技术分享图片

    将生成的函数字符串应用到我们的请求当中去,如下方式调用,用户名需要一列值,密码需要以列值。

    技术分享图片

    调试脚本

    确定文件中的值是否有正确被读取到,需要注意的是我们必须在线程中设置线程数>1或是循环次数>1,否则读取的永远是文件中的第一条数据

    技术分享图片

    点击执行登录请求后,查看结果(察看结果数组件),主要查看请求数据是否为文档中的值,若是则说明你已经成功读取了文档中的数据。

    技术分享图片

    当然读取csv文档中的数据还有另外的方法,如在"配置原件"组件的"CSV数据文件设置"中也可设置,在此也给大家简单介绍下,同样看图说话。

    技术分享图片

    4>其他函数

    _UUID--生成ID,基本是唯一的,生成随机字符串如(6c29a9d0-55d2-40ce-a4a4-58a96c4de950),调用函数方式 ${_UUID}

    _counter计数器函数

    功能:每次调用计数器函数都会产生一个新值,从1开始每次加1,允许的最大值为2,147,483,647。
    TRUE代表这个函数是每个用户自己的计数器,通常被用于记录测试计划运行了多少遍;FALSE代表全局计数器,通常被用于记录发送了多少次请求,上图,帮助理解

    技术分享图片

 

https://www.cnblogs.com/imyalost/p/6802173.html

3、bean shell参数化

4、数据库取数据作为参数化

5、文件方式参数化

6、动态关联

  应用场景

  下个用例要用到上个用例的返回参数,而且这个返回参数里面的数据是动态生成的,然后我们通过这些技术比如说正则表达式,json提取器,xpath提取器

  通过这些技术动态的把他的返回参数的值取到,然后给我第二个变量里面去用,这就是他的应用场景。好比充值前要先登录,要先获取到session,因为要充值时必须先登录,所以可以将登录放到setup线程

  首先发送一个登录请求,查看返回cookie位置在哪,一般在返回头

7、Jmeter脚本录制

   1)设置Jmeter代理

    1>测试计划--添加--非测试原件--HTTP代理服务器

     技术分享图片

    2>设置脚本归属的线程--注意端口号,目标控制器选择脚本归属的线程(如下选择百度账号注册线程)

    技术分享图片

    3>为了避免Jmeter抓取到太多我们不需要的东西,我们先要设置过滤,过滤掉一些静态资源(如图片),设置如下,点击“启动”

    技术分享图片

    4>设置浏览器代理,本人使用的是Chrome浏览器,步骤为:浏览器右上方有三个竖点,点击并选中设置-->选择高级-->选择打开代理设置->跳出如下对话框进行设置。

    技术分享图片

    5>开始录制脚本,以某个登录功能为例,先输入用户名,密码-->再设置浏览器代理(避免录制到不需要的数据)-->点击登录按钮-->查看线程下就有录制到的登录脚本-->关闭浏览器代理及点击jmeter的":停止"

    最后处理并查看我们录制到的登录脚本

    技术分享图片

 

    未完待续....

 

    

    




以上是关于Jmeter 参数化的主要内容,如果未能解决你的问题,请参考以下文章

JMeter笔记9 | JMeter参数化

jmeter参数化(三种方法)

Jmeter进阶--参数化

jmeter file path如何参数化

Jmeter参数化请求

Jmeter参数化请求