JMeter接口测试:测试中奖概率!

图片

介绍

Apache JMeter 是 Apache 组织基于 Java 开发的压力测试工具,用于对软件做压力测试。JMeter 最初被设计用于 Web 应用测试,但后来扩展到了其他测试领域,可用于测试静态和动态资源,如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库和 FTP 服务器等等。JMeter 可对服务器、网络或对象模拟巨大的负载,在不同压力类别下测试它们的强度和分析整体性能。另外,JMeter 能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证程序是否返回了期望结果。

JMeter 还可以进行接口测试,本文将讲解如何使用JMeter 来测试一个抽奖接口的中奖概率是否符合需求的要求。

图片

根据需求定制测试方案

需求描述:

参与用户数量大概为2000人,整个奖品池的中奖概率,如果有2个奖品,那么各5%,如果一个抽完了,另一个变成10%,如果2个都抽完了,就不会再中奖了。

测试方案:

设定200用户同时并发(设置在实际人数的10%即可),模拟200个用户进行抽奖。

准备测试数据:

  • 根据接口文档描述,入参为record_uuid和user_uuid,在对应的数据库表中新增200条数据,模拟成200个抽奖用户;

  • 在数据库的奖品库存表中,分别将奖品A和奖品B的库存数量都设置为100。

场景:

  • 奖品A和B库存充足

  • 奖品A库存为0,奖品B库存不为0

  • 奖品A库存不为0,奖品B库存为0

  • 奖品A和B库存均为0

图片

使用JMeter设置脚本

3.1 设置线程组

图片

将线程数设置为200,模拟200个用户进行抽奖操作。

3.2 添加HTTP信息头管理器

图片

3.3 添加BeanShell PostProcessor

如果接口返回信息的结果中的中文乱码,可以添加此前置处理器。在输入框中输入prev.setDataEncoding("utf-8")

图片

3.4 添加HTTP请求

3.4.1 HTTP请求设置

Web服务器栏中,按照实际情况填写协议、ip地址和端口号,请求设置中方法选择post,再填写正确的路径

图片

3.4.2 入参

选择Body Data,这里我们需要将record_uuid和user_uuid并引用

{"recordUuid":"${recordUuid}","userUuid":"${userUuid}"}

3.4.3 添加前置处理器CSV Data Set Config

在当前HTTP请求下添加一个前置处理器CSV Data Set Config,用于将record_uuid和user_uuid参数化。

图片

需要准备好一个.txt格式的参数化文件,文件第一行为参数名称,其他行为参数值。两个参数名和参数值之间需要用,进行分隔。

图片

关于参数化的设置这里不再详述,后续发布的文章会详细讲解,可先按照图例配置。其中Filename为参数化文件的路径;Variable Names (comma-delimited)为参数化的名称,即在第(2)步Body Data的入参中引用的参数化名称;lgnore first line (only used if Variable Names is not empty)为忽略第一行,由于参数化文件中第一行为参数名称,所以选择true,表示引用的时候忽略掉第一行。

3.4.4 添加响应断言和断言结果

在HTTP请求下添加响应断言和断言结果,用于过滤中奖状态和查看结果。在响应断言下,选择“响应文本”,在测试模式中输入“"result":1”(根据接口文档中的描述,"result":1为中奖状态,"result":0为未中奖),则代表着未返回此结果的均为未中奖状态(包括异常状态),可在断言结果中查看接口请求信息。

图片

图片

3.5 添加聚合报告和察看结果树

用于查看接口请求的相关信息,我们暂时只用关注Error率就行。

图片

图片

3.6 运行脚本

设置好脚本后,点击运行按钮运行脚本,运行完成后查看聚合报告。

图片

图片

如上图所示,Error率为91%,由于我们加了响应断言,返回结果中不包含“"result":1”即为响应报错,代表着未中奖,则中奖率为100%-91%=9%,这个值与需求描述的中奖概率控制在10%相差不大。在增加并发量或多运行几次后,这个数据会更加接近10%的中奖概率。

根据我们制定的测试方案,整理出一个简单Excel来查看实际中奖概率与规定的中奖概率是否一致。

图片

根据Excel中显示,中奖概率浮动在合理范围内。

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

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

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

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

相关文章

Redis 缓存

安装 安装 Redis 下载: Releases tporadowski/redis (github.com) winr ----services.msc-----将redis 设置为手动(只是学习,如果经常用可以设置为自动) 安装 redis-py 库 pip install redis-py Redis 和 StrictRedis redis-py 提供 Redis 和 Str…

Java高频面试题分享

文章目录 1. 策略模式怎么控制策略的选取1.1 追问:如果有100种策略呢?1.2 追问:什么情况下初始化Map 2. 什么是索引?什么时候用索引?2.1 追问:怎么判断系统什么时候用量比较少2.2 追问:如何实时…

C++多态的底层原理

目录 1.虚函数表 (1)虚函数表指针 (2)虚函数表 2.虚函数表的继承--重写(覆盖)的原理 3.观察虚表的方法 (1)内存观察 (2)打印虚表 虚表的地址 函数 传参…

SSM电子商务系统-计算机毕业设计源码68470

基于SSM框架的电子商务系统的设计与实现 摘 要 随着电子商务的迅猛发展和计算机信息技术的全面跃升,网上购物系统由于其迎合了人们诉求和期望而渗入社会生活各个层面和角落。本文设计并实现了一个基于SSM框架的电子商务系统。该系统旨在为用户提供一个舒适且快捷的…

