Domanda

Sono un principiante con JMeter. Sto cercando di utilizzare JMeter per la connessione a un'applicazione Web distribuito in Tomcat per simulare un piccolo numero di utenti l'accesso e la navigazione di una pagina.

Quando ho eseguito il programma di test, log JMeter ha mostrato una serie di HTTP 404 messaggi indicando che c'era un problema di comunicazione da qualche parte.

Il seguente link mostra le impostazioni predefinite HTTP del piano di test:

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

Con due semplici richieste HTTP da seguire.

La prima richiesta dovrebbe consentire agli utenti di accedere in:

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

E la seconda richiesta dovrebbe consentire il neo gli utenti registrati di sfogliare una pagina:

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

Ma, come ho detto, tutto quello che ho ricevuto nei registri JMeter erano HTTP 404 messaggi:

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

Tomcat è in esecuzione durante la prova e nel piano di prova, ho anche un cookie HTTP manager impostato su 'default'.

Quando la mia applicazione viene eseguita sotto Tomcat in prova, l'URL è http://localhost:8080/myDataSharer e sto cercando di avere JMeter riflettere questo.

Qualsiasi aiuto sarebbe benvenuto come non riesco a capire il motivo per cui JMeter e Tomcat non stiamo parlando gli uni agli altri.

Grazie

Martin

È stato utile?

Soluzione

Il path in HTTP Request predefiniti non è aggiunti all'inizio della path in Richiesta HTTP . Aggiungere la root di contesto myDataSharer per il percorso in Richiesta HTTP .
Se non si vuole ripetere everywere, v'è una Configurazione Elemento in cui è possibile definire proeprties e poi fare riferimento in questo modo $ {my.propertie} .
Inoltre si dovrebbe aggiungere un elemento che mostra i dati di richiesta e risposta, mi pare si chiami Risultato Albero o qualcosa del genere.

Modifica 1: Un'altra cosa che sembra Extrange è il path della richiesta di accesso. È questo URL corretto? Non dovrebbe essere j_acegi_security_check? E 'che l'URL che appare nella azione del modulo di login?

Modifica 2: In Tomcat v'è un esempio di applicazione utilizzata per testare la sicurezza:
http://example.com:8080/examples/jsp/security/ protetta / login.jsp

Gli utenti sono in conf / tomcat-users.xml . Aggiungere uno con il ruolo: Role1 in questo modo:

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

Avviare il server e si dovrebbe essere in grado di effettuare il login. Quindi provare questo piano di test 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>

Guardate che ho aggiunto una richiesta in più prima loging in per ottenere il cookie. Se non lo fai login fallirà con un codice 408.

Se si arriva a questo lavoro, allora l'applicazione può essere testato nello stesso modo.

Altri suggerimenti

Infine, ho questa cosa di lavoro - si trattava di un caso di cambiamento di reindirizzare automaticamente da seguire Redirect nelle richieste. Grazie a Rodrigoap per la sua assistenza

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top