Jmeter实战(二)|同用户重复并发多次抢红包

       之前我们有写过Jmeter多人并发抢1个红包,今天我们来写另外一种场景,同用户重复并发多次抢红包,两种场景还是不太一样,都是比较切合用户实际使用场景,如果1个用户在某些条件下,能重复领取到2次红包,这肯定是存在严重漏洞的,这里又可以分为2种情况,一种是间隔重复领取,另一种是并发重复领取。当然第一种一般是不会出现的,接口都会做限制;第二种是比较常出现的问题,需要加锁防止并发操作导致的重复领取,前端也需要做防重提交操作,这样就比较保险了。

一、添加setup前置线程组,设置线程数为1,为了让同用户只登登录1次

e7febe85da776418526cb456d27df82f.png

二、将登录接口放置仅一次控制器里,保证登录接口只执行一次

fdbf07fc30612f3f757f601b4255aec8.png

三、配置登录接口,参数一般传在消息体里

a012e6ec9838049ea95e492cdb304453.png

四、登录成功,可以看到token值,可以配置提取token提取器了

adf8e050936c5177144c54228cca8870.png

五、配置Json提取器,提取token值

d7e5ef7bc0c94841f110d3d4dc295118.png

六、提取器后面添加beanshell后置处理器,参数里配置提取器里面的变量值,将提取的token值,设置为全局变量${__setProperty(requestToken,${Token},)};

be1bdec2d94c939854ce0f77635c6e43.png

七、添加并发线程组,线程数配置21

74b83ce6a82b1815791784363e53c59d.png

八、线程组下配置请求头,传入全局变量token(${__property(requestToken)})

98aa6b947917c21d7da8d77a6f1cf6c2.png

九、业务上操作发红包,红包数6个,每个0.01,数据库生成红包编号,配置抢红包接口

392e57ac7f32bf509ad5572e94d2074d.png

十、执行并发线程组,发现只有1个接口是抢成功的,其它20个都是 系统繁忙,请勿重复点击!说明是加了锁的报的提示,没有造成同一个人并发领取的问题。

fd3620b3f8c12ac2ae88e450f6710a83.png

66c66360bd169585081b6978e1919716.png

十二、我们再将线程组设置为循环2次

070657196b763d61696dfc5adfb45c60.png

十三、加了固定定时器,循环领取2次,提示 您已领取过,无法重复领取!,说明也是正常的,不存在重复领取的问题

2f5577ff3e84e67b2ade1b276e3b5a12.png

faa7b14601c7508cd12426c95b64aa52.png

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

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

相关文章

【北京上海】七猫内推,高薪海量岗位等你来~

微信长按识别、扫码,查看海量待招岗位!!!UI、产品、测试、开发、运营、数据分析等等

python第一步怎么写_python第一步

------------恢复内容开始------------知识点,1.解释器路径------------在linux时需要链接pyhon解释器才能读取文件中的代码.#!/user/bin/env python2.编码.----------------在python2的时候需要写入这个,ascll码没有中文.python3有.# -*- coding:utf8 -*-3.input-----运行后一…

史上最全提现模块案例分解

