JMeter实现多用户并发功能测试 - 抽奖系统实战经验

抽奖活动系统是用户通过参与活动获得奖券,然后刮开奖券查询是否获奖。

项目需求和技术方案:
项目需求是测试抽奖活动的中奖概率:
1、中奖率在定义的概率范围内
2、中奖次数不得大于定义的次数
3、所有奖券的状态显示正常
自动化方案:
1、中奖概率在千万级别不可能用人工进行,需要借助自动化。
2、在自动化测试工具的选择上,用Java代码脚本的形式做到千万级别的次数运行时间太长,需要借助并发测试工具。
3、考虑使用Jmeter的接口测试功能,加上并发的功能和顺序执行的逻辑来实现。

实施方案:
考虑到项目的测试需求是测试中奖率,所以只需要选取主要的三个接口进行测试即可。产生奖券 – 刮奖
每个用户经过这个流程,从产生奖券传入用户名参数,返回奖券ID,生成的ID用到刮奖接口中,返回奖券状态。多用户使用Jmeter的CVSRead方法来生成,刮奖使用的奖券ID参数用正则表达式提取器提取出来,作为刮奖接口的参数。通过多用户并发执行产生奖券和刮奖的接口,完成这个业务逻辑的功能测试。

JMeter实施过程
设置3个全局变量,服务器地址,端口号和活动的ID号

设置3个全局变量,服务器地址,端口号和活动的ID号

新建一个dat文件,供CVSRead函数调用。Dat文件内容为
t.dat
CVSRead函数
每行代表一个用户名和用户ID,在Jmeter的选项中调出函数对话框,选择_CVSRead,在第一行中输入dat文件的路径 c:\t.dat, 第二行输入0,然后生成函数${__CSVRead(c:\t.dat,0)}, 调用这个函数的时候,0表示调用第一列的值,1表示调用第二列的值,依此类推。
(这里补充一下,如果涉及到性能测试的多用户并发,使用配置元件中的CSV Data config会好点,因为这里没有涉及到性能上的问题,所以采用这种方式)

设置产生奖券接口
这里写图片描述

正则表达式提取器这里写图片描述
1、在产生奖券的请求下面新建一个正则表达式提取器
2、在测试计划下面新建一个查看结果树
3、点击绿色三件按钮执行测试,查看结果树中影响数据:{“resultCode”:”0000”,”resultMsg”:”抽奖成功!”,”resultData”:{“id”:11566355,”userId”:9000,”userName”:”autotest0”,”activeId”:3,”status”:0,”catalog”:null,”prizeId”:null,”recipient”:null,”contact”:null,”address”:null,”province”:null,”city”:null,”area”:null,”orderNo”:null,”deviceType1”:”123456”,”deviceId1”:”123456”,”source”:”test”,”deviceType2”:null,”deviceId2”:null,”deviceType3”:null,”deviceId3”:null,”endTime”:1448935237000,”openTicketTime”:0,”createTime”:1447232320281,”prizeName”:null,”prizePrice”:0.0,”thumbnail”:null}}
4、需要提取的是id后面的值:11566355, 正则表达式为{“id“(.+?), 匹配的是需要的值。

设置刮奖接口
刮奖接口调用产生奖券接口生成的ID,使用JMeter自带的函数表达式即可${ticketId},注意的是,使用通过正则表达式提取器得到的参数,只能是该请求下面的请求才能使用,逆向不可用。
这里写图片描述

脚本配置完需要设置并发的线程数和执行的时间来进行测试,在线程组中设置,若测试的中奖概率比较小,比如五百万分之一,想要尽快完成测试,线程数需要设置大一点,这里推荐100(按CPU线程数来算,128个线程比较合理),循环次数勾选永远,即测试会不停执行。
这里写图片描述

测试结果在项目中的效果这里写图片描述

  • 8
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
JMeter中进行多用户并发测试可以通过配置线程组来实现。线程组是定义并发用户的地方,你可以设置线程数、线程启动延迟、循环次数等参数以模拟多个用户同时访问系统。 以下是进行多用户并发测试的步骤: 1. 创建测试计划:在JMeter中,你需要创建一个测试计划。右键点击测试计划 -> 添加 -> Threads(Users)-> 线程组。 2. 配置线程组参数:选中线程组,右键点击 -> 添加 -> Config Element -> HTTP Cookie Manager(如果需要管理Cookie)和HTTP Cache Manager(如果需要模拟缓存)。 3. 添加Sampler:选中线程组,右键点击 -> 添加 -> Sampler -> HTTP Request(用于发送HTTP请求)或其他类型的Sampler。 4. 设置Sampler参数:在Sampler中,你可以设置请求的URL、请求方法、参数、头部信息等。 5. 添加断言:选中Sampler,右键点击 -> 添加 -> Assertions -> Response Assertion(用于验证响应内容)或其他类型的断言。 6. 添加监听器:选中线程组,右键点击 -> 添加 -> Listener -> 聚合报告或其他类型的监听器。监听器用于收集和展示测试结果。 7. 配置并发用户数:选中线程组,设置“Number of Threads(users)”参数为你想要模拟的并发用户数。 8. 配置循环次数:选中线程组,设置“Loop Count”参数为每个用户执行请求的次数。 9. 运行测试:点击工具栏上的运行按钮(绿色三角形按钮)来开始运行测试。你可以在监听器中查看测试结果。 10. 分析结果:根据监听器中的结果,你可以分析系统的性能情况,如响应时间、吞吐量等。根据结果进行优化和调整。 通过配置合适的线程组参数和Sampler,你可以实现多用户并发测试。记得根据被测试系统的实际情况和性能需求来设置合理的并发用户数和循环次数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值