JMeter使用

简介

JMeter是使用java编写的一款开源、功能强大的测试工具。测试人员可用其进行接口、压力、web自动化、java程序测试
大神的文档链接: https://www.cnblogs.com/youngleesin/p/11042421.html

一、测试计划

右键点击测试计划,在菜单中选择
在这里插入图片描述
1、线程组可分为:
setUP线程组:最先执行的线程组(前置条件等预加载);
tearDown线程组:最后执行的线程组(配置资源卸载等);
线程组:一般线程组。
2、每一个线程组里又可以包括多个线程(请求)
3、默认状态下,各线程之间是并发执行的,没有先后顺序之分,但是将图示复选框勾选后则会使得各线程之间按照前后顺序依次执行。

二、线程组属性

JMeter中,每个线程组下可以添加若干组件,这些组件可以实现不同的功能
在这里插入图片描述
** 1、 ** 线程数:控制该线程组创建的请求的线程数量
** 2、 ** Ramp-Up时间:控制生成上述请求所耗费的时间
** 3、 ** 循环次数:控制该请求循环的次数
eg:三者分别是 5、1、1时,表示JMeter在1秒中内创建5个线程分别发起请求;
三者分别是1、1、5时,表示JMeter在1秒内循环发起5次请求。
** 4、 ** 调度器:默认禁用,使用时需要勾选。
参数1:持续时间 该线程组中请求在指定时间内持续访问
参数2:点击开始按钮后,等待指定时间后发起访问

三、线程组元件

1、HTTP信息头管理器
在进行POST、PUT等请求时,参数以json格式传输,但是直接写在HTTP请求中,浏览器并不认识,可以添加该组件,并添加 Content-Type application/json;charset=utf-8 参数即可。
2、 HTTP请求默认值配置
在这里插入图片描述
在实际测试中,一些接口的协议、IP、端口等可能是相同的,为提高复用率,可添加该组件。相应的配置会转为默认,测试中只需要配置一次即可。

四、JMeter参数化

动态地获取、设置或生成数据,是一种程序驱动代替人工的数据设计方案
一、JMeter中四种参数化实现方式:
1、用户定义的变量:该配置元件的执行顺序与在线程组中的顺序无关,在JMeter中已默认设置。用户定义的变量以键值对的形式添加,调用时以 ${变量名}的形式使用。
在这里插入图片描述
2、CSV数据文件设置:
JMeter运行post请求时,提交json格式数据时,需要添加HTTP信息头管理器
在这里插入图片描述
在这里插入图片描述
3、用户参数
用户参数是以表格的方式存储数据的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述需要注意的是,这里是线程数控制循环次数,不可以直接设置循环次数
4、函数
在JMeter中已经封装好了若干函数,直接在函数中调用即可

五、响应结果处理

1、响应结果直连数据库
JMeter无法直接连接数据库,需要导入第三方jar包
直连数据库,查询出的结果与自定义变量名之间是n 对 n的关系。比如:要查询的是id(自己自定义的变量名是cxid),但是根据SQL语句可能会查询出多个结果,这时JMeter会对自己定义的变量进行重置 ==> cxid_ 需要调用变量时,根据自己的需要,使用第几个就在变量后加几,使用第一个就写成cxid_1
2、断言
JMeter中常用的断言组件:响应断言、大小断言、断言持续时间

六、接口之间的逻辑关系
逻辑控制器与关联

1、逻辑控制器
控制取样器执行顺序的组件(分支、循环),使用时,逻辑控制器与http采样器是父子级关系
if控制器 类似 if else语句
在这里插入图片描述
1 位置填写判断条件
2 复选框勾选时,判断条件只能是true或false
forEach控制器 类似增强for循环,for i in range(0, 10)
循环控制器 循环

接口业务之关联

将上一个接口请求的响应结果作为下一个接口请求提交的数据,就是关联。
操作步骤:
A、添加取样器
B、对响应结果进行提取并赋给变量
在这里插入图片描述
C、引用变量
跨线程组关联
互相关联的线程组分处于不同的线程组时,执行就会出错,因为在JMeter线程组之间互相是独立的,不存在前后关系,而关联引用则是有先后的;其次涉及到变量的作用域问题(类似编程中的作用域)
解决办法:
在测试计划中勾选独立运行每个线程组;
扩大变量的作用域:公共空间的变量可以通过属性显示组件查看(右键测试计划 => 添加 => 非测试元件 => 属性显示)
1、使用到setProperty函数
在这里插入图片描述

2、添加BeanShell取样器,并将上述函数添加到脚本中在这里插入图片描述
在这里插入图片描述
3、调用函数:使用property函数
在这里插入图片描述
4、将上述函数写入取值中(点击生成后)
在这里插入图片描述

