一, JMeter工具介绍:
1,添加测试计划:
什么是测试计划(Test plan)?
就是压测的一个流程,比如压测什么接口,并发多少用户,协议等等,在测试计划下面配置线程组,采样器,监听器等组件
2, 添加线程组:
添加线程组(右键 “Text Plan”, 在弹出的菜单栏选择 “Add->Threads(Users)->Thread Group”)
什么是线程组(Thread Group)?
线程组就是模拟多少用户并发访问你的应用,这个组里面共有多少用户
参数说明:
线程数:虚拟用户数。一个虚拟用户占用一个进程或线程
准备时长(Ramp-Up Period(in seconds)):全部线程启动的时长,比如100个线程,20秒,则表示20秒内100个线程都要启动完成,每秒启动5个线程
循环次数:每个线程发送的次数,假如值为5,100个线程,则会发送500次请求,可以勾选永远循环
2.1 设置线程组参数
Number of Threads (users), 即并发用户数
Loop Count:循环请求次数, 即每个线程请求多少次
2, 添加采样器(添加一个http请求)
鼠标右键点击线程组(Thread Group)->添加(Add)->Sampler->http请求
什么是采样器(Sampler)?
真正干活的组件,采样器里面配置你要压测的接口,协议,参数等
可以创建各种采样器,如Http请求,FTP请求,JDBC压测数据库请求,JMS等,对应的采样器有不同的配置
以http请求采样器为例
名称:采样器名称,一般是接口名称,方便后续进行区分,比如“login接口”
注释:采样器的描述,方便别人理解,类似压测接口描述
web服务器配置
协议:压测的协议,比如“http”或者"https",默认为http
服务器名称或IP:压测目标机器的端口或者服务器IP地址,比如 www.xdclass.net
端口号:压测目标机器的端口号,比如 8080
HTTP请求配置
方法:http的请求方法,常用的有GET,POST,PUT,DELETE,PATCH等
路径:压测的接口的URL,比如 /api/v1/users
Content encoding:是否进行内容编码
自动重定向:http有302状态码返回的时候,重定向,但不会产生记录,不可以做关联请求,比如比如第二个请求要用到第一个请求的数据,则选择自动重定向无法做关联
跟随重定向:会产生记录,可以做关联,默认勾选这个
Use multipart/from-data for HTTP POST :当发送POST请求时,使用Use multipart/from-data方法发送,默认不选中。
parameters:参数配置
Body data:json格式参数配置,这个要添加http信息头管理器(在配置元件里面添加)
Files Upload:文件上传配置
4,配置http请求(在http请求中输入服务器名称,端口、路径、参数)
说明:
1、 请求接口名称
2、 请求服务器地址
3、 请求服务器端口
4、 选择请求方法(postget)
5、 请求接口路径
6、 添加参数
7、 请求协议:默认为http协议
5,添加运行结果分析监听器(运行,查看结果)
右键线程组 “Thread Group”,选择监听器à观察结果数、聚合报告、图形结果
什么是结果树?
测试的结果查看,可以看到请求发送的url,http参数,返回结果,返回的整个响应,然后如果有断言或者调试,可以看到断言是否通过等等
如果不添加结果数,则点击开始按钮,具体响应我们无法知道,所以需要添加结果数,
一来是方便调试测试脚本,看请求参数,路径是否正常
切换到结果数查看页面,点击开始按钮就可以进测试,边测试可以边看到请求的结果。
点击, 菜单栏中的绿色按钮, 执行测试:
看下图的执行结果,请求数、响应时间,错误率、吞吐率等得出测试结论。
聚合报告
总结:我们按照如上步骤设置好参数后,对应用进行了并发测试(测试时保持了测试机器和服务器同一个内网网段),第一次模拟100个用户并发请求(请求需要通过查询具有1000条数据的数据表)持续执行10分钟,偏移保持在100以下,第二次模拟200个用户,偏移还是保持在100以下,第三次模拟350个用户时,偏移则保持在100左右。而且服务器CPU状态良好,使用率一直保持在20%左右,最高不超过25%。为什么服务器CPU的使用率没有达到很高的情况下,而偏移会越来越高呢,我猜测可能跟Tomcat没进行优化有关。最后我们认为该应用的并发量大概是在350-400之间