软件工程

JMeter传递token学习入门教程

本文主要是介绍JMeter传递token学习入门教程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
概述

本文将指导你如何在JMeter中传递Token,从Token的基本概念到如何在JMeter中获取和保存Token,并详细介绍了使用Cookie Manager和HTTP Header Manager传递Token的方法。通过实战演练,你将学会配置JMeter测试计划以传递Token。JMeter传递token学习入门,助你轻松掌握这一技能。

JMeter简介与安装
JMeter的基本概念

Apache JMeter 是一个开源的性能测试工具,主要用于测试Web应用程序。它可用来模拟多种负载情况,如对服务器、网络或对象进行负载测试和压力测试。JMeter可以测试静态和动态资源,例如动态网页、文件下载、数据库查询和网页后端的脚本等。

JMeter使用Java开发,因此需要Java环境才能运行。它支持多种协议,包括但不限于HTTP、HTTPS、FTP、JDBC、LDAP等。JMeter不仅可用于Web性能测试,还可以用作功能测试工具。

JMeter的下载与安装步骤

JMeter的下载和安装步骤如下:

  1. 下载JMeter:访问JMeter官网,根据操作系统下载对应的JMeter版本。例如,访问 https://jmeter.apache.org/download_jmeter.cgi,下载最新版本的JMeter。

  2. 安装JMeter:JMeter无需安装,直接解压下载的压缩包即可。例如,假设下载的是 apache-jmeter-5.4.zip,解压缩到某个目录,如 D:\JMeter

  3. 设置环境变量(可选):为了方便运行JMeter,可以设置环境变量JMETER_HOME,并将其添加到系统PATH变量中。设置方法如下:

    • 打开系统属性 -> 环境变量
    • 在系统变量新建变量JMETER_HOME,值为JMeter安装目录,如 D:\JMeter
    • 在系统变量PATH中添加 %JMETER_HOME%\bin,以便直接在命令行中运行JMeter的可执行文件。
  4. 运行JMeter:打开命令行工具,输入 jmeter 即可启动JMeter。也可以直接双击安装目录中的 jmeter.bat 文件启动图形界面。
# 在命令行中启动JMeter
jmeter
JMeter界面简介

启动JMeter后,界面主要分为以下几个部分:

  1. 菜单栏:包括文件、编辑、运行、视图等选项。通过菜单栏可以执行各种操作,如新建测试计划、打开测试计划、保存测试计划等。

  2. 工具栏:包含常用的快捷按钮,如新建测试计划、打开测试计划、保存测试计划、运行测试计划等。

  3. 测试计划树:显示当前测试计划的层次结构,包括线程组、采样器、监听器等。用户可以通过树形结构来管理和组织测试计划中的各个组件。

  4. 测试计划属性面板:显示当前选中组件的属性,可以通过面板编辑组件的配置。

  5. 工作台:工作台是JMeter的核心区域,用于添加和配置各个组件。通过右键菜单可以添加线程组、HTTP请求、HTTP Header Manager、监听器等。

示例

创建一个简单的测试计划,步骤如下:

  1. 新建测试计划:点击工具栏中的新建测试计划按钮,或者右键点击测试计划树然后选择“添加” -> “测试计划”。
  2. 添加线程组:右键点击新建的测试计划,选择“添加” -> “线程(用户)” -> “线程组”。
  3. 添加HTTP请求:右键点击线程组,选择“添加” -> “取样器” -> “HTTP请求”。
  4. 添加监听器:右键点击线程组,选择“添加” -> “监听器” -> “查看结果树”。

通过这种方式,可以构建一个基础的测试计划并运行测试。

