12. 리스너 소개 ¶
리스너는 샘플의 결과를 보여주는 구성 요소입니다. 결과는 트리, 테이블, 그래프로 표시되거나 단순히 로그 파일에 기록될 수 있습니다. 주어진 샘플러의 응답 내용을 보려면 리스너 " View Results Tree " 또는 " View Results in table " 중 하나를 테스트 계획에 추가하십시오. 응답 시간을 그래픽으로 보려면 그래프 결과를 추가하십시오. 구성 요소 페이지 의 리스너 섹션에는 모든 리스너에 대한 전체 설명이 있습니다.
" 구성 " 버튼을 사용하여 파일에 쓸 필드와 CSV 또는 XML로 쓸지 여부를 지정할 수 있습니다. CSV 파일은 XML 파일보다 훨씬 작으므로 샘플을 많이 생성하는 경우 CSV를 사용하십시오.
파일 이름은 상대 또는 절대 경로 이름을 사용하여 지정할 수 있습니다. 상대 경로는 현재 작업 디렉토리(기본값은 bin/ 디렉토리)를 기준으로 확인됩니다. JMeter는 또한 현재 테스트 계획(JMX 파일)을 포함하는 디렉토리에 상대적인 경로를 지원합니다. 경로 이름이 " ~/ "(또는 jmeter.save.saveservice.base_prefix JMeter 속성에 있는 모든 것)로 시작하는 경우 경로는 JMX 파일 위치에 상대적인 것으로 간주됩니다.
특정 샘플만 녹음하려면 리스너를 샘플러의 자식으로 추가하십시오. 또는 Simple Controller를 사용하여 샘플러 세트를 그룹화하고 여기에 Listener를 추가할 수 있습니다. 여러 샘플러에서 동일한 파일 이름을 사용할 수 있지만 모두 동일한 구성을 사용하는지 확인하십시오!
12.1 기본 구성 ¶
저장할 기본 항목은 jmeter.properties (또는 user.properties ) 파일에 정의할 수 있습니다. 속성은 리스너 구성 팝업의 초기 설정으로 사용되며 -l 명령줄 플래그(CLI 모드 테스트 실행에 일반적으로 사용됨)로 지정된 로그 파일에도 사용됩니다.
기본 형식을 변경하려면 jmeter.properties 에서 다음 행을 찾으십시오 .
jmeter.save.saveservice.output_format=
저장할 정보를 구성할 수 있습니다. 최대 정보를 보려면 형식으로 " xml "을 선택 하고 테스트 계획 요소에 " 기능 테스트 모드 "를 지정하십시오. 이 상자를 선택하지 않으면 기본 저장 데이터에는 타임스탬프(UTC 1970년 1월 1일 자정 이후의 밀리초 수), 데이터 유형, 스레드 이름, 레이블, 응답 시간, 메시지 및 코드, 그리고 성공 지표. 선택하면 전체 응답 데이터를 포함한 모든 정보가 기록됩니다.
다음 예는 다음과 같은 결과를 출력하는 세로 막대(" | ")로 구분된 형식 을 가져오도록 속성을 설정하는 방법을 나타냅니다.
timeStamp|time|label|responseCode|threadName|dataType|success|failureMessage 02/06/03 08:21:42|1187|홈|200|쓰레드 그룹-1|텍스트|참| 02/06/03 08:21:42|47|로그인|200|쓰레드 그룹-1|텍스트|거짓|테스트 실패: 다음을 포함할 것으로 예상됨: 비밀번호 등
설정해야 하는 해당 jmeter.properties 는 다음과 같습니다. 이 예에서 한 가지 이상한 점은 output_format 이 일반적으로 쉼표로 구분된 값을 나타내는 csv 로 설정되어 있다는 것입니다. 그러나 default_delimiter 는 쉼표 대신 세로 막대로 설정되었으므로 이 경우 csv 태그는 잘못된 이름입니다. (CSV는 문자로 구분된 값을 의미한다고 생각하세요)
jmeter.save.saveservice.output_format=csv jmeter.save.saveservice.assertion_results_failure_message=true jmeter.save.saveservice.default_delimiter=|
결과 파일 출력에 영향을 미치는 전체 속성 집합은 다음과 같습니다.
#------------------------------------------------ -------------------------- # 결과 파일 구성 #------------------------------------------------ -------------------------- # 이 섹션은 결과 데이터가 저장되는 방법을 결정하는 데 도움이 됩니다. # 주석 처리된 값이 기본값입니다. # 합법적인 값: xml, csv, db. 현재 xml 및 csv만 지원됩니다. #jmeter.save.saveservice.output_format=csv # 필드를 저장해야 하는 경우 true; 그렇지 않으면 거짓 # assertion_results_failure_message는 CSV 출력에만 영향을 줍니다. #jmeter.save.saveservice.assertion_results_failure_message=true # # 합법적인 값: 없음, 먼저, 모두 #jmeter.save.saveservice.assertion_results=없음 # #jmeter.save.saveservice.data_type=true #jmeter.save.saveservice.label=true #jmeter.save.saveservice.response_code=true # response_data는 현재 CSV 출력에 대해 지원되지 않습니다. #jmeter.save.saveservice.response_data=거짓 # 실패한 샘플에 대한 ResponseData 저장 #jmeter.save.saveservice.response_data.on_error=false #jmeter.save.saveservice.response_message=true #jmeter.save.saveservice.successful=참 #jmeter.save.saveservice.thread_name=true #jmeter.save.saveservice.time=true #jmeter.save.saveservice.subresults=true #jmeter.save.saveservice.assertions=true #jmeter.save.saveservice.latency=true #jmeter.save.saveservice.connect_time=true #jmeter.save.saveservice.samplerData=거짓 #jmeter.save.saveservice.responseHeaders=거짓 #jmeter.save.saveservice.requestHeaders=거짓 #jmeter.save.saveservice.encoding=거짓 #jmeter.save.saveservice.bytes=true #jmeter.save.saveservice.sent_bytes=true #jmeter.save.saveservice.url=거짓 #jmeter.save.saveservice.filename=거짓 #jmeter.save.saveservice.hostname=거짓 #jmeter.save.saveservice.thread_counts=true #jmeter.save.saveservice.sample_count=거짓 #jmeter.save.saveservice.idle_time=true # 타임스탬프 형식 - CSV 출력 파일에만 영향을 줍니다. # 정당한 값: 없음, ms 또는 SimpleDateFormat에 적합한 형식 #jmeter.save.saveservice.timestamp_format=ms #jmeter.save.saveservice.timestamp_format=yyyy/MM/dd HH:mm:ss.SSS # 쉼표로 구분된 값(CSV) 파일 또는 기타 형식과 함께 사용 # 여기서 필드의 값은 지정된 구분 기호로 구분됩니다. # 기본: #jmeter.save.saveservice.default_delimiter=, # TAB의 경우 JMeter 2.3부터 다음을 사용할 수 있습니다. #jmeter.save.saveservice.default_delimiter=\t # CSV 형식 파일에만 적용: # CSV의 첫 번째 줄로 필드 이름 인쇄 #jmeter.save.saveservice.print_field_names=true # 결과 데이터 파일에 값을 저장할 JMeter 변수 이름의 선택적 목록입니다. # 쉼표를 사용하여 이름을 구분합니다. 예를 들어: #sample_variables=SESSION_ID,REFERENCE # NB 현재 구현은 XML의 값을 속성으로 저장합니다. # 이름은 유효한 XML 이름이어야 합니다. # JMeter는 모든 서버에 변수를 보냅니다. # 클라이언트에서 올바른 데이터를 사용할 수 있는지 확인합니다. # 파일의 2행에 대한 선택적 xml 처리 명령: #jmeter.save.saveservice.xml_pi=<?xml-stylesheet type="text/xsl" href="sample.xsl"?> # 현재 기준에 상대적인 파일 이름을 식별하는 데 사용되는 접두사 #jmeter.save.saveservice.base_prefix=~/ # XML 또는 CSV 출력으로 작성된 각 라인의 AutoFlush # 이것을 true로 설정하면 충돌 시 테스트 결과 데이터 손실이 줄어듭니다. # 특히 집중 테스트의 경우 성능에 영향을 미칩니다(일시 중지가 낮거나 없음). # JMeter 2.10부터 이것은 기본적으로 false입니다. #jmeter.save.saveservice.autoflush=거짓 # 종료 대신 로그에 시작 타임스탬프를 기록합니다. sampleresult.timestamp.start=참 # System.nanoTime() 사용 여부 - 그렇지 않으면 System.currentTimeMillis()만 사용 #sampleresult.useNanoTime=true # 백그라운드 스레드를 사용하여 nanoTime 오프셋을 계산합니다. # 백그라운드 스레드를 비활성화하려면 이것을 ≤ 0으로 설정합니다. #sampleresult.nanoThreadSleep=5000
timestamp_format 에 사용할 날짜 형식 은 SimpleDateFormat 에 설명되어 있습니다. 타임스탬프 형식은 파일 쓰기와 읽기 모두에 사용됩니다. 형식이 " ms "로 설정되고 열이 긴 정수로 구문 분석되지 않으면 JMeter(2.9+)는 다음 형식을 시도합니다.
- yyyy/MM/dd HH:mm:ss.SSS
- yyyy/MM/dd HH:mm:ss
- yyyy-MM-dd HH:mm:ss.SSS
- yyyy-MM-dd HH:mm:ss
- MM/dd/yy HH:mm:ss (이전 버전과의 호환성을 위한 것으로 형식으로 권장되지 않음)
12.1.1 샘플 변수 ¶
JMeter는 JTL 파일의 각 샘플과 함께 저장할 추가 JMeter 변수 목록을 정의하기 위해 sample_variables 속성을 지원합니다. 값은 CSV 파일에 추가 열로, XML 파일의 추가 속성으로 기록됩니다. 예를 들어 위를 참조하십시오.
12.1.2 샘플 결과 저장 구성 ¶
리스너는 아래와 같이 구성 팝업을 사용하여 결과 로그 파일(JTL)에 다른 항목을 저장하도록 구성할 수 있습니다. 기본값은 위의 리스너 기본 구성 섹션 에 설명된 대로 정의됩니다 . 이름 뒤에 (CSV)가 있는 항목은 CSV 형식에만 적용됩니다. (XML)이 있는 항목은 XML 형식에만 적용됩니다. CSV 형식은 현재 줄 바꿈이 포함된 항목을 저장하는 데 사용할 수 없습니다.
쿠키, 메서드 및 쿼리 문자열은 " 샘플러 데이터 " 옵션 의 일부로 저장됩니다 .
12.2 CLI 모드(일괄) 테스트 실행 ¶
CLI 모드에서 실행할 때 -l 플래그를 사용하여 테스트 실행을 위한 최상위 리스너를 생성할 수 있습니다. 이것은 테스트 계획에 정의된 모든 리스너에 추가됩니다. 이 리스너의 구성은 이전 섹션에서 설명한 대로 jmeter.properties 파일의 항목에 의해 제어됩니다.
이 기능을 사용하여 각 테스트 실행에 대해 서로 다른 데이터 및 로그 파일을 지정할 수 있습니다. 예를 들면 다음과 같습니다.
jmeter -n -t testplan.jmx -l testplan_01.jtl -j testplan_01.log jmeter -n -t testplan.jmx -l testplan_02.jtl -j testplan_02.log
JMeter 로깅 메시지는 기본적으로 jmeter.log 파일에 기록됩니다. 이 파일은 매번 다시 생성되므로 각 실행에 대한 로그 파일을 유지하려면 위와 같이 -j 옵션을 사용하여 이름을 변경해야 합니다.
JMeter는 로그 파일 이름의 변수를 지원합니다. 파일 이름에 작은따옴표 쌍이 포함되어 있으면 이름이 현재 날짜에 적용된 SimpleDateFormat 형식으로 처리됩니다(예: log_file='jmeter_'yyyyMMddHHmmss'.tmp' ) . 이것은 각 테스트 실행에 대해 고유한 이름을 생성하는 데 사용할 수 있습니다.
12.3 리소스 사용 ¶
대부분의 청취자는 현재 다음을 제외하고 표시하는 모든 샘플의 사본을 보관합니다.
- 단순 데이터 작성기
- BeanShell/JSR223 리스너
- 메일러 시각화 도우미
- 결과 모니터링
- 요약 보고서
다음 리스너는 더 이상 모든 단일 샘플의 복사본을 보관할 필요가 없습니다. 대신 경과 시간이 동일한 샘플이 집계됩니다. 이제 더 적은 메모리가 필요합니다. 특히 대부분의 샘플이 기껏해야 1~2초 밖에 걸리지 않는 경우에 더욱 그렇습니다.
- 집계 보고서
- 집계 그래프
필요한 메모리 양을 최소화하려면 Simple Data Writer를 사용하고 CSV 형식을 사용하십시오.
12.4 CSV 로그 형식 ¶
CSV 로그 형식은 구성에서 선택한 데이터 항목에 따라 다릅니다. 지정된 데이터 항목만 파일에 기록됩니다. 열의 표시 순서는 고정되어 있으며 다음과 같습니다.
- timeStamp - 1970년 1월 1일 이후의 밀리초 단위
- 경과 - 밀리초 단위
- 라벨 - 샘플러 라벨
- 응답 코드 - 예: 200 , 404
- 응답 메시지 - 예: 확인
- 스레드 이름
- 데이터 유형 - 예: 텍스트
- 성공 - 참 또는 거짓
- failureMessage - 있는 경우
- bytes - 샘플의 바이트 수
- sentBytes - 샘플에 대해 보낸 바이트 수
- grpThreads - 이 스레드 그룹의 활성 스레드 수
- allThreads - 모든 그룹의 총 활성 스레드 수
- URL
- 파일 이름 - 파일에 응답 저장 이 사용된 경우
- 대기 시간 - 첫 번째 응답까지의 시간
- 연결 - 연결을 설정하는 시간
- 부호화
- SampleCount - 샘플 수(여러 샘플이 집계되지 않는 한 1)
- ErrorCount - 오류 수(여러 샘플이 집계되지 않는 한 0 또는 1)
- 호스트 이름 - 샘플이 생성된 위치
- IdleTime - '유휴' 시간의 밀리초 수(일반적으로 0)
- 변수 , 지정된 경우
12.5 XML 로그 형식 2.1 ¶
업데이트된 XML(2.1)의 형식은 다음과 같습니다(줄 바꿈이 다름).
<?xml 버전="1.0" 인코딩="UTF-8"?> <테스트 결과 버전="1.2"> -- 중첩된 샘플이 있는 HTTP 샘플 <http샘플 t="1392" lt="351" ts="1144371014619" s="참" lb="HTTP 요청" rc="200" rm="확인" tn="1-1 듣기" dt="텍스트" de="iso-8859-1" by="12407"> <http샘플 t="170" lt="170" ts="1144371015471" s="참" lb="http://www.apache.org/style/style.css" rc="200" rm="확인" tn="1-1 듣기" dt="텍스트" de="ISO-8859-1" by="1002"> <responseHeader class="java.lang.String">HTTP/1.1 200 확인 날짜: 2006년 4월 7일 금요일 00:50:14 GMT ⋮ 콘텐츠 유형: 텍스트/css </responseHeader> <requestHeader class="java.lang.String">MyHeader: MyValue</requestHeader> <responseData class="java.lang.String">본문, TD, 일 { 글꼴 크기: 95%; 글꼴 패밀리: Arial, Geneva, Helvetica, sans-serif; 검정색; 배경색: 흰색; } ⋮ </응답 데이터> <쿠키 클래스="java.lang.String"></쿠키> <method class="java.lang.String">GET</method> <queryString class="java.lang.String"></queryString> <url>http://www.apache.org/style/style.css</url> </http샘플> <http샘플 t="200" lt="180" ts="1144371015641" s="참" lb="http://www.apache.org/images/asf_logo_wide.gif" rc="200" rm="확인" tn="1-1 듣기" dt="bin" de="ISO-8859-1" by="5866"> <responseHeader class="java.lang.String">HTTP/1.1 200 확인 날짜: 2006년 4월 7일 금요일 00:50:14 GMT ⋮ 콘텐츠 유형: 이미지/gif </responseHeader> <requestHeader class="java.lang.String">MyHeader: MyValue</requestHeader> <responseData class="java.lang.String">http://www.apache.org/asf.gif</responseData> <responseFile class="java.lang.String">Mixed1.html</responseFile> <쿠키 클래스="java.lang.String"></쿠키> <method class="java.lang.String">GET</method> <queryString class="java.lang.String"></queryString> <url>http://www.apache.org/asf.gif</url> </http샘플> <responseHeader class="java.lang.String">HTTP/1.1 200 확인 날짜: 2006년 4월 7일 금요일 00:50:13 GMT ⋮ 콘텐츠 유형: 텍스트/html; 문자 집합=ISO-8859-1 </responseHeader> <requestHeader class="java.lang.String">MyHeader: MyValue</requestHeader> <responseData class="java.lang.String"><!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 전환//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ⋮ <html> <머리> ⋮ </head> <본체> ⋮ </바디> </html> </응답 데이터> <쿠키 클래스="java.lang.String"></쿠키> <method class="java.lang.String">GET</method> <queryString class="java.lang.String"></queryString> <url>http://www.apache.org/</url> </http샘플> -- 비 HTTP 샘플 <sample t="0" lt="0" ts="1144372616082" s="true" lb="샘플러 예" rc="200" rm="확인" tn="1-1 듣기" dt="텍스트" de="ISO-8859-1" by="10"> <responseHeader class="java.lang.String"></responseHeader> <requestHeader class="java.lang.String"></requestHeader> <responseData class="java.lang.String">1-1 듣기</responseData> <responseFile class="java.lang.String">Mixed2.unknown</responseFile> <samplerData class="java.lang.String">ssssss</samplerData> </샘플> </test결과>
샘플 노드 이름은 " sample " 또는 " httpSample "일 수 있습니다.
12.6 XML 로그 형식 2.2 ¶
JTL 파일의 형식은 2.2 및 2.1에서 동일합니다. 형식 2.2는 JMX 파일에만 영향을 줍니다.
12.7 샘플 속성 ¶
샘플 속성의 의미는 다음과 같습니다.
기인하다 | 콘텐츠 |
---|---|
~에 의해 | 바이트 |
sby | 보낸 바이트 |
드 | 데이터 인코딩 |
dt | 데이터 형식 |
EC | 오류 수(여러 샘플이 집계되지 않는 한 0 또는 1) |
엥 | 샘플이 생성된 호스트 이름 |
그것 | 유휴 시간 = 샘플링에 사용되지 않은 시간(밀리초)(일반적으로 0) |
파운드 | 상표 |
이 | 대기 시간 = 초기 응답까지의 시간(밀리초) - 모든 샘플러가 이를 지원하는 것은 아닙니다. |
CT | 연결 시간 = 연결 설정 시간(밀리초) - 모든 샘플러가 이를 지원하는 것은 아닙니다. |
나 | 모든 스레드 그룹의 활성 스레드 수 |
응 | 이 그룹의 활성 스레드 수 |
rc | 응답 코드(예: 200 ) |
RM | 응답 메시지(예: OK ) |
에스 | 성공 플래그( true / false ) |
남 | 샘플 수(여러 샘플이 집계되지 않는 한 1) |
티 | 경과 시간(밀리초) |
텐 | 스레드 이름 |
TS | timeStamp(1970년 1월 1일 자정(UTC) 이후의 밀리초) |
이름 | 명명된 변수의 값 |
12.8 응답 데이터 저장 ¶
위와 같이 필요한 경우 응답 데이터를 XML 로그 파일에 저장할 수 있습니다. 그러나 이렇게 하면 파일이 다소 커질 수 있으며 여전히 유효한 XML이 되도록 텍스트를 인코딩해야 합니다. 또한 이미지를 포함할 수 없습니다. TEXT 유형의 샘플 응답만 저장할 수 있습니다.
또 다른 솔루션은 포스트 프로세서 Save_Responses_to_a_file 을 사용하는 것 입니다. 이렇게 하면 각 샘플에 대해 새 파일이 생성되고 샘플과 함께 파일 이름이 저장됩니다. 그런 다음 파일 이름을 샘플 로그 출력에 포함할 수 있습니다. 샘플 로그 파일을 다시 로드할 때 필요한 경우 파일에서 데이터를 검색합니다.
12.9 응답 데이터 로드(읽기) ¶
기존 결과 파일을 보려면 파일 " 찾아보기... " 버튼을 사용하여 파일을 선택할 수 있습니다. 필요한 경우 적절한 리스너가 포함된 더미 테스트 계획을 생성하기만 하면 됩니다.
결과는 XML 또는 CSV 형식 파일에서 읽을 수 있습니다. CSV 결과 파일에서 읽을 때 헤더(있는 경우)는 저장된 필드를 결정하는 데 사용됩니다. 헤더가 없는 CSV 파일을 올바르게 해석하려면 적절한 JMeter 속성을 설정해야 합니다.
12.10 리스너 GUI 데이터 저장 ¶
JMeter는 모든 리스너를 PNG 파일로 저장할 수 있습니다. 그렇게 하려면 왼쪽 패널에서 리스너를 선택합니다.
을 클릭 합니다. 파일 대화 상자가 나타납니다. 원하는 이름을 입력하고 리스너를 저장합니다.출력을 테이블로 생성하는 리스너는 복사/붙여넣기를 사용하여 저장할 수도 있습니다. 표에서 원하는 셀을 선택하고 OS Copy 단축키(보통 Ctrl + C )를 사용합니다. 데이터는 클립보드에 저장되어 스프레드시트나 텍스트 편집기와 같은 다른 응용 프로그램에 붙여넣을 수 있습니다.