0

Я полный новичок с JMeter. Я пытаюсь использовать JMeter для подключения к веб-приложению, развернутому в Tomcat, для имитации небольшого числа пользователей, регистрирующих и просматривающих страницу.Tomcat и JMeter, генерирующие HTTP 404 ошибки

Когда я запустил план тестирования, журнал JMeter показал серию сообщений HTTP 404, указывающих на то, что где-то была проблема связи.

Следующая ссылка показывает HTTP по умолчанию плана тестирования по:

alt text http://www.dcs.bbk.ac.uk/~martin/uploads/HTTP_Defaults.PNG

С двух простых запросов HTTP, чтобы следовать.

Первый запрос должен позволить пользователям войти в систему:

alt text http://www.dcs.bbk.ac.uk/~martin/uploads/Login.PNG

И второй запрос должен позволить вновь зарегистрированных пользователей, чтобы просмотреть страницу:

alt text http://www.dcs.bbk.ac.uk/~martin/uploads/Browse.PNG

Но , как я уже сказал, все, что я получил в журналах JMeter, были сообщениями HTTP 404:

2009/09/23 15:10:43 INFO - jmeter.protocol.http.sampler.HTTPSampler: Error Response Code: 404 

Tomcat работает во время теста и в плане тестирования, у меня также есть HTTP Cookie Manager, установленный на «default».

Когда мое приложение работает под тестом Tomcat, его URL-адрес равен http://localhost:8080/myDataSharer, и я пытаюсь, чтобы JMeter отражал это.

Любая помощь приветствуется, поскольку я не могу понять, почему JMeter и Tomcat не разговаривают друг с другом.

Благодаря

Martin

+0

Еще одна вещь, которая выглядит extrange, - это путь к запросу входа. Правильно ли этот URL? Не должно быть j_acegi_security_check? Это URL-адрес, который появляется в действии формы входа? – rodrigoap

+0

Вы используете Acegi или Spring Security? – rodrigoap

+0

Ничего. В моем приложении используется стандартная защита Apache Tomcat. –

ответ

4

путь в HTTP Request Defaults не добавляется в начале пути в HTTP Request. Добавить корень контекста myDataSharer к пути в HTTP-запрос.
Если вы не хотите повторять его каждый, есть Элемент конфигурации, где вы можете определить proeprties и позже ссылаться на него следующим образом: $ {my.propertie}.
Также вы должны добавить элемент, который отображает данные запроса и ответа, я думаю, что это называется Дерево результатов или что-то в этом роде.

Edit 1: Еще одна вещь, которая выглядит extrange является путь запроса входа в систему. Правильно ли этот URL? Не должно быть j_acegi_security_check? Это URL-адрес, который появляется в действии формы входа?

Edit 2: В Tomcat есть пример приложение используется для проверки безопасности:
http://example.com:8080/examples/jsp/security/protected/login.jsp

Пользователей в Conf/TOMCAT-users.xml. Добавьте один с ролью: Role1 так:

<role rolename="role1"/> 
<user username="test" password="test" roles="role1"/> 

Запустите сервер, и вы должны быть в состоянии войти в систему. Тогда попробуйте этот JMeter тест план:

