2017-12-18 212 views
0

我在Jmeter日誌中遇到了一個問題,我一起運行10個測試,它們都有相同的步驟,但具有不同的參數。 當我檢查Jmeter日誌時,我在步驟中看到異常,但未在哪個測試中提及,那麼如何知道哪個場景正在執行此問題?Jmeter日誌不夠豐富

2017-12-18 14:56:10,223 ERROR o.a.j.e.JSR223PostProcessor: Problem in JSR223 script, Short_tt_cid 
javax.script.ScriptException: javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method substring() on null object 
    at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:158) ~[groovy-all-2.4.12.jar:2.4.12] 
    at javax.script.AbstractScriptEngine.eval(Unknown Source) ~[?:1.8.0_141] 

步驟short_tt_cid是在所有測試中,當我用它來打印ID它不是在日誌顯示, 另外的問題就是,當我運行幾個測試在一起,所以,我怎麼能知道什麼是問題?我怎樣才能讓Jmeter告訴我更多的日誌信息,例如測試名稱。我用{test_name}調用了該步驟,並且它不顯示在日誌中 問題是如果我只運行一次測試,所有測試都會通過

+0

測試名字,你的意思是測試計劃名稱? – user7294900

回答

1

您可以添加變量,即使在測試計劃水平,這將節省測試計劃文件使用功能TestPlanName功能使用它需要的時候:

${__TestPlanName} 

的TestPlanName函數返回當前測試計劃的名稱(可以包括計劃用於瞭解調用測試計劃的名稱)。

組名稱使用ctx.getThreadGroup().getName()例如:

${__BeanShell(ctx.getThreadGroup().getName())} 

將它添加到一個變量在1 User Parameters每個線程組,並使用該變量時,你需要

+0

我需要線程組名稱,因爲測試計劃是一些測試(線程組) – Bastian

+0

用於組名使用'$ {__ BeanShell(ctx.getThreadGroup()。getName())}' – user7294900

+0

我應該在哪裏使用它?如何使用它?你能否提供一步一步的解決方案? ,我把它放在每一次測試中,並且在每一步都意味着10K次?你有什麼樣的做法嗎? – Bastian

1

這不是關於JMeter,而是關於您的Groovy代碼。原因是您試圖在未定義(或空值)變量上調用substring()函數。

如果您需要這是更多的信息 - 實現是完全取決於你,可能的選項之一是把你的代碼try block,如:

try { 
    def myObj = null 
    myObj.substring() 
} 
catch (Exception ex) { 
    log.info('Problem in ' + ctx.getCurrentSampler().getName() + ' in ' + ctx.getThreadGroup().getName() + ' Thread Group') 
    throw ex 
} 

Groovy exception handling

這樣,您將有至少在Thread GroupSampler的名字jmeter.log文件中。在上面的例子ctx代表JMeterContext類的實例,看看Java文檔的詳細信息,Groovy腳本在JMeter的

所有可用的方法和字段 Apache Groovy - Why and How You Should Use It
+0

Dimitri問題是如果你有30個測試,並且他們都使用「我的採樣器」步驟,你怎麼知道他們哪個失敗了。根據你的圖片有一個線程組,如果你有30個線程組你怎麼知道哪個線程組在哪個步驟失敗 – Bastian

+0

TNX Dmitri它解決了它 – Bastian