Джметр | Нагрузка не генерируется при повторном использовании сценариев Jmeter3.0 в более новой версии Jmeter 5.x

У нас есть план тестирования JMX, который отлично работает с версией Jmeter 3.0. Но когда мы пытаемся запустить те же сценарии (режим Nongui) в более новых версиях Jmeter 5.x, загрузка не генерируется, и я не вижу никаких ошибок в журнале Jmeter.

На первый взгляд кажется, что значения количества потоков не извлекаются в режиме без графического интерфейса пользователя из файла user.properties, и, следовательно, нагрузка не генерируется. Но в режиме графического интерфейса я вижу, что значения загружаются правильно. Эти же скрипты отлично работают в версии Jmeter3.0.

Платформа\ОС: Ubuntu 14 и Centos 7

Любая помощь\предложения будут высоко оценены. Пожалуйста, дайте мне знать, если потребуется какая-либо дополнительная информация!

Приставка:

Режим без графического интерфейса

Вот план JMX

Пользовательские переменные

    <?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.4.1">
  <hashTree>
    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Release6 Test Plan" enabled="true">
      <stringProp name="TestPlan.comments">Release 4 test scripts reused</stringProp>
      <boolProp name="TestPlan.functional_mode">false</boolProp>
      <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
        <collectionProp name="Arguments.arguments">
          <elementProp name="rampup" elementType="Argument">
            <stringProp name="Argument.name">rampup</stringProp>
            <stringProp name="Argument.value">${__property(rampup)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="loops" elementType="Argument">
            <stringProp name="Argument.name">loops</stringProp>
            <stringProp name="Argument.value">${__property(loops)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="inputDataFolder" elementType="Argument">
            <stringProp name="Argument.name">inputDataFolder</stringProp>
            <stringProp name="Argument.value">${__property(inputDataFolder)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="outputResultsFolder" elementType="Argument">
            <stringProp name="Argument.name">outputResultsFolder</stringProp>
            <stringProp name="Argument.value">~/${__property(outputDataFolder)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="version" elementType="Argument">
            <stringProp name="Argument.name">version</stringProp>
            <stringProp name="Argument.value">1.0</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="timesToSearch" elementType="Argument">
            <stringProp name="Argument.name">timesToSearch</stringProp>
            <stringProp name="Argument.value">${__property(timesToSearch)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="pagesToBrowse" elementType="Argument">
            <stringProp name="Argument.name">pagesToBrowse</stringProp>
            <stringProp name="Argument.value">${__property(pagesToBrowse)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="itemsAddToCart" elementType="Argument">
            <stringProp name="Argument.name">itemsAddToCart</stringProp>
            <stringProp name="Argument.value">${__property(itemsAddToCart)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="additionalthinkTime" elementType="Argument">
            <stringProp name="Argument.name">additionalthinkTime</stringProp>
            <stringProp name="Argument.value">${__property(additionalthinkTime)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="rampupMultiplier" elementType="Argument">
            <stringProp name="Argument.name">rampupMultiplier</stringProp>
            <stringProp name="Argument.value">${__property(rampupMultiplier)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="durationTime" elementType="Argument">
            <stringProp name="Argument.name">durationTime</stringProp>
            <stringProp name="Argument.value">${__property(durationTime)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="formId" elementType="Argument">
            <stringProp name="Argument.name">formId</stringProp>
            <stringProp name="Argument.value">Report-Graffiti-Form</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="homeThreads" elementType="Argument">
            <stringProp name="Argument.name">homeThreads</stringProp>
            <stringProp name="Argument.value">${__javaScript(${__property(threads)}*${__property(homeThreads)})}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="categoryThreads" elementType="Argument">
            <stringProp name="Argument.name">categoryThreads</stringProp>
            <stringProp name="Argument.value">${__javaScript(${__property(threads)}*${__property(categoryThreads)})}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="productThreads" elementType="Argument">
            <stringProp name="Argument.name">productThreads</stringProp>
            <stringProp name="Argument.value">${__javaScript(${__property(threads)}*${__property(productThreads)})}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="checkoutThreadsRG" elementType="Argument">
            <stringProp name="Argument.name">checkoutThreadsRG</stringProp>
            <stringProp name="Argument.value">${__javaScript(${__property(threads)}*${__property(checkoutThreadsRG)})}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="checkoutThreadsRB" elementType="Argument">
            <stringProp name="Argument.name">checkoutThreadsRB</stringProp>
            <stringProp name="Argument.value">${__javaScript(${__property(threads)}*${__property(checkoutThreadsRB)})}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="checkoutThreadsSUT" elementType="Argument">
            <stringProp name="Argument.name">checkoutThreadsSUT</stringProp>
            <stringProp name="Argument.value">${__javaScript(${__property(threads)}*${__property(checkoutThreadsSUT)})}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="registrationThreads" elementType="Argument">
            <stringProp name="Argument.name">registrationThreads</stringProp>
            <stringProp name="Argument.value">${__javaScript(${__property(threads)}*${__property(registrationThreads)})}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="searchThreads" elementType="Argument">
            <stringProp name="Argument.name">searchThreads</stringProp>
            <stringProp name="Argument.value">${__javaScript(${__property(threads)}*${__property(searchThreads)})}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="RelationshipThreads" elementType="Argument">
            <stringProp name="Argument.name">RelationshipThreads</stringProp>
            <stringProp name="Argument.value">${__javaScript(${__property(threads)}*${__property(RelationshipThreads)})}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="anonymousBillPayThreads" elementType="Argument">
            <stringProp name="Argument.name">anonymousBillPayThreads</stringProp>
            <stringProp name="Argument.value">${__javaScript(${__property(threads)}*${__property(anonymousBillPayThreads)})}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="registeredUserBillPayThreads" elementType="Argument">
            <stringProp name="Argument.name">registeredUserBillPayThreads</stringProp>
            <stringProp name="Argument.value">${__javaScript(${__property(threads)}*${__property(registeredUserBillPayThreads)})}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="myaccountThreads" elementType="Argument">
            <stringProp name="Argument.name">myaccountThreads</stringProp>
            <stringProp name="Argument.value">${__javaScript(${__property(threads)}*${__property(myaccountThreads)})}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="TestPlan.user_define_classpath"></stringProp>
    </TestPlan>
    <hashTree>
      <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true">
        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
          <collectionProp name="Arguments.arguments"/>
        </elementProp>
        <stringProp name="HTTPSampler.domain">${server}</stringProp>
        <stringProp name="HTTPSampler.port">${securePort}</stringProp>
        <stringProp name="HTTPSampler.protocol">https</stringProp>
        <stringProp name="HTTPSampler.contentEncoding"></stringProp>
        <stringProp name="HTTPSampler.path"></stringProp>
        <stringProp name="HTTPSampler.concurrentPool">6</stringProp>
        <stringProp name="HTTPSampler.connect_timeout"></stringProp>
        <stringProp name="HTTPSampler.response_timeout"></stringProp>
      </ConfigTestElement>
      <hashTree/>
      <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
        <collectionProp name="CookieManager.cookies"/>
        <boolProp name="CookieManager.clearEachIteration">true</boolProp>
        <boolProp name="CookieManager.controlledByThreadGroup">false</boolProp>
      </CookieManager>
      <hashTree/>
      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
        <collectionProp name="HeaderManager.headers">
          <elementProp name="Accept-Language" elementType="Header">
            <stringProp name="Header.name">Accept-Language</stringProp>
            <stringProp name="Header.value">en;q=0.8,en-us;q=0.5</stringProp>
          </elementProp>
          <elementProp name="Accept" elementType="Header">
            <stringProp name="Header.name">Accept</stringProp>
            <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
          </elementProp>
          <elementProp name="Keep-Alive" elementType="Header">
            <stringProp name="Header.name">Keep-Alive</stringProp>
            <stringProp name="Header.value">115</stringProp>
          </elementProp>
          <elementProp name="User-Agent" elementType="Header">
            <stringProp name="Header.name">User-Agent</stringProp>
            <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1</stringProp>
          </elementProp>
          <elementProp name="Accept-Encoding" elementType="Header">
            <stringProp name="Header.name">Accept-Encoding</stringProp>
            <stringProp name="Header.value">gzip, deflate</stringProp>
          </elementProp>
          <elementProp name="Accept-Charset" elementType="Header">
            <stringProp name="Header.name">Accept-Charset</stringProp>
            <stringProp name="Header.value">utf-8;q=0.7,*;q=0.7</stringProp>
          </elementProp>
          <elementProp name="" elementType="Header">
            <stringProp name="Header.name">Content-Type</stringProp>
            <stringProp name="Header.value">application/xml</stringProp>
          </elementProp>
        </collectionProp>
      </HeaderManager>
      <hashTree/>
      <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="CSV Setup" enabled="true">
        <stringProp name="delimiter">,</stringProp>
        <stringProp name="fileEncoding"></stringProp>
        <stringProp name="filename">${inputDataFolder}initializationSetup.csv</stringProp>
        <boolProp name="quotedData">false</boolProp>
        <boolProp name="recycle">true</boolProp>
        <stringProp name="shareMode">shareMode.all</stringProp>
        <boolProp name="stopThread">false</boolProp>
        <stringProp name="variableNames">server,port,securePort,path</stringProp>
        <boolProp name="ignoreFirstLine">false</boolProp>
      </CSVDataSet>
      <hashTree/>

person Vivek Ramakrishnan    schedule 26.05.2021    source источник


Ответы (1)


Вот как выглядит план тестирования для меня (учитывая, что я добавляю недостающие закрывающие теги </hashTree> и </jmeterTestPlan>)

Как видите, пробников вообще нет, поэтому ваш план тестирования не делать что-либо, будь то неполное или сломанное или что-то еще.

Мы не можем предоставить какую-либо помощь\предложения, не ознакомившись с полным планом тестирования и полным журналом jmeter (желательно с включен уровень отладки корневого регистратора), поэтому я могу только порекомендовать:

  • проверьте свой план тестирования в JMeter 3.0, одновременно просматривая журнал изменений и проверяя наличие несовместимых изменений применимы
  • если вы используете какие-либо плагины JMeter — убедитесь, что такие же плагины установлены в JMeter 5.4.1.
person Dmitri T    schedule 26.05.2021
comment
Спасибо @Dmitri T за ответ. Я не смог прикрепить полный план тестирования из-за ограничения текста. Вот план тестирования: drive.google.com/drive/folders/ - person Vivek Ramakrishnan; 28.05.2021