JMETER- 실패한 응답에 대한 전체 요청을 기록하는 방법은 무엇입니까?
-
19-09-2019 - |
문제
JMeter Command Line을 사용하여 웹 사이트 API를 스트레스 테스트하고 있습니다. 이제 다시 돌아 오는 샘플 결과가 있습니다.
Creating summariser <summary>
Created the tree successfully using street_advisor.jmx
Starting the test @ Sat Oct 03 15:22:59 PDT 2009 (1254608579848)
Waiting for possible shutdown message on port 4445
summary + 1 in 0.0s = 37.0/s Avg: 27 Min: 27 Max: 27 Err: 1 (100.00%)
<snip a few more lines>
<then i break it>
그래서 나는 오류가 발생하고 있습니다.
현재 모든 오류는 파일로 이동합니다. 그 파일을 확인할 때, 그것은 404라고 말하고 있습니다. 어쨌든 내가 볼 수 있는가? 바로 그거죠 JMeter가 시도한 요청은 무엇입니까?
여기 내 구성 파일의 스 니펫이 있습니다 ...
<ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Error Writer" enabled="true">
<boolProp name="ResultCollector.error_logging">true</boolProp>
<objProp>
<name>saveConfig</name>
<value class="SampleSaveConfiguration">
<time>true</time>
<latency>true</latency>
<timestamp>false</timestamp>
<success>true</success>
<label>true</label>
<code>true</code>
<message>true</message>
<threadName>false</threadName>
<dataType>true</dataType>
<encoding>false</encoding>
<assertions>true</assertions>
<subresults>true</subresults>
<responseData>false</responseData>
<samplerData>false</samplerData>
<xml>true</xml>
<fieldNames>false</fieldNames>
<responseHeaders>true</responseHeaders>
<requestHeaders>true</requestHeaders>
<responseDataOnError>false</responseDataOnError>
<saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
<assertionsResultsToSave>0</assertionsResultsToSave>
<bytes>true</bytes>
</value>
</objProp>
<stringProp name="filename">./error.jtl</stringProp>
</ResultCollector>
이제 누군가가 '웹 서버 로그 파일 확인'이라고 말하기 전에, 나는 이것을 할 수 있다는 것을 알고 있습니다. 네, 404를 찾았습니다. 다른 서버 및/또는 나는 그들에게 액세스 할 수 없습니다. 도와주세요!
해결책
그만큼 결과 트리보기 구성 요소에는 모든 샘플 응답의 트리가 표시되어 샘플에 대한 요청과 응답을 모두 볼 수 있습니다.
로드 테스트시 (항상 비 GUI 모드에서), "Filename"필드를 작성하고 오류의 응답 만 저장하려면 선택하십시오.
위에서 볼 수 있듯이 CSV를 제외한 모든 필드를 선택하도록 구성을 클릭했습니다.
또한 사용을 사용하여 파일에 전체 응답을 저장할 수도 있습니다. 파일에 응답을 저장합니다:
다른 팁
이 스레드가 응답을 기록하는 솔루션을 검색하는 것을 발견했습니다. 뿐 샘플러가 실패하면 허용 된 솔루션은 나에게 좋지 않습니다. 수십만 개의 샘플이 포함 된 매우 높은 하중에서 가끔 샘플 고장이 있으므로 트리 리스너는 나에게 완전히 비현실적입니다 (크기가 여러 기가 바이트에 도달 할 것입니다). OP의 시나리오도) :
을 추가하다 [JSR223 Assertion][1]
(다른 모든 주장을 따라 와야합니다) 아래 코드를 넣습니다.
if (Boolean.valueOf(vars.get("DEBUG"))) {
for (a: SampleResult.getAssertionResults()) {
if (a.isError() || a.isFailure()) {
log.error(Thread.currentThread().getName()+": "+SampleLabel+": Assertion failed for response: " + new String((byte[]) ResponseData));
}
}
}
이렇게하면 응답이 실제로 작지만 대규모 응답의 경우보다 지능적인 처리가 수행 될 수 있기 때문에 전체 응답이 JMeter 로그 파일에 기록됩니다.
'파일에 대한 응답 저장'리스너가 있습니다. 오류가 발생한 경우에만 파일에 저장할 수 있습니다.