软件测试技能,JMeter压力测试教程,压测带token的接口(六)

news2024/11/16 9:33:34

目录

前言

一、场景案例

二、测试token准备

三、jmeter CSV数据文件设置

四、运行结果


前言

工作中我们需要压测的接口大部分都是需要先登陆后,带着token的接口(或者带着cookies),我们可以先登陆获取token再关联到下个接口

比如我现在要压测一个修改用户的个人信息接口,每个用户只能修改自己的个人信息

一、场景案例

我现在有一个登陆接口A,登陆成功后返回一个token值。A接口登录接口文档基本信息

访问地址:http://127.0.0.1:9000/api/v1/login/
请求类型:POST
请求头部:application/json
请求参数:{“username”:”test”, “password”:”123456”}

接口返回

{
"code": 0,
"msg": "login success!",
"token": "234af73571da46ade79ea6a74961b1d23d609b79",
"username": "test"
}

B接口需先登陆,修改用户的个人信息,并且用户只能修改自己的个人信息

访问地址:http://127.0.0.1:8000/api/v1/userinfo
请求类型:POST
请求头部:Content-Type: application/json

Authorization: Token 234af73571da46ade79ea6a74961b1d23d609b79

请求参数:{“name”:“test”,“sex”:“M”,“age”:23,“mail”:“123@qq.com”}

接口返回

{
"message": "update some data!",
"code": 0,
"data": {
		"name": "test",
		"sex": "M",
		"age": 23,
		"mail": "123@qq.com"
		}
}

如果先登陆再关联到修改个人信息,这样实际上是发了2个请求,真实场景是用户早就登陆了,所以并不需要去压测登陆的场景

我们只需要拿到token直接去压测B接口就行了

二、测试token准备

B接口有两个参数是一一对应的,一个是token,一个是对应的name,比如压测的时候准备100个用户,我这里以10个用户为例

先注册批量的用户用于压测,我这里注册的用户是test1,test2……test10,一起10个用户

'''批量生成token和需要用的测试参数,如username
大前提,你需要先注册这些用户test1,test2......test10'''

import requests
url = "http://127.0.0.1:9000/api/v1/login"

for i in range(1, 11):
    # 拼接用户名  用户名如 test1,test2.....test10
    username = "test"+str(i)
    body = {"username": username,
            "password": "123456"}
    r = requests.post(url, json=body)
    print(r.json())
    # 获取token
    token = r.json()["token"]
    # a追加模式写入txt
    with open("token_user.txt", "a") as fp:
         fp.write(token+","+username+"\n")

运行后生成的token_user.txt文件内容如下

f26be862c407a6fabf8fe3290ac21392b6eaf44f,test1
bed455954cb70f2060e17cf85339758cdcf94629,test2
033a47cb03e6d99384121d8a015fbe2542a198b5,test3
a09b5af04a06b274fece0a6766ed056be773294d,test4
49f3fee051c0615128577cfcfe324f226366b824,test5
c2ebaabe55bb651682b9c1c3b3d3779543f7088b,test6
f74dcea201337665f7f6a25905b9845826eb34c8,test7
f3d7bc13d0608196d557f0197a7f2c2c407a7d0d,test8
9c6d7b893ea2e8b226daa0c315299d5968e8a10c,test9
4cfd0827e803a7415e987996c2148312843ed037,test10

三、jmeter CSV数据文件设置

导入csv 测试数据文件,设置token和user两个变量

HTTP 信息头管理器引用token

请求参数引用user

四、运行结果

接下来就可以设置线程组愉快的压测了

比如我设置2个线程,4次循环,这样会请求8次,每次都从测试文件里面循环取值

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!

生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!

只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到!

资料获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片进群领取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/682880.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用 ChatGPT 赚钱(10 种简单的方法)

即使自从OpenAI推出ChatGPT以来,科技领域的情况也发生了巨大变化。OpenAI 大型语言模型 (LLM) 非常强大,它可以做很多事情,包括写论文、数字运算、代码编写等创造性工作。人们现在正在使用ChatGPT疯狂的AI功能来赚钱。…

JMeter作用域和运行顺序(2)

JMeter作用域和运行顺序 一、JMeter运行顺序1、运行顺序 二、JMeter作用域1、层级生效的元素2、顺序生效的元素3、作用域规则 一、JMeter运行顺序 1、运行顺序 测试计划优先运行,其次是线程组 线程组与线程组之间,默认并发运行 当在测试计划下&#x…

【AUTOSAR】CCP协议的代码分析与解读(一)----CCP协议简述