<TestPlan>
    <ThreadGroup>
        <HTTPSampler>
            <HTTPSampler>
                <HTTPSampler>
                    <HTTPSampler>
                        <HTTPSampler>
                            <HTTPSampler>
                                <HTTPSampler>
                                    <HTTPSampler>
                                        <HTTPSampler>
                                            <HTTPSampler>
                                                <HTTPSampler>
                                                    <HTTPSampler>
                                                        <HTTPSampler>
                                                            <HTTPSampler>
                                                                <HTTPSampler>
                                                                    <HTTPSampler>
                                                                        <HTTPSampler>
                                                                            <HTTPSampler>
                                                                                <HTTPSampler>
                                                                                    <HTTPSampler>
                                                                                        <HTTPSampler>
                                                                                            <HTTPSampler>
                                                                                                <HTTPSampler>
                                                                                                    <HTTPSampler>
                                                                                                        <HTTPSampler>
                                                                                                            <HTTPSampler>
                                                                                                                <HTTPSampler>
                                                                                                                    <HTTPSampler>
                                                                                                                        <HTTPSampler>
                                                                                                                            <HTTPSampler>
                                                                                                                                <HTTPSampler>
                                                                                                                                    <HTTPSampler>
                                                                                                                                        <HTTPSampler>
                                                                                                                                            <HTTPSampler>
                                                                                                                                                <HTTPSampler>
                                                                                                                                                    <HTTPSampler>
                                                                                                                                                        <HTTPSampler>
                                                                                                                                                            <HTTPSampler>
                                                                                                                                                                <HTTPSampler>
                                                                                                                                                                    <HTTPSampler>
                                                                                                                                                                        <HTTPSampler>
                                                                                                                                                                            <HTTPSampler>
                                                                                                                                                                                <HTTPSampler>
                                                                                                                                                                                    <HTTPSampler>
                                                                                                                                                                                        <HTTPSampler>
                                                                                                                                                                                            <HTTPSampler>
                                                                                                                                                                                                <HTTPSampler>
                                                                                                                                                                                                    <HTTPSampler>
                                                                                                                                                                                                        <HTTPSampler>
                                                                                                                                                                                                            <HTTPSampler>
                                                                                                                                                                                                                <HTTPSampler>
                                                                                                                                                                                                                    <HTTPSampler>
                                                                                                                                                                                                                        <HTTPSampler>
                                                                                                                                                                                                                            <HTTPSampler>
                                                                                                                                                                                                                                <HTTPSampler>
                                                                                                                                                                                                                                    <HTTPSampler>
                                                                                                                                                                                                                                        <HTTPSampler>
                                                                                                                                                                                                                                            <HTTPSampler>
                                                                                                                                                                                                                                                <HTTPSampler>
                                                                                                                                                                                                                                                    <HTTPSampler>
                                                                                                                                                                                                                                                        <HTTPSampler>
                                                                                                                                                                                                                                                            <HTTPSampler>
                                                                                                                                                                                                                                                                <HTTPSampler>
                                                                                                                                                                                                                                                                    <HTTPSampler>
                                                                                                                                                                                                                                                                        <HTTPSampler>
                                                                                                                                                                                                                                                                            <HTTPSampler>
                                                                                                                                                                                                                                                                                <HTTPSampler>
                                                                                                                                                                                                                                                                                    <HTTPSampler>
                                                                                                                                                                                                                                                                                        <HTTPSampler>
                                                                                                                                                                                                                                                                                            <HTTPSampler>
                                                                                                                                                                                                                                                                                                <HTTPSampler>
                                                                                                                                                                                                                                                                                                    <HTTPSampler>
                                                                                                                                                                                                                                                                                                        <HTTPSampler>
                                                                                                                                                                                                                                                                                                            <HTTPSampler>
                                                                                                                                                                                                                                                                                                                <HTTPSampler>
                                                                                                                                                                                                                                                                                                                    <HTTPSampler>
                                                                                                                                                                                                                                                                                                                        <HTTPSampler>
                                                                                                                                                                                                                                                                                                                            <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                    <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                        <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                            <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                    <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                        <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                            <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                    <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                        <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                            <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                    <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                        <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                            <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                    <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                        <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                            <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                    <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                        <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                            <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                    <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                        <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                            <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                    <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                        <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                            <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                            </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                        </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                    </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                                </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                            </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                        </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                    </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                                </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                            </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                        </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                    </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                                </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                            </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                        </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                    </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                                </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                            </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                        </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                    </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                                </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                            </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                        </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                    </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                                </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                            </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                        </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                    </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                                </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                            </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                        </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                    </HTTPSampler>
                                                                                                                                                                                                                                                                                                                                </HTTPSampler>
                                                                                                                                                                                                                                                                                                                            </HTTPSampler>
                                                                                                                                                                                                                                                                                                                        </HTTPSampler>
                                                                                                                                                                                                                                                                                                                    </HTTPSampler>
                                                                                                                                                                                                                                                                                                                </HTTPSampler>
                                                                                                                                                                                                                                                                                                            </HTTPSampler>
                                                                                                                                                                                                                                                                                                        </HTTPSampler>
                                                                                                                                                                                                                                                                                                    </HTTPSampler>
                                                                                                                                                                                                                                                                                                </HTTPSampler>
                                                                                                                                                                                                                                                                                            </HTTPSampler>
                                                                                                                                                                                                                                                                                        </HTTPSampler>
                                                                                                                                                                                                                                                                                    </HTTPSampler>
                                                                                                                                                                                                                                                                                </HTTPSampler>
                                                                                                                                                                                                                                                                            </HTTPSampler>
                                                                                                                                                                                                                                                                        </HTTPSampler>
                                                                                                                                                                                                                                                                        </HTTPSampler>
                                                                                                                                                                                                                                                                    </HTTPSampler>
                                                                                                                                                                                                                                                                </HTTPSampler>
                                                                                                                                                                                                                                                            </HTTPSampler>
                                                                                                                                                                                                                                                        </HTTPSampler>
                                                                                                                                                                                                                                                    </HTTPSampler>
                                                                                                                                                                                                                                                </HTTPSampler>
                                                                                                                                                                                                                                            </HTTPSampler>
                                                                                                                                                                                                                                        </HTTPSampler>
                                                                                                                                                                                                                                    </HTTPSampler>
                                                                                                                                                                                                                                </HTTPSampler>
                                                                                                                                                                                                                            </HTTPSampler>
                                                                                                                                                                                                                        </HTTPSampler>
                                                                                                                                                                                                                    </HTTPSampler>
                                                                                                                                                                                                                </HTTPSampler>
                                                                                                                                                                                                            </HTTPSampler>
                                                                                                                                                                                                        </HTTPSampler>
                                                                                                                                                                                                    </HTTPSampler>
                                                                                                                                                                                                </HTTPSampler>
                                                                                                                                                                                            </HTTPSampler>
                                                                                                                                                                                        </HTTPSampler>
                                                                                                                                                                                    </HTTPSampler>
                                                                                                                                                                                </HTTPSampler>
                                                                                                                                                                            </HTTPSampler>
                                                                                                                                                                        </HTTPSampler>
                                                                                                                                                                    </HTTPSampler>
                                                                                                                                                                </HTTPSampler>
                                                                                                                                                            </HTTPSampler>
                                                                                                                                                        </HTTPSampler>
                                                                                                                                                    </HTTPSampler>
                                                                                                                                                </HTTPSampler>
                                                                                                                                            </HTTPSampler>
                                                                                                                                        </HTTPSampler>
                                                                                                                                    </HTTPSampler>
                                                                                                                                </HTTPSampler>
                                                                                                                            </HTTPSampler>
                                                                                                                        </HTTPSampler>
                                                                                                                    </HTTPSampler>
                                                                                                                </HTTPSampler>
                                                                                                            </HTTPSampler>
                                                                                                        </HTTPSampler>
                                                                                                    </HTTPSampler>
                                                                                                </HTTPSampler>
                                                                                            </HTTPSampler>
                                                                                        </HTTPSampler>
                                                                                    </HTTPSampler>
                                                                                </HTTPSampler>
                                                                            </HTTPSampler>
                                                                        </HTTPSampler>
                                                                    </HTTPSampler>
                                                                </HTTPSampler>
                                                            </HTTPSampler>
                                                        </HTTPSampler>
                                                    </HTTPSampler>
                                                </HTTPSampler>
                                            </HTTPSampler>
                                        </HTTPSampler>
                                    </HTTPSampler>
                                </HTTPSampler>
                            </HTTPSampler>
                        </HTTPSampler>
                    </HTTPSampler>
                </HTTPSampler>
            </HTTPSampler>
        </HTTPSampler>
    </ThreadGroup>
