JMeter(二)详细说明
线程组
在“测试计划”上右键 【添加】-->【Threads(Users)】-->【线程组】
线程数: 表示将模拟多少个用户进行测试
Ramp-Up Period(in seconds): 线程启动间隔, 所有线程将在这个时间内依次启动。表示JMeter每隔多少秒进行并发。理解成准备时长: 设置虚拟用户需要多长时间全部启动。如果线程数是20, 准备时长为10, 那么需要10秒钟启动20个数量, 也就是每秒钟启动2个线程。
如果线程数为200, 循环次数为10, 那么每个线程发送10次请求。总请求数为200*10=2000。如果勾选了永远, 那么所有线程会一直发送请求, 直到选择停止运行脚本。
HTTP请求默认值
在线程组上右键 【添加】-->【配置元件】-->【HTTP请求默认值】
配置需要进行测试的程序协议, 地址和端口
服务器名或ip:填写服务器ip地址
协议:向目标服务器发送http请求时的协议,可以是http或者是https,默认值为http
当所有的接口测试的访问域名和端口都一样时, 可以使用该元件, 一旦服务器地址变更, 只需要修改请求默认值即可。
HTTP请求
在“线程组”右键 【添加-】->【samlper】-->【HTTP 请求】设置我们需要测试的API的请求路径和数据
路径:目标url路径(不包括服务器地址和端口)
协议:向目标服务器发送http请求时的协议,可以是http或者是https,默认值为http
方法:发送http请求的方法,可用方法包括get、post、head、put、options、trace、delete等
自动重定向:如果选中该选项,当发送http请求后得到的响应是302/301时,jmeter自动重定向到新的页面。
Use keep Alive:当该选项被选中时,jmeter和目标服务器之间使用keep-Alive方式进行http通信,默认选中
Use multipart/from-data for http post:当发送http post请求时,使用Use multipart/from-data方法发送,默认不选中
同请求一起发送参数:在请求中发送URL参数,对于带参数的URL、jmeter提供了一个简单的对参数化的方法。用户可以将url中所有参数设置在本表中,表中的每一行是一个参数值对(对应URL中的名称 名称1=值1 )
同请求一起发送文件:在请求中发送文件,通常,http文件上传行为可以通过这种方式模拟。
添加CSV Data Set Config 来参数化
如下data.txt文件,在variable Names中输入newId,page后,在http请求中就可以通过${newId}获取到
1,1
11,1
111,1
添加断言
在线程组上右键 【添加】-->【断言】-->【响应断言】
根据响应的数据来判断请求是否正常。我在这里只判断的响应代码是否为200。还可以配置错误信息
添加察看结果树
在线程组上右键 【添加】-->【监听器】-->【察看结果树】
添加Summary Report
监视器可以理解为针对结果的不同查看方式。JMeter里提供了多种结果表现形式
聚合报告各指标:
Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
#Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,单位为毫秒。当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间
Median:中位数,也就是 50% 用户的响应时间
90% Line:90% 用户的响应时间
Min:最小响应时间
Max:最大响应时间
Error%:本次测试中出现错误的请求的数量/请求的总数
Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec
会话保持
在线程组上右键 【添加】-->【配置元件】-->【httpcookie管理器】
要添加的内容我们可以在察看结果树的“请求”选项卡里面看到,里面可以看到登录需要的cookie,例如JSESSIONID,我们将JSESSIONID填入cookie管理器的参数里面,如下
需要注意的是除了名称和值, 域也是需要填的, 不然请求是不会绑定Session ID的
会抛出No Cookies的错误