七、接口性能测试
性能测试概述

1、模拟各种正常的、峰值的测试环境,以测试程序各项指标能否达标
2、测试程序最大负载、系统瓶颈,提高资源利用率,用户体验
3、技术选型(选择合适的技术实现)

实现

利用JMeter中内置的定时器,可以实现时间相关的性能测试
1、同步定时器

可以实现高并发类型的性能测试。
高并发指同一时间多个用户同时访问服务器资源的情况。例如12306春节购票

具体实现
场景:某一时刻,50个人同时访问天气预报接口。统计服务器平均响应时间以及错误率。
A、搭框架:测试计划、线程组、取样器、查看结果树(这里使用该组件存在局限性更换为聚合报告组件),指定线程组属性值为50;
在这里插入图片描述
B、核心是怎样实现50个用户同时访问?添加synchronize timer(集合点组件)
该定时器运行时会想耗费一定时间将线程数创建出来,根据用户设置(分组),将创建的线程发送给服务器分批执行。需要注意的是,分组数一定要能够整除线程数,这样程序才能够执行完毕。加入创建100个线程,分组是每30个线程1组,最后会有10个线程执行不到,程序会被挂起。建议修改超时时间,等待一定时间后自动乡下进行。
在这里插入图片描述
在这里插入图片描述
C、结果查看
聚合报告组件,在性能测试里,使用结果树查看不太友好,没办法查看响应时间。这里使用该组件将结果进行汇总分析。

2、常量吞吐定时器

可以实现高频率访问服务器资源的场景。
QPS:用户访问服务器的频率。10QPS ==> 用户亿 10次 / 秒的频率访问服务器。
循环次数 = 频率 * 持续时间
具体实现
A、搭框架、测试计划、线程组、取样器、聚合报告、计算数据。
在这里插入图片描述
B、核心是添加QPS访问频率控制的相关组件
在这里插入图片描述
在这里插入图片描述
C、执行并查看结果

3、分布式性能测试
**概念:**多台测试机合作,完成测试。 比如需要模拟1万个用户同时访问服务器,但是一台设备只能创建两百线程,就可以联合多台测试机协同完成测试。
**优点:**可以提高测试效率。

基本实现
3.1 基本架构:
在这里插入图片描述
3.2 实现:
前提是已经搭建好了集群。
控制机:ApacheJemter.jar 启动
执行机:jemter-server.bat 启动
控制机需要编写脚本,所以是图形化界面,执行机只需要执行命令,所以是命令行模式

在这里插入图片描述
3.3 伪分布式:
上述是已经搭建好了分布式测试环境的情况,如果遇到没有搭建环境的情况,就需要自己来搭建分布式环境,伪分布式
A、不同测试机安装JMeter
B、配置基础环境(操作系统、JDK、JMeter等要一致)注意需要配置一下JDK和JMeter的环境变量
还有一个CLASSPATH变量值:%JMETER_PATH%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar;
C、核心是控制机与执行机的通信,即端口号
a、 为执行机设置端口号:
控制文件中添加:%JEMETER_HOME%/bin/jmeter.properties =====> server_port=端口号
b、控制机中设置执行机的IP与端口号
控制文件中添加:%JEMETER_HOME%/bin/jmeter.properties =====> remote_hosts=执行机A的IP:端口号,执行机B的IP:端口号…
在这里插入图片描述
c、控制机和执行机都需要设置远程访问相关属性:
控制文件中添加:%JEMETER_HOME%/bin/jmeter.properties =====> server.rmi.ssl.disable=true
在这里插入图片描述

JMeter作用域

作用域:作用范围,在JMeter中专指当前组件对哪些范围的取样器生效,在JMeter中,核心实现是取样器,其他组件都是以其未核心运行的,组件添加位置不同,生效的取样器也不同。
**类型1、**取样器自身,无作用域相关概念
**类型2、**以结果树为代表的的绝大多数组件实现:
最大:添加在测试计划下,对所有线程组的所有取样器生效
次之:添加在线程组下,对当前线程组内取样器生效
最小:直接添加在取样器下,对当前取样器生效
**类型3、**逻辑控制器(特殊),只对子级取样器生效

JMeter中的组件执行顺序

JMeter中不同的组件都有预定义的执行顺序(和添加位置无关)
**执行顺序:**配置元件(config elements) > 前置处理程序(Pre-processors) > 定时器(timers) > 取样器(Sampler) > 后置处理程序(Post-properssors) > 断言(Assertions) > 监听器(Listeners)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值