在使用Jmeter性能测试时,首先要解决的问题恐怕就会并发压测和多用登录的问题.今天就一篇文章讲清楚这两个问题的解决方案:
一.多并发压测如何配置线程?
(1)同时并发:设置线程组、执行时间、循环次数,这种方式可以控制接口请求的次数
例1:设置线程数:10设置执行时间:0设置循环次数:5
说明:使10个线程启动并同时运行也就是并发执行10个线程。10个线程为一个样本,每个样本循环执行5次,可用监听树查看线程组执行的效果,是10个一起出现
例2:设置线程数:10设置执行时间:20设置循环次数:5
说明:20秒使10个线程启动并运行,每个线程将在前一个线程启动后20/10秒后启动,也就是间隔2s执行一个线程。
10个线程为一个样本,每个样本循环执行5次;使用监听树可以看到,请求是有间隔的出现的
(2)持续压测:设置线程组、循环次数,勾选“永远”,调度器(持续时间),这种方式可以控制压测周期时间
持续压测
面试题:对登录功能进行持续24小时的压测?你打算如何处理?
调度器可以控制压测持续的时间和线程启动延迟的时间,具体如下:
对标英文版本:
Loop count:forever(永远)
Duration(seconds):持续时间
Starup delay(seconds):启动延迟时间
例:设置线程数:10设置执行时间:0设置循环次数:勾选“永远”使用调度器,设置持续时间:60
说明:10个线程同时并发执行。持续循环执行60s,不限制样本数(10个线程间隔0s并发进行)
二. 多用户登录压测参数化设置
如登录模式如下图所示,登录界面中需要输入:用户名、密码、验证码
用户名以及密码均是固定值,不需要做处理。验证码需要处理一下,可以后台配置成固定值,具体可以找开发咨询。
在此场景中,我们使用JMETER进行参数化设置,完成模拟多用户登录。
1.准备好数据,多个用户名。
新建一个txt文档,里面的数据为一行一个“username,password”,中间用逗号隔开,逗号要是英文格式的哦。
2.使用JMETER打开录制好的登录内容,如果录制的脚本中在“http请求”一栏的参数中已经有参数,但值是固定的(如下图),
3.然后现在想让值每次都不同,可如下操作:
在脚本的这个步骤上,右键添加--配置元件--CVS data set config,如下
4.然后点击添加的cvs data,做如下配置
其中,文件名为user1.txt文件存放的位置,user1.txt可先建一个文本文件,里面的数据为一行一个“username,password”,中间用逗号隔开。即步骤1中所准备的数据。
变量名可自己设定,只要后面保持一致即可,其他的按照上图设置
5.然后再http请求的参数设置处改为如下设置
这就表示每个线程都从${username}和${password}中读取值,实现了不同的用户访问。