<jmeterTestPlan version="1.2" properties="1.8"> 
    <hashTree> 
    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Plan de Pruebas" enabled="true"> 
     <boolProp name="TestPlan.functional_mode">false</boolProp> 
     <stringProp name="TestPlan.comments"></stringProp> 
     <stringProp name="TestPlan.user_define_classpath"></stringProp> 
     <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> 
    </TestPlan> 
    <hashTree> 
     <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Grupo de Hilos" enabled="true"> 
     <boolProp name="ThreadGroup.scheduler">false</boolProp> 
     <stringProp name="ThreadGroup.num_threads">1</stringProp> 
     <stringProp name="ThreadGroup.duration"></stringProp> 
     <stringProp name="ThreadGroup.delay"></stringProp> 
     <longProp name="ThreadGroup.start_time">1157555458000</longProp> 
     <stringProp name="ThreadGroup.on_sample_error">stoptest</stringProp> 
     <stringProp name="ThreadGroup.ramp_time">0</stringProp> 
     <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> 
      <stringProp name="LoopController.loops">1</stringProp> 
      <boolProp name="LoopController.continue_forever">false</boolProp> 
     </elementProp> 
     <longProp name="ThreadGroup.end_time">1157555458000</longProp> 
     </ThreadGroup> 
     <hashTree> 
     <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="Gestor de Cookies HTTP" enabled="true"> 
      <boolProp name="CookieManager.clearEachIteration">false</boolProp> 
      <collectionProp name="CookieManager.cookies"/> 
     </CookieManager> 
     <hashTree/> 
     <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Petición HTTP" enabled="true"> 
      <stringProp name="HTTPSampler.domain">localhost</stringProp> 
      <stringProp name="HTTPSampler.FILE_NAME"></stringProp> 
      <stringProp name="HTTPSampler.path">/examples/jsp/security/protected/login.jsp</stringProp> 
      <stringProp name="HTTPSampler.method">GET</stringProp> 
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> 
      <collectionProp name="Arguments.arguments"/> 
      </elementProp> 
      <stringProp name="HTTPSampler.FILE_FIELD"></stringProp> 
      <stringProp name="HTTPSampler.mimetype"></stringProp> 
      <boolProp name="HTTPSampler.auto_redirects">false</boolProp> 
      <boolProp name="HTTPSampler.follow_redirects">true</boolProp> 
      <stringProp name="HTTPSampler.port">8080</stringProp> 
      <boolProp name="HTTPSampler.use_keepalive">true</boolProp> 
      <stringProp name="HTTPSampler.monitor">false</stringProp> 
      <stringProp name="HTTPSampler.protocol"></stringProp> 
     </HTTPSampler> 
     <hashTree/> 
     <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Petición HTTP" enabled="true"> 
      <stringProp name="HTTPSampler.domain">localhost</stringProp> 
      <stringProp name="HTTPSampler.FILE_NAME"></stringProp> 
      <stringProp name="HTTPSampler.path">/examples/jsp/security/protected/j_security_check</stringProp> 
      <stringProp name="HTTPSampler.method">POST</stringProp> 
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> 
      <collectionProp name="Arguments.arguments"> 
       <elementProp name="" elementType="HTTPArgument"> 
       <boolProp name="HTTPArgument.use_equals">true</boolProp> 
       <boolProp name="HTTPArgument.always_encode">false</boolProp> 
       <stringProp name="Argument.name">j_username</stringProp> 
       <stringProp name="Argument.value">test</stringProp> 
       <stringProp name="Argument.metadata">=</stringProp> 
       </elementProp> 
       <elementProp name="" elementType="HTTPArgument"> 
       <boolProp name="HTTPArgument.use_equals">true</boolProp> 
       <boolProp name="HTTPArgument.always_encode">false</boolProp> 
       <stringProp name="Argument.name">j_password</stringProp> 
       <stringProp name="Argument.value">test</stringProp> 
       <stringProp name="Argument.metadata">=</stringProp> 
       </elementProp> 
      </collectionProp> 
      </elementProp> 
      <stringProp name="HTTPSampler.FILE_FIELD"></stringProp> 
      <stringProp name="HTTPSampler.mimetype"></stringProp> 
      <boolProp name="HTTPSampler.auto_redirects">true</boolProp> 
      <boolProp name="HTTPSampler.follow_redirects">true</boolProp> 
      <stringProp name="HTTPSampler.port">8080</stringProp> 
      <boolProp name="HTTPSampler.use_keepalive">true</boolProp> 
      <stringProp name="HTTPSampler.monitor">false</stringProp> 
      <stringProp name="HTTPSampler.protocol">http</stringProp> 
     </HTTPSampler> 
     <hashTree/> 
     <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="Ver Árbol de Resultados" enabled="true"> 
      <objProp> 
      <value class="SampleSaveConfiguration"> 
       <time>true</time> 
       <latency>true</latency> 
       <timestamp>true</timestamp> 
       <success>true</success> 
       <label>true</label> 
       <code>true</code> 
       <message>true</message> 
       <threadName>true</threadName> 
       <dataType>true</dataType> 
       <encoding>false</encoding> 
       <assertions>true</assertions> 
       <subresults>true</subresults> 
       <responseData>false</responseData> 
       <samplerData>false</samplerData> 
       <xml>false</xml> 
       <fieldNames>false</fieldNames> 
       <responseHeaders>false</responseHeaders> 
       <requestHeaders>false</requestHeaders> 
       <responseDataOnError>false</responseDataOnError> 
       <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> 
       <assertionsResultsToSave>0</assertionsResultsToSave> 
      </value> 
      <name>saveConfig</name> 
      </objProp> 
      <stringProp name="filename"></stringProp> 
      <boolProp name="ResultCollector.error_logging">false</boolProp> 
     </ResultCollector> 
     <hashTree/> 
     </hashTree> 
    </hashTree> 
    </hashTree> 
</jmeterTestPlan> 

, что я добавил дополнительный запрос до Loging, чтобы получить печенье Look. Если вы не сделаете этого входа, произойдет сбой с кодом 408.

Если вы хотите, чтобы это сработало, ваше приложение можно протестировать таким же образом.

+0

Спасибо. Это очень помогло. Но используя Дерево результатов, я вижу тот же HTML для запроса browseCommunities, как и для запроса на вход. Для меня это похоже на то, что запрос на вход в систему фактически не регистрируется. Любая помощь будет приветствоваться. –

+0

Я пробовал/myDataSharer/и/myDataSharer/j_security_check/и/myDataSharer/j_acegi/security_check/для пути. Но ни одна из этих работ не работает. –

+0

Is/myDataSharer/j_security_check/it/myDataSharer/j_security_check – rodrigoap

0

Наконец-то, у меня есть эта работа - это был случай автоматической переадресации перенаправления в соответствии с переадресацией в запросах. Благодаря Родригоапу за его помощь