JMeter 测试常用到的一些功能

设置中文

在导航栏选择 Options->Choose Language->Chinese(Simplified) 即可设置为简体中文
UTOOLS1565849537890.png

设置后如下图
UTOOLS1565849659132.png

设置请求头

  1. 新增HTTP信息头管理器
    UTOOLS1565850836742.png

  2. 逐个设置请求头即可,如果我们是post请求想要设置请求参数为json数据则可以添加Content-Type,值为application/json
    UTOOLS1565850960112.png

设置请求默认值

  1. 以百度搜索为例,新增 HTTP请求默认值
    UTOOLS1565851069666.png

  2. 然后直接设置请求的域名,协议,端口等信息
    test.png

  3. 在发送http请求时,如果不设置这些信息,则会使用默认的
    UTOOLS1565851866506.png
    [外链图片转存失败(img-l6LecNDL-1565859654765)(https://i.loli.net/2019/08/15/8NU796HhzXFf2LI.png)]

设置普通变量并使用

  1. 还是以百度搜索为例,右键测试计划新增一个用户自定义配置元件
    UTOOLS1565851630729.png

  2. 添加查询条件参数
    UTOOLS1565852073658.png

  3. 新建一个http请求,通过${参数名}的方式来获取参数
    [外链图片转存失败(img-NMfrhBcJ-1565859654772)(https://i.loli.net/2019/08/15/NsrBmJQ36SaoMly.png)]

  4. 启动查看结果,可以看到在http的名称和参数中都能获取到该参数

设置随机数变量并使用

  1. 右键选择测试计划创建随机变量配置元件
    UTOOLS1565852293655.png

    UTOOLS1565853158742.png

  2. 创建两个设置参数,和之前设置普通的一样
    UTOOLS1565854457673.png

  3. 执行JMeter查看返回的随机数
    [外链图片转存失败(img-6PmCqJqf-1565859654778)(https://i.loli.net/2019/08/15/7dxCbzR6y39sfhE.png)]

其他写法

  1. 添加3个用户自定义变量
    [外链图片转存失败(img-fIOIZh10-1565859654779)(https://i.loli.net/2019/08/15/kO8fNguiaybmnrF.png)]

  2. 使用${__V(wd${__Random(1, 3)})}调用
    UTOOLS1565854923990.png

  3. 拆解

    • ${__Random(1, 3)}: 随机生成1-3之间的整数
    • wd${__Random(1, 3)}: 随机生成wd1, wd2, wd3中的任意1个字符串
    • ${__V(wd${__Random(1, 3)})}: 对形如wd1的字符串求值。也就是不把wd1当成字符串来看,而是把wd1当作是1个变量,并获取这个变量的值。wd1的值是我们在用户自定义变量中定义过的,也就是搜索。那么连起来,这个表达式的作用就是随机生成搜索第一个变量, 搜索第二个变量, 搜索第三个变量中的任意一个字符串
  4. 请求的结果如下
    UTOOLS1565855258378.png

  5. 可以看到在http请求,名称中的参数和发送请求时wd的参数值不一样,即每次都请求都不一样

由于随机数的生成的时候会耗cpu和内存,当用户量并发量很大的时候,不推荐使用JMeter脚本来生成随机数,这个时候推荐使用下边的方法通过读取csv文件来获取请求的值

读取csv文件

  1. 创建txt文件 输入如下内容,另存为csv文件(编码为UTF-8),每次在txt文档修改保存 每组数据以英文逗号分隔
    [外链图片转存失败(img-2CcqEAmE-1565859654788)(https://i.loli.net/2019/08/15/MBHEJ14QfiFTLuO.png)]

UTOOLS1565855742052.png

  1. 创建csv数据文件设置
    mE3PnU.png

    mE3G4A.png
    title和value代表每行有两列数据(名字可以自己随便定义),把读取到的2个数据分别赋值给title和value(循环一次使用第一行数据,循环两次使用第二行数据,以此类推,超出则从第一行开始重新获取)

  2. 使用变量还是和之前一样,可以看到参数设置成功
    mEGpeU.png
    请求结果
    mEGeOK.png

获取到上一个方法的返回值,并设置为变量

在返回值为json数据是常用到,以京东的评论接口为例

  1. 因为京东有接口限制,所以我们要新添加Content-TypeReferer这两个请求头
    mEdb24.png

  2. 新建一个http请求设置接口和参数
    mEa9w6.png

  3. 对接口进行请求,先尝试对返回结果进行提取

    • 查看结果树中先将返回值换为json格式查看
      mE0KTx.png
    • 然后在JSON Path Expression后的数据框中输入提取字段方法测试,例如提去热门标签中的第一个名字,点击test测试是否能获取到
      mE0hNV.png
    • $.: 是固定开头,后边根据对象层级通过.来获取
  4. 右键在第二步中添加http请求,选择后置处理器添加JSON Extractor
    mEB9jH.png

  5. JSON Extractor提取到需要的值,并设置参数名
    mEBhqA.png

  6. 右键线程组添加Debug Sampler调试取样器,来查看是否获取成功
    mEBzaq.png

  7. 执行JMeter,可以看到设置成功
    mEDAsJ.png

逻辑判断

  1. 右键线程组添加(if)选择控制器
    mEJiB8.png

    设置当${value}值为JMeter2时才执行
    mEJuj0.png

  2. 右键(if)选择控制器,来新增一个http请求,不填任何数据使用默认值
    mEJ6Cd.png
    注: 要将下边的Interpret Condition as Variable Expression? 选框勾选去掉,否则无法通过${value}获取到参数值,而是将${value}当做字符串比较

  3. 启动JMeter查看返回结果,只有valueJMeter2时才执行了进入if判断请求 mEty6I.png

作者: 只是学习学习
邮箱: fengzxia1000@163.com
原文地址: https://fengzxia.gitee.io/posts/fd807af5.html
版权声明: 商业转载请联系作者获得授权,非商业转载请注明出处。