JMeter при сбое контроллера - PullRequest
0 голосов
/ 11 марта 2020

Я хочу иметь возможность выполнять несколько итераций этого плана тестирования.

Thread Group
While ${__javaScript("${user}" != "<EOF>",)}
  csv1 config
  If "${user}" != "<EOF>"
    Module Controller

While ${__javaScript("${user2}" != "<EOF>",)}
  csv2 config
  If "${user2}" != "<EOF>"
    Module Controller 2

Когда я запускаю тест, в конце 2-го контроллера while он выдает следующую ошибку: Я также попытался запустить только один из контроллеров while, и у него тот же ответ. Я не уверен, почему он не останавливает текущую итерацию и не запускает новую, если он может добраться до 2-го пока контроллера.

java.lang.StackOverflowError: null
    at java.lang.Class.getDeclaredFields0(Native Method) ~[?:1.8.0_231]
    at java.lang.Class.privateGetDeclaredFields(Unknown Source) ~[?:1.8.0_231]
    at java.lang.Class.getDeclaredField(Unknown Source) ~[?:1.8.0_231]
    at jdk.nashorn.internal.runtime.Context$ContextCodeInstaller$1.run(Context.java:209) ~[nashorn.jar:?]
    at jdk.nashorn.internal.runtime.Context$ContextCodeInstaller$1.run(Context.java:204) ~[nashorn.jar:?]
    at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_231]
    at jdk.nashorn.internal.runtime.Context$ContextCodeInstaller.initialize(Context.java:204) ~[nashorn.jar:?]
    at jdk.nashorn.internal.codegen.CompilationPhase$InstallPhase.transform(CompilationPhase.java:508) ~[nashorn.jar:?]
    at jdk.nashorn.internal.codegen.CompilationPhase.apply(CompilationPhase.java:624) ~[nashorn.jar:?]
    at jdk.nashorn.internal.codegen.Compiler.compile(Compiler.java:655) ~[nashorn.jar:?]
    at jdk.nashorn.internal.runtime.Context.compile(Context.java:1317) ~[nashorn.jar:?]
    at jdk.nashorn.internal.runtime.Context.compileScript(Context.java:1251) ~[nashorn.jar:?]
    at jdk.nashorn.internal.runtime.Context.compileScript(Context.java:627) ~[nashorn.jar:?]
    at jdk.nashorn.api.scripting.NashornScriptEngine.compileImpl(NashornScriptEngine.java:535) ~[nashorn.jar:?]
    at jdk.nashorn.api.scripting.NashornScriptEngine.compileImpl(NashornScriptEngine.java:524) ~[nashorn.jar:?]
    at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:402) ~[nashorn.jar:?]
    at jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:155) ~[nashorn.jar:?]
    at org.apache.jmeter.functions.JavaScript.executeWithNashorn(JavaScript.java:142) ~[ApacheJMeter_functions.jar:5.1.1 r1855137]
    at org.apache.jmeter.functions.JavaScript.execute(JavaScript.java:103) ~[ApacheJMeter_functions.jar:5.1.1 r1855137]
    at org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:136) ~[ApacheJMeter_core.jar:5.1.1 r1855137]
    at org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:111) ~[ApacheJMeter_core.jar:5.1.1 r1855137]
    at org.apache.jmeter.testelement.property.FunctionProperty.getStringValue(FunctionProperty.java:101)
...

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 12 марта 2020

Я не знал, как работают контроллеры L oop, но я использовал их для решения этой проблемы.

Thread Group
  Throughput Controller 
    Loop Controller (size_of_csv)
      csv config
      Module Controller
    Loop Controller 2(size_of_csv 2)
      csv 2 config
      Module Controller 2
0 голосов
/ 11 марта 2020
  1. Возможно, это связано с тестовыми данными, проверьте последние строки вашего 2-го файла CSV, может быть пустая строка или непечатный символ, который вызывает ошибки.
  2. Начиная с JMeter 3.1 рекомендуется использовать тестовые элементы JSR223 и язык Groovy для сценариев , поэтому рассмотрите возможность перехода на __ groovy () функцию в Контроллеры «Пока» и «Если». Эквивалентное Groovy выражение будет:

    ${__groovy(!vars.get("user2").equals("<EOF>"),)}
    

    , где vars - сокращение для JMeterVariables экземпляр класса, посмотрите Top 8 JMeter Java Классы, которые вы должны Используйте статью Groovy для получения дополнительной информации об этом и других ярлыках API JMeter

  3. Также рекомендуется всегда использовать последнюю версию JMeter , поэтому рассмотрите возможность перехода на JMeter 5.2.1 (или какая-либо самая последняя стабильная версия JMeter, доступная по адресу JMeter Downloads page)
...