Jmeter基础知识总结

目录

Jmeter基础知识总结

一、Jmeter之请求参数的类型

二、Jmeter之http请求默认值

三、Jmeter之查看结果树

四、Jmeter配置元件之HTTP信息头管理器

五、Jmeter断言之响应断言

六、Jmeter断言之JSON断言

七、Jmeter断言之Xpath Assertion

八、Jmeter断言之BeanShell断言

九、Jmeter之用户自定义变量

十、Jmeter请求元件之参数化

十一、Jmeter之参数化函数助手_CSVRead

十二、Jmeter请求元件之函数助手randomstring

十三、Jmeter请求之正则表达式

十四、Jmeter请求元件之正则表达式提取器提取响应结果

十五、Jmeter请求元件之正则表达式提取器获取数组数据

十六、Jmeter请求元件之JSONPATH提取响应结果

十七、Jmeter请求之Cookie处理

十八、Jmeter请求之Token处理


Jmeter基础知识总结

本文主要对Jmeter基础知识点的总结。

一、Jmeter之请求参数的类型

1.参数(paramaters):键值对形式

参数名取决于接口文档中的传参

注意空格:如果报错,而且你确定你的参数值参数名没问题,检查是否带有空格

2.消息体数据(Body Data):json格式、 xml格式

3.文件上传(Files Upload):文件的上传的时候

参数的解释:

  • 文件名称:你的文件地址,给绝对地址
  • 参数名称:file
  • MIME类型:本地上传的多媒体类型,根据文件的后缀去寻找MIME类型

三个参数都是必填,否则报错。

Jmeter的坑:

参数和消息体数据只能二选一,否则报错。文件上传不影响。

二、Jmeter之http请求默认值

1.添加方式:线程组-->右键-->配置元件-->http请求默认值

2.作用:http请求默认值,会在发送http请求的时候自带这些参数,复用的一个作用。

3.疑问:http请求默认值加了之后

  • 什么时候加?----大部分http请求参数用的是同样的数据
  • 如果我加了http请求默认值之后,在单个http请求里面还填写了同样数据,那么以谁为准呢?----以自己填写的参数为准

三、Jmeter之查看结果树

1.添加方式:线程组--右键--监听器--查看结果树

2.Jmeter查看结果树的不同形式

  • CSS JQuery_Tester(CSS选择器测试):只适用于文本响应,可以根据JSoup或Jodd对响应数据进行过滤和查看。类似于xpath定位
  • HTML使用:HTML、HTML Source Formatted、HTML Download Resources
  • JSON使用:JSON、JSON Path Tester:编写方式 $.result.[“XX”]  $.result.XX-----后续可通过beanshell提取器
  • document:视图将显示从各种类型的文档中提取文本,需下载插件:Apache Tika Binary Package(tika-app-x.x.jar),并将它放在JMETER_HOME/lib目录下,可更改max_size设置足够大,安装后记得重启Jmeter
  • Regexp_Tester(正则表达式):仅适用于文本响应
  • Xpath Tester:Xpath仅适用于文本响应。上面板显示了纯文本。点击“Test”按钮,系统将应用Xpath对上面板中的文本进行查询,结果将显示在下面板中。需要掌握Xpath的定位,可通过控制台来定位。

      Jmeter基础知识总结_第1张图片

四、Jmeter配置元件之HTTP信息头管理器

什么是信息头:请求头

什么时候用?:传cookie、token或者其他信息的时候

场景设计:反爬虫添加信息头--模拟浏览器去发送请求--user-agent

范围:全局(线程组下)和局部(某个HTTP请求下)

五、Jmeter断言之响应断言

Jmeter基础知识总结_第2张图片

断言的作用和loadrunner中的检查点类似,用于检查测试中得到的响应数据是否符合预期,用以保证性能测试过程中的数据交互与预期一致。

使用断言的目的:在request的返回层面增加一层判断机制。因为request成功了,并不代表结果一定正确,所以通过断言我们可以看到请求是否真正的成功。

使用方法:

  • 给某个请求添加断言(某个http请求下-->添加-->断言→响应断言)

Jmeter基础知识总结_第3张图片

如上图所示:

Apply to选项默认即可,Main sample only(仅作用于父节点取样器)

测试字段常用的有:响应文本(对响应结果进行断言)、响应头(对响应头文件进行断言)

模式匹配规则常用的有:包括(响应结果包括断言的内容)、相等(响应结果和断言结果相同)

测试模块可以添加你需要断言的部分,如果是包括,就可以添加多个

  • 添加对应的断言结果监听器(某个线程组下-->添加-->监听器-->断言结果)

