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://xiahunao.cn/news/3269150.html

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

相关文章

【机器学习】解开反向传播算法的奥秘

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 解开反向传播算法的奥秘反向传播算法的概述反向传播算法的数学推导1. 前向传播2…

【计算机网络】WireShark和简单http抓包实验

一:实验目的 1:熟悉WireShark的安装流程和界面操作流程。 2:学会简单http的抓取和过滤,并分析导出结果。 二:实验仪器设备及软件 硬件: Windows 2019操作系统的计算机等。 软件:WireShark、…

草图也能秒变完整画稿?三星 Galaxy Z Fold6 、Flip6硬件升级

在科技的不断进步中,智能手机行业的竞争愈发激烈,各大厂商纷纷推出创新产品以吸引消费者。 最近,三星在 Galaxy Unpacked 发布会上就带来了 Galaxy Z Fold6 和 Flip6 两款手机新品,这两款设备不仅在硬件上有所突破,更…

docker dotnet-dump离线部署

1.下载指定dotnet版本的dotnet-dump 示例地址: https://www.nuget.org/packages/dotnet-dump/3.1.141901#dependencies-body-tab 我本地测试的是netcore 3.1 2. 在本地解压 将文件解压出来。看到any目录,能看到我们要用的dotnet-dump文件 3. 将tools/netcoreapp2.…

C++文件系统操作6 - 跨平台实现查找指定文件夹下的特定文件

1. 关键词 C 文件系统操作 查找指定文件夹下的特定文件 跨平台 2. fileutil.h #pragma once#include <string> #include <cstdio> #include <cstdint> #include "filetype.h" #include "filepath.h"namespace cutl {/*** brief The fi…

【吊打面试官系列-Dubbo面试题】服务调用是阻塞的吗?

大家好&#xff0c;我是锋哥。今天分享关于 【服务调用是阻塞的吗&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; 服务调用是阻塞的吗&#xff1f; 默认是阻塞的&#xff0c;可以异步调用&#xff0c;没有返回值的可以这么做。 Dubbo 是基于 NIO 的非阻塞实现…

Axious的请求与响应

Axious的请求与响应 1.什么是Axious Axious是一个开源的可以用在浏览器和Node.js的异步通信框架&#xff0c;它的主要作用就是实现AJAX异步通信&#xff0c;其功能特点如下&#xff1a; 从浏览器中创建XMLHttpRequests ~从node.js创建Http请求 支持PromiseAPI 拦截请求和…

深入解析AI技术:从深度学习到GPT大模型的全面探索

深入解析AI技术&#xff1a;从深度学习到GPT大模型的全面探索 引言 在21世纪的科技浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;无疑是最引人注目的领域之一。从简单的语音助手到复杂的自动驾驶系统&#xff0c;AI正以前所未有的速度改变着我们的世界。而深度学习&a…

【Python机器学习】朴素贝叶斯——使用朴素贝叶斯进行文档分类(理论基础)

机器学习的一个重要应用就是文档的自动分类。在文档分类中&#xff0c;整个文档&#xff08;比如电子邮件&#xff09;是实例&#xff0c;而电子邮件中的某些元素则构成特征。虽然电子邮件是一种会不断增加的文本&#xff0c;但我们同样也可以对新闻报道、用户流言、公文等其他…

如何获得一个MySQL 5.7 社区版数据库

已有一个OCI计算实例&#xff0c;Oracle Linux 7.9&#xff0c;1OCPU&#xff0c;16G内存&#xff1a; $ cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.9 (Maipo)$ lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte O…

jdk版本区别

JDK&#xff08;Java Development Kit&#xff09;是 Java 开发工具包&#xff0c;它包括了 Java SE&#xff08;Standard Edition&#xff09;、编译器、调试器和其他开发工具。Oracle 公司是 JDK 的主要供应商&#xff0c;它提供了多个版本的 JDK&#xff0c;每个版本都有自己…

