1.准备工作
服务端的功能上线之前需要进行压力测试,减少发布后生产环境出问题的概率。jmeter正是一款这样的工具。本教程是在mac上进行操作的。
1)安装java
jmeter是使用java编写的,需要安装java环境,安装jdk即可。
2)下载jmeter
???Apache JMeter - Download Apache JMeter
下载最新的tgz包,下载后解压
3)启动jmeter
进入到解压后的bin目录,终端通过sh jmeter启动jmeter,将会弹出jmeter图形操作界面
4)切换为中文
选择options->choose language–>chinese(simpsimplified)
启动后的终端窗口与jmeter的GUI窗口,都不要关闭
2.使用
2.1线程组
2.1.1创建线程组
流程为:test plan—>(右键)添加–>线程—>线程组。如下:
2.1.2 配置参数
各个参数的含义如下:
1)取样器错误后要执行的动作
- 继续:某一个请求出错,其他请求继续执行。这种选择比较符合并发量大时的实际情况,一个请求的失败不影响其他请求。
- 启动下一进程循环:遇到错误后面的请求将不再执行,等下一轮再开始执行。如线程组中包含登录和退出两个请求,登录请求失败,则退出请求不再执行,等下一次重新迭代
- 停止线程:遇到错误就停止线程。如线程组有10个线程,其中一个线程的某个请求遇到错误则该线程停止不再执行,剩下的9个线程继续执行。
- 停止测试:某个线程的某个请求出错,停止所有线程,即停止整个测试,但线程中的余下请求还是会执行完再停止。
- 立即停止测试:遇到错误立即挺住所有线程,即整个测试。
2)线程属性
- 线程数:一个线程相当于一个虚拟用户
- ramp-up时间:线程启动开始运行的时间间隔,单位秒,即所有线程在多长时间内全部启动。如线程10个,ramp-up为20s,则每秒启动2个线程,不写则默认为0,即所有线程在开启创建后理解启动
- 循环次数:每个线程的请求次数,输入1则请求1次,勾选永远则一直请求
3)延迟创建现场直到需要
- 勾选:如10个线程ramp-up为20s,则每隔2s启动一个请求
- 不勾选:测试计划开始后启动所有线程,但不立即执行下面的请求,而是所有线程就绪,但第2秒只有一个线程开始运行请求
实际运行中选择哪个不影响测试结果
4)调度器
- 持续时间:测试计划持续多长时间
- 启动延迟:点击启动按钮时,仅初始化创建,不运行线程,等待延时时间到才允许。
线程组中循环次数和持续时间同时存在时,不会执行持续时间的设置。设置持续时间时,循环次数应该勾选永远。
2.2HTTP请求
2.2.1添加HTTP请求
添加流程
线程组—》添加----》取样器----》HTTP请求。如下
2.2.2配置参数
可以将自己的url直接复制到路径里,选择http请求方式,然后在消息体数据处复制粘贴请求数据。此处我只选择了这几个。
各个参数如下:
1) web服务器
- 协议:向目标服务器发生http请求,可以是http或https,默认是http
- 服务器名称或IP:http请求发送的目标服务器或IP,可不填,一起放在路径里
- 端口号:目标服务器的端口号,http默认端口80,https默认端口443,可不填,一起放在路径里
2)http请求
- 方法:发生http请求的方法,可以选择get,post,head,put等。
- 路径:目标url路径,可以将完整的url一起放在这里
- 内容编码:编码方式,默认ISO-8859-1,一般配置utf-8
- 自动重定向:重定向自动跳转时,只针对GET和head请求,自动重定向可以自动跳转到最终目标页面,但jmeter不记录重定向过程内容(在查看结果树中只能看到重定向后的响应内容)
- 跟随重定向:重定向时,jmeter记录重定向过程内容,查看结果树种既可以看到重定向后的响应内容,也可以看到重定向钱的内容
- 使用keep-alive:默认选中。jmeter和目标服务器之间使用keep-alive进行http通信
- 对post使用multipart/from-data:当发送http post请求时,使用use multipart/from-data发送,默认不选中
- 参数:同请求一起发送参数,在请求中发送,可以在参数中的请求体数据复制粘贴请求信息
2.3添加查看结果树
1)添加
线程组上右键–>添加—>监听器—>查看结果树
2)设置
选择结果、请求和响应数据的显示类型,一般选择text或json
2.4运行
点击绿色三角启动按钮,启动
然后点击一个http请求,可以看到返回的解析和状态。
3.报告分析
线程组右键–>添加—>监听器—>汇总报告,可以进行查看