Jmeter基础知识总结_第4张图片

如果响应断言结果正确,在断言结果这里就只会返回对应的HTTP请求名称,如果失败,还会返回响应断言的结果。

六、Jmeter断言之JSON断言

JSON断言也是测试工作中经常用到的一种断言方法,它只能针对响应结果是application/json格式的请求进行断言。

Jmeter基础知识总结_第5张图片

使用方法:

  • 给某个请求添加断言(某个http请求下-->添加-->断言-->JSON断言)
  • 使用JSON断言,一般是断言某个字段值是否返回的是我们所需要的,所以需要写JSON PATH。下图使用正则模式匹配返回的结果包含40就认为响应结果满足要求,断言配置和响应结果如下图所示:

Jmeter基础知识总结_第6张图片

下图展示断言结果为常量时,如何进行断言设置,如下图所示:

Jmeter基础知识总结_第7张图片

Jmeter基础知识总结_第8张图片

  • 添加对应的断言结果监听器(某个线程组下-->添加-->监听器→断言结果)

如果响应断言结果正确,在断言结果这里就只会返回对应的HTTP请求名称,如果失败,还会返回响应断言的结果。

七、Jmeter断言之Xpath Assertion

Jmeter基础知识总结_第9张图片

定义:Xpath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。Xpath基于XML的树状结构,提供在数据结构树种找寻节点的能力。

作用对象:针对返回信息为Xpath的数据类型进行断言。

八、Jmeter断言之BeanShell断言

BeanShell断言支持各种开发语言,使用BeanShell断言的好处就是可以自由发挥,比如当断言失败,提示预期结果、实际结果、或者失败时把结果输出到日志。

使用方法:

  • 给某个请求添加断言(某个http请求下-->添加-->断言→BeanShell断言)
  • 如果使用包含匹配,只需要修改预期结果即可,预期结果需要写在双引号之间,中间的双引号需要添加\转义
  • 使用完全相等匹配,并且失败时,输出结果到日志,本次把预期结果改错,所以会输出响应结果到错误日志,代码如下:

Jmeter基础知识总结_第10张图片

Jmeter基础知识总结_第11张图片

