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

原创 2015年11月18日 10:08:31

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

项目需求和技术方案:
项目需求是测试抽奖活动的中奖概率:
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个线程比较合理),循环次数勾选永远,即测试会不停执行。
这里写图片描述

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

版权声明:本文为博主原创文章,未经博主允许不得转载,如有任何问题,请与本人联系。 https://blog.csdn.net/wuxuehong0306/article/details/49902989

Jmeter对HTTP请求压力测试、并发测试的简单使用方法

最近公司需要开发一个简单的报名系统,供外网用户提供报名服务,由于我们公司是个初创的微型公司,开发人员都是刚毕业不久,开发经验相当缺乏。 对于服务器性能测试这块的经验更是少得可以忽略。迫使不得不让我们去...
  • envyfan
  • envyfan
  • 2015-01-14 20:33:17
  • 42222

Jmeter做性能测试遇到的问题及解决办法

前天客户要求给他提供一份性能测试报告,说:“我们的系统将来的用户数量可以达到800人左右,所以我希望系统能够支持的最大用户并发数可以达到1000” 。⊙﹏⊙b汗我用的测试工具是Jmeter2.2。需要...
  • zsy_gemini
  • zsy_gemini
  • 2011-02-22 18:30:00
  • 26878

使用Apache Jmeter进行并发压力测试

http://blog.jassassin.com/2014/04/17/tools/jmeter/ 引文 最近工作需要通过Apache Jmeter对HBase的写入性能进行压力测试...
  • hshl1214
  • hshl1214
  • 2016-01-31 16:52:49
  • 26243

【使用JMeter 对Web服务器压力测试】

概述 JMeter 最早是为了测试 Tomcat 的前身 JServ 的执行效率而诞生的。到目前为止,它的最新版本是2.1.1,它的测试能力也不再仅仅只局限于对于Web服务器的测试,而是涵盖了数据...
  • Jinliang_890905
  • Jinliang_890905
  • 2015-05-06 22:13:08
  • 26929

Jmeter支撑高并发测试

Jmeter作为性能测试客户端,在单机硬件性能够用的情况下可以支撑高并发测试,当然,可以采用Jmeter集群方式进行更高性能测试。这里采用单机测试。 以Http性能测试为例,影响连接数的几个因素: 1...
  • sundongsdu
  • sundongsdu
  • 2015-07-17 10:28:14
  • 3655

使用apache-jmeter工具发起大量并发请求测试服务器性能

配置好jdk环境 下载apache-jmeter-3.1(压缩包),解压后使用。 —————————————————————————————————————————————————— 1...
  • weixin_37196194
  • weixin_37196194
  • 2017-02-13 19:02:34
  • 864

Jmeter的几个测试重要指标

Aggregate Report 是 JMeter 常用的一个 Listener,中文被翻译为“聚合报告”。今天再次有同行问到这个报告中的各项数据表示什么意思,顺便在这里公布一下,以备大家查阅。 ...
  • lll921176681
  • lll921176681
  • 2017-05-07 22:25:38
  • 1781

多线程WEB高并发压力测试软件JMeter

一、 Apache JMeter工具   1)简介   JMeter——一个100%的纯java桌面应用,它是 Apache组织的开放源代码项目,它是功能和性能测试的工具。JMeter可以...
  • xu_xiao
  • xu_xiao
  • 2014-05-23 08:47:16
  • 3435

jmeter模拟对网站做压力测试

一般的网站,在进入业务功能前先需登录,然后才能访问业务功能。基本框架如下 详细步骤: 1 .用badboy录制登录,访问随意一个网址。 2.用jmeter打开,一会自己写的时候可...
  • u011649536
  • u011649536
  • 2015-05-14 11:04:53
  • 1455

jmeter模拟不同ip并发请求

Jmeter是 Apache 组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现。 目前版本2.3.4。 一直在用jmeter做压力测试,越来越觉得它功能强大,前段时间看有朋...
  • wanglha
  • wanglha
  • 2014-10-12 14:43:04
  • 3334
收藏助手
不良信息举报
您举报文章:JMeter实现多用户并发功能测试 - 抽奖系统实战经验
举报原因:
原因补充:

(最多只允许输入30个字)