Python基础——第一个Python程序

Python基础——第一个Python程序 一、编写和运行代码的工具1.1 为什么需要工具1.2 默认的交互式环境1.3 文本编辑神器 - Visual Studio Code1.4 专业的集成开发环境 - PyCharm 二、编写第一个Python程序2.1 在PyCharm中编写“Hello, World!”程序2.2 运行“Hello, World!”程序…

Windows 11+Visual Studio 2022 环境OpenCV+CUDA 12.5安装及踩坑笔记

周六日在家捣腾了一下,把过程记录下来。 前置条件 Visual Studio C 生成工具和本机显卡适配的CUDA与CUDA匹配的cuDNNPython 3NumPyOpenCV源代码以及对应版本的OpenCV-contrib模块源码CMake Visual Studio 下载Visual Studio(我本机的是VS2022&#xf…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 智能驾驶(200分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线评测,专栏文章质量平均 93 分 最新华为OD机试目录: …

【Golang 面试基础题】每日 5 题(九)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/UWz06 📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏…

c/c++的内存管理(超详细)

一、c/c的内存分布 这是操作系统中对于内存的划分: 我们重点掌握以下几个区域即可: 1.栈 (调用函数会建立栈帧) 2.堆(动态开辟的空间) 3.数据段(静态区):存放静态变量以及全局变量 4.代码段 (常量区) 先来看看一个题目: int…

蓝牙耳机百元之内怎么选?四款百元精品爆款蓝牙耳机盘点

在蓝牙耳机的海洋中,百元价位仿佛是一片神秘的绿洲,既诱人又充满未知,如何在众多选项中挑选出真正的精品呢?蓝牙耳机百元之内怎么选?这是许多消费者的共同疑问,带着这个疑问,作为蓝牙耳机发烧党…

【Python机器学习】朴素贝叶斯——条件概率

条件概率 假设现在有一个装了7块石头的罐子(3块灰色,4块黑色),如果从中随机取出一块,灰色的可能性就是3/7,黑色的可能性是4/7。我们使用p(gray)来表示取到灰色石头的概率,其概率值可以通过灰色…

1.3 双向链表定义及部分实现

1.定义 单链表的问题:找后继容易, 找前驱难 双向链表( Double Linked List ) :指的是构成链表的每个结点中设立两个指针域: 一个指向其直接前趋的指针域 prior ,一个指向其直接后继的指针域 …

Tent混沌人工蜂群与粒子群混合算法遇到问题,具体问题及解决方案如文。

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…

谷歌再被OpenAI截胡?训练数学AI拿下IMO银牌,不及SearchGPT放了空响..

昨夜谷歌振臂高呼:我们新的数学AI,能在IMO数学竞赛达到银牌水平! 但就在谷歌发文的几个小时后,OpenAI就偷了谷歌的家: 发布新的搜索方式SearchGPT ,剑指挑战谷歌的搜索引擎。 谷歌双模型并用攻克数学难题…

2. 卷积神经网络无法绕开的神——LeNet

卷积神经网络无法绕开的大神——LeNet 1. 基本架构2. LeNet 53. LeNet 5 代码 1. 基本架构 特征抽取模块可学习的分类器模块 2. LeNet 5 LeNet 5: 5 表示的是5个核心层,2个卷积层,3个全连接层.核心权重层:卷积层、全连接层、循环层&#xff…

LCD 横屏切换为竖屏-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板

LCD 横屏切换为竖屏 横屏显示如何切换为竖屏显示 LCD 屏默认横屏显示 开发板配套的 LCD 屏默认都是横屏显示,如 4.3 寸、7 寸和 10.1 寸的不同分辨率的 RGB LCD 屏 固定坐标体系 (以 800*480 分辨率为例)横屏模式下的固定坐标:…

快醒醒,别睡了!...讲《数据分析pandas库》了—/—<5>

一、 1、修改替换变量值 本质上是如何直接指定单元格的问题,只要能准确定位单元地址,就能够做到准确替换。 1.1 对应数值的替换 具体用法如下: replace方法: df.replace(to_replace None :将被替换的原数值,所有…

【Python机器学习】决策树的构造——信息增益

决策树是最经常使用的数据挖掘算法。它之所以如此流行,一个很重要的原因就是不需要了解机器学习的知识,就能搞明白决策树是如何工作的。 决策树的优缺点: 优点:计算复杂度不高,输出结果易于理解,对中间值的…

linux集群架构--高可用--keepalived(13985字详解)

linux架构高可用 a.概述 高可用:HA HighAvailablity —>Keepalived生成VIP,DNS解析到这个IP地址即可 b.原理 keepalived 是基于VRRP协议实现高可用VRRP虚拟路由器冗余协议,最开始是给网络设备实现高可用,目前keepalive实现v…

项目实战1(30小时精通C++和外挂实战)

项目实战1(30小时精通C和外挂实战) 01-MFC1-图标02-MFC2-按钮、调试、打开网页05-MFC5-checkbox及按钮绑定对象06--文件格式、OD序列号08-暴力破解09-CE10-秒杀僵尸 01-MFC1-图标 这个外挂只针对植物大战僵尸游戏 开发这个外挂,首先要将界面…