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

    点亮一下在看,你更好看

  • 相关阅读:
    c#中对rgb的使用
    编写高质量代码改善C#程序的157个建议——建议141:不知道该不该用大括号时,就用
    编写高质量代码改善C#程序的157个建议——建议140:使用默认的访问修饰符
    编写高质量代码改善C#程序的157个建议——建议139:事件处理器命名采用组合方式
    编写高质量代码改善C#程序的157个建议——建议138:事件和委托变量使用动词或形容词短语命名
    编写高质量代码改善C#程序的157个建议——建议137:委托和事件类型应添加上级后缀
    编写高质量代码改善C#程序的157个建议——建议136:优先使用后缀表示已有类型的新版本
    编写高质量代码改善C#程序的157个建议——建议135: 考虑使用肯定性的短语命名布尔属性
    编写高质量代码改善C#程序的157个建议——建议134:有条件地使用前缀
    编写高质量代码改善C#程序的157个建议——建议133:用camelCasing命名私有字段和局部变量
  • 原文地址:https://www.cnblogs.com/ITester520/p/13203287.html
Copyright © 2011-2022 走看看