</TestPlan>

什么是Token及其在Web测试中的作用

Token的基本概念

Token是一种在Web应用程序中用于身份验证和授权的令牌。这种令牌通常由服务器生成,并返回给客户端(如浏览器)进行会话管理。当客户端需要执行需要身份验证的操作时,会将Token包含在请求中返回给服务器,以证明客户端的身份和权限。

Token的生成通常依赖于会话管理技术,如基于Cookie的会话或基于Token的会话。Token可以存储在Cookie中、本地存储或session存储中。在基于Token的会话中,Token通常直接包含在请求的Authorization头中。

在Web测试中,Token的作用主要是用于模拟用户身份验证过程,并确保测试能够正确执行需要身份验证的操作。通过设置Token,测试脚本可以模拟实际的用户登录过程,从而验证应用在登录之后的行为。

Token在Web测试中的重要性

在Web测试中,Token的重要性体现在以下几个方面:

  1. 模拟用户行为:Token使测试脚本能够模拟用户登录和会话保持,以验证应用在登录之后的行为是否符合预期。

  2. 验证请求:通过Token,可以验证应用是否正确处理了需要身份验证的操作。例如,确保只有经过身份验证的用户才能访问某些资源或执行某些功能。

  3. 安全性和性能测试:在进行安全性和性能测试时,Token可以用来测试应用在高负载下的会话管理能力,确保服务器能够正确处理大量并发用户的Token验证请求。

  4. 自动化测试:通过自动化获取和使用Token,可以自动化测试脚本,提高测试效率和准确性。使用Token自动化测试脚本能够显著提高测试的可靠性和一致性。