C++之栈和队列使用及模拟实现

目录 栈的使用 队列的使用 栈的模拟实现 队列的模拟实现 deuqe容器介绍 在C语言中我们已经学习了栈和队列的相关性质&#xff0c;今天我们主要来学习C语法中栈和队列的相关概念。 栈的使用 在C中栈是一种容器适配器&#xff0c;在其内部适配了其它的容器&#xff0c;其相…

【数据结构】——双链表的实现(赋源码)

双链表的概念和结构 双链表的全称叫做&#xff1a;带头双向循环链表 它的结构示意图如下 注意&#xff1a;这⾥的“带头”跟前⾯我们说的单链表的“头结点”是两个概念&#xff0c;实际前⾯的在单链表阶段称呼不严谨&#xff0c;但是为了读者们更好的理解就直接称为单链表的头…

【计算机毕设论文】基于SpringBoot成绩管理系统

&#x1f497;博主介绍&#xff1a;✌全平台粉丝5W,高级大厂开发程序员&#x1f603;&#xff0c;博客之星、掘金/知乎/华为云/阿里云等平台优质作者。 【源码获取】关注并且私信我 感兴趣的可以先收藏起来&#xff0c;同学门有不懂的毕设选题&#xff0c;项目以及论文编写等相…

学习测试13-车载测试

车的发展 1&#xff0c;动力 VCU 是实现整车控制决策的核心电子控制单元 汽车驱动控制:车都是有VCU发出&#xff0c;驱动控制&#xff0c;电池&#xff0c;电机都是执行器。比如: 汽车启动:启动&#xff0c;发车&#xff0c;VCU发送指令到齿轮这些&#xff0c;开始转动启动&a…

C语言程序设计15

程序设计15 问题15_1代码15_1结果15_1 问题15_2代码15_2结果15_2 问题15_3代码15_3结果15_3 问题15_1 在 m a i n main main 函数中将多次调用 f u n fun fun 函数&#xff0c;每调用一次&#xff0c;输出链表尾部结点中的数据&#xff0c;并释放该结点&#xff0c;使链表缩短…

Shell脚本学习教程(菜鸟从入门到精通)

前言 这本教程是写给那些在UNIX环境下发现必须写些Shell 脚本&#xff0c;以利于工作进行的计算机用户与软件开发人员。例如&#xff0c;你可能是正在念计算科学的学生&#xff0c;手上有学校给你的第一个UNIX系统账号&#xff0c;你想知道在UNIX下更多的东西&#xff0c;例如…

T-CNN——利用张量 CNN 增强缺陷检测

1. 摘要 缺陷检测是制造业中一个重要而具有挑战性的问题。本研究引入了张量卷积神经网络&#xff08;T-CNN&#xff09;&#xff0c;并在罗伯特-博世制造工厂生产的超声波传感器组件缺陷检测的实际应用中验证了其性能。与同类 CNN 模型相比&#xff0c;作者的量子启发 T-CNN 通…

飞凌嵌入式亮相第七届全国大学生嵌入式芯片与系统设计竞赛北部赛区决赛现场

7月20日&#xff0c;2024年第七届全国大学生嵌入式芯片与系统设计竞赛北部赛区决赛在保定大学科技园正式开赛。本次大赛由全国大学生嵌入式芯片与系统设计竞赛组委会、北部赛区执委会主办&#xff0c;保定国家大学科技园与北京邮电大学联合承办&#xff0c;飞凌嵌入式作为本土嵌…

chrome浏览器驱动(所有版本)

chrome浏览器驱动 114之前版本 https://chromedriver.storage.googleapis.com/index.html 125以后 125以后版本下载链接在此&#xff0c;只有后面status是绿色对勾的才可以下载&#xff0c;驱动大版本一致就可以使用&#xff0c;不需版本号一模一样&#xff1b;下载所需版本只…