一、简介
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使用了。