Jmeter 介绍
Jmeter 是一款使用Java开发的,开源免费的,测试工具, 主要用来做功能测试和性能测试(压力测试/负载测试)。而且用Jmeter 来测试 Restful API, 非常好用。
Jmeter 是支持中文的, 启动Jmeter 后, 点击 Options -> Choose Language 来选择语言
下面来看具体使用
下面以一个简单的查询来具体操作一下
新建一个Thread Group
必须新建一个Thread Group, jmeter的所有任务都必须由线程处理,所有任务都必须在线程组下面创建。
线程组:JMeter是由Java实现的,并且使用一个Java线程来模拟一个用户,因此线程组就是指一组用户的意思,这些虚拟用户用来模拟访问被测系统。
线程组主要包含三个参数:线程数、准备时长(Ramp-Up Period(in seconds))、循环次数。
线程组常用设置:
- 线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。
- ramp-up period:设置的虚拟用户数需要多长时间全部启动。如果线程数为20 ,准备时长为10 ,那么需要10秒钟启动20个线程。也就是每秒钟启动2个线程
- 循环次数:每个线程发送请求的次数。如果线程数为20 ,循环次数为100 ,那么每个线程发送100次请求。总请求数为20*100=2000 。如果勾选了“永远”,那么所有线程会一直发送请求,直到选择停止运行脚本。
设置合理的线程数对于能否达到测试目标有决定性的影响。除了上面介绍的固定循环次数与永远外;也可以灵活的选择设定测试运行时间。勾选“调度器”,进行调度器配置。
设置:线程数为10,其它参数默认。
新建一个 HTTP Request
添加完成线程组后,在线程组上右键菜单(添加--->Sampler--->HTTP请求)选择HTTP请求。对于jmeter来说,取样器(Sampler)是与服务器进行交互的单元。一个取样器通常进行三部分的工作:
1、向服务器发送请求
2、记录服务器的响应数据
3、记录响应时间信息
我这里就是添加一个测试页面,此页面对应一个请求,这里通过一个get方法:http://127.0.0.1:9601/v1/role/list,来进行设置
一个HTTP请求有着许多的配置参数,下面将详细介绍:
名称: 本属性用于标识一个取样器,建议使用一个有意义的名称。
注释: 对于测试没有任何作用,仅用户记录用户可读的注释信息。
服务器名称或IP : HTTP请求发送的目标服务器名称或IP地址。
端口号: 目标服务器的端口号,默认值为80 。
协议: 向目标服务器发送HTTP请求时的协议,可以是http或者是https ,默认值为http 。
方法: 发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。
Content encoding : 内容的编码方式,默认值为iso8859
路径: 目标URL路径(不包括服务器地址和端口)
自动重定向: 如果选中该选项,当发送HTTP请求后得到的响应是302/301时,JMeter 自动重定向到新的页面。
Use keep Alive : 当该选项被选中时,jmeter 和目标服务器之间使用 Keep-Alive方式进行HTTP通信,默认选中。
Use multipart/from-data for HTTP POST : 当发送HTTP POST 请求时,使用Use multipart/from-data方法发送,默认不选中。
添加HTTP Head Manager
选中上一步新建的HTTP request. 右键,新建一个Http Header manager. 添加一个header
这里配置的请求头,有Content-Type,Authorization等。
添加监听器(Listener)
脚本的主要部分设置完成后,需要通过某种方式获得性能测试中的测试结果,在本例中,我们关心的是请求的响应时间。
Jmeter 中使用监听器元件收集取样器记录的数据并以可视化的方式来呈现。Jmeter有各种不同的监听器类型,因为上面添加的为HTTP请求,这里添加”查看结果树“与”聚合报告“,更为直观的查看测试结果。
添加View Results Tree(查看结果树)
View Results Tree 是用来看运行的结果的
运行测试,查看结果
我们还可以 切换到不同的模式查看结果
添加Aggregate Report(聚合报告)
添加聚合报告,右键点击线程组,在弹的菜单(添加--->监听器--->聚合报告)中选择聚合报告。
点击工具栏上的 绿色运行按钮
Label: 请求的名称,就是我们在进行测试的httprequest sampler的名称
Samples: 总共发给服务器的请求数量
Average: 单个请求的平均响应时间,单位是毫秒
Median: 50%的请求的响应时间
90%Line: 90%的请求的响应时间
95%Line: 95%的请求的响应时间
99%Line: 99%的请求的响应时间
Min: 最小的响应时间
Max: 最大的响应时间
Error%: 错误率=错误的请求的数量/请求的总数
Throughput: 吞吐量即表示每秒完成的请求数
Received KB/sec: 每秒从服务器端接收到的数据量
Sent KB/Sec: 每秒从发送到服务器端的数据量
其实到此一个简单的性能测试就完成了。
添加Assertion和Assert Results
选择HTTP Request, 右键 Add-> Assertions -> Response Assertion. 添加 Patterns To Test
然后添加一个Assetion Results 用来查看Assertion执行的结果.
选中Thread Group 右键 Add -> Listener -> Assertion Results.
运行后, 如果HTTP Response中没有包含期待的字符串。 那么test 就会Fail.
使用用户自定义变量
我们还可以在Jmeter中定义变量。 比如我定义一个变量叫 status. 使用它的时候用 ${status}
添加一个 User Defined Variables. 选中Thread Group: 右键 Add -> Config Element -> User Defined Variables.
我们添加一个变量: status
然后在Http Request中使用这个变量
这样咱们的入门测试基本就算完了,接下来看看具体压测过程。
参考:
http://www.testclass.net/jmeter/creat-performance-test