如何获取和保存Token

通过浏览器或开发者工具获取Token

获取Token的方法依赖于Web应用的实现。通常,开发者工具可以用来查看和获取Token。例如,使用Chrome浏览器的开发者工具,可以通过以下步骤获取Token:

  1. 打开开发者工具:在Chrome浏览器中打开开发者工具(快捷键 F12 或右键点击页面 -> 检查)。
  2. 查看网络请求:点击“网络”标签,刷新页面,查看登录请求,可以找到包含Token的响应。
  3. 查找包含Token的字段:在网络请求中找到登录成功的响应,查看响应头或响应体,找到包含Token的字段,如 Authorization 头或 Set-Cookie 头中包含的Token。
<!-- 示例HTTP响应 -->
HTTP/1.1 200 OK
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxhPQ... 
  1. 复制Token:复制包含Token的字段,用于后续操作。
{
    "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxhPQ..."
}
在JMeter中保存Token

在JMeter中保存Token可以通过以下步骤完成:

  1. 添加HTTP请求:右键线程组 -> 添加 -> 取样器 -> HTTP请求,配置登录请求。
  2. 添加正则提取器:在登录请求的右键菜单中选择添加 -> 后置处理器 -> 正则表达式提取器,用于从响应中提取Token。
  3. 配置正则提取器:在正则提取器中配置正则表达式以匹配Token。例如,如果Token在 Authorization 头中,可以使用正则表达式 Authorization: (.+?)\n 来提取Token。
<RegexExtractor>
    <name>Extract Token</name>
    <matchNo>1</matchNo>
    <useEqual>true</useEqual>
    <regex>Authorization: (.+?)\n</regex>
    <template>$1$</template>
    <matchNumbers>1</matchNumbers>
    <default></default>
    <failureMessage/>
    <scope>JMeter Variable or Assertion Field</scope>
    <vars>
        <variable>
            <name>token</name>
            <value>${__groovy(vars.get("Authorization"),)}</value>
            <enabled>true</enabled>
        </variable>
    </vars>
</RegexExtractor>

通过这种方式,可以将登录请求返回的Token保存到JMeter变量中,以便后续请求使用。

在JMeter中传递Token的方法

使用Cookie Manager传递Token

Cookie Manager是JMeter的一个组件,用于管理Cookie,也可以用来传递Token。使用Cookie Manager传递Token的具体步骤如下:

  1. 添加Cookie Manager:右键线程组 -> 添加 -> 管理器 -> Cookie管理器。
  2. 配置Cookie Manager:确保Cookie Manager的“启用持久化Cookie”选项被选中,然后配置Cookie Manager的属性。例如,设置 Cookie Path/,设置 Cookie Domainwww.example.com,设置 Cookie PolicyBrowser-compatible
<CookieManager>
    <cookiesEnabled>true</cookiesEnabled>
    <cookiePath>/</cookiePath>
    <cookieDomain>www.example.com</cookieDomain>
    <cookiePolicy>Browser-compatible</cookiePolicy>
</CookieManager>
  1. 使用Cookie Manager:在后续的HTTP请求中使用Cookie Manager传递Token。例如,可以在请求的“请求选项”中添加 Cookie 头,设置 Cookie 头的值为 token=YOUR_TOKEN_VALUE
<HTTPSampler>
    <overrideProperty>Cookie</overrideProperty>
    <param>
        <name>Cookie</name>
        <value>token=YOUR_TOKEN_VALUE</value>
    </param>
</HTTPSampler>

通过这种方式,可以使用Cookie Manager传递Token。

使用HTTP Header Manager传递Token