史上最全提现模块案例分解 ————绑定银行卡: 1、绑定别人的银行卡 2、绑定已绑定的银行卡 3、绑定支持的银行卡 4、绑定不支持的银行卡 5、绑定信用卡 6、绑定过期的银行卡 7、绑定外地的银行卡 8、绑定银行卡类别(中国银行、建设银行、平安…

Fiddler无所不能——之测试开发攻城狮必备神器

fiddler官网 https://www.progress.com/ 官网下载fiddler https://www.telerik.com/download/fiddler/fiddler4 fiddler插件下载 https://www.telerik.com/fiddler/add-ons Fiddler无所不能——之测试开发攻城狮必备神器 1、模拟真实网络环境4g网、3g网络、2g网络、弱网等​…

可以储存照片的字段类型是_sql server 中 哪个字段类型可以储存图象?

展开全部可以将图片上传到指定目录并将路径记录在数据库中,要用的时候再从数据库中取路径根据路径找到图片。e68a84e8a2ad62616964757a686964616f31333234303663也可以直接存在数据库中。SqlServer中用Image列来保存图片两者各有千秋,从性能上考虑应用第…

假设前置数据法|全网唯一

系统中A模块是发布岗位,B模块是岗位详情,小王测试的是A模块,小张测试的是B模块,小张在测试B模块时往往很少去考虑前置模块A产生的各种类型、各种异常不确定数据,导致了经常出现一些问题,如果小张当时考虑了…

emulator教程 lbochs pc_bochs 开启调试选项

安装从http://bochs.sourceforge.net/下载./configure --with-all-libs --enable-vbe --enable-debuggermakemake install#需要声卡加--enable-sb16,需要网卡加--enable-ne2000,#64位机使用--enable-x86-64,mmx和sse, smp默认不支持用SLS Lin…

TensorFlow7-多元线性回归模型

运行结果:错误 # 不确定多少行为None。列为12列。即12个数据特征 xtf.placeholder(tf.float32,[None,12],name"X") # 12个特征数据ytf.placeholder(tf.float32,[None,1],name"Y") # 1个标签数据### 创建变量 定义模型结构# 定义了一个命令空…

史上最全jmeter逻辑控制器案例详解

在jmeter中逻辑控制器可以控制采样器(samplers)的执行顺序。由此可知,控制器需要和采样器一起使用,否则控制器就没有什么意义了。放在控制器下面的所有的采样器都会当做一个整体,执行时也会一起被执行。 (1)控制测试计…

python3.8.2中文手册chm_3.2.2中文语法考察

3自然语言3.1动物的语言3.2自然语言3.2.1英文语法考察3.2.2中文语法考察常见理论可对中文进行的描写与解读如下。汉字的起始是笔划,包括有:横、竖、撇、点、捺、提六种基本笔划:一、丨、丿、丶、㇏、㇀。这些基本笔划可以进一步组合出25种复合…

TensorFlow8-mnist手写数字识别入门

分类问题的损失函数为什么一般不用MSE?MSE在逻辑回归中可能具有多个局部最优点 不能用梯度下降算法

jmeter服务器性能资源监控部署

1、下载https://jmeter-plugins.org/install/Install安装插件plugins-manager放置lib/ext下,重启jmeter选项页面可查看到此下载插件 2、准备客户端插件jmeter-plugins-perfmon-2.1.jar和服务端监控插件ServerAgent-2.2.3(CMDRunner.jar、ServerAgent.jar…

高德地图怎么搜索marker_2018-07-06 高德地图搜索定位,滑动地图显示周边信息,根据地址搜经...

emmmm,效果图先行(搜索定位以及自由滑动地图展示周边位置信息,根据点击的位置获取经纬度)aa.gif主要代码package com.dydd.wsp.dreamtree.ui.mapimport android.content.Contextimport android.os.Bundleimport android.support.v7.widget.LinearLayoutManagerimpor…

C++中log的底数理解

C 中log是以e为底的 log10 是以10为底的 现在来看看为什么底数具体为多少不重要? 读者只需要掌握(依稀记得)中学数学知识就够了。 假设有底数为2和3的两个对数函数,如上图。当X取N(数据规模)时&#xff0…

【性能测试】性能需求挖掘、性能方案制定及压测场景设计之疑惑与思考(一)

压力测试 模拟用户在同一时间对服务器发送大量请求,以此查看服务器性能指标,尤其关注大业务量情况下运行系统性能的变化(反应变慢、是否会内存泄漏导致系统逐渐崩溃、是否能恢复),测试系统的限制和故障恢复能力&#…

条件编译 #ifndef _HEAD_H...中下划线的理解

1.下划线“__”属于编程风格的内容,对程序没有影响。不用下划线也可以,用几个下划线也由个人习惯。 2.其实质是一个宏名。由此我们可以防止发生重复定义或声明。 假设你的头文件名为head.h,根据习惯,我们声明一个宏HEAD_H,对应这…