一、概述
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
Apache jmeter 可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。
官网
https://jmeter.apache.org/
二、查看结果
1、查看结果树
可以查看每次请求发送的数据已经响应数据,绿色表示成功,红色为失败
2、聚合报表
在一个测试计划的线程组中,统计测试的样例数、成功数、失败数、失败比例等。
3、Spline Visualizer
曲线图,显示在一个线程组中,测试样例的平均耗时、最高耗时、最低耗时等
三、线程组配置
1、定时执行
如果测试计划中需要定时执行某个线程组,通过线程组中,调度器配置的启动时间和结束时间来设置。
注:如果启动时间已经过去则不会生效。另外,当同时设置了结束时间和持续时间,会按持续时间执行。以下示例中会在2018/05/29 09:11:36启动该线程组,持续执行2分钟。
四、变量参数化
1、在自动化测试中,经常有需要使用到变量的场景
五、使用函数
1、在菜单栏 → 选项 → 函数助手对话框
2、常用函数
(1)时间函数
${__time(,)} 1450056496991 //无格式化参数,返回当前毫秒时间
${__time(yyyyMMdd,)} 20151214 //返回年月日
${__time(HHmmss,)} 092816//返回时分秒
${__time(yyyyMMdd-HHmmss,)} 20151214-092816 //全
(2)更多
https://blog.youkuaiyun.com/smj811504083/article/details/64126371
六、HTTP请求
1、新建线程组
2、新建HTTP请求
填写服务器名称或IP、端口、方法、Content encoding、路径、需要发送的参数
3、添加相关监听器查看结果
七、FTP请求
1、新建线程组
2、新建FTP请求缺省值
填写服务器名称或IP、端口
3、新建FTP请求
由于上面配置了FTP请求缺省值,这里可以省略服务器名称或IP、端口
填写文件上传到远程服务器上的名称,可以使用变量,示例中使用当前时间戳作为文件名称的一部分,使每次上传的文件名称不冲突,也可以使用线程名称、线程编号等变量。
填写本地用于上传的样本文件全路径,也可以使用变量。
勾选put(STOR)和Use Binary mode
填写用户名和密码
4、添加相关监听器查看结果
八、使用HTTP cookie管理器
1、修改jmeter安装目录/bin/jmeter.properties,将CookieManager.save.cookies设置为true
CookieManager.save.cookies=true
2、重启jmeter,添加线程
3、添加HTTP Cookie管理器
4、添加用户登录HTTP请求
填写服务器名称或ip、端口、路径、参数
注:需要将系统的验证码验证去掉
修改/web/WEB-INF/config/global.xml,将loginCaptcha设置为false
<!--系统全局的配置消息,系统的一些基本配置-->
<bean class="com.gzzm.platform.commons.GlobalConfig" factory="instance">
<loginCaptcha>false</loginCaptcha>
<saltPassword>true</saltPassword>
<logoutOthers>false</logoutOthers>
</bean>
5、添加Debug Sampler
6、添加察看结果树
7、运行,查看结果树中Debug Sampler的响应数据
8、添加cookie(应该存在可以自动将Cookie添加进来的方法,尚未找到)
在HTTP Cookie管理器中将步骤7中的Cookie添加进来,如图
注:Debug Sampler响应数据中的CookieName在原有的CookieName前面加上了COOK_,在添加进HTTP Cookie管理前需要去掉。
9、添加测试HTTP请求(要求需要登录等HTTP请求)
到这里的时候,可以将用户登录的HTTP请求禁用了。在整个测试任务周期内都会将Cookie管理器中的Cookie带过去。
添加获取微信菜单分组的HTTP请求
运行,查看结果,可以正常返回数据