سؤال

أنا مبتدئ كامل مع JMeter. أحاول استخدام JMeter للاتصال بتطبيق ويب منتشر في Tomcat لمحاكاة عدد صغير من المستخدمين تسجيل الدخول والتصفح.

عندما أشارت إلى خطة الاختبار، أظهر سجل JMeter سلسلة من رسائل HTTP 404 التي تشير إلى وجود مشكلة اتصالات في مكان ما.

يعرض الرابط التالي الافتراضي HTTP لخطة الاختبار:

نص Alt http://www.dcs.bbk.ac.uk/~martin/uploads/http_defaults.png.

مع اثنين من طلبات HTTP بسيطة لمتابعة.

يجب أن يقوم الطلب الأول بتمكين المستخدمين من تسجيل الدخول:

نص Alt http://www.dcs.bbk.ac.uk/~martin/uploads/login.png.

والطلب الثاني يجب أن يسمح للمستخدمين بتسجيل الدخول حديثا لتصفح الصفحة:

النص بديل http://www.dcs.bbk.ac.uk/~martin/uprowse.png.

ولكن، كما قلت، كل ما استلمته في سجلات JMeter كانت رسائل HTTP 404:

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

تعمل Tomcat أثناء الاختبار وفي خطة الاختبار، لدي أيضا مدير ملفات تعريف الارتباط HTTP لتعيين "الافتراضي".

عندما يعمل طلبي تحت Tomcat في الاختبار، عنوان URL الخاص به http://localhost:8080/myDataSharer وأنا أحاول أن يعكس JMeter هذا.

سيكون أي مساعدة موضع ترحيب لأنني لا أستطيع ممارسة السبب في أن JMeter و Tomcat لا يتحدثان مع بعضهم البعض.

شكرًا

مارتن

هل كانت مفيدة؟

المحلول

ال طريق في طلب HTTP الافتراضي لا يضاف في بداية طريق في طلب HTTP.. وبعد أضف جذر السياق mydatasharer. إلى الطريق في طلب HTTP..
إذا كنت لا ترغب في تكرارها everywere، فهناك عنصر التكوين حيث يمكنك تحديد proesprties والرجوع إليها لاحقا مثل هذا $ {my.propertie}.
كما يجب أن تضيف عنصر يظهر طلب بيانات الاستجابة، وأعتقد أنه يطلق عليه شجرة النتيجة أو شيء من هذا القبيل.

تحرير 1: شيء آخر يبدو بشكل استبني هو طريق من طلب تسجيل الدخول. هل عنوان URL صحيح؟ لا ينبغي أن يكون j_acegi_security_checkب هل هذا هو عنوان URL الذي يظهر في عمل نموذج تسجيل الدخول؟

تحرير 2: في Tomcat، هناك تطبيق مثال يستخدم لاختبار الأمان:
http://example.com:8080/examples/jsp/security/protected/login.jsp.

المستخدمين في conf / tomcat-users.xml. وبعد أضف واحدا مع الدور: الدور 1. مثله:

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

انظر إلى أنني أضفت طلب إضافي قبل تسجيل الدخول للحصول على ملف تعريف الارتباط. إذا لم تفعل ذلك، فسوف تفشل تسجيل الدخول باستخدام رمز 408.

إذا حصلت على هذا للعمل، فيمكن اختبار طلبك بنفس الطريقة.

نصائح أخرى

أخيرا، لدي هذا الشيء يعمل - لقد كانت حالة تغيير إعادة توجيه تلقائيا لاتباع إعادة توجيهات في الطلبات. بفضل رودريغواب لمساعدته

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top