jmeter的技术分享

一. JMeter介绍

Apache JMeter是Apache组织开发的基于Java的压力测试工具。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

二. JMeter安装

1. 安装JDK

参考官网

2. 安装JMeter

直接访问官网下载编译好的版本。

解压(建议至/Applications 目录)后目录结构如下图:

添加环境变量

打开 ~/.bash_profile文件

添加以下指令:

export JMETER_HOME=/Applications/apache-jmeter-5.3/bin

export PATH=$JMETER_HOME:$PATH:.

执行source ~/.bash_profile使环境变量生效

执行jmeter -v出现下图内容则安装成功

三. 启动JMeter

执行jmeter,将启动JMeter,在终端会有如下输出:

在输出中提示不能使用图形界面进行负载测试,只能创建和调试测试计划,负载测试需要执行如下命令:

jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]

另外提示需要增加JVM的Heap配置去满足自己的测试需求。

在终端启动JMeter后会自动打开图形界面,如下图:

可操作菜单Options => Choose Language => Chinese 进行中文语言的切换:

四. 创建测试计划

点击文件=》新建,创建测试计划。

右键“测试计划”,选择“添加=》线程=》线程组”

3.设置线程数为“60”

右键“线程组”,选择“添加=》取样器=》http请求”

设置http请求的路径为http://localhost:8080

右键“线程组”,选择“添加=》断言=》响应断言”

设置响应代码为200

右键“线程组”,选择“添加=》监听器=》观察结果树”

点击顶部的执行按钮(绿色三角符),验证执行结果,在观察结果树可看到执行的记录

10.点击保存,测试计划创建完成

五、关联

在某些业务场景中b接口需要的内容是a接口返回的,对a接口设置正则表达式,提取想要的值,在b接口中引用。

使用关联首先在取样器下添加-后置处理器-正则表达式提取器

引用名称:即变量名称,调用方法与变量一致,即${引用名称}

正则表达式:根据上下文获取需要的数据,()内的数据即变量的数据,()左边两边是你取值的边界

模版:表示将解析到的第几个值赋予给引用名称,需要用$$引用起来

匹配数字:如果你的模版匹配到了多个值,0代表随机,1代表全部,如果你想使用匹配到的第一个值,即${引用变量_g1},第二个值即${引用变量_g2}

缺省值:如果没有匹配到的默认值。

六、参数化

1.添加配置元件-csv数据文件设置

2.参数化文件使用CSV文件,即逗号分隔值,

文件名:填写参数化配置文件绝对的地址

变量名称,即每一列数据的变量名

遇到文件结束符再次循环,http请求结束后继续执行下一组数据

七. 运行测试计划

执行命令 jmeter -n -t /Users/lufei/jmeter脚本目录/PC区域管理模块.jmx -l result.txt -e -o report

Test_plan.jmx:测试计划文件

result.txt:测试记录

report:测试报告保存目录

输出如下则执行成功

八. 看懂测试报告

进入至report目录,用浏览器打开index.html

中间Statistics部分是聚合报告,测试报告的主要指标集中在这一部分,下面是指标的详细说明:

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

你可能感兴趣的:(jmeter的技术分享)