概述 – Introduction 汽车电控单元 CAN总线 CCP协议目前基于CAN(Controller Area Network)总线的分布式系统在汽车电子领域得到广泛应用,电子控制单元的标定已成为汽车电子控制装置开发的一个重要环节。CCP(CAN Calibration Protocol)是一种基于CAN总线的ECU(Electronic Cont…

这是哪家项目的智能合约,尽快打标签认领!

为智能合约上标签,看Web3Go链上分析! 本文参考了Moonscan标签结构指南Moonscan标签结构指南Moonscan标签结构指南,旨在帮助更多团队或项目为智能合约打标签,从而能够在Web3Go上获取重要的链上指标。 Contract Captains 智能合约…

短信验证码的防攻击

案例 看到下面一个请求包,发个验证码附带了这么多的参数,那么肯定是有些问题滴!! 一般比较典型的短信轰炸漏洞,要么是未作任何限制,要么是添加 +、空格等可以绕过 最近在测试的时候,发现了一点新东西,利用请求中的其他参数也可以造成短信轰炸漏洞,比如说: 场景 …

vue(js)线程干扰,vue生命周期干扰

前言 js的事件循环机制对于我们理解阅读代码的执行顺序是必不可少的知识点。在 vue 中虚拟 DOM 对比之后的重渲染便是参考这种机制 Event Loop js 是单线程语言,干完一件事之后才能干下一件事 js 执行的代码可分为同步和异步,同步代码执行完毕再执行异…

正式接入ChatGPT, 捷码智能助手重磅来袭!

捷码平台最新介绍 ChatGPT给各行各业带来的深远影响,绝对不止一款升级版的客服机器人那么简单。 以微软为例,早在3月17日,继把GPT4引入搜索引擎后,微软又重磅推出了由AI驱动的Microsoft 365 Copilot,它能自动生成电子…

python+pytest自动化测试函数测试类测试方法的封装

今天呢,想和大家聊聊pythonpytest接口自动化中将代码进行封装,只有将测试代码进行封装,才能被测试框架识别执行。 例如单个接口的请求代码如下: import requests headers {"user-agent": "Mozilla/5.0 (Windows…

如何高效优雅地管理接口文档

目录 前言 什么是Apifox 为什么选Apifox Apifox初体验 安装注册 接口文档管理 在线接口文档 接口调试 数据模型 环境管理 Mock功能 测试用例 测试套件 参数化 持续集成 团队管理 生成代码 前言 管理接口文档是一个重要的任务,它能够帮助团队成员更…

直接插入排序到底有多“直男”

作者主页:paper jie的博客_CSDN博客-C语言,算法详解领域博主 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《算法详解》专栏,本专栏是针对于大学生,编程小白精心…

JavaScript中的垃圾回收和内存泄漏

垃圾回收 JavaScript 中的内存管理是自动执行的,而且是不可见的。我们创建基本类型、对象、函数……所有这些都需要内存。 当不再需要某样东西时会发生什么? JavaScript 引擎是如何发现并清理它? 垃圾回收有两种方法:标记清除、引用计数。引用计数不…

95后很狂阿里P7晒出工资单:狠补了两眼泪汪汪,真香...

最近一哥们跟我聊天装逼,说他最近从阿里跳槽了,我问他跳出来拿了多少?哥们表示很得意,说跳槽到新公司一个月后发了工资,月入5万多,表示很满足!这样的高薪资着实让人羡慕,我猜这是税后…

便携式AIS接收机dAI01

1.设备简介 AIS是指船舶自动识别系统(Automatic Identification System),船舶上有AIS收发机,AIS收发机会把船舶通过GPS定位获取到的本船的位置、速度等动态信息和船舶自己的船号、长宽等静态信息广播发射出去,其他用户…

雷达人体感应器成品,家居办公场景探测联动,智能化雷达感知技术应用

随着智能数据和人工智能的日益普及,越来越多的智能硬件设备得以推广和应用到日常生活中。 智能人体存在感应器是这一类智能硬件设备中非常有代表性的一种,它可以被应用在家居、办公等场景中,在很大程度上,它为我们的生活提供了很…

Liunx 安装、卸载Mysql,远程连接

Liunx 安装、卸载Mysql 一、 卸载mysql 查看mysql安装情况 rpm -qa | grep -i mysql删除上图中所有信息 rpm -ev mysql-community-release-el7-5.noarch --nodeps再次查询,没有数据,则为删除干净 find / -name mysqlrm -rf /var/lib/mysql 将机器上…

Java版企业工程管理系统源代码Spring Boot + 二次开发 + 前后端分离

工程项目各模块及其功能点清单 一、系统管理 1、数据字典:实现对数据字典标签的增删改查操作 2、编码管理:实现对系统编码的增删改查操作 3、用户管理:管理和查看用户角色 4、菜单管理:实现对系统菜单的增删改查操…

使用python编程数学建模-常见excel数据使用python以行的方式按需读取

读取原始数据 首先导入pandas库   接着使用pandas库里面的read_csv方法来读取我们的文件,由于数据文件和程序文件是在统一目录下,因此无需使用绝对路径 import pandas as pd data1 pd.read_csv("data1.csv")读取数据的前20行数据 这里我们…

RTC time和Local time区别以及Linux 设置时区和修改时间

RTC time和Local time 在Linux系统中存在两个时钟时间,分别是 硬件时钟RTC(Real Time Clock) 系统时钟(System Clock)硬件时钟是指的在主板上的时钟设备,也就是通常可以在BIOS画面设置的时钟,即…

魏副业而战:怎么提升自己做项目的能力?

我是魏哥,与其在家躺平,不如魏副业而战! 昨天分享了老李做的拉新项目,很多小伙伴留言。 有人说,制作100个视频蛮难的; 有人说,发布100个视频最后留下4个,这对人的考验蛮大的&…

JDK8新特性之lambda表达式

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于lambda表达式的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.是什么 二.为什么要用 三.底层…