使用JMeter实现多用户功能测试 - 完成手动测试无法完成的工作

项目背景
本项目是一个抽奖活动,用户通过参加活动获得奖券,然后刮开奖券,刮开奖券的时候查询奖券是否中奖。使用手工测试去完成这个测试,需要测试人员手动产生一张奖券,然后刮开奖券,最后看在刮到多少张奖券中奖的时候来判定中奖概率,如果中奖概率在百分之一或者千分之一以内,通过手工测试可以完成,需要消耗很多时间来完成这个过程,倘若中奖概率在万分,十万分或者更少的数量级,通过手工测试来完成无疑是不现实的,需要引入自动化测试。

任务需求
1、中奖率在定义的概率范围内
2、中奖次数不得大于定义的次数
3、所有奖券的状态显示正常

自动化方案
每个步骤都对应了一个接口,通过向服务器发送请求来完成产生奖券和刮奖两个过程,引入JMeter工具,按照两个接口的顺序对服务器进行压力测试,可实现快速产生奖券并刮奖,并从后台的奖券ID来判断中奖概率。

JMeter实施过程

  1. 打开JMeter,在测试计划中新建用户定义的变量,设置三个参数,服务器地址host,服务器端口号port以及活动号activeI的
    这里写图片描述

  2. 在C盘下面新建一个t.dat的文件,文件的内容为
    这里写图片描述
    在Jmeter的函数中打开CVSRead
    这里写图片描述
    dat文件中每行代表一个用户名和用户ID,在Jmeter的选项中调出函数对话框,选择_CVSRead,在第一行中输入dat文件的路径 c:\t.dat, 第二行输入0,然后生成函数${__CSVRead(c:\t.dat,0)}, 调用这个函数的时候,0表示调用第一列的值,1表示调用第二列的值,依此类推。

  3. 配置产生奖券的接口,在测试计划下面新建一个线程组,在新建的线程组下面新建一个HTTP请求,名称设置为产生奖券。
    这里写图片描述
    从这个接口的参数中可以看到,调用CVSRead函数的userId和userName参数值的格式是上面所讲到的。

  4. 上面的接口会产生一个新的奖券ID,需要通过刮奖接口对这个奖券的ID进行判断是否中奖,也就是说刮奖
    接口需要调用产生奖券接口的应答内容中的ID,这个就需要借助正则表达式提取器来实现。
    这里写图片描述
    在产生奖券的请求下面新建一个正则表达式提取器
    在测试计划下面新建一个查看结果树
    点击绿色三件按钮执行测试,查看结果树中影响数据:{“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}}
    需要提取的是id后面的值:11566355, 正则表达式为{“id“(.+?), 匹配的是需要的值。小括号内是一个通用的正则表达式,模板是匹配正则表达式的第几个,比如正则表达式为{(.+?)“id“(.+?), 模板1是匹配前面的(.+?),模板2匹配后面的。缺省值表示没有匹配到的话,取这个默认值。

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

Jmeter工程配置完成后,保存执行一次,便可以完成一次生成奖券和刮奖的过程。如果要测试万分之一的中奖概率,在线程组中配置100个线程数,循环中输入100,就可以完成一万次抽奖,完成以后在后台中查看中奖的奖券ID便可以计算出准确的实际中奖概率。以下是测试一千万分之一的概率在后台中所看到的结果
这里写图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值