jmeter 入门一
JMeter基于Java开发,需要系统有安装JDK环境。解压后进入bin目录,点击jmeter.bat
\\参数化
Jmeter参数化有4种方法,本例仅介绍最普遍及简单的1个方法,csv文件导入配置
1、准备参数文件
2、配置CSV数据设置配置项:在线程组右键添加-->配置元件-->CSV Data Set Config
3、修改3.2.4中构造的HTTP请求:username修改为参数,从csv文件中引用
4、修改测试计划,使得脚本重复
5、运行后,即可看到结果如下:
1.2.7. 从响应结果提取内容,进行断言
上述结果,永远都会执行正确,只要请求发送成功,并没有对返回结果进行断言判断,本例介绍断言设置
1、正则表达式提取内容:从响应内容中提取内容与文件提取内容进行对比,本例采用对比的结果为:员工号
在通讯录查询的HTTP请求上右键添加-->后置处理器-->正则表达式提取器,配置如下:
关于正则表达式的规则,请自行查找文档学习,此处提取返回聂荣的员工号后,以test参数引用。
2、增加断言:以提取的员工号test和csv文件中读取的员工号进行对比,判断结果是否正确
在通讯录查询的HTTP请求上右键添加-->断言-->响应断言,配置如下:
在线程组右键添加-->sampler-->Debug Sampler:用于查看正则表达式提取的内容
3、运行后,查看结果
发现第二条参数用例执行结果失败,展开后,查看响应断言的详细信息,发现test并不匹配T123451,也就是说第二个测试人员的员工号不是T123451。
接下来我们查看详细的响应数据,看看问题到底在哪里
从上图可以看出,第二个测试人员的员工号为T12345,而不是T123451,所以断言不通过。
其实,此错误是csv文档中故意设置错误的,以验证断言的正确性。
\\
1、添加线程组:
测试计划 -> 添加 -> Threads(User) -> 线程组,添加后进入如下界面:
jmeter 发post请求
线程数:表示将模拟多少个用户进行测试。
Ramp-Up Period(in seconds):线程启动间隔,所有线程将在这个时间内依次启动。
循环次数:所有线程执行一次为一次循环。
如果线程数为200 ,循环次数为10 ,那么每个线程发送10次请求。总请求数为200*10=2000 。如果勾选了“永远”,那么所有线程会一直发送请求,直到选择停止运行脚本。
2、添加采样器:
采样器可理解为针对前面创建的线程需要做什么事情,这里以添加HTTP请求为例
1)线程组 -> 添加 -> Sampler -> HTTP请求,添加后进入如下界面:
上图为压测http的get类型接口,url中${newId}和${page}是动态参数,需要从文件中获取
服务器名或ip:填写服务器ip地址(例如:192.168.1.23)
路径:填写url接口剩余部分;
协议:向目标服务器发送http请求时的协议,可以是http或者是https,默认值为http
方法:发送http请求的方法,可用方法包括get、post、head、put、options、trace、delete等。
Content encoding:内容编码方式
路径:目标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方法发送,默认不选中。
同请求一起发送参数:在请求中发送URL参数,对于带参数的URL、jmeter提供了一个简单的对参数化的方法。用户可以将url中所有参数设置在本表中,表中的每一行是一个参数值对(对应URL中的名称 名称1=值1 )
同请求一起发送文件:在请求中发送文件,通常,http文件上传行为可以通过这种方式模拟。
2)添加CSV Data Set Config 来参数化
在d盘简历如下data.txt文件,在variable Names中输入newId,page后,在http请求中就可以通过${newId}获取到
- 1,1
- 11,1
- 111,1
3)如果是post接口,则把post数据写到parameters下面
3、添加监视器
监视器可以理解为针对结果的不同查看方式。JMeter里提供了多种结果表现形式。可通过 HTTP请求 -> 添加 -> 监视器 -> 察看结果树、聚合报告等等。
聚合报告各指标:
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
\\察看结果树
。
参数说明:
1. 名称:控制器的描述性名称,显示在左边节点上,并用于命名事务
2. 注释:控制器注释信息,非必填项
3. 文件名:载入文件名
4. Log/Display Only: 仅日志错误、Success ;勾选中显示对应的日志信息
5. Configure:定义report中自己所关心的数据项。
6. 取样器结果:
Thread Name: 线组名称
Sample Start: 启动开始时间
Load time: 加载时长
Latency: 等待时长
Size in bytes: 发送的数据总大小
Headers size in bytes: 发送头大小
Body size in bytes: 发送数据的其余部分大小
Sample Count: 发送统计
Error Count: 错误统计
Response code: 返回码
Response message: 返回消息
Response headers:返回头信息
7. 请求
数据获取方式、路径、地址等以及传递的参数、cookie
8. 响应数据
响应加载的页面html
(三)断言结果
断言结果,显示执行断言的结果信息。
根据断言设置的条件,执行显示结果。
如下图,设置的HTML Assertion中设置 警告阈值在3,执行测试程时警告值是7,在断言中会显示对样断言检查的HTTP请求有错误,并给出错误的原因,帮助修改调整执行测试。