zoukankan      html  css  js  c++  java
  • Jmeter系列之常用组件(二)

    VOL 130

    01

    2020-06

    今天距2021年213天

    这是ITester软件测试小栈第130次推文

    点击上方蓝字“ITester软件测试小栈“关注我,每周一五早上 07:30准时推送。

    微信公众号后台回复“资源测试工具包”领取测试资源,回复“21天打卡”一起学习成长,打怪升级。

    本文4057字,阅读约需11分钟

    在上一篇:Jmeter系列之常用组件(一),主要介绍线程组、HTTP请求默认值、用户定义的变量、固定定时器的应用场景及实战。

    以下主要介绍正则表达式提取器调式取样器(Debug Sampler)响应断言HTTP信息头管理器的应用场景及实战。

    正则表达式提取器

    1

    使用场景

    从请求的响应结果中取到需要的内容,作为下一个接口的入参从而实现关联。比如登录后,用正则表达式获取token,其他接口携带token请求。

    2

    正则表达式提取器界面说明


    HTTP请求右键,依次点击添加--》后置处理器--》正则表达式提取器。

    创建的正则表达式提取器页面如下:

                 

    APPly to:

    • Main sample and sub-samples: 作用于主节点的取样器及对应子节点的取样器;

    • Main sample only:仅作用于主节点的取样器;

    • Sub-samples only: 仅作用于子节点的取样器;

    • JMeter Variable Name to use: 作用于jmeter变量(输入框内可输入jmeter的变量名称),从指定变量值中提取需要的值。

    要检查的响应字段:

    • 主体:响应报文的主体,最常用;

    • Body(unescaped):主体,是替换了所有的html转义符的响应主体内容,注意html转义符处理时不考虑上下文,因此可能有不正确的转换,不太建议使用;

    • Body as a Document:从不同类型的文件中提取文本,注意这个选项比较影响性能;

    • 信息头:响应信息头;

    • Request Headers:请求信息头;

    • URL:请求url;

    • 响应代码: 响应状态码,比如200、404等;

    • 响应信息: 响应信息。

    引用名称

    提取结果之后的变量名称,即下个请求需要引用的值,后面引用方式是${变量名}

    正则表达式

    使用正则表达式解析响应结果,()括号表示提取字符串中的部分值,前后是提取的边界内容。

    一般通用的正则表达式(.+?)

    如需了解更多关于正则表达式知识,可参照:Python自动化测试-正则表达式解析一文。

    模板:

    如果正则表达式有多个提取结果,则结果是数组形式。若只有一组表达式,则使用$1$,两组正则匹配使用$1$$2$,以此类推。

    匹配数字

    正则表达式匹配数据的结果可以看做一个数组:-1表示全部,0表示随机,1表示第一个,2表示第二个,依次类推。

    缺省值

    如果参数没有取到值,那默认给个值,比如null

    3

    实战小例子

    提取登录响应结果的token:

    创建一个线程组。

    创建一个HTTP请求,用来发送登录请求,登录接口请求参数配置如下。

    HTTP请求,右键,创建一个正则表达式提取器。

    先来看下登录接口返回结果:

    {
        "data": {
            "mobile": "12345678",
            "id": 500,
            "rid": 0,
            "email": "adsfad@qq.com",
            "username": "admin",
            "token": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjUwMCwicmlkIjowLCJpYXQiOjE1OTA5MDY3MzAsImV4cCI6MTU5MDk5MzEzMH0.M3CWrgsDUMvnhkprQMBJ1wWY5OKO-mKiOD4EJ2YV4zc"
        },
        "meta": {
            "msg": "登录成功",
            "status": 200
        }
    }
    

    正则表达式提取token,配置如下:

    创建一个察看结果树,运行后,接口返回如下:

    调式取样器

    (Debug Sampler)

    1

    使用场景

    主要用于打印出变量进行调试。比如上面例子,虽然用正则表达式提取了token,但我们并不知道token是否有正确提取,可以使用调式取样器查看。

    2

    调试取样器界面说明

    线程组右键,依次点击添加--》取样器--》Debug Sampler。

    调式取样器界面如下:

    有三个参数Jmeter 属性,选项值默认即可。

    Jmeter 属性,系统属性,一般不会变,不需要调试。

    Jmeter 变量调试的是Jmeter中自定义的变量,包含如下这些自定义变量:

    • 选中线程组,右键,添加--配置元件—用户定义的变量;

    • 通过后置处理器生成的变量:Jmeter关联;

    • 使用csv参数化的变量:Jmeter参数化。

    3

    实战小例子

    创建线程组、HTTP请求、正则表达式提取器、察看结果树(介绍正则表达式实战例子有,这里省略创建步骤)。

    创建调式取样器(debug sampler),不需要修改,默认即可。

    运行,在察看结果树中,选择调试取样器,可以看到token已经正常获取到。

    注意:一般来说调式取样器(debug sampler)用于自测使用,上线时可以删除。

    响应断言

    1

    使用场景

    在接口测试过程中,需要判断接口返回结果是否正确。

    2

    响应断言界面说明

    HTTP请求,右键,依次选择添加--》断言--》响应断言。

    响应断言界面如下:

    Apply to:

    • Main sample and sub-samples  范围包括主取样器与所有子取样器。

    • Main sample only  范围仅限于主取样器。

    • Sub-samples only  范围仅限于所有子取样器。

    • JMeter Variable Name to use  范围包括使用的Jmeter变量。

    测试字段:

    响应文本:响应正文。(常用)。

    响应代码:响应状态码,比如200、304、404等。

    响应信息:响应消息。,比如OK、Not Modified、Not Found等。

    响应头:响应请求头。

    请求头:请求头。

    URL样本:请求的url。

    文档(文本):从各种类型的文档中提取文本。此选项开启也会严重影响性能,谨慎使用。

    忽略状态:忽略响应状态。

    请求数据:请求的body内容。

    模式匹配规则:

    包括:如果文本包含正则表达式模式,则为true。

    匹配:如果整个文本与正则表达式模式匹配,则为true。

    相等: 如果整个文本等于模式字符串(区分大小写),则为true。

    字符串:如果文本包含模式字符串(区分大小写),则为true。

    否:对断言结果进行否定。

    或者:将多个测试模式以逻辑“或”组合起来。

    3

    实战小例子

    创建线程组、HTTP请求、正则表达式提取器、察看结果树(上面实战例子有写,这里省略创建)。

    HTTP请求右键,创建一个响应断言。我们再来看下响应结果的信息:

    {
        "data": {
            "mobile": "12345678",
            "id": 500,
            "rid": 0,
            "email": "adsfad@qq.com",
            "username": "admin",
            "token": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjUwMCwicmlkIjowLCJpYXQiOjE1OTA5MDY3MzAsImV4cCI6MTU5MDk5MzEzMH0.M3CWrgsDUMvnhkprQMBJ1wWY5OKO-mKiOD4EJ2YV4zc"
        },
        "meta": {
            "msg": "登录成功",
            "status": 200
        }
    }
    

    断言的方式可以多种,比如断言msg、status或者msg、status一起断言,甚至你用其他返回的字段也是可以的。

    这里我们用msg断言,配置如下:

    运行后,如断言失败,在察看结果树里http请求会红色显示。

    HTTP信息头管理器

    1

    使用场景

    在接口测试中,有时候需要携带请求头,比如接口需要携带token进行请求,token需要放在请求头里。

    2

    HTTP信息头管理器界面说明

    线程组,右键,依次点击添加--》配置元件--》HTTP信息头管理器。

    HTTP信息头管理器界面如下:

    HTTP信息头管理器比较简单,直接添加请求头信息的键值对就可以。

    3

    实战小例子

    创建线程组、HTTP请求、正则表达式提取器、察看结果树、响应断言(上面实战例子有写,这里省略创建步骤)。

    线程组下,新建一个HTTP消息头管理器。

    在上面介绍正则表达式提取器,我们已经将登录后的token用正则提取出来了,这里直接引用,相当于全局设置了token,其他接口请求时会自动在请求头带上token。

    在HTTP信息头管理器引用token如下:

    线程组右键,新建一个http请求,用于请求用户数据列表接口。

    运行后,发现用户数据列表接口在请求头自动携带了token。

    总结:本文主要介绍正则表达式提取器、调式取样器(debug sampler)、响应断言、HTTP信息头管理的应用场景及实战。

    今日问题

    你在使用Jmeter过程中,常用的元件或插件有哪些?

    (欢迎在留言区发表你的看法)

    留言福利:

    抽取截止至6月8日留言点赞最多的一位幸运er,可获得:Docker微服务架构与实战

    (幸运er名单将在下周一推文的置顶留言处公布)

    以上


    That‘s all

    ITester软件测试小栈

    往期内容宠幸

    1.Python接口自动化-接口基础(一)


    2.Python接口自动化-接口基础(二)


    3.Python接口自动化-requests模块之get请求


    4.Python接口自动化-requests模块之post请求


    5.Python接口自动化之cookie、session应用


    6.Python接口自动化之Token详解及应用


    7.Python接口自动化之requests请求封装


    8.Python接口自动化之pymysql数据库操作


    9.Python接口自动化之logging日志


    10.Python接口自动化之logging封装及实战

    想获取更多最新干货内容

    快来星标 置顶 关注

    每周一、三、五 07:30见

    <<  滑动查看下一张图片  >>


     后台 回复"资源"取干货

    回复"21天打卡"一起打怪升级

    测试交流Q群:727998947

    点亮一下在看,你更好看

  • 相关阅读:
    suse12安装详解
    Centos7上部署openstack mitaka配置详解(将疑难点都进行划分)
    菜鸟帮你跳过openstack配置过程中的坑[文末新添加福利]
    openstack中dashboard页面RuntimeError: Unable to create a new session key. It is likely that the cache is unavailable.
    Multiple network matches found for name 'selfservice', use an ID to be more specific.报错
    查看 SELinux状态及关闭SELinux
    SELinux深入理解
    IP地址、子网掩码、网络号、主机号、网络地址、主机地址
    Oracle job procedure 存储过程定时任务
    POI文件导出至EXCEL,并弹出下载框
  • 原文地址:https://www.cnblogs.com/ITester520/p/13203287.html
Copyright © 2011-2022 走看看