HTTP Header Manager是JMeter的另一个组件,用于管理HTTP请求的头部。使用HTTP Header Manager传递Token的具体步骤如下:

  1. 添加HTTP Header Manager:右键线程组 -> 添加 -> 管理器 -> HTTP Header Manager。
  2. 配置HTTP Header Manager:在HTTP Header Manager中添加新的HTTP头部,如 Authorization,并设置其值为 Bearer YOUR_TOKEN_VALUE
<HTTPHeaderManager>
    <elementProp name="Authorization" elementType="Header">
        <value>Bearer YOUR_TOKEN_VALUE</value>
        <name>Authorization</name>
    </elementProp>
</HTTPHeaderManager>
  1. 使用HTTP Header Manager:在需要传递Token的HTTP请求中添加HTTP Header Manager,确保请求使用该Manager传递的头部信息。
<HTTPSampler>
    <elementProp name="HTTPsampler.config" elementType="ConfigElement" />
    <elementProp name="HTTPsampler.headers" elementType="HeaderData">
        <elementProp name="Authorization" elementType="Header">
            <value>Bearer YOUR_TOKEN_VALUE</value>
            <name>Authorization</name>
        </elementProp>
    </elementProp>
</HTTPSampler>

通过这种方式,可以使用HTTP Header Manager传递Token。

实战演练:配置JMeter测试计划传递Token

创建测试计划

创建一个简单的JMeter测试计划,步骤如下:

  1. 新建测试计划:点击工具栏中的新建测试计划按钮,或者右键点击测试计划树然后选择“添加” -> “测试计划”。
  2. 命名测试计划:在新建的测试计划中输入名称,如 Token Test Plan,并设置一个描述,例如 Test plan for token passing
  3. 添加线程组:右键点击新建的测试计划,选择“添加” -> “线程(用户)” -> “线程组”。在弹出的界面中,设置线程数、循环次数等参数。
<TestPlan>
    <name>Token Test Plan</name>
    <description>Test plan for token passing</description>
    <ThreadGroup>
        <name>Test Thread Group</name>
        <threadCount>1</threadCount>
        <rampUp>1</rampUp>
        <iterations>1</iterations>
    </ThreadGroup>
</TestPlan>
添加HTTP请求
  1. 添加HTTP请求:在线程组中添加HTTP请求,用于模拟用户登录请求。右键点击线程组,选择“添加” -> “取样器” -> “HTTP请求”。
  2. 配置HTTP请求:设置HTTP请求的名称,如 Login Request,URL为登录页面的URL,例如 http://www.example.com/login,设置参数如 usernamepassword
<TestPlan>
    <ThreadGroup>
        <HTTPSampler>
            <name>Login Request</name>
            <url>http://www.example.com/login</url>
            <method>POST</method>
            <param>
                <name>username</name>
                <value>yourusername</value>
            </param>
            <param>
                <name>password</name>
                <value>yourpassword</value>
            </param>
        </HTTPSampler>
    </ThreadGroup>
</TestPlan>
配置Cookie Manager
  1. 添加Cookie Manager:右键点击线程组,选择“添加” -> “管理器” -> “Cookie管理器”。
  2. 配置Cookie Manager:确保Cookie Manager的“启用持久化Cookie”选项被选中,然后配置Cookie Manager的属性。例如,设置 Cookie Path/,设置 Cookie Domainwww.example.com,设置 Cookie PolicyBrowser-compatible
<TestPlan>
    <ThreadGroup>
        <CookieManager>
            <cookiesEnabled>true</cookiesEnabled>
            <cookiePath>/</cookiePath>
            <cookieDomain>www.example.com</cookieDomain>
            <cookiePolicy>Browser-compatible</cookiePolicy>
        </CookieManager>
    </ThreadGroup>
</TestPlan>
配置HTTP Header Manager
  1. 添加HTTP Header Manager:右键点击线程组,选择“添加” -> “管理器” -> “HTTP Header Manager”。
  2. 配置HTTP Header Manager:在HTTP Header Manager中添加新的HTTP头部,如 Authorization,并设置其值为 Bearer ${token},其中 ${token} 是从登录响应中提取的Token变量。
<TestPlan>
    <ThreadGroup>
        <HTTPHeaderManager>
            <elementProp name="Authorization" elementType="Header">
                <value>Bearer ${token}</value>
                <name>Authorization</name>
            </elementProp>
        </HTTPHeaderManager>
    </ThreadGroup>
</TestPlan>
执行测试计划
  1. 保存测试计划:点击工具栏中的保存按钮,将测试计划保存到本地文件。
  2. 运行测试计划:点击工具栏中的运行按钮,开始执行测试计划。运行后,JMeter将按照预定的线程数和循环次数,发送登录请求并提取Token。随后,使用提取到的Token发送后续请求。
