测试目的
之前写了一个模拟商品秒杀的系统,一直没有实际测过并发量和超卖的问题。然而,面试的时候一直被问到这个压力测试。所以决定找个时间做这个测试,为了简单选取Jmeter。之前也一直没有使用过测试工具,就当第一次尝试吧,把使用过程中遇到的问题,整理一下。
Jmeter的使用
线程组的设置
线程数
可以大致理解为你测试时需要的并发量,需要结合Ramp-Up Period分析-
Ramp-Up Period
The ramp-up period tells JMeter how long to take to "ramp-up" to the full number of threads chosen. If 10 threads are used, and the ramp-up period is 100 seconds, then JMeter will take 100 seconds to get all 10 threads up and running.
当我们设置线程数为N时,Ramp-Up Period为X,意味着每隔X/N的时间启动一个线程,直到N个线程全部启动完成
这个时长的选取如果过小,会增加开始测试的工作负荷(短时间内启动大量的线程);如果太大,则可能出现最后一个线程还未启动,第一个线程就结束的情况 -
循环次数
the number of times to execute the test
这个参数,官网上的说明是执行这个测试的次数,默认是1;但具体的设置,现在还没找到比较确定的解释,稍后补充
测试一个秒杀操作
首先测试一个秒杀操作,来熟悉Jmeter的使用
-
首先通过谷歌浏览器获取秒杀操作的Request Headers等信息
-
在Jmeter中添加Http请求,将路径添加进去
如果是POST请求,可以在Parameters和Body Data中添加想要POST的参数信息。
-
在Jmeter中添加HTTP信息头管理器,直接将上面HTTP信息头的内容复制进去即可
之后就添加察看结果树和聚合报告,查看一次秒杀的结果就好了
批量导入cookies完成并发测试
由于我的秒杀业务逻辑是通过cookies里面的用户手机号码来跳过验证,执行秒杀的。所以我需要将cookie写入。由于需要模拟多用户并发,就需要多个手机号,并且批量导入,具体做法如下:
- 用excel产生600个随机号码,存入userPhoneCookies.txt中
-
然后在Jmeter中添加CSV数据文件设置,将userPhoneCookies.txt导入
其中,变量名称在后续设置cookie的时候要用到,我的txt是每行读取一个手机号
- 最后在HTTP信息头管理器中添加cookies信息,值设置为
killPhone=${userPhoneCookies}
最后就是查看结果了,添加察看结果树和聚合报告,运行后就能看到结果了
总结
这是第一次使用工具来测自己写的代码,对Jmeter还有很多知识没有去了解,这次测试主要目的还是先尝试这去使用测试工具,稍后会继续深入学习Jmeter,争取以后可以做更丰富的测试。