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中显示,中奖概率浮动在合理范围内。

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

软件测试面试文档

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值