Question

Je suis un novice avec JMeter. Je suis en train d'utiliser JMeter pour se connecter à une application Web déployée dans Tomcat pour simuler un petit nombre d'utilisateurs qui se connectent et la navigation d'une page.

Quand je courais le plan de test, journal JMeter a montré une série de messages HTTP 404 indiquant qu'il y avait un problème de communication quelque part.

Le lien suivant affiche les paramètres par défaut HTTP du plan de test:

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

Avec deux simples requêtes HTTP à suivre.

La première demande doit permettre aux utilisateurs de se connecter:

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

Et la deuxième demande devrait permettre à la nouvelle connecté aux utilisateurs de parcourir une page:

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

Mais, comme je l'ai dit, tout ce que je reçu dans les journaux JMeter étaient des messages HTTP 404:

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

Tomcat est en cours d'exécution lors de l'essai et dans le plan de test, j'ai aussi un gestionnaire de cookies HTTP sur « default ».

Lorsque mon application fonctionne sous Tomcat dans le test, son URL est http://localhost:8080/myDataSharer et je suis en train d'avoir JMeter tenir compte.

Toute aide serait la bienvenue que je ne peux pas comprendre pourquoi JMeter et Tomcat ne parlent pas les uns aux autres.

Merci

Martin

Était-ce utile?

La solution

Chemin requête HTTP par défaut ne sont pas ajoutés au début du chemin requête HTTP . Ajouter la racine de contexte myDataSharer pour le chemin requête HTTP .
Si vous ne voulez pas répéter everywere, il y a un Configuration élément où vous pouvez définir proeprties et référence plus tard comme ça $ {} my.propertie .
Aussi, vous devez ajouter un élément qui affiche les données de requête et de réponse, je pense qu'il est appelé Résultat Arbre ou quelque chose comme ça.

Modifier 1: Une autre chose qui ressemble extrange est le chemin de la demande de connexion. Est-ce URL correcte? Il ne doit pas être j_acegi_security_check? Est-ce que l'URL qui apparaît dans l'action du formulaire de connexion?

Edit 2: Dans Tomcat il y a une application par exemple utilisé pour tester la sécurité:
http://example.com:8080/examples/jsp/security/ protégé / login.jsp

Les utilisateurs sont conf / tomcat-users.xml . Ajouter un avec le rôle: rôle1 comme ceci:

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

Démarrer le serveur et vous devriez pouvoir vous connecter. Ensuite, essayez cette JMeter plan de test :

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

Regardez que j'ai ajouté une demande supplémentaire avant loging pour obtenir le cookie. Si vous ne le faites pas, votre connexion échouera avec un code 408.

Si vous obtenez cela fonctionne, votre application peut être testée de la même manière.

Autres conseils

Enfin, j'ai ce travail chose - ce fut un cas de changement Rediriger automatiquement à suivre Redirects dans les demandes. Merci à Rodrigoap pour son aide

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top