Jmeter学习:配置原件--HTTPCookie 管理应用/HTTP 缓存管理/Counter 计数器
一、HTTPCookie 管理应用
1. 功能:通过该元件,我们可以对 URL 返回的 Cookie 进行自动设置,并用于后续请求
2. 注意:Cookie 是作用在线程级别的,不同线程的 Cookie 彼此完全独立
3. Cookie 设置规则
前提:Tread Group 配置策略采用1个线程,2次迭代。
A:无配置元件时,Cookie 不会自动设置 (与线程组设置无关)
当没有该配置原件时,第一次请求产生的Cookie不会自动带入第二次请求当中去
B:有配置元件,不选任何参数时,Cookie 自动设置 (与线程组设置无关)
这里的不选任何参数是指配置原件中以下两个选项:
当存在该配置原件时,第一次请求产生的Cookie会自动带入第二次请求当中去,即自动传递给第二次请求Request Body中Cookie Data,以此实现Cookie的传递
C:有配置元件,选上清空策略时,优先取配置元件 (每一次迭代会清空 Cookie,与线程组设置无关)
注意:这里的线程组配置特指Thread Group中的 Same user on each iteration 参数。
当勾选配置原件中的 Clear cookies each iteration? 时,不论是否勾选Thread Group中的 Same user on each iteration 参数,都会优先参照配置参数,每次迭代都会清空Cookie,即不会作为参数传在第二次请求Request Body中出现。
D:有配置元件,选择参考线程组时,看线程组设置 (分 2 种情况)
注意:这里的线程组配置特指 Thread Group中的 Same user on each iteration 参数。
此处分两种情况,区别在于勾选或不勾选 Thread Group中的 Same user on each iteration。
情况一:勾选控制器 Use Thread Group configuration to control cookie clearing参数,同时勾选Thread Group中 Same user on each iteration参数。
结论:每次迭代时,上次请求产生的cookie,会被作为参数传递给下次迭代使用。
情况二:勾选控制器 Use Thread Group configuration to control cookie clearing参数,不勾选Thread Group中 Same user on each iteration参数。
结论:每次迭代时,上次请求产生的cookie,不会被作为参数传递给下次迭代使用。
总结: Thread Group中 Same user on each iteration参数只有存在HTTP Cookie Manager控制器,且勾选控制器当中Use Thread Group configuration to control cookie clearing 参数时才会自动设置Cookie给下次迭代使用!!其他情况下该参数对结果不造成影响,不会自动设置Cookie。
4. 将Jmeter.properties 中 CookieManager.save.cookies=true 可以将 Cookie 保存为变量,名称固定以 COOKIE_开头可通过 CookieManager.name.prefix 定义,此时可通过变量名调用以保存的Cookie。
5. 另外我们可以加入一些自定义Cookie。
这里需要注意填写的方式,可以去F12-->网络-->Cookie,参考其格式进行填写,否则可能导致自定义Cookie 无法使用。举例如下:
二、HTTP 缓存管理
功能:通过该元件,我们可模拟浏览器缓存功能,注意是静态缓存(图片等)。动态缓存(json,xml)等不在范围内。
注意:开启缓存时,我们要注意 JVM 内存大小,防止内存溢出,高并发时启步 4G
参数:
前两个参数与Cookie 管理器用法相同,可参照Cookie管理器的使用规则。
最后一个参数:规则与浏览器类似,检测修改时间和 Etag 变化,判断是否对静态资源进行缓存。
HTTP缓存管理器在实战中较少应用,这里可以不做过多的了解。
三、Counter 计数器
功能:通过该元件,我们可以在迭代过程中增加计数器,一般用于统计和模拟序列等。
注意:默认为全局共享计数器
重点讲3个参数
Number format:可以自定义展示的格式,xxx_000,最后三位数字部分会被自动按照上面的规则替换,如:xxx_001,xxx_002
Exported Variable Name:自定义变量名,可以在在全局中使用
Track counter independently for each user:每个线程会按照规则单独进行计数,相互之间没有关联。