jmeter接口测试简记
一. Jmeter参数化方式
CSV 数据文件:适用于参数取值范围较大的数据文件。
用户参数:适用于参数取值范围很小的时候使用。
用户定义的变量:一般用于不需要随请求迭代的参数设置,如:Host、Port Number。
函数:见下面函数篇。
二. 操作数据库
安装驱动包mysql-jdbc、sqlite-jdbc、ojdbc;数据库连接池配置;添加JDBC请求;添加Degbug Sampler。
三. 关联方式
正则表达式:"dep_ name":"(.*?)”, ()截取区间,.表示任意字符,*表示出现任意次,?表示截取到第一 个结束标记。模板:$$格式;$1$表示解析到的第1个值;如果匹配有2个值,第二个值$2$,以此例推匹配数字:1代表全部取值,0代表随机取值,通常情况下填1
xpath提取器:当需要处理的页面是HTML格式时,必须勾选Use Tidy;用法同web自动化里的xpath。
jsonpath提取器:当响应数据为json时,用于提取json串里面的关键数据。$..data.user[0].id
四. 同步定时器
作用:阻塞线程,直到指定的线程数量到达后,再一起释放,模拟并发。
五. 测并发
可以用线程数,Ramp-Up Period设为0,立马发送请求,是并发,这样很耗机器性能。非0表示在该秒内发送这么多请求,不是真正并发。
加个定时器:集结了指定数量的请求后,大家再一起冲!这样给服务器的压力是最大的。
参1为0,等同于设置为线程组中的线程数,非0代表达到设置的用户(线程)后,并发执行后续操作。
参2为0,Timer将等待线程数直到达到了参1设置的数值后才执行,不够则一直等待。非0表示无论有没有达到参1的数值,只要超过这个时间都会执行。
六. 函数
格式:${__functionName(var1,var2,var3)}
常用函数:CSVRead、counter、Random、time、setProperty、property。
jmeter中函数助手time:yyyy-MM-dd HH:mm:ss:SSSS
可作为其他参数化方式的补充项,如:随机数生成的函数:${Random(,,)};生成时间戳:13015${time(/1000,)}${__Random(00,99)}
七. Jmeter分布式
场景
为了测试服务器处理批量请求能力。目前jmeter最多支持300左右的模拟请求线程(与电脑性能有关),再大的话就卡顿、无响应等情况,这是限于jmeter其本身的机制和硬件配置。分布式压测,即将大量的模拟并发分配给多台压力机,来满足这种大流量的并发请求场景。
Jmeter.properties配置
控制机:remote_hosts=127.0.0.1:1099,127.0.0.1:1100。 注意是英文逗号。
执行机:第一台server_Port=1099,第二台可设为1100。注意:那是自定义的端口号,要选择未被占用的端口号。也可以不用管,默认是1099,多台执行机的ip又不一样。
启动/设置/注意点
执行机启动分布式:windows运行bin目录下jmeter-server.bat,linux或mac运行jmeter-server,运行后勿关窗口。若是运行时修改的记得重启。
控制机:设置线程数,如500,然后点击远程全部启动。
保持高度一致:csv文件路径要一致;jmeter版本和插件要一致,执行机上Jmeter也许需要配置JDK环境变量;
八. Jmeter逻辑控制器
If控制器:条件成真,则执行控制器下所有取样器。"${name}"=="百度"。
ForEach控制器:一般和用户定义的变量一起使用,在其中读取一系列变量。输入要遍历变量前缀(user);遍历变量开始的索引,从0开始(0);遍历变量结束的索引,不包括结束索引(4);定义要被引用的变量名称(foruser)。
交替控制器:交替控制,该控制器包含的所有取样器,步骤交错执行在每个循环中。子节点里放不同的请求即可。 循环控制器:执行循环控制器内取样器指定的次数。设置循环次数,子节点里放请求即可。 仅一次控制器:该控制器下取样器只执行1次。子节点里放请求即可。
随机控制器:随机执行其下的所某个请求。子节点里放不同的请求即可。
随机顺序控制器:子节点全部执行,但顺序是随机的。
While 控制器:循环执行控制器内所有采样器,直到条件为假时,停止循环。如${VAR}:当参数VAR的值被设置成false时退出循环;${__javascript(“${VAR}”==”User1”)}:当参数VAR的值不为User1时退出循环。
Switch Controller控制器:通过给该控制器中的switch value赋值不同的取样器名字,来指定运行哪个请求。子节点里放不同的请求即可。
简单控制器:当文件夹用,子节点里放不同的请求即可。
事务控制器:会在聚合报告中生成一个事务控制器字段来测量其下测试元素的总体时间。子节点里放不同的请求即可。
九. Jmeter 图形监视器
目的:查看服务器(CPU、内存、网络、磁盘)的使用信息。
服务器:下载服务器端监听服务程序(ServerAgent-2.2.1)https://jmeter-plugins.org/wiki/PerfMonAgent/
客户端:下载标准扩展插件(JMeterPlugins-Standard-1.4.0.zip)https://jmeter-plugins.org/downloads/old/
启动服务器监听器程序(ServerAgent-2.2.1.zip)
客户端加载监听服务器组件图表(jp@gc - PerfMon Metrics Collector)
配置:下载标准插件后解压,复制JMeterPlugins-Standard.jar文件,粘贴到Jmeter的Lib目录下面的ext目录,重启Jmeter。
启动:Windows下启动startAgent.bat;Linux下启动startAgent.sh。然后在对应的线程组下添加该组件(jp@gc - PerfMon Metrics Collector),即可看到服务器(CPU、内存、网络、磁盘)的使用信息。
十. jmeter报告
jmx脚本生成jtl报告和allure报告: 指令:jmeter -n -t <jmx文件拖进来> -l<路径+命名.jtl文件> -e -o <任何存在或不存在的空文件夹> 例:jemter -n -t /Applications/apache-jmeter-5.3/bin/JmeterProjects/wsc_load_testing.jmx -l ~/a.jtl -e -o ~/b jmx脚本仅生成jtl报告: 指令:jmeter -n -t <jmx文件拖进来> -l<路径+命名.jtl文件> 例:jmeter -n -t /Applications/apache-jmeter-5.3/bin/JmeterProjects/wsc_load_testing.jmx -l ~/a.jtl jtl报告转化为allure报告: 指令:jmeter -g <jtl文件拖进来> -o <任何存在或不存在空文件夹> 例:jmeter -g ~/a.jtl -o ~/b jmx调整参数生成allure报告: 指令:在-l参数前加上-JthreadNum=100 -Jcycles=10 例:jmeter -n -t /Users/edz/apache-jmeter-5.3/bin/JmeterProjects/API-autotest.jmx -JthreadNum=100 -Jcycles=10 -l ~/a.jtl -e -o ~/b
十一. 其他功能点
Jmeter FTP服务器测试
File Transfer Protocol文件传输协议,可以根据FTP服务器进行上传和下载文件(上传、下载需要权限)。
TP请求:Remote file:上传到FTP服务器新的文件名+后缀;local file:为本地存放到本机上的路径+文件名+后缀;get(RETR):为下载文件;用户名:ftp服务器用户名;密码:ftp服务器的密码。
Jmeter Test Fragment(测试片段)
测试片段元素是控制器上的一个种特殊的线程组,它在测试树上与线程组处于一个层级。
备注:它与线程组有所不同,因为它不被执行,除非它是一个模块控制器或者是被控制器所引用时才会被执行。
作用:把单独功能脚本封装起来,待需要使用的时候,直接引用;类似于python中的函数或模块。
模块控制使用图里:测试片段被引用执行两种方式; 模块控制器可以引用执行测试片段;Include Controller控制器也可以引用和执行片段。
Jmeter 工作台-非测试元件
HTTP 镜像服务器:可以在本地临时搭建一个HTTP服务器,该服务器把接收到的请求原样返回;这样就可以看到发送出的请求的具体内容,以供调试;在http请求里,可设置它的ip和端口号。
HTTP代理服务器:HTTP代理服务器是监听浏览器代理,记录基于代理浏览器所有的请求,并以Jmeter可执行的脚本格式保存。
属性显示:以GUI图形界面显示Jmeter配置文件jmeter.properties
十二. 其他
中文乱码?
在jmeter.properties将default的值ISO-8859-1修改成utf-8;若还乱码,外观选择mental。
界面卡顿?
java硬伤,换一换主题
压力测试各种指标?
见我写的性能测试篇哦~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架