Frage

Ich bin ein kompletter Anfänger mit JMeter. Ich versuche, JMeter zu verwenden, um eine Web-Anwendung in Tomcat eingesetzt verbinden eine kleine Anzahl von Benutzern zu simulieren anmelden und eine Seite abgerufen.

Wenn ich den Testplan lief, zeigte JMeter Protokoll eine Reihe von HTTP 404 Meldungen anzeigt, dass es ein Kommunikationsproblem irgendwo war.

Der folgende Link zeigt den HTTP-Standardeinstellung des Prüfplans:

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

Mit zwei einfachen HTTP-Anfragen zu folgen.

Der erste Antrag sollte den Benutzern die Möglichkeit sich einzuloggen:

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

Und die zweite Anforderung sollte die neu angemeldeten Benutzer erlauben, um eine Seite zu sehen:

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

Aber, wie gesagt, alles, was ich in den JMeter-Protokollen empfangen wurden HTTP 404 Meldungen:

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

Tomcat wird während des Tests und in dem Testplan läuft, ich habe auch einen HTTP-Cookie-Manager auf ‚default‘ gesetzt.

Wenn meine Anwendung läuft unter Tomcat in Test, die URL http://localhost:8080/myDataSharer ist und ich versuche, JMeter zu haben, diese zu reflektieren.

Jede Hilfe wäre willkommen, da ich nicht aus arbeiten kann, warum JMeter und Tomcat sind nicht miteinander zu reden.

Danke

Martin

War es hilfreich?

Lösung

Der Pfad in HTTP-Request-Defaults ist nicht am Anfang des Pfades hinzugefügt in HTTP Request . Fügen Sie den Kontextstamm myDataSharer auf den Weg in HTTP Request .
Wenn Sie wollen, dass es nicht wiederholen every, gibt es eine Konfigurationselement , wo Sie proeprties definieren und später verweisen sie wie dieses $ {my.propertie} .
Auch sollten Sie ein Element hinzufügen, die Datenanforderung und Antwort zeigt, ich glaube, es heißt Ergebnis Baum oder so ähnlich.

Bearbeiten 1: Eine andere Sache, die Extrange aussieht, ist die Pfad der Anmeldung Anfrage. Ist das URL korrekt? Sollte es nicht j_acegi_security_check werden? Ist das die URL, die in der Wirkung des Login-Formulars angezeigt wird?

Edit 2: In Tomcat gibt es ein Beispiel-Anwendung verwendet Sicherheit testen:
http://example.com:8080/examples/jsp/security/ geschützt / login.jsp

Die Anwender sind in conf / tomcat-users.xml . In einem mit der Rolle: role1 wie folgt aus:

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

Starten Sie den Server, und Sie sollten sich anmelden können. Dann versuchen Sie diesen JMeter Testplan :

<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>

Sehen Sie, dass ich eine zusätzliche Anfrage vor loging in hinzugefügt, um das Cookie zu erhalten. Wenn Sie nicht, dass Login tun wird mit einem 408-Code fehlschlagen.

Wenn Sie diese Anwendung arbeiten, dann kann auf die gleiche Weise getestet werden.

Andere Tipps

Schließlich habe ich diese Sache arbeiten - es ist ein Fall von wechselnden Redirect automatisch war in den Anforderungen Umleitungen zu folgen. Dank Rodrigoap für seine Hilfe

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top