发布时间:2024-06-03 17:01
1、测试计划:是使用 JMeter 进行测试的起点,它是其它 JMeter测试元件的容器
2、线程组:代表一定数量的用户,它可以用来模拟用户并发发送请求。实际的请求内容在Sampler中定义,它被线程组包含。
3、配置元件:维护Sampler需要的配置信息,并根据实际的需要修改请求的内容。
4、前置处理器:负责在请求之前工作,常用来修改请求的设置
5、定时器:负责定义请求之间的延迟间隔。
6、取样器(Sampler):是性能测试中向服务器发送请求,记录响应信息、响应时间的最小单元,如:HTTP Request Sampler、FTP Request Sample、TCP Request Sample、JDBC Request Sampler等,每一种不同类型的sampler 可以根据设置的参数向服务器发出不同类型的请求。
7、后置处理器:负责在请求之后工作,常用获取返回的值。
8、断言:用来判断请求响应的结果是否如用户所期望的。
9、监听器:负责收集测试结果,同时确定结果显示的方式。
10、逻辑控制器:可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。
2.1.元件作用域
配置元件:影响其作用范围内的所有元件。
前置处理器:在其作用范围内的每一个sampler元件之前执行。
定时器:在其作用范围内的每一个sampler有效
后置处理器:在其作用范围内的每一个sampler元件之后执行。
断言:在其作用范围内的对每一个sampler元件执行后的结果进行校验。
监听器:在其作用范围内对每一个sampler元件的信息收集并呈现。
总结:从各个元件的层次结构判断每个元件的作用域。
2.2.元件执行顺序:
配置元件->前置处理器->定时器->取样器->后置处理程序->断言->监听器
注意事项:
1.前置处理器、后置处理器和断言等组件只能对取样器起作用,因此,如果在它们的作用域内没有任何取样器,则不会被执行。
2.如果在同一作用域内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序依次执行。
3.1 使用jmeter进行接口测试的基本流程
测试计划 ——> 线程组 ——> HTTP Cookie管理器——> Http请求默认值 ——>Sampler(HTTP请求) ——>断言——>监听器(查看结果树、图形结果、聚合报告等)
3.2 GET类型接口脚本编写
-> 在测试计划下建立一个线程组
测试计划在这里可以理解一个空白项目,测试计划下的线程组可以理解为用户,我们编写的脚本执行时候可以看成用户发起的请求
线程组可以看成一个用户,线程组中每一个线程都可以看成一个用户
右键测试计划 => 添加 => 线程组
注意:
setUp线程组和tearDown线程组,它们与普通线程组区别在于,setUp线程在普通线程执行前自动触发执行;而tearDown线程组在主线程结束后执行。
setUp线程组可以用于测试准备,比如用它来创建测试用户等。
Teardown线程组可以用于测试清理工作,比如删除测试用户等。
配置暂时保存默认配置就ok
注意:
(1)线程数:即虚拟用户数。设置多少个线程数也就是设置多少虚拟用户数
(2)Ramp-Up时间(秒):设置虚拟用户数全部启动的时长。如果线程数为20,准备时长为10秒,那么需要10秒钟启动20个线程。也就是平均每秒启动2个线程。
(3)循环次数:每个线程发送请求的个数。如果线程数为20,循环次数为10,那么每个线程发送10次请求。总请求数为20*10=200。如果勾选了“永远”, 那么所有线程会一直发送请求,直到手动点击工具栏上的停止按钮,或者设置的线程时间结束。
-> 创建一个HTTP请求,在线程组上右键,“新建”-“取样器”-“HTTP请求”,并把接口信息配置到组件中
服务器名称或IP:填写接口的域名或者IP(本项目部署在本机,所以写localhost)
端口号:写接口的端口号
方法:选择接口请求类型,本接口是GET类型
路径:接口的URI(URL中除去IP和端口后的部分,可以从接口文档中获取)
-> 添加查看结构树组件
查看结构树组件是用来查看HTTP请求的数据和服务端返回的响应数据,可以根据响应内容来判断接口业务是否成功。
线程组右键=>添加=>监听器=>查看结果树
-> 保存线程组并运行
点击菜单栏绿色三角图标,点击查看结果树
3.3 POST请求
3.3.1 Form 类型的post请求
主要流程是和get请求的一样,只是在配置接口信息的时候不一样
POST接口的参数是需要放在请求body中,所以接口参数需要在下方面板中按照key-value的格式进行配置
3.3.2 JSON类型的POST接口
有很多POST接口采用了JSON数据传输的方式,json数据有自己单独的格式,不是基于key=value格式的
那就是在‘消息体数据’中以json格式写入json参数
注意:脚本编写完成后,先点击清理按钮清空查看结果树中上次运行的数据