Jmeter基础知识(一)
MAC启动Jmeter,进入到jmeter的bin目录下 ,运行以下命令
sh jmeter
2. 设置为中文版(根据个人喜好)
进入jmeter -bin目录下,找到jmeter.properties 文件,设置language=zh_CN,设置完需要重启Jmeter
3. 配置元件-Http Cookie管理器
配置元件(Config Element)用于提供对静态数据配置的支持,Http Cookie管理器可以用来对 HTTP Request Sampler 的 cookie 进行管理
如果想要Jmeter像浏览器一样,保存cookie,那么可以借助“配置元件-Http Cookie管理器”,
(1)若没有 Http Cookie管理器:
(2)当我们第一个请求,有了cookie之后,那么“Http Cookie管理器”就会保存这个cookie,给后面的请求用,就像在浏览器里的用法一样
4.断言
比较重要的断言主要有:响应断言(Response Assertion)、大小断言(Size Assertion)、持续时间断言(Duration Assertion)
(1)响应断言(Response Assertion)
①响应文本(Test Response)断言
断言内容 --相当于预期结果
响应中看到的数据 --相当于实际结果
执行脚本后,若实际结果与预期结果不一致,则断言失败
②响应代码(Response Code)断言
设置断言,假设Response Code预期应为500
实际运行结果,Response Code 为200
则断言失败
(2)大小断言(Size Assertion)
验证生成的响应的大小,以字节为单位,这也是吞吐量参数,当我们加负载的时候,若网站处理不过来时,就可能出现有的数据没有加载出来,这时的就不会返回完整的字节大小,当我们加负载时,我们也会参考这个参数,看看是否完全加载出来
(3)持续时间断言(Duration Assertion)-主要用来验证性能指标
当我们在断言中,设置为1000时,代表最大耗时不能超过1000ms
这边为了演示断言出错,持续时间故意设置比较短,方便查看效果
断言失败,并给出提示
通过“监听器-用表格查看结果”来看下这个sample的持续时间
5.接口关联(Json提取器&正则表达式提取器)
我们在进行接口测试时,一般会有业务场景的关联性,接口关联就是把应用中动态变化返回的数据获取到,把它保存为一个参数,提供给后面需要用到的地方进行使用。
最常见的比如登录的接口会返回一个token,便于之后其他接口调用时来认证身份,那么这个时候,我们就需要通过接口关联来实现参数传递,最常用的方法有两种,一个是Json提取器,一个是正则表达式提取器
(1)Json 提取器
我们先来看下登录接口返回参数中,是否能把pytoken这个值取到,其中$表示根元素,图中$.data.pyToken为Json路径表达式
然后在登录接口里添加后置处理器-json提取器,用json path表达式取到得值,放在pyToken这个变量里
N**ames of created variables** :接收值的变量名,自定义
JSON P**ath** expression**:** json path表达式
M**atch** N**o.(0 for Random):**1 代表匹配获取到的第一个值,我们这边只有一个值(0表示随机;n取第几个匹配值;-1匹配所有。若只要获取到匹配的第一个值,则填写1)
D**efault** V**alues:** 缺省值,匹配不到值的时候取该值,可写error也可不写
我们也可以使用调试取样器(Debug Sample)来查看pyToken取值是否正确
对json提取器取到的值,进行变量引用,格式为${变量名},所以此处为 ${pyToken}
(2)正则表达式提取器
运行登录接口,查看响应结果,把需要提取的数据复制出来,然后用正则表达式代替即可
"pyToken":"03d8aa93-8f52-471f-8c12-f51a692ae7b5"}}
--> 可以看到黄色部分,我们使用(.+?)进行了替代,因为黄色部分是动态变化的
说明:
. 代表:匹配换行符\n之外的任何单字符
+代表:匹配前面的子表达式一次或多次
?代表:匹配前面的子表达式零次或一次,或指明一个非贪婪限定符
关于正则表达式的语法可参考:https://www.runoob.com/regexp/regexp-syntax.html
模板(Template)--> $0$ 代表取正则表达式输入项内输入的值,$1$指取第一个括号内的内容,此处即为.+?
匹配数字(Match No.) -->若jmeter在匹配Regular Expression中的值时,匹配出了多项,那么Jmeter是不知道要取哪个值的,所以可以用来指定,比如输入1,即匹配查到的第一个值
来来来~~~一起打怪升级吧
公众号
个人微信 --> 添加请注明来意
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下