String response = "";
String Str = {\"code\":\"401\"";                  //预期结果,需要校验的字段

response = prev.getResponseDataAsString();      //获取当前请求响应结果

if(response == ""){
    Failure = true;
    FailureMessage = "系统无响应,获取不到响应数据!";
    log.info(FailureMessage);                  //对比数据库内容和响应内容,使用euqals方法判断是否一致
}
else if(response.equals(Str) == false){         //把断言失败置为真
    Failure = true;
    String Msg = "\n系统返回响应结果与期望结果不一致!请排查是性能问题,还是程序代码问题";
    FailureMessage = Msg +"\n"+"期望结果:\n"+ Str +"\n" + "响应内容:\n" + response +"\n";
    log.info(FailureMessage);
}

九、Jmeter之用户自定义变量

1.添加方式:测试计划-->右键-->添加-->配置元件-->用户定义的变量

2.为什么会有自定义变量?----提高脚本的复用性

3.自定义变量如何引用?----${变量名}

十、Jmeter请求元件之参数化

1.txt模式

本地新建txt文档,存储数据

Jmeter基础知识总结_第12张图片

比如登录的时候需要mobliephone,pwd两个参数

Jmeter基础知识总结_第13张图片

Jmeter基础知识总结_第14张图片

在对应的登录接口下设置循环次数,会大批量跑所有用例,当然,对应的http请求下的参数可直接用${变量名}获取

2.csv模式

操作方式同txt,但是csv格式会更好用,管理更加方便

十一、Jmeter之参数化函数助手_CSVRead

1.添加方式:工具–函数助手对话框–找到__CSVRead函数

Jmeter基础知识总结_第15张图片

设置用于获取值的CSV文件,填写文件保存路径

设置CSV文件列号,需注意:CSVRead里面读取文件列是以0开始

设置成功后,执行http请求,如果有N条数据,记得设置线程数为N,循环次数为1,需注意这里和csvdata不一样的是不是设置循环次数为N,如果是设置循环次数为N代表着某个请求的取值循环了N次。

十二、Jmeter请求元件之函数助手randomstring

1.添加1个HTTP请求,设置为randomstring,以注册为例

2.添加方式:工具-函数助手对话框-找到RandomString函数

Jmeter基础知识总结_第16张图片

步骤:

1.准备好csv格式的数据

2.准备好接口,以注册接口为例

3.调用__CSVRead函数,传入对应的值

4.调用randomstring函数来设置随机的变量

5.设置线程组循环次数,查看结果${函数},如:${__RandomString(3,0123456789,)}

十三、Jmeter请求之正则表达式

1.Jmeter必备正则表达式(在线正则表达式测试)正则表达式在线验证-在线正则表达式校验工具

元字符

意义

限定符

意义

.

任意单个字符

+

匹配至少大于1次

\d

任意单个数字

匹配0次或1次

[0-9]

等价0-9

*

匹配0次或多次,贪婪匹配

[a-zA-Z]

等价所有的大小写字母

{n,}、{n,m}、{n}

匹配限定次数

十四、Jmeter请求元件之正则表达式提取器提取响应结果

如果你想在某个请求的响应结果里面拿到某个值

添加方式:线程组-->某个http请求下-->添加-->后置处理器-->正则表达式提取器

Jmeter基础知识总结_第17张图片

比如上传小文件成功后,查看响应结果:{"success":true,"code":0,"message":"","data":{"Url":"https://example.com:31333/upload?AppKey=3HQF6HWPD05SMKCKA332\u0026Signature=9ccbe68cc187671139fb7f97bd02d0df\u0026Timestamp=1691483469","Method":"POST","Header":{"Content-Type":"application/json","X-Ys-Version":"2023-05-30"},"Body":{"Path":"/4TpFKiuzKxE/common/test-mkdir/test.sim","UploadID":"4472d718-e633-472f-a35d-c6122783335e"}}}

比如我想提取UploadID的值

1.确定他的左右边界:"UploadID":"4472d718-e633-472f-a35d-c6122783335e"

2.写正则表达式:"UploadID":"([0-9a-zA-Z]{8}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{12})"

Jmeter基础知识总结_第18张图片

Jmeter基础知识总结_第19张图片

匹配数字0:代表随机   -1:所有值

3.如果想要查看正则表达式匹配的结果,可以添加调试取样器:添加--取样器–调试取样器

Jmeter基础知识总结_第20张图片

从上面截图可以看出,正则表达式提取成功啦。

注意:上述操作只提取了一个参数,如果想提取多个,可以设置多个参数

写正则表达式时:将你想要提取的参数用()括起来,()括号的作用是对数据进行分组

引用名称:你想要获取的参数名称

模板:$1$ $2$

十五、Jmeter请求元件之正则表达式提取器获取数组数据

1.找到左右边界

2.写好正则表达式

3.确定边界是唯一的,可以帮我们确定到值的

十六、Jmeter请求元件之JSONPATH提取响应结果

1.$表示根节点 .表示下一级

2.如何完成调用?---${变量名}

3.什么场景用?---json格式的数据 字典格式的键值对{"key":"value"}

4.添加方式:某个http请求下-->添加-->后置处理→JSON提取器

十七、Jmeter请求之Cookie处理

1.HTTP Cookie管理器

添加方式:线程组-->添加-->配置元件-->HTTP Cookie管理器

2.正则表达式提取器-->添加HTTP信息头管理器

  • 查看HTTP请求成功后,取样器结果中的Response headers中的Cookie信息
  • 添加方式:某个HTTP请求下(比如登录)-->添加-->后置处理器-->正则表达式提取器-->选择信息头-->取到对应的Cookie信息
  • 添加方式:线程组-->添加-->配置元件-->HTTP信息头管理器

十八、Jmeter请求之Token处理

1.HTTP Cookie管理器

添加方式:线程组-->添加-->配置元件-->HTTP Cookie管理器

2.正则表达式提取器-->添加HTTP信息头管理器

  • 查看HTTP请求成功后,取样器结果中的Response headers中的Cookie信息
  • 添加方式:某个HTTP请求下(比如登录)-->添加-->后置处理器-->正则表达式提取器-->选择信息头-->取到对应的Cookie信息
  • 添加方式:线程组-->添加-->配置元件-->HTTP信息头管理器

场景:登录–下载,下载需要用到一个token的参数值

如何确定这个问题?

  • 参数确定是否有问题
  • 是否有别的参数是自动输入的,非手动输入的,包含了数字字符大小写字母不规范的一长串,它一定是不断变化的。一般在该请求之前的某个请求的响应结果里面
  • 添加此请求,并添加一个正则表达式提取器,可获取到token信息,然后在需要传token的请求下传输值为${token}

采取的解决办法:正则表达式提取+变量引用

你可能感兴趣的:(Jmeter学习笔记,jmeter)