Tomcat 및 JMeter 생성 HTTP 404 오류
-
13-09-2019 - |
문제
나는 JMeter와 함께 완전한 초보자입니다. JMeter를 사용하여 Tomcat에 배포 된 웹 응용 프로그램에 연결하여 소수의 사용자가 로그인하고 페이지를 탐색하는 것을 시뮬레이션하려고합니다.
테스트 계획을 실행했을 때 JMeter Log는 어딘가에 통신 문제가 있음을 나타내는 일련의 HTTP 404 메시지를 보여주었습니다.
다음 링크는 테스트 계획의 HTTP 기본값을 보여줍니다.
대체 텍스트 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 쿠키 관리자도 있습니다.
내 응용 프로그램이 Tomcat에서 테스트에서 실행되면 URL은 http://localhost:8080/myDataSharer
그리고 저는 JMeter가 이것을 반영하도록 노력하고 있습니다.
JMeter와 Tomcat이 서로 대화하지 않는 이유를 해결할 수 없으므로 모든 도움을 환영합니다.
감사
남자 이름
해결책
그만큼 길 안에 HTTP 요청 기본값 시작시 추가되지 않습니다 길 안에 HTTP 요청. 컨텍스트 루트를 추가하십시오 Mydatasharer 안에있는 길로 HTTP 요청.
당신이 그것을 반복하고 싶지 않다면, 구성 요소 Proprties를 정의하고 나중에 다음과 같이 참조 할 수있는 곳 $ {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 코드로 실패합니다.
이 작업을 수행하면 응용 프로그램을 동일한 방식으로 테스트 할 수 있습니다.
다른 팁
마지막으로,이 작업이 작동합니다. 요청에서 리디렉션을 따르도록 자동으로 리디렉션을 변경하는 경우였습니다. 그의 도움을 주신 Rodrigoap에게 감사드립니다