• Jmeter接口测试教程



    安装: JMeter详细安装教程
    打开:双击ApacheJMeter.exe即可
    在这里插入图片描述

    1 发送请求

    右击测试计划 - 添加 - 线程(用户)- 线程组 >> 右击线程组 - 添加 - 取样器 - HTTP请求
    在这里插入图片描述

    2 添加HTTP信息头管理器

    右击HTTP请求 - 添加 - 配置元件 - HTTP信息头管理器
    在这里插入图片描述

    3 查看结果

    右击HTTP请求 - 添加 - 监听器 - 查看结果树
    在这里插入图片描述

    4 断言

    右击HTTP请求 - 添加 - 断言 - 响应断言
    各个匹配模式含义如下:

    • 包括:响应内容包括需要匹配的内容即代表响应成功,支持正则表达式。
    • 匹配:响应内容要完全匹配需要匹配的内容即代表响应成功,不区分大小写,支持正则表达式。
    • 相等:响应内容要完全等于需要匹配的内容才代表成功,区分大小写,需要匹配的内容是字符串正则表达式。
    • 字符串:返回结果包含指定结果的字符串,不支持正则表达式。
    • 否:不进行匹配
      在这里插入图片描述

    5 用户参数&函数助手

    JMeter支持以下类型变量:

    • 用户自定义变量
    • 函数生成变量
    • BeanShell变量
    • 数据文件变量

    5.1 用户自定义变量

    右击HTTP请求 - 添加 - 前置处理器 - 用户参数。例如:设置变量名为app,值为weather.today,在请求时引用变量格式为:${app}
    在这里插入图片描述
    在这里插入图片描述

    5.2 函数生成变量

    JMeter由许多内置的函数,可以生成随机数。
    点击菜单栏”工具“选项 - 函数助手对话框 - 下拉选择Random函数。
    在这里插入图片描述

    5.3 BeanShell变量

    什么是Bean Shell?
    BeanShell是一种完全符合Java语法规范的脚本语言,并且拥有自己的一些语法和方法;
    BeanShell是一种松散类型的脚本语言(这点和JS类似);
    BeanShell是用Java写出的一个小型的、免费的、嵌入式的Java源代码解释器,具有对象脚本语言特性,非常精简;
    BeanShell执行标准Java语句和表达式,另外包括一些脚本命令和与语法。
    官网:https://beanshell.github.io/intro.html

    JMeter有哪些Bean Shell?

    • 定时器:BeanShell Timer
    • 前置处理器:BeanShell PreProcessor
    • 采样器:BeanShell Sampler
    • 后置处理器:BeanShell PostProcessor
    • 断言:BeanShell断言
    • 监听器:BeanShell Listener

    BeanShell常用内置变量:
    JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下:

    • vars -(JMeterVariables)操作JMeter变量这个变量实际引用了JMeter线程中的局部变量容器,本质上是Map)它是测试用例与BeanShell交互的桥梁,常用方法:

      //定义JMeter变量
      vars.put(String key, String value);
      
      //从JMeter中获取变量
      vars.get(String key);
      
    • log - 写入信息到JMeber.log文件

      log.info("hello JMeter!");

    BeanShell实践案例
    右击HTTP请求 - 添加 - 前置处理器 - BeanShell预处理程序
    在这里插入图片描述
    在这里插入图片描述

    5.4 CSV数据文件变量

    CSV数据文件变量是指从外部csv文件读取数据出来作为变量。
    设置步骤:

    1. 创建CSV数据文件(推荐用Notepad++创建,文件编码为UTF-8)
      在这里插入图片描述
    2. 右击HTTP请求 - 添加 - 配置元件 - CSV数据文件设置 - 浏览
      在这里插入图片描述

    6 正则匹配

    问题思考:接口测试过程中经常需要接口之间关联调用,比如获取上一个接口的返回值,作为另一个接口的请求参数,那么该如何处理呢?
    操作案例:从“实时天气-当天”请求的响应数据中匹配weaid的值,然后创建“实时天气-未来7天”请求引用weaid作为参数。
    设置步骤:右击HTTP请求 - 添加 - 后置处理器 - 正则表达式提取器,字段说明如下:

    • 引用名称:请求要引用的变量名称,如填写weaid,则可用${weaid}引用它。
    • 正则表达式:匹配需要的内容。
    • 模板:用$num$ 引用起来,如果在正则表达式中有多个匹配数据,num表示匹配到第几个值给变量,如:$1$ 表示匹配到的第1个值存储在变量中。
    • 匹配数字:0代表随机取值,1代表全部取值。
    • 缺省值:如果参数没有取到值,那默认给一个值让它取。

    正则表达式说明

    • ()括起来的部分就是要提取的。
    • .匹配任何字符串。
    • +一次或多次。
    • ?在找到第一个匹配项后停止。
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    7 JMeter接口测试数据分离驱动应用

    CSV数据文件:
    在这里插入图片描述

    7.1 HTTP请求默认值

    设置步骤:右击线程组 - 添加 - 配置元件 - HTTP请求默认值
    在这里插入图片描述

    7.2 HTTP信息头管理器

    设置步骤:右击线程组 - 添加 - 配置元件 - HTTP信息头管理器
    在这里插入图片描述

    7.3 循环控制器

    设置步骤:右击线程组 - 添加 - 逻辑控制器 - 循环控制器
    在这里插入图片描述

    7.4 CSV数据文件设置

    设置步骤:右击循环控制器- 添加 - 配置元件 - CSV数据文件设置
    在这里插入图片描述

    7.5 IF控制器处理GET请求

    7.5.1 添加IF控制器

    设置步骤:右击循环控制器 - 添加 - 逻辑控制器 - IF控制器
    在这里插入图片描述
    在这里插入图片描述

    7.5.2 在IF控制器下添加HTTP请求

    设置步骤:右击IF控制器 - 添加 - 取样器 - HTTP请求
    在这里插入图片描述

    7.5.3 给HTTP请求添加响应断言及查看结果树

    设置步骤:右击HTTP请求 - 添加 - 断言 - 响应断言
    在这里插入图片描述
    设置步骤:右击HTTP请求 - 添加 - 监听器 - 查看结果树,运行结果如下:
    在这里插入图片描述

    7.6 IF控制器处理POST请求

    添加IF控制器
    在这里插入图片描述
    在IF控制器下添加HTTP请求
    在这里插入图片描述
    给HTTP请求添加响应断言
    在这里插入图片描述
    给HTTP请求添加查看结果树,运行结果如下:
    在这里插入图片描述

    8 Cookie的介绍与应用

    • 介绍
      如果你有一个HTTP请求,器返回结果里包含一个cookie,那么使用JMeterCookie管理器会自动将该cookie保存起来,而且以后所有对该网站的请求都使用同一个cookie。每个JMeter线程都有自己独立的cookie保存区域。
    • 应用
      接口文档:http://httpbin.org/
      请求url:http://httpbin.org/cookies/set,该请求会返回cookie,Cookie内容可以通过自定义参数设置。这里我们设置Cookie内容如下:
      在这里插入图片描述
      添加Cookie管理器:右击线程组 - 添加 - 配置元件 - HTTP Cookie管理器,运行之后我们可以在查看结果树中看到cookie:
      在这里插入图片描述
      禁用HTTP Cookie管理器则不会保存cookie:
      在这里插入图片描述
      自定义添加cookie
      在这里插入图片描述

    9 授权设置

    很多时候,处于安全考虑我们的接口并不希望对外公开,这个时候就需要使用授权(Authorization)机制。授权过程验证您是否具有访问服务器所需数据的权限。当发送请求时,您通常必须包含参数,以确保请求具有访问和返回所需数据的权限。JMeter提供授权类型,可以轻松地在JMeter本地应用程序中处理身份验证协议。

    9.1 Basic Auth

    基本身份验证是一种比较简单的授权类型,需要经过验证的用户名和密码才能访问数据资源。这就需要我们输入用户名和对应的密码。

    实践案例
    请求接口为:http://httpbin.org/basic-auth/{username}/{password},设置用户名为test,密码为2022

    1. 新建HTTP请求名称为basic-auth设置如下:
      在这里插入图片描述
    2. 添加HTTP授权管理器:右击HTTP请求 - 添加 - 配置元件 - HTTP授权管理器,配置如下:
      在这里插入图片描述
    3. 执行之后请求内容中带有授权信息Authorization: Basic dGVzdDoyMDIy,而dGVzdDoyMDIy这个数值就是用用户名:密码经过Base64编码后计算出来的。
      在这里插入图片描述

    9.2 Digest Auth

    Digest Auth是一个简单的认证机制,最初是为HTTP协议开发的,因此也常叫做HTTP摘要。其身份验证机制非常简单,它采用哈希加密方法,以避免用明文传输用户的口令。摘要认证就是要核实参与通信的两方都知道双方共享的一个口令。

    实践案例
    请求接口为:http://httpbin.org/digest-auth/{qop}/{username}/{password},{qop}这个参数规定server支持哪种保护方案。client能从列表中(auth, auth-int)选择一个。

    • auth表示仅仅进行身份查验。
    • auth-int表示进行查验外,另一些完整性保护。
    1. 新建HTTP请求:digest-auth,设置用户名为test,密码为2022,配置如下:
      在这里插入图片描述
    2. 添加HTTP授权管理器,配置如下:
      在这里插入图片描述
    3. 执行之后查看响应结果:
      在这里插入图片描述

    禁用HTTP授权管理器则会运行失败,如下:
    在这里插入图片描述

    10 接口测试报告讲解

    批量执行完接口测试之后,我们需要查看测试报告,在之前单个接口调试我们是通过”查看结果树“查看结果,但是当大批量执行接口测试之后依旧这样查看肯定会很低效,那么该如何设置呢?

    10.1 聚合报告

    聚合报告是一个比较精简的报告元件,可以查看每个接口的性能情况与执行结果。
    设置步骤:右击线程组 - 添加 - 监听器 - 聚合报告
    报告各个参数含义如下:

    • Samples:本次场景中一共完成了多少个请求
    • Average:平均响应时间(单位:ms)
    • Median:响应时间的中值(单位:ms)
    • 90%Line:所有请求中90%的响应时间。
    • Min:最小响应时间(单位:ms)
    • Max:最大响应时间(单位:ms)
    • Error:出错率
    • Troughput:吞吐量
    • Received:响应数据大小
    • KB/sec:以流量做衡量的吞吐量
      在这里插入图片描述

    10.2 HTML报告

    有时候我们需要将测试报告以HTML附件形式发送给各个项目成员,那么需要生成HTML报告。JMeter3.0以后引入了Dashboard Report,用于生成HTML格式图形化报告的扩展模块。

    • 生成步骤:
      打开cmd进入jmeter\bin目录执行命令:jmeter -n -t E:\JMeterProject\report.jmx -l E:\JMeterProject\report.jtl -e -o E:\JMeterProject\report
      在这里插入图片描述

    • 命令的参数:
      -n:以非GUI形式运行JMeter(直接用命令行模式启动)
      -t:jmeter脚本路径
      -l:result.jtl运行结果保存路径(.jtl)此文件必须不存在
      -e:在脚本运行结束后生成html报告
      -o:用于存放html报告目录(目录需存在),不加该参数默认生成到bin\report-output

    • 生成的测试报告样式如下:
      在这里插入图片描述
      在这里插入图片描述

  • 相关阅读:
    6. Python数据类型之浮点数
    Zookeeper
    C++的必备入门学习
    Synchronized锁升级原理与过程深入剖析
    两个必须更新浏览器的理由,危险就在你身边
    【实战】kubeadmin安装kubernetes集群
    740 · 零钱兑换 2
    计算机毕业设计(附源码)python圆梦酒店管理系统
    Java 学习路线分享 maven 是什么?
    Visopsys 0.92 发布
  • 原文地址:https://blog.csdn.net/weixin_49026134/article/details/126691989