jmeter如何定位网络延时_JMeter用户定义变量和properties变量高级使用
Jmeter有個配置元素叫做用戶自定義變量(英文名稱是UserDefinedVariables)而我們提到的vars即是Variables的簡寫。
之前我們也說到過Jmeter的腳本中(jsr223sampler或者beanshell編寫的腳本)使用varsput和varsget的操作(varsget和put的操作僅在threadgroup測試組線程中執(zhí)行,所以結(jié)果的改變也僅影響該threadGroup,所以不是跨線程組的。需要跨線程組的的變量共享則可以使用prop,vars和props的使用可見vars和props使用對比1和vars和props使用對比2)。那“用戶自定義變量”和腳本中的vars操作這2個關(guān)系是如何的呢?
1)Userdefinedvariables(用戶自定義變量)jmeter的處理是非常簡單粗暴的,不管該元素位于哪個位置,例如位于threadgroup,還是在threadgroup外面的testplan中,位于threadgroup的執(zhí)行順序的最下面還是最上面。jmeter在啟動并開始執(zhí)行腳本之前,實際上對所有的用戶配置類元素,全部初始化操作。
例如
TestPlan
? ? - User defined vars1(定義了var1=test)
? ? - threadgroup1
? ? ? ? - User defined vars2(定義var2=test2)
? ? - threadgroup2
則執(zhí)行時,Userdefinedvars1和Userdefinedvars1都執(zhí)行了初始化操作。同時threadgroup1和threadgroup2中均可以看到var1和var2.Userdefinedvars(用戶自定義變量)初始化后,會將所有的定義變量copy到每一個線程組中,所以每一個線程組都可以看到userdefindvars(用戶自定義變量)定義的參數(shù)。
2)jmeter腳本中(jsr223sampler或者beanshell編寫的腳本)的vars.put操作,例如vars.put(“var1″,”changedvar1″),僅會修改該腳本執(zhí)行的線程組的變量。
例如
TestPlan
? ? - User defined vars1(定義了var1=test)
? ? - threadgroup1
? ? ? ? - User defined vars2(定義var2=test2)
? ? ? ? - vars.put("var1","changedvar1")
? ? ? ? - Debug sampler1
? ? - threadgroup2
? ? ? ? - Debug sampler2
? ? ? ? ? ? - sleep 5秒(等待 threadgroup1 執(zhí)行完成后,用于確認threadgroup1 中的vars.put 是否對threadgroup2的vars 變量有影響)
則執(zhí)行后。
threadgroup1 中可見 var1=changedvar1 , var2=test2
threadgroup2 中可見 var1=test,var2=test2
3) 那么我們再來看下user defined vars(用戶自定義變量)元素定義的變量var和jmeter 腳本中定義var的區(qū)別。
jmeter腳本重定義var 僅在自己所屬的線程組有效,不是全局的。而 user defind vars(用戶自定義變量)定義的是全局(全局的驗證,在2部分已經(jīng)可以看到)
如
TestPlan
? ? - User defined vars1(定義了var1=test)
? ? - threadgroup1
? ? ? ? - vars.put("var1","changedvar1")
? ? ? ? - vars.put("var3","test3")
? ? ? ? - Debug sampler1
? ? - threadgroup2
? ? ? ? - Debug sampler2
? ? ? ? ? ? - sleep 5秒(等待 threadgroup1 執(zhí)行完成后,用于確認threadgroup1 中的vars.put 是否對threadgroup2的vars 變量有影響)
則執(zhí)行后,
threadgroup1 中可見 var1=changedvar1 , var3=test3
threadgroup2 中可見 var1=test
因此我們在使用user defined vars可以統(tǒng)一寫在一個地方,便于腳本的梳理。 而腳本中vars.get,vars.put 的處理僅對線程組內(nèi)有效(包括listener監(jiān)聽器中的vars.get, vars.put)。 這樣我們在腳本開發(fā)中就會更清晰和方便定位問題了。
總結(jié)
以上是生活随笔為你收集整理的jmeter如何定位网络延时_JMeter用户定义变量和properties变量高级使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RT-Thread Studio开发GD
- 下一篇: java学习(167):生产者消费者问题