• jmter参数化


    about

    在工作中,使用固定的参数多次测试一个接口,意义并不大,比如老是用同一个用户测试登录接口。比较好的办法是什么呢?就是使用不同的用户访问登录接口,模拟更真实的登录场景。

    在jmeter中,提供了参数化函数和参数化文件两种方式来实现参数化。

    来看看都是怎么玩的。

    参数化函数

    首先:这里需要在插件管理中心下载了Custom JMeter Functions插件,该插件扩展了函数助手对话框内的内置函数数量。

    jmeter内置了很多函数来供我们使用,比如:

    • 随机数函数系列
    • 加密
    • 时间戳函数
    • UUID

    怎么用呢?在你的菜单栏,有个函数助手对话框,里面包含了jmeter提供的所有的函数,内置的和自定义的都有。

    我们通过几个示例来学习函数如何使用。

    如下图:

    1. 在菜单栏,点击函数助手对话框
    2. 在弹出的窗口中,下拉选择随机数函数。
    3. 对于随机数范围的限制,和将随机数函数赋值给一个变量(可选参数,可以不写),方便别的地方引用。
    4. 点击生成,左侧的输入栏就是jmeter生成的随机数函数,把它拷贝走即可。
    5. 当你点击生成的时候,自动的执行了该函数,随机生成了一个随机数。

    来看怎么用,我们现在访问下面的URL,而stock值需要随机生成。

    http://www.neeo.cc:6002/get?stock=10   # get
    

    在线程组(线程数设置为2)新建"HTTP请求"取样器:

    如上的随机数中,将会从1~100内随机取值。来看"察看结果树"中的结果:

    可以看到,两次请求携带的stock值都是随机生成的。

    那么,如果有这样一个场景,就是一个生成的随机数要被多处引用怎么办?你可能会说,这么干:

    哪里用到就放到哪里!但是这么着不行,因为当jmeter调用一次该函数,就会重新生成一个值:

    由上图可以看到,每次的值都不一样,这怎么才能一样呢?这就用到在函数助手中的某个参数了:

    没错,就是"存储结果的变量名(可选)"这个参数,这个参数就是将函数执行的结果保存到变量中,然后我们就可以直接别处使用这个变量了,来看怎么用:

    看结果:

    一个字,好使!原理是啥呢?jmeter在执行内置函数后,会将结果保存到到变量中,而这个变量在哪看呢?其实这个变量被保存到了jmeter的全局中了,不信你看"调试取样器":

    OK,完美!

    其他的内置函数用法都类似,所以这里就不一一细表了。

    但是,还有个重要而内置函数要说,它就是内置的"CSVRead"函数,这个函数用来读取外部的CSV文件。

    所谓“CSV”,是Comma Separated Value(逗号分隔值)的英文缩写,通常指的都是纯文本文件,可以以txt方式或者Excel表打开,更多参考:https://baike.baidu.com/item/CSV/10739

    在参数化中,文件参数化是非常重要的一个点。比如做登录参数化,登录的用户名和密码总不能都是随机的,而是要从数据库或者文件中读取出来的真实的用户。

    首先,我们需要在本地创建一个data.csv文件,注意以逗号分隔:

    zhangsan,111
    lisi,222
    wangwu,333
    zhaoliu,444
    

    怎么用呢?上URL:

    http://www.neeo.cc:6001/get  # get
    

    上面这个链接想必你也很熟悉了,可以携带用户和密码参数。

    首先,由于上面data.csv文件有4个用户,所以,我们这里配置线程组的线程数为4,表示一个线程代表一个用户;然后,在线程组内创建一个"HTTP请求"取样器:

    来看"察看结果树"中的结果:

    如上图,这完全没有问题,一个线程获取一个用户的信息;但是,我由于在设置线程组的线程数时,手一抖,多设置了一个线程,现在有5个线程数了,也就是数据文件是4个用户,而线程数是5了, 那么第5个线程获取的信息是什么?我们有必要来看下:

    哦,是第一个用户的用户信息,这就意味着,当数据文件到末尾时,线程并没有结束,而是从头开始循环着再次从头取值了。

    来个小结:__CSVRead函数规定每个线程都只读取一行数据。

    那,遇到当数据文件到末尾时,就结束线程的这种操作该怎么办?

    很明显__CSVRead函数,有一定的局限性,我们需要更灵活的控制。

    参数化文件

    "CSV数据文件设置"这个元件对__CSVRead函数做了一定的扩展,使其更加的灵活,来看如何添加"CSV数据文件设置":

    如上图新建一个配置元件"CSV数据文件设置":

    我们可以对"CSV数据文件设置"做如下配置:

    • 文件名:就是我们要使用的CSV文件。
    • 文件编码就不多说了。
    • 变量名称这里,之前我们都是用0代表第一列,1代表第二列,现在我们可以为这些列起一个变量名。
    • 忽略首行的意思是,在第一行是否有title。有title就忽略它。
    • 分割符默认是西文逗号,也可以自己指定分隔符。
    • 你的数据是否带引号?
    • 当文件所有行读取完毕后,遇到文件结束符后再次循环?和遇到文件结束符停止线程?的关系是互斥的,也就是一个如果设置为true则另一个要设置为false。
    • 线程共享一般设置为所有线程(汉化的没那么精准)。也就是这个CSV文件可以被所有线程使用。

    然后,HTTP请求取样器中直接引用变量名即可:

    由于在"CSV数据文件设置"中设置了遇到文件结束符时结束循环,所以,5个线程执行了4个就停止了。

    以上就是jmeter在参数化方面的用法,更多姿势,请自行探索!

  • 相关阅读:
    20180925-3 效能分析
    20180925-7 规格说明书-吉林市2日游
    20180918博客作业
    第二周例行报告
    2018091-2博客作业
    容器(list集合)
    给应届生们的建议(一定要看哦)!
    MySQL 和 JDBC(Java数据库连接)
    Oracle常用数据库对象(片段)
    7353. 【2021.11.06NOIP提高A组模拟】qaq (qaq)
  • 原文地址:https://www.cnblogs.com/TodayWind/p/16275451.html
Copyright © 2020-2023  润新知