<TestPlan>
    <ThreadGroup>
        <HTTPSampler>
            <name>Login Request</name>
            <url>http://www.example.com/login</url>
            <method>POST</method>
            <param>
                <name>username</name>
                <value>yourusername</value>
            </param>
            <param>
                <name>password</name>
                <value>yourpassword</value>
            </param>
        </HTTPSampler>
        <RegexExtractor>
            <name>Extract Token</name>
            <matchNo>1</matchNo>
            <useEqual>true</useEqual>
            <regex>Authorization: (.+?)\n</regex>
            <template>$1$</template>
            <matchNumbers>1</matchNumbers>
            <default></default>
            <failureMessage/>
            <scope>JMeter Variable or Assertion Field</scope>
            <vars>
                <variable>
                    <name>token</name>
                    <value>${__groovy(vars.get("Authorization"),)}</value>
                    <enabled>true</enabled>
                </variable>
            </vars>
        </RegexExtractor>
        <HTTPHeaderManager>
            <elementProp name="Authorization" elementType="Header">
                <value>Bearer ${token}</value>
                <name>Authorization</name>
            </elementProp>
        </HTTPHeaderManager>
    </ThreadGroup>
</TestPlan>

通过以上步骤,可以配置JMeter测试计划以传递Token。

常见问题与解决方法

Token传递失败的常见原因

在使用JMeter传递Token时,可能会遇到各种问题,例如Token传递失败。以下是一些常见的原因:

  1. Token未正确提取:如果登录请求返回的Token未正确提取,可能导致后续请求中使用的Token无效。检查正则表达式是否正确匹配Token字段。

  2. Token未正确传递:如果在请求中未正确设置 Authorization 头,可能无法通过Token验证。确保使用 HTTP Header Manager 正确设置 Authorization: Bearer YOUR_TOKEN_VALUE

  3. 请求参数错误:如果请求参数错误,例如用户名或密码不正确,可能导致登录失败,从而无法提取到Token。检查登录请求中的参数是否正确设置。

  4. 请求路径或方法错误:如果请求路径或方法错误,可能导致登录请求失败。确保登录请求的URL、方法和参数正确。

  5. 服务器响应问题:如果服务器返回了错误的响应或未返回Token,可能导致Token无法提取。检查服务器的响应是否包含Token。

  6. Cookie管理器配置错误:如果Cookie管理器配置错误,可能导致Token无法传递。检查Cookie管理器的配置是否正确设置Cookie路径和域名。

  7. 并发问题:如果在并发测试中,多个线程尝试同时登录和传递Token,可能导致Token丢失或覆盖。检查线程组的线程数和循环次数配置。

  8. 网络或代理问题:如果网络或代理设置错误,可能导致登录请求失败或Token无法传递。检查网络连接和代理设置是否正确。

  9. 权限问题:如果服务器配置了严格的权限控制,可能导致Token传递失败。检查服务器的权限配置,确保测试用户具有正确的权限访问资源。

  10. 测试计划配置错误:如果测试计划配置错误,可能导致Token传递失败。检查测试计划中的各个组件配置是否正确。
解决Token传递问题的步骤
  1. 检查Token提取:确保登录请求返回的Token已正确提取。通过查看登录请求的响应,确认Token字段是否正确。

  2. 检查Token传递设置:确保在请求中正确设置了 Authorization 头。通过检查 HTTP Header Manager 配置,确认 Authorization 头是否设置为 Bearer ${token}

  3. 验证登录请求:确保登录请求的URL、方法和参数正确。通过查看登录请求的配置,确认请求的URL、方法和参数是否正确。

  4. 检查服务器响应:确保服务器返回了正确的响应。通过查看登录请求的响应,确认服务器返回了包含Token的响应。

  5. 验证Cookie管理器配置:确保Cookie管理器配置正确。通过查看Cookie管理器的配置,确认Cookie路径和域名设置是否正确。

  6. 检查并发测试配置:确保并发测试配置正确。通过查看线程组的线程数和循环次数配置,确认配置是否合理。

  7. 检查网络和代理配置:确保网络和代理配置正确。通过检查网络连接和代理设置,确认配置是否正确。

  8. 检查服务器权限配置:确保服务器权限配置正确。通过查看服务器的权限配置,确认测试用户具有正确的权限访问资源。
这篇关于JMeter传递token学习入门教程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!