怎么使用JMeter进行性能测试?

时间:2024-04-23 09:20:41

一、简介

JMeter是Apache软件基金会下的一款开源的性能测试工具,完全由Java开发。它专注于对我们应用程序进行负载测试和性能测量,最初设计用于web应用程序,现在已经扩展到其他测试功能,比如:FTP、Database和LDAP等。

Apache JMeter可以用来测试静态和动态资源,以及Web动态应用程序。它可以用来模拟对服务器,一组服务器,网络或对象施加重负载,以测试其强度或分析在不同负载类型下的整体性能。

二、下载

jmeter官网:https://jmeter.apache.org/

下载到本地后解压,配置环境变量即可使用。

JMETER_HOME

三、配置

1. 新建线程组

测试计划 -> 添加 -> 线程(用户)-> 线程组

2. 添加HTTP请求

也就是添加要测试的接口,一个线程组内可以添加多个HTTP请求。

线程组 -> 添加 -> 取样器 -> HTTP请求

3. 添加HTTP信息头管理器

线程组 -> 添加 -> 配置元件 -> HTTP信息管理头

HTTP信息管理头主要是用来配置我们的header里面的信息,比如用户登录成功后拿到access_token后,需要提供给后续的接口用来测试。

我们在建好的HTTP信息管理头内,放入我们的access_token配置,这里的值等用户登录成功拿到access_token后填充。

4. 添加登录请求

5. 添加后置处理器,获取access_token

登录请求 -> 添加 -> 后置处理器 -> JSON提取器

 

6.配置其它请求验证是否取到token

以查询所有客户信息为例

在请求之前我们先创建一个结果树,方便发起请求。

线程组 -> 添加 -> 监听器 -> 查看结果树

7.配置线程组信息

线程数就是并发的的意思。

线程数1,循环次数100次,就是一个用户循环请求100次

线程数50,循环10次,就是50个用户,每个用户循环调用10次

8.不同线程组怎么共享变量

之前我们通过登录获取token,并且给其它测试接口使用,是发生在同一线程组内的,如果不同的线程组就会获取不到token了。

如下图所示,新建一个线程组2,并创建一个HTTP请求,线程组1进行登录,返回token,在线程组2内拿不到。

要想跨线程组共享变量,就需要使用BeanShell后置处理器,将access_token设为全局变量。

线程组1 -> 添加 -> 后置处理器 -> BeanShell 后置处理程序

${__setProperty(token,${access_token},)};

在线程组中设置为全局变量后,在线程组2中的HTTP信息管理头中,获取全局变量。

${__P(token,)}

最后,在测试计划处设置独立运行每个线程组

全部设置完成后,我们来跑一把。

可以看到线程组2中的HTTP请求,已经可以拿到全局的token使用了。