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个线程比较合理),循环次数勾选永远,即测试会不停执行。
这里写图片描述

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

版权声明:本文为博主原创文章,未经博主允许不得转载,如有任何问题,请与本人联系。

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

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

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

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

JMeter简单的使用(3.0+)-性能测试(压力)

JMeter简单的性能测试使用介绍

使用Jmeter进行http接口性能测试

在进行网页或应用程序后台接口开发时,一般要及时测试开发的接口能否正确接收和返回数据,对于单次测试,Postman插件是个不错的Http请求模拟工具。  但是Postman只能模拟单客...

badboy + jmeter并发性能测试

1. 软件介绍 1.1 Badboy Badboy,第一眼看见这个单词,以为是坏孩子的意思,后来一想,它是专门用来给项目找茬来的,取名为Badboy 倒是平添了几分可爱,呵呵。 ...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

ab和jmeter进行GET/POST压力测试的使用心得和比较

ab就是Apache Benchmark的缩写,顾名思义它是Apache组织开发的一款web压力测试工具,优点是使用方便,统计功能强大。 ab作为一款非常流行的压测工具,使用细节这里就不多介绍了,直接...

jmeter定时调度,持续并发,使用简介

一、安装Jmeter 1、下载Jmeter 下载地址:http://jmeter.apache.org/download_jmeter.cgi 目前最新版为2.9,其余文件如...

关于JMeter线程组中线程数,Ramp-Up Period,循环次数之间的设置概念

关于JMeter线程组中线程数,Ramp-Up Period,循环次数之间的设置概念     笔者是个刚刚踏入压力测试领域不到2个月的小菜,这里分享一下线程组中3个参数之间关系的个人见解,不喜请!喷!...

用jmeter进行多用户并发压力测试

    近日manager要求对项目进行压力测试,开始对jmeter进行了研究。jmeter是Apache一个开源项目,可对各种项目进行测试,甚至包括junit。     测试要求如下,多用户同时登陆...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JMeter实现多用户并发功能测试 - 抽奖系统实战经验
举报原因:
原因补充:

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