简单的jmeter测试性能(jmeter作为代理,获取app上请求,正则提取参数作为下一个请求输入参数)

场景:发起订单,再取消订单。测试大批量用户同时下单到服务器以及取消订单时对数据库进行操作,服务器性能问题。

PS:下单之后会返回订单号,订单号作为取消订单时的参数传入,涉及到简单的jmeter中的正则表达式取参数,以及参数获取,如果只想知道怎么获取,可直接跳转到第8步。

后台服务和数据库都在一台服务器上,下单时会有数据库操作,向数据库中插入订单数据。取消订单会更新数据库数据

1.增加线程组

image.png

2.设置jmeter为代理,录取从app上下发的请求消息

image.png

3.添加http代理之后,配置端口和选择为线程组录制


image.png

端口设置可以任意,这个一会从手机上取设置代理时,要写入这个相同的端口号,保持一致就行。点击开始,手机上设置完代理之后就会录取手机上的请求消息了,录完之后停止,要不然会一直拦截到请求。

4.手机上设置代理(手机和电脑连接同一个wifi)

地址写电脑IP地址,端口写上一步设置的端口

5.手机上去操作,一直点击到要测试性能的步骤(比如要测试下单购买时,下单时大批量性能,那就在手机上点击一直到购买)

6.点开jmeter线程组前面的三角,打开子菜单,发现已经将要录制的请求录好了。

image.png

因为手机上有多种软件,有可能也将其他软件的请求也抓取到了,删除不用的请求消息,只保留要测试的部分。

image.png

7.增加结果树,能看到发送请求响应信息

image.png

监听这有很多可以增加,第二个聚合报告可以查看到发送许多请求时的失败率,多线程测试时也需要添加上

8.先运行一次,查看各个请求的响应是否正常,也可以查看到各个请求的请求参数。由于我这个订单号是下单请求返回的参数,取消订单时就需要用到,所以要获取这个参数。直接录制的参数是个确定的值,肯定不行

image.png

9.下单请求(要获取响应中参数作为请求参数的那个请求)上添加正则提取器

image.png

10.编辑正则提取参数

image.png

变量名:自己去取变量名,后面调用时用到。

真正则表达式的书写,可以根据需要网上搜。我要取得是orderNo值,所以先定位到orderNo,小括号()表示提取,也就是说对于你想要提取的内容要用它括起来。取得值就是括号中括起来得值:"orderNo":"(.*?)"。

模板:1 模板是使用提取到的第几个值。因为可能有多个值匹配,所以要使用模板。从1开始匹配,依次类推。这里只有一个,所以使用1即可。

匹配数字表示如何取值(网上查资料,有些-1代表全部取值,有些是1代表全部取值)。这个其实是跟后面调用时参数怎么写有关。比如这块填写了1,那后面调用这个参数时就要写成{orderNO},能取到参数值,但是这块如果写成-1,那么后面去取这个参数时,就要写成{orderNO_1},对这块还是比较模糊,哪位要是明白这块,也欢迎给解惑啊,谢谢。

11.获取到的参数作为请求,直接调用

image.png

这块说一下,因为我第一次写的时候,直接就只写了参数调用${orderNO},然后调用查看响应,发现报错了

image.png

查看请求消息,发现订单号是个字符串类型的,直接写成${orderNO},会只取值,并不会给其加上双引号,所以再调用时要加上双引号。

image.png

所有的都设置好之后,再调用一次,看下每个请求的响应是不是正常,正常时,就可以设置线程数去跑性能了。


image.png

别忘了添加聚合报告,能查看到出错率。

image.png
image.png

推荐阅读更多精彩内容

  • Version:1.0StartHTML:000000201EndHTML:000144424StartFragm...
    甜甜圈也Crazy阅读 1,373评论 0 10
  • 性能测试 应用:负载测试,压力测试,并发测试,(非性能测试:但是jmeter能做接口测试) 负载测试: 在一定的软...
    HSome_Hin阅读 659评论 0 6
  • 1 Jmeter安装配置 使用Jmeter前首先要安装JDK,配置JDK环境变量。Jmeter不需要安装,下载后...
    茶小汐阅读 1,900评论 0 8
  • 一、使用jmeter函数助手 启动jmeter后,可以在JMeter的选项菜单中找到函数助手对话框(快捷键:Ctr...
    驕傲的兎孒阅读 628评论 0 3
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 6,197评论 1 20