Как проверить разницу во времени в контроллере IF? - PullRequest
0 голосов
/ 29 января 2019

Я тестирую веб-приложение, в котором мне нужно генерировать идентификатор токена каждые 15 минут.

Я назначаю текущее время и текущее время + 15 минут в следующих двух переменных в сэмплере оболочки компонента.Это назначит дату и время в миллисекундах соответствующим переменным.

String StartTime = "$ {__ timeShift (,,,,)}";String EndTime = "$ {__ timeShift (,, PT15M ,,)}";

Теперь я хочу сравнить разницу во времени в контроллере IF.Если разница во времени составляет 15 минут (900000 мс), то контроллер IF должен работать для генерации идентификатора токена.

Я использовал функцию __eval, как показано ниже, в контроллере IF, который не работает.

${__eval(${EndTime})} - ${__eval(${StartTime})}  >= 900000

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Вы нарушаете JMeter Best Practices, а именно:

  1. Использование Beanshell для сценариев при , поскольку пользователям JMeter 3.1 предлагается переключиться на элементы тестирования JSR223 и язык Groovy
  2. Использование JavaScript в If Controller, в то время как в документации четко указано , что:

    Для производительности рекомендуется проверить Interpret Condition as Variable Expression и использовать __jexl3или __groovy с оценкой true или false или переменной, содержащей true или false.${JMeterThread.last_sample_ok} можно использовать для проверки успешности последнего сэмплера

  3. Вы встраиваете JMeter Functions в сценарий, который не является лучшей идеей, поскольку функция можетразрешить в то, что вызывает сбой компиляции.
  4. Я также не вижу, где вы устанавливаете соответствующие переменные JMeter, используя сокращение vars.

Принимая все вышеперечисленное:

  1. Переключитесь на JSR223 Sampler и используйте следующий код:

    def StartTime = new Date() 
    use(groovy.time.TimeCategory) {
        def EndTime = StartTime + 15.minutes
        vars.put("StartTime", StartTime.getTime() as String)
         vars.put("EndTime", EndTime.getTime() as String)
    }
    
  2. В контроллере If используется следующая функция __ groovy () :

    ${__groovy((vars.get('EndTime') as long) - (vars.get('StartTime') as long) >= 90000,)}
    

    Общая конфигурация контроллера на всякий случай:

    enter image description here

  3. Ознакомьтесь с 6 Советы для JMeter, если использование контроллера Статья, если что-то остается неясным

0 голосов
/ 30 января 2019

Используйте это выражение с Если контроллер :

${EndTime} - ${StartTime} >= 900000

Вы можете проверить мой пример плана тестирования , это работает для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...