18 소개

여러 테스트 요소는 JMeter 속성을 사용하여 동작을 제어합니다. 이러한 속성은 일반적으로 클래스가 로드될 때 해결됩니다. 이는 일반적으로 테스트 계획이 시작되기 전에 발생하므로 __setProperty() 함수 를 사용하여 설정을 변경할 수 없습니다 .

18.1 샘플러

샘플러는 JMeter의 실제 작업을 수행합니다. 각 샘플러( Flow Control Action 제외 )는 하나 이상의 샘플 결과를 생성합니다. 샘플 결과는 다양한 속성(성공/실패, 경과 시간, 데이터 크기 등)을 가지며 다양한 리스너에서 볼 수 있습니다.

FTP 요청

이 컨트롤러를 사용하면 FTP "파일 검색" 또는 "파일 업로드" 요청을 FTP 서버에 보낼 수 있습니다. 동일한 FTP 서버에 여러 요청을 보내려는 경우 FTP 요청 기본 구성 요소를 사용하여 각 FTP 요청 생성 컨트롤러에 대해 동일한 정보를 입력할 필요가 없도록 하십시오. 파일을 다운로드할 때 디스크(로컬 파일)나 응답 데이터 또는 둘 다에 저장할 수 있습니다.

대기 시간은 로그인하는 데 걸리는 시간으로 설정됩니다.

FTP 요청의 제어판 스크린샷
FTP 요청의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 샘플러를 설명하는 이름입니다.
아니
서버 이름 또는 IP
FTP 서버의 도메인 이름 또는 IP 주소입니다.
포트
사용할 포트입니다. >0 이면 이 특정 포트가 사용되며, 그렇지 않으면 JMeter는 기본 FTP 포트를 사용합니다.
아니
원격 파일:
검색할 파일 또는 업로드할 대상 파일의 이름입니다.
로컬 파일:
업로드할 파일 또는 다운로드 대상(기본값은 원격 파일 이름).
예, 업로드하는 경우(*)
로컬 파일 내용:
업로드 콘텐츠를 제공하고 로컬 파일 속성을 재정의합니다.
예, 업로드하는 경우(*)
가져오기(RETR) / 넣기(STOR)
파일을 검색할지 업로드할지 여부입니다.
바이너리 모드를 사용하시겠습니까?
바이너리 모드(기본 ASCII)를 사용하려면 선택하십시오.
응답으로 파일을 저장하시겠습니까?
검색된 파일의 내용을 응답 데이터에 저장할지 여부입니다. 모드가 ASCII인 경우 내용은 결과 보기 트리 에 표시됩니다 .
예, 다운로드하는 경우
사용자 이름
FTP 계정 사용자 이름.
대개
비밀번호
FTP 계정 비밀번호. NB 이것은 테스트 계획에서 볼 수 있습니다.
대개
^^

HTTP 요청

이 샘플러를 사용하면 웹 서버에 HTTP/HTTPS 요청을 보낼 수 있습니다. 또한 JMeter가 이미지 및 기타 임베디드 리소스에 대한 HTML 파일을 구문 분석하고 이를 검색하기 위해 HTTP 요청을 보낼지 여부를 제어할 수 있습니다. 다음 유형의 포함된 리소스가 검색됩니다.

  • 이미지
  • 애플릿
  • 스타일시트(CSS) 및 해당 파일에서 참조되는 리소스
  • 외부 스크립트
  • 프레임, iframe
  • 배경 이미지(본체, 테이블, TD, TR)
  • 배경음

기본 파서는 org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser 입니다. " htmlparser.className " 속성을 사용하여 변경할 수 있습니다 . 자세한 내용은 jmeter.properties 를 참조하세요.

동일한 웹 서버에 여러 요청을 보내려는 경우 HTTP 요청 기본값 구성 요소를 사용하여 각 HTTP 요청에 대해 동일한 정보를 입력할 필요가 없도록 하십시오.

또는 HTTP 요청을 수동으로 추가하는 대신 JMeter의 HTTP(S) 테스트 스크립트 레코더 를 사용하여 생성할 수 있습니다. 이렇게 하면 HTTP 요청이 많거나 매개변수가 많은 요청이 있는 경우 시간을 절약할 수 있습니다.

샘플러를 정의하는 데 사용되는 세 가지 테스트 요소가 있습니다.

AJP/1.3 샘플러
Tomcat mod_jk 프로토콜 사용(Apache httpd 없이 AJP 모드에서 Tomcat 테스트 가능) AJP 샘플러는 다중 파일 업로드를 지원하지 않습니다. 첫 번째 파일만 사용됩니다.
HTTP 요청
여기에는 사용할 HTTP 프로토콜 구현을 선택하는 구현 드롭다운 상자가 있습니다.
자바
JVM에서 제공하는 HTTP 구현을 사용합니다. 이것은 HttpClient 구현과 비교하여 몇 가지 제한 사항이 있습니다. 아래를 참조하십시오.
HTTP클라이언트4
Apache HttpComponents HttpClient 4.x를 사용합니다.
공백 값
HTTP 샘플러에 대한 구현을 설정하지 않으므로 HTTP 요청 기본값이 있는 경우 또는 jmeter.properties에 정의된 jmeter.httpsampler 속성에 의존 합니다.
GraphQL HTTP 요청
이것은 동일한 샘플러를 사용하여 내부에서 자동으로 HTTP 인수로 변환하면서 GraphQL 쿼리 , 변수작업 이름 을 보거나 편집하기 위한 보다 편리한 UI 요소를 제공 하는 HTTP 요청 의 GUI 변형입니다 . 이것은 HTTP/HTTPS를 통한 GraphQL 요청에 덜 편리하거나 관련이 없기 때문에 다음 UI 요소를 숨기거나 사용자 지정합니다.
  • 메서드 : HTTP 사양을 통해 GraphQL을 준수하는 POST 및 GET 메서드만 사용할 수 있습니다. 기본적으로 POST 방법이 선택됩니다.
  • 매개변수포스트 본문 탭: 대신 쿼리, 변수 및 작업 이름 UI 요소를 통해 매개변수 내용을 보거나 편집할 수 있습니다.
  • 파일 업로드 탭: GraphQL 쿼리와 관련이 없습니다.
  • 고급 탭의 HTML 파일 섹션에서 포함된 리소스: GraphQL JSON 응답과 관련이 없습니다.

Java HTTP 구현에는 몇 가지 제한 사항이 있습니다.

  • 연결을 재사용하는 방법을 제어할 수 없습니다. 연결이 JMeter에 의해 해제되면 동일한 스레드에서 다시 사용할 수도 있고 사용하지 않을 수도 있습니다.
  • API는 단일 스레드 사용에 가장 적합합니다. 다양한 설정은 시스템 속성을 통해 정의되므로 모든 연결에 적용됩니다.
  • Kerberos 인증을 지원하지 않음
  • Keystore Config를 사용한 클라이언트 기반 인증서 테스트는 지원하지 않습니다.
  • 재시도 메커니즘의 더 나은 제어
  • 가상 호스트를 지원하지 않습니다.
  • GET , POST , HEAD , OPTIONS , PUT , DELETETRACE 메서드만 지원합니다.
  • DNS Cache Manager 로 DNS 캐싱에 대한 더 나은 제어
참고: FILE 프로토콜은 테스트 목적으로만 사용됩니다. 어떤 HTTP 샘플러가 사용되는지에 관계없이 동일한 코드로 처리됩니다.

요청에 서버 또는 프록시 로그인 인증이 필요한 경우(즉, 브라우저가 팝업 대화 상자를 생성하는 경우) HTTP 인증 관리자 구성 요소도 추가해야 합니다. 일반 로그인의 경우(즉, 사용자가 양식에 로그인 정보를 입력하는 경우) 양식 제출 버튼이 무엇을 하는지 알아내고 적절한 메소드(일반적으로 POST )와 양식 정의의 적절한 매개변수를 사용하여 HTTP 요청을 생성해야 합니다. . 페이지에서 HTTP를 사용하는 경우 JMeter 프록시를 사용하여 로그인 시퀀스를 캡처할 수 있습니다.

각 스레드에 대해 별도의 SSL 컨텍스트가 사용됩니다. 단일 SSL 컨텍스트(브라우저의 표준 동작이 아님)를 사용하려면 JMeter 속성을 설정하십시오.

https.sessioncontext.shared=true
기본적으로 버전 5.0부터 SSL 컨텍스트는 스레드 그룹 반복 중에 유지되고 각 테스트 반복에 대해 재설정됩니다. 테스트 계획에서 동일한 사용자가 여러 번 반복하는 경우 이를 false로 설정해야 합니다.
httpclient.reset_state_on_thread_group_iteration=true
참고: 이것은 Java HTTP 구현에는 적용되지 않습니다.
JMeter는 SSL 프로토콜 레벨 TLS로 기본 설정됩니다. 서버에 다른 수준(예: SSLv3 )이 필요한 경우 JMeter 속성을 변경합니다. 예를 들면 다음과 같습니다.
https.default.protocol=SSLv3

JMeter는 또한 https.socket.protocols 속성을 변경하여 추가 프로토콜을 활성화할 수 있습니다 .

요청이 쿠키를 사용하는 경우 HTTP 쿠키 관리자 도 필요합니다 . 스레드 그룹 또는 HTTP 요청에 이러한 요소 중 하나를 추가할 수 있습니다. 권한 부여 또는 쿠키가 필요한 HTTP 요청이 두 개 이상 있는 경우 스레드 그룹에 요소를 추가하십시오. 그렇게 하면 모든 HTTP 요청 컨트롤러가 동일한 권한 부여 관리자와 쿠키 관리자 요소를 공유합니다.

요청이 세션을 유지 관리하기 위해 "URL 재작성"이라는 기술을 사용하는 경우 추가 구성 단계에 대해서는 섹션 6.1 URL 재작성으로 사용자 세션 처리 를 참조하십시오.

HTTP 요청의 제어판 스크린샷
HTTP 요청의 제어판 스크린샷
HTTP 요청 고급 구성 필드
HTTP 요청 고급 구성 필드
GraphQL HTTP 요청의 제어판 스크린샷
GraphQL HTTP 요청의 제어판 스크린샷
GraphQL HTTP 요청에 대한 변수 필드
GraphQL HTTP 요청에 대한 변수 필드

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 샘플러를 설명하는 이름입니다.
아니
섬기는 사람
웹 서버의 도메인 이름 또는 IP 주소(예: www.example.com ) . [ http:// 접두사 를 포함하지 마십시오 .] 참고: " Host " 헤더가 헤더 관리자에 정의되어 있으면 이 헤더가 가상 호스트 이름으로 사용됩니다.
다음을 제외하고 서버가 필요합니다.
  • HTTP 요청 기본값 에 의해 제공됩니다.
  • 또는 스키마, 호스트 및 포트( scheme://host:port ) 를 포함하는 전체 URL 이 경로 필드 에 설정됩니다.
아니
포트
웹 서버가 수신 대기 중인 포트입니다. 기본값: 80
아니
연결 시간 초과
접속 시간 초과. 연결이 열릴 때까지 대기하는 시간(밀리초)입니다.
아니
응답 시간 초과
응답 시간 초과. 응답을 기다리는 시간(밀리초)입니다. 이것은 각 응답 대기에 적용됩니다. 서버 응답이 여러 청크로 보내지면 전체 경과 시간이 제한 시간보다 길어질 수 있습니다.

Duration Assertion 은 완료하는 데 너무 오래 걸리는 응답을 감지하는 데 사용할 수 있습니다 .

아니
서버(프록시)
요청을 수행할 프록시 서버의 호스트 이름 또는 IP 주소입니다. [ http:// 접두사 를 포함하지 마십시오 .]
아니
포트
프록시 서버가 수신 대기 중인 포트입니다.
아니요, 프록시 호스트 이름을 지정하지 않는 한
사용자 이름
(선택 사항) 프록시 서버의 사용자 이름.
아니
비밀번호
(선택 사항) 프록시 서버의 비밀번호입니다. (NB 이것은 테스트 계획에서 암호화되지 않은 상태로 저장됩니다)
아니
구현
자바 , HttpClient4 . 지정되지 않고 HTTP 요청 기본값에 의해 정의되지 않은 경우 기본값은 JMeter 속성 jmeter.httpsampler 값에 따라 달라지며, 그렇지 않으면 HttpClient4 구현이 사용됩니다.
아니
규약
HTTP , HTTPS 또는 파일 . 기본값: HTTP
아니
방법
GET , POST , HEAD , TRACE , OPTIONS , PUT , DELETE , PATCH ( JAVA 구현에서는 지원되지 않음). HttpClient4 에서는 WebDav 와 관련된 COPY , LOCK , MKCOL , MOVE , PROPFIND , PROPPATCH , UNLOCK , REPORT , MKCALENDAR , SEARCH 메서드도 허용 됩니다.

JMeter 속성 httpsampler.user_defined_methods 를 사용하여 HttpClient4에 대해 더 많은 메서드를 미리 정의할 수 있습니다 .

콘텐츠 인코딩
사용할 콘텐츠 인코딩( POST , PUT , PATCHFILE ). 이것은 사용할 문자 인코딩이며 Content-Encoding HTTP 헤더와 관련이 없습니다.
아니
자동으로 리디렉션
기본 http 프로토콜 핸들러가 자동으로 리디렉션을 따르도록 설정하여 JMeter에서 볼 수 없으므로 샘플로 표시되지 않습니다. GETHEAD 요청 에만 사용해야 합니다. HttpClient 샘플러는 POST 또는 PUT 에 사용하려는 시도를 거부합니다 .
경고: 쿠키 및 헤더 처리에 대한 정보는 아래를 참조하십시오.
아니
리디렉션 팔로우
" 자동으로 리디렉션 "이 활성화되지 않은 경우에만 효과가 있습니다. 설정되면 JMeter 샘플러는 응답이 리디렉션인지 확인하고 리디렉션이면 이를 따릅니다. 초기 리디렉션 및 추가 응답은 추가 샘플로 표시됩니다. 상위 샘플의 URL 및 데이터 필드는 최종(리디렉션되지 않은) 샘플에서 가져오지만 상위 바이트 수 및 경과 시간에는 모든 샘플이 포함됩니다. 대기 시간은 초기 응답에서 가져옵니다. HttpClient 샘플러는 다음 메시지를 기록할 수 있습니다.
"리디렉션이 요청되었지만 followRedirects가 비활성화되었습니다"
이것은 무시할 수 있습니다.
JMeter는 절대 및 상대 리디렉션 URL 모두에서 ' /../segment ' 형식의 경로를 축소합니다. 예를 들어 http://host/one/../two 는 http://host/two 로 축소됩니다 . 필요한 경우 JMeter 속성 httpsampler.redirect.removeslashdotdot=false 를 설정하여 이 동작을 억제할 수 있습니다.
아니
KeepAlive 사용
JMeter는 Connection: keep-alive 헤더를 설정합니다. 연결 재사용이 사용자 제어 하에 있지 않기 때문에 기본 HTTP 구현에서는 제대로 작동하지 않습니다. Apache HttpComponents HttpClient 구현과 함께 작동합니다.
아니
HTTP POST에 multipart/form-data 사용
multipart/form-data 또는 application/x-www-form-urlencoded 게시 요청 사용
아니
브라우저 호환 헤더
multipart/form-data 를 사용 하면 Content-TypeContent-Transfer-Encoding 헤더가 표시되지 않습니다. Content-Disposition 헤더만 전송됩니다 .
아니
리소스 경로(예: /servlets/myServlet ). 리소스에 쿼리 문자열 매개변수가 필요한 경우 아래 "요청과 함께 매개변수 보내기" 섹션에 추가합니다.
특별한 경우로, 경로가 " http:// " 또는 " https:// "로 시작하면 이것이 전체 URL로 사용됩니다.
이 경우 서버, 포트 및 프로토콜 필드는 무시됩니다. GETDELETE 메소드 에 대해서도 매개변수가 무시됩니다 . 또한 경로는 %20 으로 공백을 바꾸는 것 외에는 인코딩되지 않으므로 URISyntaxException 과 같은 오류를 피하기 위해 안전하지 않은 문자를 인코딩해야 할 수도 있습니다 .
아니
요청과 함께 매개변수 보내기
쿼리 문자열은 제공한 매개변수 목록에서 생성됩니다. 각 매개변수에는 이름 , 매개변수를 인코딩하는 옵션, 등호를 포함하거나 제외하는 옵션이 있습니다(일부 애플리케이션은 값이 빈 문자열일 때 등호를 기대하지 않음). 쿼리 문자열은 선택한 "메서드"에 따라 올바른 방식으로 생성됩니다(즉, GET 또는 DELETE 를 선택한 경우 POST 또는 PUT 인 경우 쿼리 문자열이 URL에 추가됩니다., 그 이후에는 별도로 발송됩니다.) 또한 다중 파트 양식을 사용하여 파일을 보내는 경우 다중 파트 양식 사양을 사용하여 쿼리 문자열이 생성됩니다. 매개변수 처리에 대한 추가 정보는 아래를 참조하십시오.

또한 각 매개변수를 URL로 인코딩해야 하는지 여부를 지정할 수 있습니다. 이것이 무엇을 의미하는지 확실하지 않은 경우 선택하는 것이 가장 좋습니다. 값에 다음과 같은 문자가 포함되어 있으면 일반적으로 인코딩이 필요합니다.:

  • ASCII 제어 문자
  • 비 ASCII 문자
  • 예약 문자: URL은 구문을 정의할 때 특별한 용도로 일부 문자를 사용합니다. 이러한 문자가 URL 내에서 특정 역할에 사용되지 않는 경우 인코딩해야 합니다(예: ' $ ', ' & ', ' + ', ' , ' , ' / ', ' : ', ' ; ', ' = ', ' ? ', ' @ '
  • 안전하지 않은 문자: 일부 문자는 다양한 이유로 URL 내에서 오해될 가능성이 있습니다. 이러한 문자도 항상 인코딩되어야 합니다(예: ' ', ' < ', ' > ', ' # ', ' % ', …
아니
파일 경로:
보낼 파일의 이름입니다. 공백으로 두면 JMeter가 파일을 보내지 않고 채워지면 JMeter가 자동으로 요청을 멀티파트 양식 요청으로 보냅니다.

POST 또는 PUT 또는 PATCH 요청이고 '매개변수 이름' 속성(아래)이 생략된 단일 파일이 있는 경우 파일은 요청의 전체 본문으로 전송됩니다. 즉, 래퍼가 추가되지 않습니다. 이를 통해 임의의 본문을 보낼 수 있습니다. 이 기능은 POST 요청과 PUT 요청에 대해 제공됩니다. 매개변수 처리에 대한 추가 정보는 아래를 참조하십시오.

아니
매개변수 이름:
" name " 웹 요청 매개변수의 값입니다.
아니
MIME 유형
MIME 유형(예: text/plain ). POST 또는 PUT 또는 PATCH 요청이고 ' name ' 속성(아래)이 생략되거나 요청 본문이 매개변수 값만으로 구성된 경우 이 필드의 값이 콘텐츠 유형 요청 의 값으로 사용됩니다. 헤더.
아니
HTML 파일에서 포함된 모든 리소스 검색
HTML 파일을 구문 분석하고 파일에서 참조되는 모든 이미지, Java 애플릿, JavaScript 파일, CSS 등에 대한 HTTP/HTTPS 요청을 보내도록 JMeter에 지시합니다. 자세한 내용은 아래를 참조하세요.
아니
응답을 MD5 해시로 저장하시겠습니까?
선택하면 응답이 샘플 결과에 저장되지 않습니다. 대신 데이터의 32자 MD5 해시가 대신 계산되어 저장됩니다. 이것은 많은 양의 데이터를 테스트하기 위한 것입니다.
아니
URL은 다음과 일치해야 합니다.
있는 경우 발견된 포함된 URL과 일치시키는 데 사용되는 정규식이어야 합니다. 따라서 http://example.invalid/ 에서 포함된 리소스만 다운로드하려면 http://example\.invalid/.* 표현식을 사용하십시오 .
아니
URL은 다음과 일치하면 안 됩니다.
있는 경우 발견된 포함된 URL을 필터링하는 데 사용되는 정규식이어야 합니다. 따라서 어떤 소스에서든 PNG 또는 SVG 파일을 다운로드하지 않으려면 .*\.(?i:svg|png) 표현식을 사용하십시오.
아니
동시 풀 사용
임베디드 리소스를 얻으려면 동시 연결 풀을 사용하십시오.
아니
크기
포함된 리소스를 가져오는 데 사용되는 동시 연결의 풀 크기입니다.
아니
소스 주소 유형
[HTTPClient 구현이 있는 HTTP 요청에만 해당]
소스 주소 값을 구별하려면 다음 유형을 선택합니다.
  • 특정 IP 주소 또는 (로컬) 호스트 이름을 사용하려면 IP/호스트 이름 을 선택하십시오 .
  • 장치 를 선택 하여 해당 인터페이스에 사용할 수 있는 첫 번째 주소를 선택합니다(IPv4 또는 IPv6일 수 있음).
  • 장치 IPv4 를 선택 하여 장치 이름의 IPv4 주소(예: eth0 , lo , em0 등) 를 선택합니다.
  • 장치 IPv6 을 선택 하여 장치 이름의 IPv6 주소(예: eth0 , lo , em0 등) 를 선택합니다.
아니
소스 주소 필드
[HTTPClient 구현이 있는 HTTP 요청에만 해당]
이 속성은 IP 스푸핑을 활성화하는 데 사용됩니다. 이 샘플의 기본 로컬 IP 주소를 재정의합니다. JMeter 호스트에는 여러 IP 주소(예: IP 별칭, 네트워크 인터페이스, 장치)가 있어야 합니다. 값은 호스트 이름, IP 주소 또는 " eth0 ", " lo " 또는 " wlan0 " 과 같은 네트워크 인터페이스 장치일 수 있습니다 . httpclient.localaddress
속성 이 정의되면 모든 HttpClient 요청에 사용됩니다.
아니

다음 매개변수는 GraphQL HTTP 요청 에만 사용할 수 있습니다 .

매개변수

기인하다
설명
필수의
질문
GraphQL 쿼리(또는 변형) 문.
변수
유효한 JSON 문자열의 GraphQL 쿼리(또는 변형) 변수. 참고 : 입력 문자열이 유효한 JSON 문자열이 아닌 경우 ERROR 로그와 함께 무시됩니다.
아니
작업 이름
다중 작업 문서를 요청할 때 선택적인 GraphQL 작업 이름입니다.
아니
자동 리디렉션을 사용하는 경우 쿠키는 초기 URL에 대해서만 전송됩니다. 이로 인해 로컬 서버로 리디렉션되는 웹 사이트에 예기치 않은 동작이 발생할 수 있습니다. 예를 들어 www.example.com 이 www.example.co.uk 로 리디렉션되는 경우 . 이 경우 서버는 두 URL 모두에 대해 쿠키를 반환하지만 JMeter는 마지막 호스트(예: www.example.co.uk )에 대한 쿠키만 볼 수 있습니다. 테스트 계획의 다음 요청이 www.example.co.uk 가 아닌 www.example.com 을 사용하는 경우, 올바른 쿠키를 얻지 못합니다. 마찬가지로 헤더는 초기 요청에 대해 전송되고 리디렉션에 대해서는 전송되지 않습니다. 레코더를 사용하여 만든 테스트 계획이 리디렉션된 URL에서 계속되기 때문에 이것은 일반적으로 수동으로 만든 테스트 계획의 경우에만 문제가 됩니다.

매개변수 처리: POSTPUT
방법 의 경우 보낼 파일이 없고 매개변수 이름이 생략된 경우 매개변수의 모든 값을 연결하여 본문이 생성됩니다. 값은 줄 끝 문자를 추가하지 않고 연결됩니다. 값 필드에서 __char() 함수 를 사용하여 추가할 수 있습니다 . 이를 통해 임의의 본문을 보낼 수 있습니다. 인코딩 플래그가 설정된 경우 값이 인코딩됩니다. 전송되는 콘텐츠 유형 요청 헤더를 제어하는 ​​방법 위의 MIME 유형도 참조하십시오 . 다른 방법의 경우 매개변수 이름이 없으면 매개변수가 무시됩니다. 이를 통해 변수에 의해 정의된 선택적 매개변수를 사용할 수 있습니다.


요청에 이름 없는 매개변수만 있는 경우(또는 매개변수가 전혀 없는 경우) 본문 데이터 탭 으로 전환할 수 있는 옵션이 있습니다 . 이 옵션은 다음과 같은 경우에 유용합니다.

  • GWT RPC HTTP 요청
  • JSON REST HTTP 요청
  • XML REST HTTP 요청
  • SOAP HTTP 요청
Tree 노드를 벗어나면 해당 데이터에서 Body Data 탭 을 지우지 않는 한 매개변수 탭으로 다시 전환할 수 없습니다 .

본문 데이터 모드에서 각 행은 마지막 행과 별도로 CRLF가 추가된 상태로 전송 됩니다 . 데이터의 마지막 줄 다음에 CRLF 를 보내려면 그 뒤에 빈 줄이 있는지 확인하십시오. (이것은 커서를 다음 줄에 놓을 수 있는지 여부를 제외하고는 볼 수 없습니다.)

그림 1 - 이름 없는 매개변수가 하나 있는 HTTP 요청
그림 1 - 이름 없는 매개변수가 하나 있는 HTTP 요청
그림 2 - 전환 확인 대화 상자
그림 2 - 전환 확인 대화 상자
그림 3 - 본문 데이터를 사용한 HTTP 요청
그림 3 - 본문 데이터를 사용한 HTTP 요청

메소드 처리:
GET , DELETE , POST , PUT PATCH 요청 메소드는 유사하게 작동합니다. 단, 3.1 부터는 POST 메소드만 멀티파트 요청 또는 파일 업로드를 지원합니다. PUTPATCH 메서드 본문 은 다음 중 하나로 제공되어야 합니다.

  • 매개변수 이름 필드가 비어 있는 파일로 본문을 정의합니다. MIME 유형이 콘텐츠 유형으로 사용되는 경우
  • 이름이 없는 매개변수 값으로 본문을 정의합니다.
  • 신체 데이터 탭 사용

GET , DELETEPOST 메소드에는 매개변수 탭 을 사용하여 매개 변수를 전달하는 추가 방법이 있습니다 . GET , DELETE , PUTPATCH 에는 Content-Type이 필요합니다. 파일을 사용하지 않는 경우 헤더 관리자를 샘플러에 연결하고 거기에서 Content-Type을 정의하십시오.

임베디드 리소스의 JMeter 스캔 응답. htmlParser , cssParserwmlParser 와 같은 파서 ID 목록인 HTTPResponse.parsers 속성을 사용합니다 . 발견된 각 ID에 대해 JMeter는 두 가지 추가 속성을 확인합니다.

  • id.types - 콘텐츠 유형 목록
  • id.className - 포함된 리소스를 추출하는 데 사용되는 파서

설정에 대한 자세한 내용은 jmeter.properties 파일을 참조하십시오 . HTTPResponse.parser 속성이 설정되지 않은 경우 JMeter는 이전 동작으로 되돌아갑니다. 즉, text/html 응답만 스캔 됩니다 .

느린 연결 에뮬레이션:

HttpClient4Java 샘플러는 느린 연결의 에뮬레이션을 지원합니다. jmeter.properties 에서 다음 항목을 참조하십시오 .

# 느린 연결을 에뮬레이트하려면 초당 문자 수 > 0 정의
#httpclient.socket.http.cps=0
#httpclient.socket.https.cps=0
그러나 Java 샘플러는 느린 HTTPS 연결만 지원합니다.

응답 크기 계산

Java 구현 은 응답 본문 크기에 청크 헤더와 같은 전송 오버헤드를 포함하지 않습니다. HttpClient4
구현 은 응답 본문 크기에 오버헤드를 포함하므로 값이 응답 내용의 바이트 수보다 클 수 있습니다.

재시도 처리
기본적으로 재시도는 HttpClient4 및 Java 구현 모두에 대해 0으로 설정되어 있으므로 재시도가 시도되지 않습니다.
HttpClient4의 경우 관련 JMeter 속성을 설정하여 재시도 횟수를 재정의할 수 있습니다. 예를 들면 다음과 같습니다.

httpclient4.retrycount=3
HC4 구현을 사용하면 기본적으로 Idempotent Http 메서드에서 재시도가 수행됩니다. 모든 방법에 대해 다시 시도하려면 속성을 설정하십시오.
httpclient4.request_sent_retry_enabled=true
Java 구현은 기본적으로 다시 시도하지 않습니다. 다음을 설정하여 변경할 수 있습니다.
http.java.sampler.retries=3

참고: 인증서가 알고리즘 제약 조건을 준수하지 않음
다음 오류가 발생할 수 있습니다. java.security.cert.CertificateException: SSL 인증서(자체 또는 MD2를 사용하는 서명 알고리즘(예: md2WithRSAEncryption ) 또는 1024비트보다 작은 크기의 SSL 인증서가 있는 신뢰 체인의 SSL 인증서.

이 오류는 Java 8의 보안 강화와 관련이 있습니다.

HTTPS 요청을 수행할 수 있도록 Java jdk.certpath.disabledAlgorithms 속성을 편집하여 Java 설치의 보안을 다운그레이드할 수 있습니다. 귀하의 경우에 따라 MD2 값 또는 크기 제한을 제거하십시오.

이 속성은 다음 파일에 있습니다.

JAVA_HOME/jre/lib/security/java.security

자세한 내용은 버그 56357 을 참조하십시오.

^^

JDBC 요청

이 샘플러를 사용하면 데이터베이스에 JDBC 요청(SQL 쿼리)을 보낼 수 있습니다.

이것을 사용하기 전에 JDBC 연결 구성 구성 요소 를 설정해야 합니다.

변수 이름 목록이 제공되면 Select 문에서 반환된 각 행에 대해 해당 열의 값으로 변수가 설정되고(변수 이름이 제공된 경우) 행 개수도 설정됩니다. 예를 들어, Select 문이 3개 열의 2개 행을 반환하고 변수 목록이 A,,C 이면 다음 변수가 설정됩니다.

A_#=2(행 수)
A_1=1열, 1행
A_2=열 1, 행 2
C_#=2(행 수)
C_1=3열, 1행
C_2=3열, 2행

Select 문이 0개의 행을 반환하면 A_#C_# 변수는 0 으로 설정되고 다른 변수는 설정되지 않습니다.

필요한 경우 이전 변수가 지워집니다. 예를 들어 첫 번째 선택이 6개의 행을 검색하고 두 번째 선택이 3개의 행만 반환하는 경우 4, 5, 6행에 대한 추가 변수가 제거됩니다.

대기 시간은 연결을 획득하는 데 걸린 시간부터 설정됩니다.
JDBC 요청의 제어판 스크린샷
JDBC 요청의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 샘플러를 설명하는 이름입니다.
아니
JDBC Connection Configuration에서 선언된 Pool의 변수명
연결 풀이 바인딩되는 JMeter 변수의 이름입니다. 이것은 JDBC 연결 구성 의 ' 변수 이름 ' 필드 와 일치해야 합니다 .
쿼리 유형
명령문 유형에 따라 다음과 같이 설정합니다.
  • 문 선택
  • 업데이트 문 - 삽입 및 삭제에도 사용
  • 호출 가능한 문
  • 준비된 Select 문
  • 준비된 업데이트 문 - 삽입 및 삭제에도 사용
  • 저지르다
  • 롤백
  • 자동 커밋(거짓)
  • 자동 커밋(참)
  • 편집 - 위 중 하나로 평가되는 변수 참조여야 합니다.
Commit , Rollback , Autocommit(false)Autocommit(true) 유형 은 지정된 SQL 문을 무시하고 연결 상태만 변경하므로 특별합니다.
SQL 쿼리
SQL 쿼리.
후행 세미콜론을 입력하지 마십시오.
일반적으로 {} 를 사용하여 Callable 문을 묶을 필요가 없습니다. 그러나 데이터베이스가 비표준 구문을 사용하는 경우 사용할 수 있습니다.
JDBC 드라이버는 {} 로 묶인 경우 필요한 경우 명령문을 자동으로 변환합니다 .
예를 들어:
  • id=23인 t_customers에서 * 선택
  • CALL SYSCS_UTIL.SYSCS_EXPORT_TABLE(null, ?, ?, null, null, null)
    • 매개변수 값: tablename , 파일 이름
    • 매개변수 유형: VARCHAR , VARCHAR
두 번째 예에서는 Apache Derby를 사용하고 있다고 가정합니다.
매개변수 값
쉼표로 구분된 매개변수 값 목록입니다. ]NULL[ 을 사용 하여 NULL 매개변수를 나타냅니다. (필요한 경우 " jdbcsampler.nullmarker " 속성을 정의하여 null 문자열을 변경할 수 있습니다 .)
값 중 하나라도 쉼표 또는 큰따옴표를 포함하는 경우 목록을 큰따옴표로 묶어야 하며 포함된 큰따옴표는 반드시 예를 들면:
"Dbl-따옴표: "" 및 쉼표: ,"
매개변수가 OUT 매개변수인 경우에도 명령문에 있는 자리 표시자 수만큼 값이 있어야 합니다 . 값이 사용되지 않는 경우에도 값을 설정해야 합니다(예: CallableStatement에서).
예, 준비된 또는 호출 가능한 명령문에 매개변수가 있는 경우
매개변수 유형
쉼표로 구분된 SQL 매개변수 유형 목록(예: INTEGER , DATE , VARCHAR , DOUBLE ) 또는 상수의 정수 값. 드라이버가 제안한 사용자 정의 데이터베이스 유형을 사용할 때 이러한 정수 값을 사용할 수 있습니다(예: OracleTypes.CURSOR 는 정수 값 -10 으로 표시될 수 있음 ).
이들은 java.sql.Types 클래스의 필드로 정의됩니다 . 예를 들어
java.sql.Types용 Javadoc을 참조하십시오 .
참고: JMeter는 런타임 JVM에 의해 정의된 모든 유형을 사용하므로 다른 JVM에서 실행 중인 경우 적절한 문서를 확인하십시오.
호출 가능한 명령문에 INOUT 또는 OUT 매개변수가 있는 경우 적절한 매개변수 유형을 접두사로 지정해야 합니다. 예를 들어 " INTEGER " 대신 " INOUT INTEGER "를 사용하십시오.
지정하지 않으면 " IN "이 가정됩니다. 즉 " DATE "가 " IN DATE "와 같습니다. 유형이 java.sql.Types
에 있는 필드 중 하나가 아닌 경우 JMeter는 해당하는 정수도 허용합니다. 예를 들어 OracleTypes.CURSOR == -10 이므로 " INOUT -10 " 을 사용할 수 있습니다 .
명령문에 있는 자리 표시자 수만큼 유형이 있어야 합니다.
예, 준비된 또는 호출 가능한 명령문에 매개변수가 있는 경우
변수 이름
Select 문, 준비된 Select 문 또는 CallableStatement에서 반환된 값을 보관할 변수 이름의 쉼표로 구분된 목록입니다. CallableStatement와 함께 사용할 때 변수 목록은 호출에서 반환된 OUT 매개변수 와 동일한 순서로 되어 있어야 합니다 . OUT 매개 변수보다 변수 이름이 적은 경우 제공된 변수 이름만큼 많은 결과가 스레드 컨텍스트 변수에 저장됩니다. OUT 매개 변수보다 많은 변수 이름이 존재하는 경우 추가 변수는 무시됩니다.
아니
결과 변수 이름
지정하면 행 맵 목록이 포함된 Object 변수가 생성됩니다. 각 맵에는 키로 열 이름이 포함되고 값으로 열 데이터가 포함됩니다. 용법:
columnValue = vars.getObject("결과 개체").get(0).get("열 이름");
아니
쿼리 시간 초과
쿼리에 대한 시간 초과를 초 단위로 설정합니다. 빈 값은 무한대인 0을 의미합니다. -1 은 사용 사례 또는 특정 드라이버가 시간 초과를 지원하지 않을 때 필요할 수 있는 쿼리 시간 초과를 설정하지 않음을 의미합니다. 기본값은 0입니다.
아니
결과 집합 제한
ResultSet을 통해 반복할 행 수를 제한합니다. 빈 값은 -1 을 의미합니다(예: 제한 없음). 이는 기본값이기도 합니다. 이것은 JDBC 드라이버를 통해 데이터베이스에서 가져올 데이터의 양을 줄이는 데 도움이 될 수 있지만 핸들 ResultSet 의 가능한 모든 옵션( 예: 불완전한 ResultSet 및 레코드 수 ≤ 제한)에 각각 영향을 미칩니다.
아니
결과 집합 처리
호출 가능한 문에서 반환된 ResultSet가 처리되는 방법을 정의합니다.
  • 문자열로 저장 (기본값) - 변수 이름 목록의 모든 변수는 문자열로 저장되며 목록에 있는 경우 ResultSet 을 통해 반복되지 않습니다 . CLOB 는 문자열로 변환됩니다. BLOB 는 UTF-8로 인코딩된 바이트 배열인 것처럼 문자열로 변환됩니다. CLOBBLOB 모두 jdbcsampler.max_retain_result_size 바이트 이후에 잘립니다.
  • 객체로 저장 - 변수 이름 목록에 있는 ResultSet 유형의 변수는 객체로 저장되고 후속 테스트/스크립트에서 액세스할 수 있으며 ResultSet 을 통해 반복되지 않고 반복됩니다 . CLOB s는 Store As String 이 선택된 것처럼 처리됩니다. BLOB 는 바이트 배열로 저장됩니다. CLOBBLOB 모두 jdbcsampler.max_retain_result_size 바이트 이후에 잘립니다.
  • Count Records - ResultSet 유형 의 변수는 결과로 레코드 수를 표시하여 반복됩니다. 변수는 문자열로 저장됩니다. BLOB 의 경우 객체의 크기가 저장됩니다.
아니
현재 버전의 JMeter는 UTF-8을 문자 인코딩으로 사용합니다. 이전에는 플랫폼 기본값이 사용되었습니다.
변수 이름이 테스트 계획에서 고유한지 확인하십시오.
^^

자바 요청

이 샘플러를 사용하면 org.apache.jmeter.protocol.java.sampler.JavaSamplerClient 인터페이스를 구현하는 Java 클래스를 제어할 수 있습니다. 이 인터페이스의 고유한 구현을 작성하여 JMeter를 사용하여 다중 스레드, 입력 매개변수 제어 및 데이터 수집을 활용할 수 있습니다.

풀다운 메뉴는 클래스 경로에서 JMeter가 찾은 모든 구현 목록을 제공합니다. 그런 다음 구현에서 정의한 대로 매개변수를 아래 표에 지정할 수 있습니다. 두 가지 간단한 예제( JavaTestSleepTest )가 제공됩니다.

JavaTest 예제 샘플러는 거의 모든 필드에 값을 설정할 수 있기 때문에 테스트 계획을 확인하는 데 유용할 수 있습니다 . 그런 다음 Assertion 등에서 사용할 수 있습니다. 필드에서 변수를 사용할 수 있으므로 해당 값을 쉽게 볼 수 있습니다.

Java 요청의 제어판 스크린샷
Java 요청의 제어판 스크린샷
teardownTest 메서드 가 AbstractJavaSamplerClient 의 하위 클래스에 의해 재정의되지 않으면 해당 teardownTest 메서드가 호출되지 않습니다. 이것은 JMeter 메모리 요구 사항을 줄입니다. 이는 기존 테스트 계획에 영향을 미치지 않습니다.
추가/삭제 버튼은 현재 어떤 용도로도 사용되지 않습니다.

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 샘플러를 설명하는 이름입니다.
아니
클래스 이름
샘플링할 JavaSamplerClient 인터페이스의 특정 구현입니다.
요청과 함께 매개변수 보내기
샘플링된 클래스에 전달할 인수 목록입니다. 모든 인수는 문자열로 전송됩니다. 구체적인 설정은 아래를 참조하세요.
아니

다음 매개변수는 SleepTestJavaTest 구현에 적용됩니다.

매개변수

기인하다
설명
필수의
수면 시간
수면 시간(ms)
수면마스크
추가할 "무작위성"
의 양: 수면 시간은 다음과 같이 계산됩니다.
totalSleepTime = SleepTime + (System.currentTimeMillis() % SleepMask)

다음 매개변수는 JavaTest 구현에 추가로 적용됩니다.

매개변수

기인하다
설명
필수의
상표
사용할 레이블입니다. 제공된 경우 이름 을 재정의 합니다.
아니
응답 코드
제공된 경우 SampleResult ResponseCode를 설정합니다.
아니
응답 메시지
제공된 경우 SampleResult ResponseMessage를 설정합니다.
아니
상태
제공된 경우 SampleResult 상태를 설정합니다. " OK "(대소문자 무시) 와 같으면 상태가 성공으로 설정되고, 그렇지 않으면 샘플이 실패로 표시됩니다.
아니
샘플러 데이터
제공된 경우 SampleResult SamplerData를 설정합니다.
아니
결과 데이터
제공된 경우 SampleResult ResultData를 설정합니다.
아니
^^

LDAP 요청

이 샘플러를 사용하면 LDAP 서버에 다른 LDAP 요청( 추가 , 수정 , 삭제검색 )을 보낼 수 있습니다.

동일한 LDAP 서버에 여러 요청을 보내려는 경우 각 LDAP 요청에 대해 동일한 정보를 입력할 필요가 없도록 LDAP 요청 기본값 구성 요소 사용을 고려하십시오.

동일한 방식으로 로그인 구성 요소 가 로그인 및 비밀번호에도 사용합니다.
LDAP 요청 제어판의 스크린샷
LDAP 요청의 제어판 스크린샷

LDAP 서버 테스트를 위한 테스트 케이스를 작성하는 방법에는 두 가지가 있습니다.

  1. 내장된 테스트 케이스.
  2. 사용자 정의 테스트 케이스.

LDAP 테스트에는 네 가지 테스트 시나리오가 있습니다. 테스트는 다음과 같습니다.

  1. 테스트 추가
    1. 내장 테스트:

      이렇게 하면 LDAP 서버에 미리 정의된 항목이 추가되고 실행 시간이 계산됩니다. 테스트 실행 후 생성된 항목은 LDAP 서버에서 삭제됩니다.

    2. 사용자 정의 테스트:

      그러면 LDAP 서버에 항목이 추가됩니다. 사용자는 테이블의 모든 속성을 입력해야 합니다. 항목은 추가할 테이블에서 수집됩니다. 실행 시간이 계산됩니다. 생성된 항목은 테스트 후 삭제되지 않습니다.

  2. 테스트 수정
    1. 내장 테스트:

      이것은 먼저 사전 정의된 항목을 생성한 다음 LDAP 서버에서 생성된 항목을 수정합니다. 그리고 실행 시간을 계산합니다. 테스트 실행 후 생성된 항목은 LDAP 서버에서 삭제됩니다.

    2. 사용자 정의 테스트:

      이렇게 하면 LDAP 서버의 항목이 수정됩니다. 사용자는 테이블의 모든 속성을 입력해야 합니다. 항목은 수정할 테이블에서 수집됩니다. 실행 시간이 계산됩니다. 항목은 LDAP 서버에서 삭제되지 않습니다.

  3. 검색 테스트
    1. 내장 테스트:

      이렇게 하면 먼저 항목이 생성되고 속성이 사용 가능한지 검색합니다. 검색 쿼리의 실행 시간을 계산합니다. 실행이 끝나면 생성된 항목이 LDAP 서버에서 삭제됩니다.

    2. 사용자 정의 테스트:

      이것은 검색 기준(다시, 사용자에 의해 정의됨)에서 사용자 정의 항목(검색 필터)을 검색합니다. 항목은 LDAP 서버에서 사용할 수 있어야 합니다. 실행 시간이 계산됩니다.

  4. 테스트 삭제
    1. 내장 테스트:

      이렇게 하면 미리 정의된 항목이 먼저 생성된 다음 LDAP 서버에서 삭제됩니다. 실행 시간이 계산됩니다.

    2. 사용자 정의 테스트:

      그러면 LDAP 서버에서 사용자 정의 항목이 삭제됩니다. 항목은 LDAP 서버에서 사용할 수 있어야 합니다. 실행 시간이 계산됩니다.

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 샘플러를 설명하는 이름입니다.
아니
서버 이름 또는 IP
LDAP 서버의 도메인 이름 또는 IP 주소입니다. JMeter는 LDAP 서버가 기본 포트( 389 )에서 수신 대기 중이라고 가정합니다.
포트
연결할 포트입니다(기본값은 389 ).
루트 DN
LDAP 작업에 사용할 기본 DN
사용자 이름
LDAP 서버 사용자 이름.
대개
비밀번호
LDAP 서버 비밀번호입니다. (NB 이것은 테스트 계획에서 암호화되지 않은 상태로 저장됩니다)
대개
항목 DN
만들거나 수정할 컨텍스트의 이름입니다. 비어 있지 않을 수 있습니다.
개체의 올바른 속성을 직접 설정해야 합니다. 따라서 cn=apache,ou=test 를 추가하려면 cnapache 에 테이블 이름 을 추가해야 합니다 .
예, 사용자 정의 테스트 및 테스트 추가 또는 테스트 수정이 선택된 경우
삭제
삭제할 컨텍스트의 이름입니다. 비어 있지 않을 수 있습니다
예, 사용자 정의 테스트 및 테스트 삭제가 선택된 경우
검색 기반
검색할 컨텍스트 또는 개체의 이름
예, 사용자 정의 테스트 및 검색 테스트를 선택한 경우
검색 필터
검색에 사용할 필터 표현식. null이 아닐 수 있음
예, 사용자 정의 테스트 및 검색 테스트를 선택한 경우
테스트 추가
주어진 컨텍스트에서 새 객체 생성을 위해 이러한 이름 , 값 쌍을 사용하십시오.
예, 사용자 정의 테스트 및 테스트 추가가 선택된 경우
테스트 수정
주어진 컨텍스트 객체의 수정을 위해 이러한 이름 , 값 쌍을 사용하십시오.
예, 사용자 정의 테스트 및 테스트 수정이 선택된 경우
^^

LDAP 확장 요청

이 샘플러는 8개의 다른 LDAP 요청을 모두 LDAP 서버에 보낼 수 있습니다. LDAP 샘플러의 확장 버전이므로 구성하기가 더 어렵지만 실제 LDAP 세션과 훨씬 더 비슷하게 만들 수 있습니다.

동일한 LDAP 서버에 여러 요청을 보내려는 경우 각 LDAP 요청에 대해 동일한 정보를 입력할 필요가 없도록 LDAP 확장 요청 기본값 구성 요소 사용을 고려하십시오.

LDAP 확장 요청의 제어판 스크린샷
LDAP 확장 요청의 제어판 스크린샷

9개의 테스트 작업이 정의되어 있습니다. 이러한 작업은 다음과 같습니다.

스레드 바인딩

모든 LDAP 요청은 LDAP 세션의 일부이므로 가장 먼저 해야 할 일은 LDAP 서버에 대한 세션을 시작하는 것입니다. 이 세션을 시작하기 위해 LDAP " 바인드 " 작업 과 동일한 스레드 바인드가 사용 됩니다. 사용자는 세션을 시작하는 데 사용할 사용자 이름 (고유 이름)과 암호 를 제공해야 합니다. 암호가 없거나 잘못된 암호가 지정되면 익명 세션이 시작됩니다. 암호를 생략해도 이 테스트에 실패하지 않으며 잘못된 암호는 실패하지 않도록 주의하십시오. (NB 이것은 테스트 계획에서 암호화되지 않은 상태로 저장됩니다)

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 샘플러를 설명하는 이름입니다.
아니
서버 이름
LDAP 서버의 이름(또는 IP 주소)입니다.
포트
LDAP 서버가 수신하는 포트 번호입니다. 이것이 생략되면 JMeter는 LDAP 서버가 기본 포트(389)에서 수신 대기한다고 가정합니다.
아니
DN
후속 작업에 사용할 기본 개체의 고유 이름입니다. 모든 작업의 ​​시작점으로 사용할 수 있습니다. 이 DN보다 높은 수준에서 작업을 시작할 수 없습니다!
아니
사용자 이름
바인드하려는 사용자의 전체 고유 이름입니다.
아니
비밀번호
위 사용자의 비밀번호입니다. 생략하면 익명 바인드가 됩니다. 올바르지 않으면 샘플러가 오류를 반환하고 익명 바인딩으로 되돌아갑니다. (NB 이것은 테스트 계획에서 암호화되지 않은 상태로 저장됩니다)
아니
연결 시간 초과(밀리초)
연결 시간 초과(초과되면 연결이 중단됨)
아니
보안 LDAP 프로토콜 사용
ldap:// 대신 ldaps:// 구성표를 사용하십시오 .
아니
모든 인증서 신뢰
보안 LDAP 프로토콜 사용 이 선택된 경우에만 사용되는 모든 인증서 신뢰
아니
스레드 바인딩 해제

이것은 단순히 세션을 종료하는 작업입니다. LDAP " 바인드 해제 " 작업과 동일합니다.

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 샘플러를 설명하는 이름입니다.
아니
단일 바인딩/바인드 해제

이것은 LDAP " bind " 및 " unbind " 작업의 조합입니다. 모든 사용자에 대한 인증 요청/비밀번호 확인에 사용할 수 있습니다. 사용자/비밀번호 조합의 유효성을 확인하기 위해 새 세션을 열고 세션을 다시 종료합니다.

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 샘플러를 설명하는 이름입니다.
아니
사용자 이름
바인드하려는 사용자의 전체 고유 이름입니다.
비밀번호
위 사용자의 비밀번호입니다. 생략하면 익명 바인드가 됩니다. 올바르지 않으면 샘플러가 오류를 반환합니다. (NB 이것은 테스트 계획에서 암호화되지 않은 상태로 저장됩니다)
아니
항목 이름 바꾸기

이것은 LDAP " moddn " 작업입니다. 항목 이름을 바꾸는 데 사용할 수 있지만 항목 또는 전체 하위 트리를 LDAP 트리의 다른 위치로 이동하는 데에도 사용할 수 있습니다.

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 샘플러를 설명하는 이름입니다.
아니
이전 항목 이름
스레드 바인드 작업에서 지정된 DN을 기준으로 이름을 바꾸거나 이동할 개체의 현재 고유 이름입니다.
새 고유 이름
스레드 바인드 작업에서 지정된 DN을 기준으로 이름을 바꾸거나 이동할 개체의 새 고유 이름입니다.
테스트 추가

이것은 LDAP " 추가 " 작업입니다. 모든 종류의 개체를 LDAP 서버에 추가하는 데 사용할 수 있습니다.

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 샘플러를 설명하는 이름입니다.
아니
항목 DN
스레드 바인드 작업에서 지정된 DN을 기준으로 추가하려는 개체의 고유 이름입니다.
테스트 추가
개체에 사용할 속성 및 해당 값의 목록입니다. 여러 값 속성을 추가해야 하는 경우 동일한 속성을 해당 값과 함께 목록에 여러 번 추가해야 합니다.
테스트 삭제

이것은 LDAP " 삭제 " 작업이며 LDAP 트리에서 개체를 삭제하는 데 사용할 수 있습니다.

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 샘플러를 설명하는 이름입니다.
아니
삭제
스레드 바인드 작업에서 지정된 DN과 관련된 삭제하려는 개체의 고유 이름입니다.
검색 테스트

이것은 LDAP " 검색 " 작업이며 검색을 정의하는 데 사용됩니다.

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 샘플러를 설명하는 이름입니다.
아니
검색 기반
스레드 바인드 작업에서 주어진 DN과 관련하여 검색에서 찾을 하위 트리의 고유 이름입니다.
아니
검색 필터
searchfilter는 LDAP 구문으로 지정해야 합니다.
범위
baseobject- 에는 0 , onelevel- 에는 1 , 하위 트리 검색에는 2 를 사용합니다. (기본값= 0 )
아니
크기 제한
서버에서 반환할 최대 결과 수를 지정합니다. (기본값= 0 , 이는 제한이 없음을 의미합니다.) 샘플러가 최대 결과 수에 도달하면 오류 코드 4 와 함께 실패합니다.
아니
시간 제한
서버가 검색에 사용할 수 있는 최대 (cpu)시간(밀리초)을 지정합니다. 이것은 응답 시간에 대해 아무 말도 하지 않습니다. (기본값은 0 이며, 이는 제한이 없음을 의미함)
아니
속성
반환할 속성을 세미콜론으로 구분하여 지정합니다. 빈 필드는 모든 속성을 반환합니다.
아니
반환 객체
객체가 반환될 것인지( true ) 반환되지 않을 것인지( false ). 기본값 = 거짓
아니
별칭 역참조
true 이면 별칭 을 역참조하고, false 이면 별칭 을 따르지 않습니다(default= false ).
아니
검색 결과를 파싱하시겠습니까?
true 이면 검색 결과가 응답 데이터에 추가됩니다. false 인 경우 결과가 발견되었는지 여부에 관계없이 응답 데이터에 마커가 추가됩니다.
아니
수정 테스트

이것은 LDAP " 수정 " 작업입니다. 개체를 수정하는 데 사용할 수 있습니다. 속성 값을 추가, 삭제 또는 교체하는 데 사용할 수 있습니다.

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 샘플러를 설명하는 이름입니다.
아니
항목 이름
스레드 바인드 작업에서 지정된 DN을 기준으로 수정하려는 개체의 고유 이름
수정 테스트
속성-값-opCode는 트리플입니다. opCode
는 유효한 LDAP 작업 코드( 추가 , 삭제 , 제거 또는 바꾸기 )일 수 있습니다. 삭제 작업 으로 값을 지정하지 않으면 지정된 속성의 모든 값이 삭제됩니다. 삭제 작업 에서 값을 지정 하면 지정된 값만 삭제됩니다. 이 값이 존재하지 않으면 샘플러는 테스트에 실패합니다.


비교하다

이것은 LDAP " 비교 " 작업입니다. 주어진 속성의 값을 이미 알려진 값과 비교하는 데 사용할 수 있습니다. 실제로 이것은 주어진 사람이 어떤 그룹의 구성원인지 여부를 확인하는 데 주로 사용됩니다. 이러한 경우 사용자의 DN을 주어진 값으로 비교할 수 있으며 groupOfNames 유형의 개체의 " member " 속성 값과 비교할 수 있습니다 . 비교 작업이 실패하면 이 테스트는 오류 코드 49 와 함께 실패합니다 .

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 샘플러를 설명하는 이름입니다.
아니
항목 DN
스레드 바인드 작업에서 지정된 DN과 관련된 속성을 비교하려는 개체의 현재 고유 이름입니다.
필터 비교
" 속성=값 " 형식으로
^^

액세스 로그 샘플러

AccessLogSampler는 액세스 로그를 읽고 http 요청을 생성하도록 설계되었습니다. 액세스 로그에 익숙하지 않은 사용자를 위해 웹 서버가 수락한 모든 요청에 ​​대해 유지 관리하는 로그입니다. 이것은 모든 이미지, CSS 파일, JavaScript 파일, html 파일 등을 의미합니다.

Tomcat은 액세스 로그에 공통 형식을 사용합니다. 이는 공통 로그 형식을 사용하는 모든 웹 서버가 AccessLogSampler를 사용할 수 있음을 의미합니다. 공통 로그 형식을 사용하는 서버는 Tomcat, Resin, Weblogic 및 SunOne입니다. 일반적인 로그 형식은 다음과 같습니다.

127.0.0.1 - - [21/Oct/2003:05:37:21 -0500] "GET /index.jsp?%2Findex.jsp= HTTP/1.1" 200 8343
파서의 현재 구현은 HTTP 프로토콜 메소드( GET , PUT , POST , DELETE , …) 중 하나를 포함하는 따옴표 안의 텍스트만 봅니다 . 다른 모든 것은 제거되고 무시됩니다. 예를 들어 응답 코드는 파서에서 완전히 무시됩니다.

앞으로는 응답 코드 200 이 없는 항목을 필터링하는 것이 좋습니다 . 샘플러를 확장하는 것은 매우 간단해야 합니다. 구현해야 하는 두 가지 인터페이스가 있습니다.

  • org.apache.jmeter.protocol.http.util.accesslog.LogParser
  • org.apache.jmeter.protocol.http.util.accesslog.Generator

AccessLogSampler의 현재 구현은 생성기를 사용하여 새 HTTPSampler를 생성합니다. 서버 이름, 포트 및 가져오기 이미지는 AccessLogSampler에 의해 설정됩니다. 다음으로 파서는 정수 1 로 호출되어 하나의 항목을 구문 분석하도록 지시합니다. 그런 다음 HTTPSampler.sample() 을 호출하여 요청합니다.

samp = (HTTPSampler) GENERATOR.generateRequest();
samp.setDomain(this.getDomain());
samp.setPort(this.getPort());
samp.setImageParser(this.isImageParser());
PARSER.parse(1);
res = samp.sample();
res.setSampleLabel(samp.toString());
LogParser 의 필수 메소드 는 다음과 같습니다.
  • setGenerator(생성기)
  • 구문 분석(int)

Generator 인터페이스를 구현하는 클래스 는 모든 메서드에 대한 구체적인 구현을 제공해야 합니다. 두 인터페이스를 구현하는 방법의 예는 StandardGeneratorTCLogParser 를 참조하십시오 .

액세스 로그 샘플러의 제어판 스크린샷
액세스 로그 샘플러의 제어판 스크린샷

(베타 코드)

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 샘플러를 설명하는 이름입니다.
아니
섬기는 사람
웹 서버의 도메인 이름 또는 IP 주소입니다.
규약
계획
아니요(기본값은 http
포트
웹 서버가 수신 대기 중인 포트입니다.
아니요(기본값은 80)
로그 파서 클래스
로그 파서 클래스는 로그 파싱을 담당합니다.
예(기본값 제공)
필터
필터 클래스는 특정 라인을 필터링하는 데 사용됩니다.
아니
로그 파일의 위치
액세스 로그 파일의 위치입니다.

TCLogParser 는 각 스레드에 대해 독립적으로 액세스 로그를 처리합니다. SharedTCLogParserOrderPreservingLogParser 는 파일에 대한 액세스를 공유합니다 . 즉, 각 스레드는 로그의 다음 항목을 가져옵니다.

SessionFilter 는 스레드에서 쿠키를 처리하기 위한 것입니다. 항목을 필터링하지 않지만 주어진 IP에 대한 쿠키가 한 번에 단일 스레드에서 처리되도록 쿠키 관리자를 수정합니다. 두 스레드가 동일한 클라이언트 IP 주소의 샘플을 처리하려고 하면 한 스레드는 다른 스레드가 완료될 때까지 강제로 기다려야 합니다.

LogFilter 는 파일 확장명을 교체할 수 있을 뿐만 아니라 파일 이름과 정규식으로 액세스 로그 항목을 필터링할 수 있도록 하기 위한 것입니다 . 그러나 현재 GUI를 통해 이를 구성할 수 없으므로 실제로 사용할 수 없습니다.

^^

BeanShell 샘플러

이 샘플러를 사용하면 BeanShell 스크립팅 언어를 사용하여 샘플러를 작성할 수 있습니다.

BeanShell 사용에 대한 자세한 내용은 BeanShell 웹사이트를 참조하십시오.

JSR223 Sampler +Groovy 로의 마이그레이션 은 성능, 새로운 Java 기능 지원 및 BeanShell 라이브러리의 제한된 유지 관리를 위해 적극 권장됩니다.

테스트 요소는 ThreadListenerTestListener 인터페이스 메서드를 지원합니다. 초기화 파일에 정의해야 합니다. 예제 정의 는 BeanShellListeners.bshrc 파일을 참조하십시오 .

BeanShell 샘플러는 Interruptible 인터페이스도 지원합니다. 인터럽트() 메서드 는 스크립트 또는 초기화 파일에서 정의할 수 있습니다.

BeanShell 샘플러의 제어판 스크린샷
BeanShell 샘플러의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 샘플러를 설명하는 이름입니다. 이름은 스크립트 변수 Label에 저장됩니다.
아니
각 호출 전에 bsh.Interpreter 재설정
이 옵션을 선택하면 각 샘플에 대해 인터프리터가 다시 생성됩니다. 이것은 일부 장기 실행 스크립트에 필요할 수 있습니다. 자세한 내용은 모범 사례 - BeanShell 스크립팅 을 참조하십시오 .
매개변수
BeanShell 스크립트에 전달할 매개변수입니다. 이것은 스크립트 파일과 함께 사용하기 위한 것입니다. GUI에 정의된 스크립트의 경우 스크립트 자체 내에서 필요한 변수 및 함수 참조를 사용할 수 있습니다. 매개변수는 다음 변수에 저장됩니다.
매개변수
매개변수를 단일 변수로 포함하는 문자열
bsh.args
매개변수를 포함하는 문자열 배열, 공백으로 분할
아니
스크립트 파일
실행할 BeanShell 스크립트가 포함된 파일입니다. 파일 이름은 스크립트 변수 FileName 에 저장됩니다.
아니
스크립트
실행할 BeanShell 스크립트입니다. 반환 값( null 이 아닌 경우 )은 샘플러 결과로 저장됩니다.
예(스크립트 파일이 제공되지 않은 경우)
NB 각 샘플러 인스턴스에는 자체 BeanShell 인터프리터가 있으며 샘플러는 단일 스레드에서만 호출됩니다.

" beanshell.sampler.init " 속성 이 정의되면 소스 파일의 이름으로 인터프리터에 전달됩니다. 이것은 공통 메소드 및 변수를 정의하는 데 사용할 수 있습니다. bin 디렉토리에 샘플 초기화 파일이 있습니다: BeanShellSampler.bshrc .

스크립트 파일이 제공되면 해당 파일이 사용되며, 그렇지 않으면 스크립트가 사용됩니다.

JMeter는 스크립트 필드를 인터프리터에 전달하기 전에 함수 및 변수 참조를 처리하므로 참조는 한 번만 해결됩니다. 스크립트 파일의 변수 및 함수 참조는 구문 오류를 일으킬 가능성이 있는 인터프리터에 그대로 전달됩니다. 런타임 변수를 사용하려면 적절한 props 메소드를 사용하십시오. 예: props.get("START.HMS"); props.put("PROP1","1234");
BeanShell은 현재 제네릭 및 향상된 for 루프와 같은 Java 5 구문을 지원하지 않습니다.

스크립트를 호출하기 전에 BeanShell 인터프리터에서 일부 변수가 설정됩니다.

매개변수 필드의 내용은 " 매개 변수 " 변수에 넣습니다 . 또한 문자열은 단일 공백을 구분 기호로 사용하여 별도의 토큰으로 분할되며 결과 목록은 문자열 배열 bsh.args 에 저장됩니다 .

설정되는 BeanShell 변수의 전체 목록은 다음과 같습니다.

  • 로그 - 로거
  • 레이블 - 샘플러 레이블
  • FileName - 파일 이름(있는 경우)
  • 매개변수 - 매개변수 필드의 텍스트
  • bsh.args - 위에서 설명한 대로 분할된 매개변수
  • SampleResult - 현재 SampleResult 에 대한 포인터
  • ResponseCode 의 기본값은 200입니다 .
  • ResponseMessage 의 기본값은 " OK " 입니다.
  • IsSuccess의 기본값은 true입니다.
  • ctx - JMeterContext
  • vars - JMeterVariables - 예
    vars.get("VAR1");
    vars.put("VAR2","값");
    vars.remove("VAR3");
    vars.putObject("OBJ1", 새로운 객체());
  • 소품 - JMeterProperties(클래스 java.util.Properties ) - 예
    props.get("START.HMS");
    props.put("PROP1","1234");

스크립트가 완료되면 제어가 샘플러에 반환되고 다음 스크립트 변수의 내용이 SampleResult 의 해당 변수에 복사됩니다 .

  • ResponseCode - 예: 200
  • ResponseMessage - 예를 들어 " OK "
  • IsSuccess - 또는 거짓

SampleResult ResponseData는 스크립트의 반환 값에서 설정됩니다. 스크립트가 null을 반환하면 SampleResult.setResponseData(data) 메서드를 사용하여 응답을 직접 설정할 수 있습니다 . 여기서 데이터는 문자열 또는 바이트 배열입니다. 데이터 유형의 기본값은 " text "이지만 SampleResult.setDataType(SampleResult.BINARY) 메서드를 사용하여 바이너리로 설정할 수 있습니다 .

SampleResult 변수는 SampleResult 의 모든 필드와 메서드에 대한 전체 액세스 권한을 스크립트에 부여합니다 . 예를 들어 스크립트는 setStopThread(boolean)setStopTest(boolean ) 메서드에 액세스할 수 있습니다. 다음은 간단한(별로 유용하지 않은!) 예제 스크립트입니다.

if (bsh.args[0].equalsIgnoreCase("StopThread")) {
    log.info("스레드 중지 감지!");
    SampleResult.setStopThread(참);
}
"+레이블이 있는 샘플의 데이터"를 반환합니다.
//또는
SampleResult.setResponseData("내 데이터");
널 반환;

또 다른 예: beanshell.sampler.init =BeanShellSampler.bshrc
속성 이 jmeter.properties 에 정의되어 있는지 확인하십시오 . 다음 스크립트는 ResponseData 필드의 모든 변수 값을 표시합니다.

반환 getVariables();

다양한 클래스( JMeterVariables , SampleResult 등)에서 사용할 수 있는 메서드에 대한 자세한 내용은 Javadoc 또는 소스 코드를 확인하십시오. 그러나 모든 방법을 오용하면 찾기 어려울 수 있는 미묘한 결함이 발생할 수 있습니다.

^^

JSR223 샘플러

JSR223 샘플러를 사용하면 JSR223 스크립트 코드를 사용하여 샘플을 수행하거나 변수를 생성/업데이트하는 데 필요한 일부 계산을 수행할 수 있습니다.

이 샘플러가 실행될 때 SampleResult 를 생성하지 않으려면 다음 메서드를 호출하세요.
SampleResult.setIgnore();
이 호출은 다음과 같은 영향을 미칩니다.
  • SampleResult는 View Results Tree, Summariser와 같은 SampleListener에 전달되지 않습니다.
  • SampleResult는 Assertion이나 PostProcessors에서 평가되지 않습니다.
  • SampleResult는 마지막 샘플 상태(${JMeterThread.last_sample_ok}) 및 ThreadGroup "샘플러 오류 후 수행할 작업"(JMeter 5.4 이후)을 계산하기 위해 평가됩니다.

JSR223 테스트 요소에는 성능을 크게 향상시킬 수 있는 기능(컴파일)이 있습니다. 이 기능을 활용하려면:

  • 인라인 대신 스크립트 파일을 사용하십시오. ScriptEngine에서 이 기능을 사용할 수 있는 경우 JMeter가 이를 컴파일하고 캐시합니다.
  • 또는 스크립트 텍스트를 사용하고 사용 가능한 속성 이 있으면 컴파일된 스크립트 캐시를 선택 합니다.
    이 기능을 사용할 때 캐싱은 첫 번째 교체만 캐시하므로 스크립트 코드가 스크립트 코드에서 직접 JMeter 변수 또는 JMeter 함수 호출을 사용하지 않는지 확인하십시오. 대신 스크립트 매개변수를 사용하십시오.
    캐싱 및 컴파일의 이점을 얻으려면 스크립팅에 사용되는 언어 엔진이 JSR223 Compilable 인터페이스를 구현해야 합니다(Groovy는 이 중 하나이고 Java, beanshell 및 javascript는 그렇지 않음)
    Groovy를 스크립팅 언어로 사용하고 사용 가능한 경우 캐시 컴파일된 스크립트를 확인하지 않는 경우 (캐싱이 권장되는 경우) 버전 2.4.6부터 Groovy 메모리 누수로 인해 이 JVM 속성 -Dgroovy.use.classvalue=true 를 설정해야 합니다 . 다음을 참조하세요.
캐시 크기는 다음 JMeter 속성( jmeter.properties )에 의해 제어됩니다.
jsr223.compiled_scripts_cache_size=100
BeanShell 샘플러 와 달리 인터프리터는 호출 사이에 저장되지 않습니다.
ScriptEngine이 이 기능을 지원하는 경우 스크립트 파일 또는 스크립트 텍스트 + 체크 된 캐시 컴파일된 스크립트 를 사용하는 JSR223 테스트 요소가 이제 컴파일되므로 성능이 크게 향상됩니다.
JSR223 샘플러의 제어판 스크린샷
JSR223 샘플러의 제어판 스크린샷
JMeter는 스크립트 필드를 인터프리터에 전달하기 전에 함수 및 변수 참조를 처리하므로 참조는 한 번만 해결됩니다. 스크립트 파일의 변수 및 함수 참조는 구문 오류를 일으킬 가능성이 있는 인터프리터에 그대로 전달됩니다. 런타임 변수를 사용하려면 적절한 props 메소드를 사용하십시오. 예:
props.get("START.HMS");
props.put("PROP1","1234");

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 샘플러를 설명하는 이름입니다.
아니
스크립팅 언어
사용할 JSR223 스크립팅 언어의 이름입니다.
드롭다운 목록에 표시되는 언어 외에 지원되는 다른 언어가 있습니다. JMeter lib 디렉토리에 적절한 jar가 설치된 경우 다른 것도 사용할 수 있습니다.
Velocity와 같은 일부 언어는 JSR223 변수에 대해 다른 구문을 사용할 수 있습니다.
$log.debug("안녕하세요" + $vars.get("a"));
속도를 위해.
스크립트 파일
JSR223 스크립트로 사용할 파일 이름, 상대 파일 경로가 사용되는 경우 " user.dir " 시스템 속성 에서 참조하는 디렉토리에 상대적입니다.
아니
매개변수
스크립트 파일 또는 스크립트에 전달할 매개변수 목록입니다.
아니
사용 가능한 경우 컴파일된 스크립트 캐시
선택(권고)되고 사용된 언어가 Compilable 인터페이스를 지원하는 경우(Groovy는 이 중 하나이고 Java, beanshell 및 javascript는 지원하지 않음) JMeter는 스크립트를 컴파일하고 고유한 캐시 키로 MD5 해시를 사용하여 캐시합니다.
아니
스크립트
JSR223 언어로 전달할 스크립트
예(스크립트 파일이 제공되지 않은 경우)

스크립트 파일이 제공되면 해당 파일이 사용되며, 그렇지 않으면 스크립트가 사용됩니다.

스크립트를 호출하기 전에 일부 변수가 설정됩니다. 이것은 JSR223 변수라는 점에 유의하십시오. 즉, 스크립트에서 직접 사용할 수 있습니다.

  • 로그 - 로거
  • 레이블 - 샘플러 레이블
  • FileName - 파일 이름(있는 경우)
  • 매개변수 - 매개변수 필드의 텍스트
  • args - 위에서 설명한 대로 분할된 매개변수
  • SampleResult - 현재 SampleResult 에 대한 포인터
  • sampler - ( Sampler ) - 현재 샘플러에 대한 포인터
  • ctx - JMeterContext
  • vars - JMeterVariables - 예
    vars.get("VAR1");
    vars.put("VAR2","값");
    vars.remove("VAR3");
    vars.putObject("OBJ1", 새로운 객체());
  • 소품 - JMeterProperties(클래스 java.util.Properties ) - 예
    props.get("START.HMS");
    props.put("PROP1","1234");
  • OUT - System.out - 예: OUT.println("메시지")

SampleResult ResponseData는 스크립트의 반환 값에서 설정됩니다 . 스크립트가 null 을 반환하면 SampleResult.setResponseData(data) 메서드를 사용하여 응답을 직접 설정할 수 있습니다 . 여기서 data는 String 또는 바이트 배열입니다. 데이터 유형의 기본값은 " text "이지만 SampleResult.setDataType(SampleResult.BINARY) 메서드를 사용하여 바이너리로 설정할 수 있습니다 .

SampleResult 변수는 스크립트에 SampleResult의 모든 필드와 메서드에 대한 전체 액세스 권한을 부여합니다. 예를 들어 스크립트는 setStopThread(boolean)setStopTest(boolean ) 메서드에 액세스할 수 있습니다.

BeanShell 샘플러와 달리 JSR223 샘플러는 스크립트 변수를 통해 ResponseCode , ResponseMessage 및 샘플 상태를 설정하지 않습니다. 현재 이를 변경하는 유일한 방법은 SampleResult 메서드를 사용하는 것입니다.

  • SampleResult.setSuccessful(참/거짓)
  • SampleResult.setResponseCode("코드")
  • SampleResult.setResponseMessage("메시지")
^^

TCP 샘플러

TCP 샘플러는 지정된 서버에 대한 TCP/IP 연결을 엽니다. 그런 다음 텍스트를 보내고 응답을 기다립니다.

" Re-use connection "을 선택하면 정확히 동일한 호스트 이름 문자열과 포트가 사용되는 경우 동일한 스레드의 샘플러 간에 연결이 공유됩니다. 다른 호스트/포트 조합은 다른 스레드와 마찬가지로 다른 연결을 사용합니다. " Re-use connection "과 " Close connection "을 모두 선택하면 샘플러를 실행한 후 소켓이 닫힙니다. 다음 샘플러에서 다른 소켓이 생성됩니다. 각 스레드 루프의 끝에서 소켓을 닫고 싶을 수 있습니다.

오류가 감지되거나 " 연결 재사용 "이 선택되지 않은 경우 소켓이 닫힙니다. 다음 샘플에서 다른 소켓이 다시 열립니다.

다음 속성을 사용하여 작업을 제어할 수 있습니다.

tcp.status.prefix
상태 번호 앞에 오는 텍스트
tcp.status.suffix
상태 번호 뒤에 오는 텍스트
tcp.status.properties
상태 코드를 메시지로 변환하는 속성 파일의 이름
tcp.handler
TCP 핸들러 클래스의 이름(기본 TCPClientImpl ) - GUI에 지정되지 않은 경우에만 사용됩니다.
연결을 처리하는 클래스는 GUI에 의해 정의되며 tcp.handler 속성이 실패합니다 . 찾을 수 없으면 org.apache.jmeter.protocol.tcp.sampler 패키지에서 클래스를 검색합니다 .

사용자는 자신의 구현을 제공할 수 있습니다. 클래스는 org.apache.jmeter.protocol.tcp.sampler.TCPClient 를 확장해야 합니다 .

현재 다음 구현이 제공됩니다.

  • TCPClientImpl
  • 바이너리TCPClientImpl
  • 길이PrefixedBinaryTCPClientImpl
구현은 다음과 같이 동작합니다.
TCPClientImpl
이 구현은 상당히 기본적입니다. 응답을 읽을 때 tcp.eolByte 속성을 설정하여 정의된 경우 줄 끝까지 읽습니다 . 그렇지 않으면 입력 스트림이 끝날 때까지 읽습니다. 플랫폼 기본 인코딩으로 기본 설정되는 tcp.charset 을 설정하여 charset 인코딩을 제어할 수 있습니다 .
바이너리TCPClientImpl
이 구현은 16진수로 인코딩된 문자열이어야 하는 GUI 입력을 바이너리로 변환하고 응답을 읽을 때 역순으로 수행합니다. 응답을 읽을 때 tcp.BinaryTCPClient.eomByte 속성을 설정하여 정의된 경우 메시지 바이트 끝까지 읽고 , 그렇지 않으면 입력 스트림 끝까지 읽습니다.
길이PrefixedBinaryTCPClientImpl
이 구현은 이진 메시지 데이터에 이진 길이 바이트를 접두사로 붙여 BinaryTCPClientImpl을 확장합니다. 길이 접두사는 기본적으로 2바이트입니다. 이것은 tcp.binarylength.prefix.length 속성을 설정하여 변경할 수 있습니다 .
시간 초과 처리
시간 초과가 설정되면 만료될 때 읽기가 종료됩니다. 따라서 eolByte / eomByte 를 사용하는 경우 제한 시간이 충분히 긴지 확인하십시오. 그렇지 않으면 읽기가 일찍 종료됩니다.
응답 처리
tcp.status.prefix 가 정의되어 있으면 응답 메시지에서 접미사까지 이어지는 텍스트를 검색합니다. 이러한 텍스트가 발견되면 응답 코드를 설정하는 데 사용됩니다. 응답 메시지는 속성 파일(제공된 경우)에서 가져옵니다.
접미사와 접미사의 사용법
예를 들어, 접두사 = " [ " 및 접미사 = " ] "인 경우 다음 응답:
[J28] XI123,23,GBP,CR
응답 코드는 J28 입니다.
" 400 "-" 499 " 및 " 500 "-" 599 " 범위의 응답 코드 는 현재 실패로 간주됩니다. 나머지는 모두 성공합니다. [이것은 구성 가능해야합니다!]
로그인 이름/암호는 제공된 TCP 구현에서 사용되지 않습니다.

테스트 실행이 끝나면 소켓이 분리됩니다.
TCP 샘플러의 제어판 스크린샷
TCP 샘플러의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
TCPClient 클래스 이름
TCPClient 클래스의 이름입니다. 기본값은 tcp.handler 속성으로, TCPClientImpl 에 실패합니다 .
아니
서버 이름 또는 IP
TCP 서버의 이름 또는 IP
포트 번호
사용할 포트
재사용 연결
선택하면 연결이 열린 상태로 유지됩니다. 그렇지 않으면 데이터를 읽을 때 닫힙니다.
연결 닫기
선택하면 샘플러를 실행한 후 연결이 닫힙니다.
SO_LINGER
소켓이 생성될 때 지정된 지연 시간(초)으로 SO_LINGER 를 활성화/비활성화 합니다. " SO_LINGER " 값을 0 으로 설정 하면 많은 수의 소켓이 TIME_WAIT 상태로 돌아다니는 것을 방지할 수 있습니다.
아니
줄 끝(EOL) 바이트 값
줄 끝의 바이트 값, eol 검사 를 건너뛰려면 -128 ~ +127 범위 밖의 값으로 설정합니다. eolByte 속성 과 함께 jmeter.properties 파일에서도 설정할 수 있습니다 . TCP Sampler Config와 jmeter.properties 파일에서 동시에 설정하면 TCP Sampler Config의 설정값이 사용된다.
아니
연결 시간 초과
연결 시간 초과(밀리초, 0 비활성화).
아니
응답 시간 초과
응답 시간 초과(밀리초, 0 비활성화).
아니
NoDelay 설정
java.net.Socket.setTcpNoDelay() 를 참조하십시오 . 선택하면 Nagle 알고리즘이 비활성화되고, 그렇지 않으면 Nagle 알고리즘이 사용됩니다.
보낼 문자
보낼 문자
로그인 사용자
사용자 이름 - 기본 구현에서 사용되지 않음
아니
비밀번호
암호 - 기본 구현에서 사용되지 않음(NB 테스트 계획에서 암호화되지 않은 상태로 저장됨)
아니
^^

JMS 게시자

JMS 게시자는 지정된 대상(주제/대기열)에 메시지를 게시합니다. JMS에 익숙하지 않은 사람들을 위해 메시징을 위한 J2EE 사양입니다. 시장에는 수많은 JMS 서버와 여러 오픈 소스 옵션이 있습니다.


JMeter에는 JMS 구현 jar가 포함되어 있지 않습니다. 이것은 JMS 제공자에서 다운로드하여 lib 디렉토리에 넣어야 합니다.
JMS Publisher 제어판 스크린샷
JMS Publisher의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
JNDI 속성 파일 사용
jndi.properties 를 사용 하십시오. 파일은 클래스 경로에 있어야 합니다(예: user.classpath JMeter 속성 업데이트). 이 옵션을 선택하지 않으면 JMeter는 " JNDI Initial Context Factory " 및 " Provider URL " 필드를 사용하여 연결을 생성합니다.
JNDI 초기 컨텍스트 팩토리
컨텍스트 팩토리의 이름
아니
공급자 URL
JMS 공급자의 URL
예, jndi.properties를 사용하지 않는 한
목적지
메시지 대상(주제 또는 대기열 이름)
설정
대상 설정 유형입니다. At startup 의 경우 대상 이름은 정적(즉, 테스트 중에 항상 같은 이름)이고 Each sample 의 경우 대상 이름은 동적이며 각 샘플에서 평가됩니다(즉, 대상 이름이 변수일 수 있음).
입증
JMS 공급자에 대한 인증 요구 사항
사용자
사용자 이름
아니
비밀번호
비밀번호(NB 이것은 테스트 계획에서 암호화되지 않은 상태로 저장됨)
아니
만료
더 이상 사용되지 않는 메시지의 만료 시간(밀리초)입니다. 만료 시간을 지정하지 않으면 기본값은 0 (만료되지 않음)입니다.
아니
우선 사항
메시지의 우선 순위 수준입니다. 0 (가장 낮음)에서 9 (가장 높음) 까지 10개의 우선 순위 수준이 있습니다 . 우선 순위 수준을 지정하지 않으면 기본 수준은 4 입니다.
아니
오류 코드(정규식)에서 다시 연결
재연결을 강제하는 JMSException 오류 코드에 대한 정규식입니다. 비어 있으면 재연결이 수행되지 않습니다.
아니
집계할 샘플 수
집계할 샘플 수
메시지 소스
메시지를 받는 곳:
파일에서
참조된 파일이 모든 샘플에서 읽고 재사용됨을 의미합니다. 파일 이름이 변경되면 JMeter 3.0부터 다시 로드됩니다.
아래 지정된 폴더의 임의 파일
아래 지정된 폴더에서 임의의 파일이 선택됨을 의미합니다. 이 폴더에는 바이트 메시지의 경우 확장자가 .dat 인 파일이나 개체 또는 텍스트 메시지의 경우 확장자가 .txt 또는 .obj 인 파일이 포함되어야 합니다.
텍스트 영역
텍스트 또는 개체 메시지에 사용할 메시지
메시지 유형
텍스트, 지도, 개체 메시지 또는 바이트 메시지
콘텐츠 인코딩
메시지 소스 파일을 읽기 위한 인코딩을 지정합니다.
원시 :
파일에서 변수를 지원하지 않으며 기본 시스템 문자 집합으로 로드합니다.
기본 :
XML 프롤로그에 의존하는 XML을 제외하고 기본 시스템 인코딩으로 파일을 로드합니다. 파일에 변수가 포함되어 있으면 처리됩니다.
표준 문자 집합 :
지정된 인코딩(유효 여부)은 파일을 읽고 변수를 처리하는 데 사용됩니다.
비영구 전달 모드를 사용하시겠습니까?
DeliveryMode.NON_PERSISTENT 설정 여부 (기본값은 false )
아니
JMS 속성
JMS 속성은 기본 메시징 시스템에 고유한 속성입니다. 값의 이름, 값, 클래스(유형)를 설정할 수 있습니다. 기본 유형은 String 입니다. 예: WebSphere 5.1 웹 서비스의 경우 JMS를 통해 웹 서비스를 테스트하려면 JMS 속성 targetService를 설정해야 합니다.
아니

MapMessage 유형의 경우 JMeter는 소스를 텍스트 행으로 읽습니다. 각 줄에는 쉼표로 구분된 3개의 필드가 있어야 합니다. 필드는 다음과 같습니다.

  • 항목 이름
  • 객체 클래스 이름, 예: " String "( 지정되지 않은 경우 java.lang 패키지로 가정)
  • 개체 문자열 값
값의(문자열)
이름, 문자열, 예
크기, 정수, 1234
Object 메시지가 구현되고 다음과 같이 작동합니다.
  • jmeter_home/lib/ 폴더 에 객체와 해당 종속성을 포함하는 JAR을 넣습니다.
  • XStream을 사용하여 객체를 XML로 직렬화
  • 결과를 .txt 또는 .obj 접미사가 붙은 파일에 넣거나 XML 콘텐츠를 텍스트 영역에 직접 넣습니다.
메시지가 파일에 있는 경우 텍스트 영역을 사용하는 경우 속성 교체가 발생하지 않는 반면 속성 교체는 발생하지 않습니다.

다음 표는 JMS를 구성할 때 유용할 수 있는 몇 가지 값을 보여줍니다.

아파치 액티브MQ 가치 논평
컨텍스트 팩토리org.apache.activemq.jndi.ActiveMQInitialContextFactory.
공급자 URLVM://localhost
공급자 URLVM:(브로커:(vm://localhost)?persistent=false)지속성 비활성화
대기열 참조동적 대기열/QUEUENAME QUEUENAME을 JNDI에 동적으로 정의
주제 참조동적주제/TOPICNAME TOPICNAME을 JNDI에 동적으로 정의
^^

JMS 가입자

JMS 구독자는 지정된 대상(주제 또는 대기열)의 메시지를 구독합니다. JMS에 익숙하지 않은 사람들을 위해 메시징을 위한 J2EE 사양입니다. 시장에는 수많은 JMS 서버와 여러 오픈 소스 옵션이 있습니다.


JMeter에는 JMS 구현 jar가 포함되어 있지 않습니다. 이것은 JMS 제공자에서 다운로드하여 lib 디렉토리에 넣어야 합니다.
JMS 구독자의 제어판 스크린샷
JMS 가입자의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
JNDI 속성 파일 사용
jndi.properties 를 사용 하십시오. 파일은 클래스 경로에 있어야 합니다(예: user.classpath JMeter 속성 업데이트). 이 옵션을 선택하지 않으면 JMeter는 " JNDI Initial Context Factory " 및 " Provider URL " 필드를 사용하여 연결을 생성합니다.
JNDI 초기 컨텍스트 팩토리
컨텍스트 팩토리의 이름
아니
공급자 URL
JMS 공급자의 URL
아니
목적지
메시지 대상(주제 또는 대기열 이름)
영구 구독 ID
지속 구독에 사용할 ID입니다. 처음 사용할 때 해당 대기열이 아직 존재하지 않는 경우 JMS 공급자에 의해 자동으로 생성됩니다.
아니
클라이언트 ID
영구 구독을 사용할 때 사용할 클라이언트 ID입니다. 스레드가 두 개 이상인 경우 ${__threadNum} 과 같은 변수를 추가해야 합니다 .
아니
JMS 선택기
선택기 조건을 존중하는 메시지만 추출하기 위해 JMS 사양에 정의된 메시지 선택기. 구문은 SQL 92의 하위 부분을 사용합니다.
아니
설정
대상 설정 유형입니다. At startup 의 경우 대상 이름은 정적(즉, 테스트 중에 항상 같은 이름)이고 Each sample 의 경우 대상 이름은 동적이며 각 샘플에서 평가됩니다(즉, 대상 이름이 변수일 수 있음).
입증
JMS 공급자에 대한 인증 요구 사항
사용자
사용자 이름
아니
비밀번호
비밀번호(NB 이것은 테스트 계획에서 암호화되지 않은 상태로 저장됨)
아니
집계할 샘플 수
집계할 샘플 수
응답 저장
샘플러가 응답을 저장해야 합니다. 그렇지 않은 경우 응답 길이만 반환됩니다.
시간 초과
적용할 시간 제한을 밀리초 단위로 지정합니다. 0 = 없음. 이것은 샘플당이 아니라 전체 집계 시간 초과입니다.
고객
사용할 클라이언트 구현입니다. 둘 다 메시지를 읽을 수 있는 연결을 만듭니다. 그러나 그들은 아래에 설명된 것처럼 다른 전략을 사용합니다.
MessageConsumer.receive()
요청된 모든 메시지에 대해 receive() 를 호출 합니다. 샘플 간의 연결을 유지하지만 샘플러가 활성 상태가 아니면 메시지를 가져오지 않습니다. 큐 구독에 가장 적합합니다.
MessageListener.onMessage()
큐에 들어오는 모든 메시지를 저장하는 리스너를 설정합니다. 리스너는 샘플러가 완료된 후에도 활성 상태를 유지합니다. 주제 구독에 가장 적합합니다.
샘플 사이에서 중지하시겠습니까?
선택하면 JMeter 는 각 샘플의 끝에서 Connection.stop() 을 호출하고 각 샘플 전에 start() 를 호출합니다. 이는 여러 샘플/스레드가 동일한 대기열에 연결되어 있는 경우에 유용할 수 있습니다. 선택하지 않으면 JMeter 는 스레드 시작 시 Connection.start() 를 호출하고 스레드 가 끝날 때까지 stop() 을 호출하지 않습니다.
분리 기호
둘 이상의 메시지가 있는 경우 메시지를 구분하는 데 사용되는 구분 기호입니다(집계할 샘플 수 설정과 관련됨). \n , \r , \t 가 허용됩니다.
아니
오류 코드(정규식)에서 다시 연결
재연결을 강제하는 JMSException 오류 코드에 대한 정규식입니다. 비어 있으면 재연결이 수행되지 않습니다.
아니
오류 사이의 일시 중지(ms)
오류가 발생할 때 구독자가 만드는 일시 중지(밀리초)
아니
^^

JMS 지점간

이 샘플러는 지점간 연결(대기열)을 통해 JMS 메시지를 보내고 선택적으로 받습니다. pub/sub 메시지와 다르며 일반적으로 트랜잭션 처리에 사용됩니다.

request_only 는 일반적으로 JMS 시스템에 부하를 가하는 데 사용됩니다.
request_reply 는 이 모드가 이 서비스에서 보낸 응답 대기열의 응답을 기다리므로 요청 대기열로 보낸 메시지를 처리하는 JMS 서비스의 응답 시간을 테스트하려는 경우에 사용됩니다.
찾아보기 는 현재 대기열 깊이, 즉 대기열에 있는 메시지 수를 반환합니다.
read 는 큐(있는 경우)에서 메시지를 읽습니다.
clear 는 대기열을 지웁니다. 즉, 대기열에서 모든 메시지를 제거합니다.

JMeter 는 대기열 연결을 생성할 때 java.naming.security.[principal|credentials] 속성을 사용합니다(있는 경우). 이 동작을 원하지 않으면 JMeter 속성 JMSSampler.useSecurity.properties=false 를 설정하십시오.


JMeter에는 JMS 구현 jar가 포함되어 있지 않습니다. 이것은 JMS 제공자에서 다운로드하여 lib 디렉토리에 넣어야 합니다.
JMS 지점 간 제어판의 스크린샷
JMS 지점 간 제어판의 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
큐 연결 팩토리
메시징 시스템에 연결하는 데 사용할 대기열 연결 팩토리의 JNDI 이름입니다.
JNDI 이름 요청 대기열
이것은 메시지가 전송되는 큐의 JNDI 이름입니다.
JNDI 이름 응답 대기열
수신 큐의 JNDI 이름입니다. 여기에 값이 제공되고 통신 스타일이 요청 응답 인 경우 이 대기열은 전송된 요청에 대한 응답을 모니터링합니다.
아니
집계할 샘플 수
집계할 샘플 수입니다. 통신 스타일 읽기에만 적용됩니다.
JMS 선택기
선택기 조건을 존중하는 메시지만 추출하기 위해 JMS 사양에 정의된 메시지 선택기. 구문은 SQL 92의 하위 부분을 사용합니다.
아니
커뮤니케이션 스타일
통신 스타일은 요청 전용 (Fire 및 Forget이라고도 함), 요청 응답 , 읽기 , 찾아보기 , 지우기 일 수 있습니다 .
요청만
메시지만 보내고 응답을 모니터링하지 않습니다. 따라서 시스템에 부하를 가하는 데 사용할 수 있습니다.
응답 요청
메시지를 보내고 받는 응답을 모니터링합니다. 동작은 JNDI 이름 응답 대기열의 값에 따라 다릅니다. JNDI 이름 응답 대기열에 값이 있는 경우 이 대기열을 사용하여 결과를 모니터링합니다. 요청과 응답의 일치는 요청의 메시지 ID와 응답의 상관 ID로 수행됩니다. JNDI 이름 응답 대기열이 비어 있으면 요청자와 서버 간의 통신에 임시 대기열이 사용됩니다. 이것은 고정 응답 대기열과 매우 다릅니다. 임시 큐를 사용하면 응답 메시지가 수신될 때까지 보내는 스레드가 차단됩니다. 요청 응답 모드를 사용하면 요청 대기열로 보낸 메시지를 수신하고 message.getJMSReplyTo() 에서 참조하는 대기열에 응답을 보내는 서버가 필요합니다 .
읽다
리스너가 연결되지 않은 나가는 대기열에서 메시지를 읽습니다. 이것은 테스트 목적으로 편리할 수 있습니다. JMS Point-to-Point 샘플러에서만 작동하는 바인딩 파일(jmeter-jms-skip-jndi 라이브러리가 사용되는 경우) 없이 대기열을 처리해야 하는 경우 이 방법을 사용할 수 있습니다. 바인딩 파일이 사용되는 경우 대기열에서 읽기 위해 JMS 구독자 샘플러를 사용할 수도 있습니다.
검색
대기열에서 메시지를 제거하지 않고 현재 대기열 깊이를 결정하여 대기열의 메시지 수를 반환합니다.
분명한
대기열을 지웁니다. 즉, 대기열에서 모든 메시지를 제거합니다.
메시지 상관 관계에 대한 대체 필드 사용
이 확인란은 응답 메시지를 원래 요청과 일치시키는 데 사용할 필드를 선택합니다.
요청 메시지 ID 사용
선택하면 요청 JMSMessageID가 사용되며, 그렇지 않으면 요청 JMSCorrelationID가 사용됩니다. 후자의 경우 요청에 상관 관계 ID를 지정해야 합니다.
응답 메시지 ID 사용
선택하면 응답 JMSMessageID가 사용되며, 그렇지 않으면 응답 JMSCorrelationID가 사용됩니다.
자주 사용되는 두 가지 JMS 상관 관계 패턴이 있습니다.
JMS 상관 ID 패턴
즉, 상관 관계 ID에 대한 요청 및 응답 일치 => 두 확인란을 모두 선택 취소하고 상관 관계 ID를 제공합니다.
JMS 메시지 ID 패턴
즉, 요청 메시지 ID를 응답 상관 ID와 일치 => "요청 메시지 ID 사용"만 선택하십시오.
두 경우 모두 JMS 애플리케이션은 필요에 따라 상관 ID를 채울 책임이 있습니다.
동일한 큐가 메시지를 보내고 받는 데 사용되는 경우 응답 메시지는 요청 메시지와 동일합니다. 이 경우 상관 관계 ID를 제공하고 두 확인란을 모두 선택 취소합니다. 또는 상관 관계에 메시지 ID를 사용하려면 두 확인란을 모두 선택합니다. 이것은 원시 JMS 처리량을 확인하는 데 유용할 수 있습니다.
시간 초과
회신 메시지의 시간 초과(밀리초)입니다. 지정된 시간 내에 응답이 수신되지 않으면 특정 테스트 케이스가 실패하고 제한 시간 이후에 수신된 특정 응답 메시지는 폐기됩니다. 기본값은 2000ms 입니다. 0 은 시간 초과가 없음을 의미합니다.
만료
더 이상 사용되지 않는 메시지의 만료 시간(밀리초)입니다. 만료 시간을 지정하지 않으면 기본값은 0 (만료되지 않음)입니다.
아니
우선 사항
메시지의 우선 순위 수준입니다. 0 (가장 낮음)에서 9 (가장 높음) 까지 10개의 우선 순위 수준이 있습니다 . 우선 순위 수준을 지정하지 않으면 기본 수준은 4 입니다.
아니
비영구 전달 모드를 사용하시겠습니까?
DeliveryMode.NON_PERSISTENT 설정 여부 .
콘텐츠
메시지의 내용입니다.
아니
JMS 속성
JMS 속성은 기본 메시징 시스템에 고유한 속성입니다. 값의 이름, 값, 클래스(유형)를 설정할 수 있습니다. 기본 유형은 String 입니다. 예: WebSphere 5.1 웹 서비스의 경우 JMS를 통해 웹 서비스를 테스트하려면 JMS 속성 targetService를 설정해야 합니다.
아니
초기 컨텍스트 팩토리
초기 컨텍스트 팩토리는 JMS 자원을 조회하는 데 사용되는 팩토리입니다.
아니
JNDI 속성
JNDI 속성은 기본 JNDI 구현에 대한 특정 속성입니다.
아니
공급자 URL
JMS 공급자의 URL입니다.
아니
^^

JUnit 요청

현재 구현은 표준 JUnit 규칙 및 확장을 지원합니다. 또한 oneTimeSetUponeTimeTearDown 과 같은 확장 기능도 포함합니다 . 샘플러는 몇 가지 차이점이 있지만 Java 요청 처럼 작동합니다.
  • JMeter의 테스트 인터페이스를 사용하는 대신 JUnit의 TestCase 클래스를 확장하는 클래스에 대해 jar 파일을 스캔합니다. 여기에는 모든 클래스 또는 하위 클래스가 포함됩니다.
  • JUnit 테스트 jar 파일은 /lib 디렉토리 대신 jmeter/lib/junit 에 위치해야 합니다 . " user.classpath " 속성을 사용하여 TestCase 클래스를 찾을 위치를 지정할 수도 있습니다.
  • JUnit 샘플러는 Java 요청 과 같은 구성에 이름/값 쌍을 사용하지 않습니다 . 샘플러는 setUptearDown 이 테스트를 올바르게 구성할 것이라고 가정합니다.
  • 샘플러는 테스트 메서드에 대해서만 경과 시간을 측정하며 setUptearDown 은 포함하지 않습니다 .
  • 테스트 메소드가 호출될 때마다 JMeter는 결과를 리스너에 전달합니다.
  • oneTimeSetUponeTimeTearDown 에 대한 지원은 메서드로 수행됩니다. JMeter는 다중 스레드이므로 Maven과 같은 방식으로 oneTimeSetUp / oneTimeTearDown 을 호출할 수 없습니다.
  • 샘플러는 예기치 않은 예외를 오류로 보고합니다. 표준 JUnit 테스트 러너와 JMeter의 구현 사이에는 몇 가지 중요한 차이점이 있습니다. 각 테스트에 대해 클래스의 새 인스턴스를 만드는 대신 JMeter는 샘플러당 1개의 인스턴스를 생성하고 재사용합니다. " 샘플당 새 인스턴스 만들기 " 확인란을 사용하여 변경할 수 있습니다 .
샘플러의 현재 구현은 먼저 문자열 생성자를 사용하여 인스턴스를 생성하려고 시도합니다. 테스트 클래스가 문자열 생성자를 선언하지 않으면 샘플러는 빈 생성자를 찾습니다. 아래 예:
JUnit 생성자
빈 생성자:
공개 클래스 myTestCase {
  공개 myTestCase() {}
}
문자열 생성자:
공개 클래스 myTestCase {
  공개 myTestCase(문자열 텍스트) {
    슈퍼(텍스트);
  }
}
기본적으로 JMeter는 성공/실패 코드 및 메시지에 대한 일부 기본값을 제공합니다. 사용자는 고유한 성공 및 실패 코드 세트를 정의하고 모든 테스트에서 균일하게 사용해야 합니다.

일반 지침

setUptearDown 을 사용하는 경우 메서드가 public으로 선언되었는지 확인하세요. 그렇지 않으면 테스트가 제대로 실행되지 않을 수 있습니다.
다음은 JMeter와 잘 작동하도록 JUnit 테스트를 작성하기 위한 몇 가지 일반적인 지침입니다. JMeter는 다중 스레드를 실행하기 때문에 특정 사항을 염두에 두는 것이 중요합니다.
  • 스레드로부터 안전하도록 setUptearDown 메소드를 작성하십시오 . 이것은 일반적으로 정적 멤버를 사용하지 않는 것을 의미합니다.
  • 테스트 방법을 작업의 긴 시퀀스가 ​​아닌 개별 작업 단위로 만드십시오. 테스트 방법을 개별 작업으로 유지하면 테스트 방법을 결합하여 새 테스트 계획을 만드는 것이 더 쉬워집니다.
  • 테스트 방법이 서로 종속되도록 하지 마십시오. JMeter는 테스트 메소드의 임의 순서를 허용하므로 런타임 동작은 기본 JUnit 동작과 다릅니다.
  • 테스트 방법을 구성할 수 있는 경우 속성이 저장되는 위치에 주의하십시오. Jar 파일에서 속성을 읽는 것이 좋습니다.
  • 각 샘플러는 테스트 클래스의 인스턴스를 생성하므로 설정이 oneTimeSetUponeTimeTearDown 에서 발생하도록 테스트를 작성합니다 .
JUnit 요청의 제어판 스크린샷
JUnit 요청의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
JUnit4 주석 검색
JUnit4 테스트( @Test 주석) 를 검색하려면 이것을 선택하십시오.
패키지 필터
표시할 패키지의 쉼표로 구분된 목록입니다. 예: org.apache.jmeter , junit.framework .
클래스 이름
JUnit 테스트 클래스의 정규화된 이름입니다.
생성자 문자열
문자열 생성자에게 문자열을 전달합니다. 문자열이 설정되면 샘플러는 빈 생성자 대신 문자열 생성자를 사용합니다.
시험 방법
테스트 방법입니다.
성공 메시지
성공의 의미를 나타내는 설명 메시지입니다.
성공 코드
테스트가 성공했음을 나타내는 고유 코드입니다.
실패 메시지
실패의 의미를 나타내는 설명 메시지입니다.
실패 코드
테스트가 실패했음을 나타내는 고유 코드입니다.
에러 메시지
오류에 대한 설명입니다.
에러 코드
오류에 대한 일부 코드. 고유할 필요는 없습니다.
setUp 및 tearDown을 호출하지 마십시오.
setUptearDown 을 호출하지 않도록 샘플러를 설정합니다 . 기본적으로 setUptearDown 이 호출되어야 합니다. 이러한 메서드를 호출하지 않으면 테스트에 영향을 미치고 부정확해질 수 있습니다. 이 옵션은 oneTimeSetUponeTimeTearDown 을 호출하는 경우에만 사용해야 합니다. 선택한 방법이 oneTimeSetUp 또는 oneTimeTearDown 인 경우 이 옵션을 선택해야 합니다.
어설션 오류 추가
응답 메시지에 어설션 오류를 추가할지 여부입니다.
런타임 예외 추가
응답 메시지에 런타임 예외를 추가할지 여부입니다. " 어설션 오류 추가 "가 선택되지 않은 경우에만 적용됩니다 .
샘플당 새 인스턴스 생성
각 샘플에 대해 새 JUnit 인스턴스를 생성할지 여부입니다. 기본값은 false로, JUnit TestCase 가 생성되어 재사용됨을 의미합니다.

다음 JUnit4 주석이 인식됩니다.

@테스트
테스트 방법 및 클래스를 찾는 데 사용됩니다. " 예상 된 " 및 " 시간 초과 " 속성이 지원됩니다.
@전에
JUnit3 의 setUp() 과 동일하게 취급
@후에
JUnit3 의 tearDown() 과 동일하게 처리됨
@BeforeClass , @AfterClass
테스트 방법으로 취급되므로 필요에 따라 독립적으로 실행할 수 있습니다.
JMeter는 현재 테스트 메소드를 JUnit에 맡기지 않고 직접 실행합니다. 이는 setUp / tearDown 메소드가 샘플 시간에서 제외되도록 하기 위한 것입니다. 결과적으로 샘플러 시간은 setUp / tearDown 메서드 및 주석 기반 대안을 호출하는 데 걸리는 시간을 제외합니다.
^^

메일 리더 샘플러

메일 판독기 샘플러는 POP3(S) 또는 IMAP(S) 프로토콜을 사용하여 메일 메시지를 읽고 선택적으로 삭제할 수 있습니다.

메일 리더 샘플러의 제어판 스크린샷
메일 리더 샘플러의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
서버 유형
공급자가 사용하는 프로토콜: 예: pop3 , pop3s , imap , imaps . 또는 서버 프로토콜을 나타내는 다른 문자열. 예를 들어 읽기 전용 메일 파일 공급자와 함께 사용할 파일입니다 . POP3 및 IMAP의 실제 공급자 이름은 pop3imap 입니다.
섬기는 사람
서버의 호스트 이름 또는 IP 주소입니다. 파일 프로토콜 과 함께 사용하려면 아래를 참조하십시오 .
포트
서버에 연결하는 데 사용할 포트(선택 사항)
아니
사용자 이름
사용자 로그인 이름
비밀번호
사용자 로그인 비밀번호(NB 이것은 테스트 계획에서 암호화되지 않은 상태로 저장됨)
폴더
사용할 IMAP(S) 폴더입니다. 파일 프로토콜 과 함께 사용하려면 아래를 참조하십시오 .
예, IMAP(S)를 사용하는 경우
검색할 메시지 수
전체 또는 일부 메시지를 검색하도록 설정합니다.
헤더만 가져오기
선택하면 메시지 헤더만 검색됩니다.
서버에서 메시지 삭제
설정하면 검색 후 메시지가 삭제됩니다.
MIME을 사용하여 메시지 저장
메시지를 MIME로 저장할지 여부입니다. 그렇다면 전체 원시 메시지가 응답 데이터에 저장됩니다. 헤더는 데이터에서 사용할 수 있으므로 저장되지 않습니다. 그렇지 않은 경우 메시지 헤더는 응답 헤더로 저장됩니다. 몇 개의 헤더( Date , To , From , Subject )가 본문에 저장됩니다.
보안 기능을 사용하지 않음
서버에 대한 연결이 보안 프로토콜을 사용하지 않음을 나타냅니다.
SSL 사용
서버에 대한 연결이 SSL 프로토콜을 사용해야 함을 나타냅니다.
StartTLS 사용
서버에 대한 연결이 TLS 프로토콜 시작을 시도해야 함을 나타냅니다.
StartTLS 시행
서버가 TLS 프로토콜을 시작하지 않으면 연결이 종료됩니다.
모든 인증서 신뢰
선택하면 CA와 무관한 모든 인증서를 수락합니다.
로컬 신뢰 저장소 사용
선택하면 로컬에서 신뢰할 수 있는 인증서만 수락합니다.
로컬 트러스트 스토어
신뢰할 수 있는 인증서가 포함된 파일의 경로입니다. 상대 경로는 현재 디렉터리에 대해 확인됩니다.
테스트 스크립트(JMX 파일)가 포함된 디렉토리에 대해 실패합니다.
여기 에 설명된 속성 을 user.properties 에 추가하여 메일 관련 환경 속성을 전달할 수 있습니다 .

메시지는 메인 샘플러의 서브샘플로 저장됩니다. 다중 부분 메시지 부분은 메시지의 하위 샘플로 저장됩니다.

" file " 프로토콜 에 대한 특수 처리
: 파일 JavaMail 공급자를 사용하여 파일에서 원시 메시지를 읽을 수 있습니다. 서버 필드는 폴더 의 상위 경로를 지정하는 데 사용됩니다 . 개별 메시지 파일은 n.msg 이름으로 저장해야 합니다 . 여기서 n 은 메시지 번호입니다. 또는 서버 필드는 단일 메시지를 포함하는 파일의 이름일 수 있습니다. 현재 구현은 매우 기본적이며 주로 디버깅 목적을 위한 것입니다.

^^

흐름 제어 작업 (이전: 테스트 작업)

Flow Control Action 샘플러는 조건부 컨트롤러에서 사용하기 위한 샘플러입니다. 테스트 요소는 샘플을 생성하는 대신 선택한 대상을 일시 중지하거나 중지합니다.

이 샘플러는 샘플을 생성할 필요 없이 일시 중지를 포함할 수 있으므로 트랜잭션 컨트롤러와 함께 사용할 수도 있습니다. 가변 지연의 경우 일시 중지 시간을 0으로 설정하고 Timer를 자식으로 추가합니다.

" 중지 " 작업은 진행 중인 샘플을 완료한 후 스레드 또는 테스트를 중지합니다. " 지금 중지 " 작업은 샘플이 완료될 때까지 기다리지 않고 테스트를 중지합니다. 모든 활성 샘플을 중단합니다. 일부 스레드가 5초 제한 시간 내에 중지되지 않으면 GUI 모드에서 메시지가 표시됩니다. Stop 명령을 사용하여 스레드가 중지되는지 확인할 수 있지만 그렇지 않으면 JMeter를 종료해야 합니다. CLI 모드에서 일부 스레드가 5초 제한 시간 내에 중지되지 않으면 JMeter가 종료됩니다.

JMeter 속성 jmeterengine.threadstop.wait 를 사용하여 대기 시간을 변경할 수 있습니다 . 시간은 밀리초 단위로 제공됩니다.

흐름 제어 작업의 제어판에 대한 스크린샷
흐름 제어 작업의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
표적
현재 스레드 / 모든 스레드 ( 일시 중지다음 루프 반복으로 이동 시 무시 됨)
동작
일시 중지 / 중지 / 지금 중지 / 다음 루프 반복으로 이동
지속
일시정지 시간(밀리초)
예, 일시 중지가 선택된 경우
^^

SMTP 샘플러

SMTP 샘플러는 SMTP/SMTPS 프로토콜을 사용하여 메일 메시지를 보낼 수 있습니다. 사용자 인증은 물론 연결(SSL 및 TLS)에 대한 보안 프로토콜을 설정할 수 있습니다. 보안 프로토콜을 사용하는 경우 서버 인증서에 대한 확인이 수행됩니다.
이 확인을 처리하는 두 가지 대안을 사용할 수 있습니다.

모든 인증서 신뢰
인증서 체인 확인을 무시합니다.
로컬 신뢰 저장소 사용
이 옵션을 사용하면 인증서 체인이 로컬 신뢰 저장소 파일에 대해 검증됩니다.
SMTP 샘플러의 제어판 스크린샷
SMTP 샘플러의 제어판 스크린샷

매개변수

기인하다
설명
필수의
섬기는 사람
서버의 호스트 이름 또는 IP 주소입니다. 파일 프로토콜 과 함께 사용하려면 아래를 참조하십시오 .
포트
서버에 연결하는 데 사용할 포트입니다. 기본값은 SMTP=25, SSL=465, StartTLS=587입니다.
아니
접속 시간 초과
연결 시간 초과 값(밀리초)입니다(소켓 수준). 기본값은 무한 시간 초과입니다.
아니
읽기 시간 초과
읽기 시간 초과 값(밀리초)(소켓 수준)입니다. 기본값은 무한 시간 초과입니다.
아니
주소에서
이메일에 표시될 보낸 사람 주소
주소
대상 전자 메일 주소(" ; "로 구분된 여러 값)
예, CC 또는 BCC가 지정되지 않은 경우
참조 주소
Carbon copy 대상 이메일 주소(" ; "로 구분된 여러 값)
아니
숨은 참조 주소
숨은 참조 이메일 주소(" ; "로 구분된 여러 값)
아니
주소 회신
대체 회신 주소(" ; "로 구분된 여러 값)
아니
인증 사용
SMTP 서버에 사용자 인증이 필요한지 여부를 나타냅니다.
사용자 이름
사용자 로그인 이름
비밀번호
사용자 로그인 비밀번호(NB 이것은 테스트 계획에서 암호화되지 않은 상태로 저장됨)
보안 기능을 사용하지 않음
SMTP 서버에 대한 연결이 보안 프로토콜을 사용하지 않음을 나타냅니다.
SSL 사용
SMTP 서버에 대한 연결이 SSL 프로토콜을 사용해야 함을 나타냅니다.
StartTLS 사용
SMTP 서버에 대한 연결이 TLS 프로토콜 시작을 시도해야 함을 나타냅니다.
StartTLS 시행
서버가 TLS 프로토콜을 시작하지 않으면 연결이 종료됩니다.
모든 인증서 신뢰
선택하면 CA와 무관한 모든 인증서를 수락합니다.
로컬 신뢰 저장소 사용
선택하면 로컬에서 신뢰할 수 있는 인증서만 수락합니다.
로컬 트러스트 스토어
신뢰할 수 있는 인증서가 포함된 파일의 경로입니다. 상대 경로는 현재 디렉터리에 대해 확인됩니다.
테스트 스크립트(JMX 파일)가 포함된 디렉토리에 대해 실패합니다.
시스템 SSL/TLS 프로토콜 재정의
핸드셰이크 예제 TLSv1 TLSv1.1 TLSv1.2 에서 사용할 사용자 지정 SSL/TLS 프로토콜을 공백으로 구분된 목록으로 지정합니다 . 지원되는 모든 프로토콜이 기본값입니다.
아니
주제
전자 메일 메시지 제목입니다.
제목 헤더 표시 안 함
선택하면 전송되는 메일에서 " 제목: " 헤더가 생략됩니다. 이것은 일부 전자 메일 클라이언트가 동일하게 표시할 수 있지만 빈 " Subject: " 헤더 를 보내는 것과 다릅니다 .
제목에 타임스탬프 포함
제목 줄에 System.currentTimemillis() 를 포함합니다 .
헤더 추가
이 버튼을 사용하여 추가 헤더를 정의할 수 있습니다.
아니
메시지
메시지 본문.
일반 본문 보내기(예: 멀티파트/혼합 아님)
선택하면 본문을 일반 메시지로 보냅니다. 즉 , 가능하면 multipart/mixed 가 아닙니다 . 메시지 본문이 비어 있고 단일 파일이 있는 경우 파일 내용을 메시지 본문으로 보냅니다.
참고: 메시지 본문이 비어 있지 않고 첨부 파일이 하나 이상 있는 경우 본문은 multipart/mixed 로 전송됩니다 .
아니
파일 첨부
메시지에 첨부할 파일입니다.
.eml 보내기
설정 하면 Subject , MessageAttach file(s) 필드 의 항목 대신 .eml 파일이 전송됩니다.
메시지 크기 계산
메시지 크기를 계산하여 샘플 결과에 저장합니다.
디버그 로깅을 사용하시겠습니까?
설정되면 " mail.debug " 속성이 " true " 로 설정됩니다.
^^

OS 프로세스 샘플러

OS 프로세스 샘플러는 로컬 시스템에서 명령을 실행하는 데 사용할 수 있는 샘플러입니다.
명령줄에서 실행할 수 있는 모든 명령의 실행을 허용해야 합니다.
반환 코드의 유효성 검사를 활성화하고 예상 반환 코드를 지정할 수 있습니다.

OS 셸은 일반적으로 명령줄 구문 분석을 제공합니다. 이것은 OS마다 다르지만 일반적으로 쉘은 공백에서 매개변수를 분할합니다. 일부 쉘은 와일드카드 파일 이름을 확장합니다. 일부는 그렇지 않습니다. 인용 메커니즘도 OS마다 다릅니다. 샘플러는 의도적으로 구문 분석이나 인용 처리를 하지 않습니다. 명령 및 해당 매개변수는 실행 파일에서 예상하는 형식으로 제공되어야 합니다. 이는 샘플러 설정이 OS 간에 이식될 수 없음을 의미합니다.

많은 OS에는 별도의 실행 파일로 제공되지 않는 몇 가지 내장 명령이 있습니다. 예를 들어 Windows DIR 명령은 명령 인터프리터( CMD.EXE )의 일부입니다. 이러한 내장 프로그램은 독립적인 프로그램으로 실행할 수 없지만 적절한 명령 인터프리터에 대한 인수로 제공해야 합니다.

예를 들어 Windows 명령줄: DIR C:\TEMP 는 다음과 같이 지정해야 합니다.

명령:
명령
매개변수 1:
/씨
매개변수 2:
감독
매개변수 3:
C:\TEMP
OS 프로세스 샘플러의 제어판 스크린샷
OS 프로세스 샘플러의 제어판 스크린샷

매개변수

기인하다
설명
필수의
명령
실행할 프로그램 이름입니다.
작업 디렉토리
명령이 실행될 디렉토리, 기본값은 " user.dir " 시스템 속성 에서 참조하는 폴더입니다.
아니
명령 매개변수
프로그램 이름에 전달된 매개변수입니다.
아니
환경 매개변수
명령을 실행할 때 환경에 추가된 키/값 쌍.
아니
표준 입력(stdin)
입력을 가져올 파일의 이름( STDIN ).
아니
표준 출력(stdout
표준 출력을 위한 출력 파일의 이름( STDOUT ). 생략하면 출력이 캡처되어 응답 데이터로 반환됩니다.
아니
표준 오차(stderr)
표준 오류에 대한 출력 파일의 이름( STDERR ). 생략하면 출력이 캡처되어 응답 데이터로 반환됩니다.
아니
반환 코드 확인
선택하면 샘플러가 반환 코드를 예상 반환 코드와 비교 합니다.
아니
예상 반환 코드
시스템 호출에 대한 예상 반환 코드, " 반환 코드 확인 "이 선택된 경우 필요합니다. 참고 500은 JMeter에서 오류 표시기로 사용되므로 사용하지 마십시오.
아니
시간 초과
명령에 대한 시간 초과(밀리초), 기본값은 0 이며, 이는 시간 초과가 없음 을 의미 합니다. 명령이 완료되기 전에 시간 초과가 만료되면 JMeter는 OS 프로세스를 종료하려고 시도합니다.
아니
^^

MongoDB 스크립트(사용되지 않음)

이 샘플러를 사용하면 MongoDB에 요청을 보낼 수 있습니다.

이것을 사용하기 전에 MongoDB 소스 구성 구성 요소 를 설정해야 합니다.

이 요소는 현재 데이터베이스에 성능 영향을 미치는 전역 쓰기 잠금을 사용하는 com.mongodb.DB#eval 을 사용합니다 (db.eval() 참조) . 따라서 부하 테스트에 이 요소를 사용하지 않고 대신 MongoDBHolder 를 사용하여 JSR223+Groovy 스크립팅을 사용하는 것이 좋습니다. MongoDB 스크립트는 기능 테스트 또는 테스트 설정(설정/해제 스레드)에 더 적합합니다.
MongoDB 스크립트의 제어판 스크린샷(사용 중단됨)
MongoDB 스크립트의 제어판 스크린샷(지원 중단됨)

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 샘플러를 설명하는 이름입니다.
아니
몽고DB 소스
MongoDB 연결이 바인딩되는 JMeter 변수의 이름입니다. 이것은 MongoDB 소스 구성의 ' MongoDB 소스 ' 필드 와 일치해야 합니다 .
데이터베이스 이름
데이터베이스 이름은 스크립트에 사용됩니다.
사용자 이름
아니
비밀번호
아니
스크립트
MongoDB 쉘에서 사용되는 Mongo 스크립트
변수 이름이 테스트 계획에서 고유한지 확인하십시오.
^^
^^

볼트 요청

이 샘플러를 사용하면 Bolt 프로토콜을 통해 Cypher 쿼리를 실행할 수 있습니다.

이것을 사용하기 전에 볼트 연결 구성 을 설정해야 합니다.

모든 요청은 풀에서 획득한 연결을 사용하고 샘플러가 완료되면 풀로 반환합니다. 연결 풀 크기는 드라이버 기본값(~100)을 사용하며 현재 구성할 수 없습니다.

측정된 응답 시간은 cypher 쿼리를 실행하는 시간과 데이터베이스에서 다시 보낸 결과를 소비하는 시간을 모두 포함하여 "전체" 쿼리 실행에 해당합니다.

Bolt Request 제어판 스크린샷
Bolt Request의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 샘플러를 설명하는 이름입니다.
아니
코멘트
자세한 내용은 무료 텍스트입니다.
아니
암호문
실행할 쿼리입니다.
매개변수
JSON 형식의 매개변수 값입니다.
아니
쿼리 결과 기록
쿼리 결과 데이터를 샘플러 응답에 추가할지 여부(기본값은 false). 이것을 활성화하면 메모리 오버헤드가 있으므로 현명하게 사용하십시오.
아니
데이터베이스가 실행 계획을 캐시하고 재사용할 수 있도록 쿼리 매개변수를 사용하는 것이 좋습니다.
^^
^^

18.2 로직 컨트롤러


로직 컨트롤러는 샘플러가 처리되는 순서를 결정합니다.

단순 컨트롤러

Simple Logic Controller를 사용하면 샘플러 및 기타 로직 컨트롤러를 구성할 수 있습니다. 다른 로직 컨트롤러와 달리 이 컨트롤러는 저장 장치 이상의 기능을 제공하지 않습니다.

Simple Controller의 제어판 스크린샷
Simple Controller의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 컨트롤러를 설명하는 이름입니다.
아니
단순 컨트롤러 사용하기

이 예를 다운로드 하십시오(그림 6 참조). 이 예에서는 두 개의 Ant HTTP 요청과 두 개의 Log4J HTTP 요청을 보내는 테스트 계획을 만들었습니다. Ant 및 Log4J 요청을 Simple Logic Controller 내부에 배치하여 그룹화했습니다. Simple Logic Controller는 JMeter가 추가한 컨트롤러를 처리하는 방법에 영향을 미치지 않습니다. 따라서 이 예에서 JMeter는 Ant 홈 페이지, Ant 뉴스 페이지, Log4J 홈 페이지, Log4J 히스토리 페이지의 순서로 요청을 보냅니다.

파일 리포터는 현재 디렉토리의 " simple-test.dat "라는 파일에 결과를 저장하도록 구성되어 있습니다.

그림 6 간단한 컨트롤러 예
그림 6 간단한 컨트롤러 예
^^

루프 컨트롤러

루프 컨트롤러에 Generative 또는 Logic 컨트롤러를 추가하면 JMeter는 스레드 그룹에 대해 지정한 루프 값 외에 특정 횟수만큼 루프 컨트롤러를 반복합니다. 예를 들어 루프 카운트가 2인 루프 컨트롤러에 하나의 HTTP 요청을 추가하고 스레드 그룹 루프 카운트를 3으로 구성하면 JMeter는 총 2 * 3 = 6 HTTP 요청을 보냅니다.

JMeter는 루핑 인덱스를 __jm__<Name of your element>__idx 라는 변수로 노출합니다 . 따라서 예를 들어 루프 컨트롤러의 이름이 LC인 경우 ${__jm__LC__idx} 를 통해 루핑 인덱스에 액세스할 수 있습니다 . 인덱스는 0에서 시작합니다.

루프 컨트롤러의 제어판 스크린샷
루프 컨트롤러의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 컨트롤러를 설명하는 이름입니다.
아니
루프 수
테스트 실행을 통해 매번 이 컨트롤러의 하위 요소가 반복되는 횟수입니다.

-1 은 Forever 토글 을 확인하는 것과 같습니다 .

특별한 경우: Thread Group 요소 에 포함된 루프 컨트롤러는 약간 다르게 동작합니다. 영원히 설정하지 않으면 주어진 반복 횟수가 완료된 후 테스트를 중지합니다.

이 필드에서 함수를 사용할 때 여러 번 평가될 수 있다는 점에 유의하십시오. __Random 을 사용하는 예제 는 루프 컨트롤러의 각 하위 샘플러에 대해 다른 값으로 평가하여 원치 않는 동작을 초래합니다.
예, "영원히"를 선택하지 않는 한
루핑 예제

이 예제를 다운로드 하십시오(그림 4 참조). 이 예에서는 특정 HTTP 요청을 한 번만 보내고 다른 HTTP 요청을 다섯 번 보내는 테스트 계획을 만들었습니다.

그림 4 - 루프 컨트롤러 예
그림 4 - 루프 컨트롤러 예

단일 스레드에 대해 스레드 그룹을 구성하고 루프 카운트 값을 1로 구성했습니다. 스레드 그룹이 루프를 제어하도록 하는 대신 루프 컨트롤러를 사용했습니다. 스레드 그룹에 하나의 HTTP 요청을 추가하고 루프 컨트롤러에 또 다른 HTTP 요청을 추가한 것을 볼 수 있습니다. 루프 카운트 값이 5인 루프 컨트롤러를 구성했습니다.

JMeter는 홈 페이지, 뉴스 페이지, 뉴스 페이지, 뉴스 페이지, 뉴스 페이지 및 뉴스 페이지의 순서로 요청을 보냅니다.

파일 리포터는 현재 디렉토리의 " loop-test.dat "라는 파일에 결과를 저장하도록 구성되어 있습니다.
^^

한 번만 컨트롤러

Once Only Logic Controller는 JMeter에 내부 컨트롤러를 스레드당 한 번만 처리하도록 지시하고 테스트 계획을 통한 추가 반복 동안 그 아래에 있는 모든 요청을 전달합니다.

한 번만 컨트롤러는 이제 모든 루프 상위 컨트롤러의 첫 번째 반복 중에 항상 실행됩니다. 따라서 한 번만 컨트롤러가 5번 반복하도록 지정된 루프 컨트롤러 아래에 배치되면 한 번만 컨트롤러는 루프 컨트롤러를 통한 첫 번째 반복에서만(즉, 5회마다) 실행됩니다.

이것은 한 번만 컨트롤러가 스레드 그룹(스레드당 테스트당 한 번만 실행) 아래에 있는 경우 이전에 예상한 대로 계속 작동하지만 이제 사용자는 한 번만 컨트롤러를 사용할 때 더 많은 유연성을 갖게 됨을 의미합니다.

로그인이 필요한 테스트의 경우 각 스레드가 세션을 설정하기 위해 한 번만 로그인하면 되므로 이 컨트롤러에 로그인 요청을 배치하는 것을 고려하십시오.

Once Only Controller의 제어판 스크린샷
Once Only Controller의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 컨트롤러를 설명하는 이름입니다.
아니
한 번만 예

이 예를 다운로드 하십시오(그림 5 참조). 이 예에서는 HTTP 요청을 보내는 두 개의 스레드가 있는 테스트 계획을 만들었습니다. 각 스레드는 홈 페이지에 하나의 요청을 보낸 다음 버그 페이지에 세 개의 요청을 보냅니다. 스레드 그룹을 세 번 반복하도록 구성했지만 이 요청은 한 번만 컨트롤러 내부에 있기 때문에 각 JMeter 스레드는 홈 페이지에 하나의 요청만 보냅니다.

그림 5. Once Only 컨트롤러 예
그림 5. Once Only 컨트롤러 예

각 JMeter 스레드는 홈 페이지, 버그 페이지, 버그 페이지, 버그 페이지의 순서로 요청을 보냅니다.

파일 리포터는 현재 디렉토리의 " loop-test.dat "라는 파일에 결과를 저장하도록 구성되어 있습니다.

^^

인터리브 컨트롤러

Interleave Controller에 Generative 또는 Logic Controller를 추가하면 JMeter는 각 루프 반복에 대해 다른 컨트롤러 각각을 번갈아 사용합니다.

Interleave 컨트롤러의 제어판 스크린샷
Interleave 컨트롤러의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 컨트롤러를 설명하는 이름입니다.
아니
하위 컨트롤러 블록 무시
선택하면 인터리브 컨트롤러는 하위 컨트롤러를 단일 요청 요소로 취급하고 컨트롤러당 한 번에 하나의 요청만 허용합니다.
아니
스레드 간 인터리브
이 옵션을 선택하면 인터리브 컨트롤러가 각 루프 반복에 대해 자식 컨트롤러 각각을 번갈아 가며 모든 스레드에 걸쳐(예: 4개의 스레드와 3개의 자식 컨트롤러가 있는 구성에서) 첫 번째 반복에서 스레드 1은 첫 번째 자식을 실행하고 스레드 2는 두 번째 자식을 실행합니다. , 스레드 3 세 번째 자식, 스레드 4 첫 번째 자식, 다음 반복에서 각 스레드는 다음 자식 컨트롤러를 실행합니다.
아니
단순 인터리브 예제

이 예제를 다운로드 하십시오(그림 1 참조). 이 예에서는 스레드당 총 10개의 요청에 대해 2개의 스레드와 5개의 루프 수를 갖도록 스레드 그룹을 구성했습니다. JMeter가 HTTP 요청을 보내는 순서는 아래 표를 참조하십시오.

그림 1 - 인터리브 컨트롤러 예 1
그림 1 - 인터리브 컨트롤러 예 1
루프 반복각 JMeter 스레드는 이러한 HTTP 요청을 보냅니다.
1뉴스 페이지
1로그 페이지
2자주 묻는 질문 페이지
2로그 페이지
검프 페이지
로그 페이지
4컨트롤러에 더 이상 요청이 없기 때문에

JMeter는 처음부터 다시 시작하여 뉴스 페이지인 첫 번째 HTTP 요청을 보냅니다.
4로그 페이지
5자주 묻는 질문 페이지
5로그 페이지
유용한 인터리브 예제

다른 예를 다운로드 하십시오(그림 2 참조). 이 예에서는 단일 스레드와 8개의 루프 수를 갖도록 스레드 그룹을 구성했습니다. 테스트 계획에는 내부에 두 개의 인터리브 컨트롤러가 있는 외부 인터리브 컨트롤러가 있습니다.


        그림 2 - 인터리브 컨트롤러 예 2
그림 2 - 인터리브 컨트롤러 예 2

외부 인터리브 컨트롤러는 두 개의 내부 인터리브 컨트롤러를 번갈아 사용합니다. 그런 다음, 각 내부 인터리브 컨트롤러는 각 HTTP 요청 사이를 교대로 합니다. 각 JMeter 스레드는 홈 페이지, 인터리브드, 버그 페이지, 인터리브드, CVS 페이지, 인터리브드 및 FAQ 페이지, 인터리브드의 순서로 요청을 보냅니다.

파일 리포터는 현재 디렉토리의 " interleave-test2.dat " 라는 파일에 결과를 저장하도록 구성되어 있습니다 .


        그림 3 - 인터리브 컨트롤러 예 3
그림 3 - 인터리브 컨트롤러 예 3

메인 인터리브 컨트롤러 아래에 있는 두 개의 인터리브 컨트롤러가 대신 단순 컨트롤러인 경우 순서는 홈 페이지, CVS 페이지, 인터리브, 버그 페이지, FAQ 페이지, 인터리브입니다.

그러나 기본 인터리브 컨트롤러에서 " 하위 컨트롤러 블록 무시 "가 선택되어 있으면 순서는 홈 페이지, 인터리브, 버그 페이지, 인터리브, CVS 페이지, 인터리브 및 FAQ 페이지, 인터리브가 됩니다.

^^

랜덤 컨트롤러

랜덤 로직 컨트롤러는 하위 컨트롤러와 샘플러를 순서대로 거치는 대신 각 패스에서 무작위로 하나를 선택한다는 점을 제외하고는 인터리브 컨트롤러와 유사하게 작동합니다.

여러 컨트롤러 간의 상호 작용은 복잡한 동작을 생성할 수 있습니다. 이것은 특히 랜덤 컨트롤러에 해당됩니다. 주어진 상호 작용이 어떤 결과를 줄 것인지 가정하기 전에 실험하십시오.
랜덤 컨트롤러의 제어판 스크린샷
랜덤 컨트롤러의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 컨트롤러를 설명하는 이름입니다.
아니
하위 컨트롤러 블록 무시
선택하면 인터리브 컨트롤러는 하위 컨트롤러를 단일 요청 요소로 취급하고 컨트롤러당 한 번에 하나의 요청만 허용합니다.
아니
^^

무작위 순서 컨트롤러

Random Order Controller는 각 자식 요소를 최대 한 번만 실행한다는 점에서 Simple Controller와 비슷하지만 노드 실행 순서는 무작위입니다.

Random Order Controller의 제어판 스크린샷
Random Order Controller의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 컨트롤러를 설명하는 이름입니다.
아니
^^

처리량 컨트롤러

처리량 컨트롤러를 사용하면 사용자가 실행 빈도를 제어할 수 있습니다. 두 가지 모드가 있습니다.

  • 퍼센트 실행
  • 총 처형
실행률
컨트롤러가 테스트 계획을 통해 일정 비율의 반복을 실행하도록 합니다.
총 실행
특정 횟수의 실행이 발생한 후 컨트롤러가 실행을 중지하도록 합니다.
Once Only Controller와 마찬가지로 이 설정은 상위 루프 컨트롤러가 다시 시작될 때 재설정됩니다.

이 컨트롤러는 처리량을 제어하지 않으므로 이름이 잘못되었습니다. 처리량 을 조정하는 데 사용할 수 있는 요소 는 일정 처리량 타이머 를 참조하십시오 .
처리량 컨트롤러의 제어판 스크린샷
처리량 컨트롤러의 제어판 스크린샷
처리량 컨트롤러는 다른 컨트롤러와 결합할 때 매우 복잡한 동작을 생성할 수 있습니다. 특히 인터리브 또는 임의 컨트롤러를 부모로 사용하는 경우(또한 매우 유용합니다).

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 컨트롤러를 설명하는 이름입니다.
아니
실행 스타일
컨트롤러가 퍼센트 실행 모드로 실행될지 총 실행 모드로 실행될지 여부.
처리량
번호. 백분율 실행 모드 의 경우 컨트롤러가 실행되는 백분율을 나타내는 0 - 100 사이의 숫자입니다. " 50 "은 컨트롤러가 테스트 계획의 절반 반복 동안 실행됨을 의미합니다. 전체 실행 모드의 경우 숫자는 컨트롤러가 실행할 총 횟수를 나타냅니다.
사용자당
이 옵션을 선택하면 사용자별로 컨트롤러가 사용자별로(스레드별로) 실행해야 하는지 여부를 계산합니다. 선택하지 않으면 모든 사용자에 대해 전역적으로 계산됩니다. 예를 들어, 전체 실행 모드를 사용하고 " 사용자당 "을 선택 취소 하면 처리량에 대해 제공된 숫자는 수행된 총 실행 횟수가 됩니다. " 사용자당 "이 선택되어 있으면 총 실행 횟수는 사용자 수에 처리량에 대해 지정된 수를 곱한 수입니다.
아니
^^

런타임 컨트롤러

런타임 컨트롤러는 자식이 실행되는 시간을 제어합니다. 컨트롤러는 구성된 런타임 이 초과 될 때까지 자식을 실행합니다 .

런타임 컨트롤러의 제어판 스크린샷
런타임 컨트롤러의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되고 트랜잭션 이름을 지정하는 데 사용되는 이 컨트롤러에 대한 설명적인 이름입니다.
런타임(초)
원하는 런타임(초)입니다. 0은 실행이 없음을 의미합니다.
^^

컨트롤러

If Controller를 사용하면 그 아래의 테스트 요소(자식)가 실행되는지 여부를 제어할 수 있습니다.

기본적으로 조건은 초기 입력 시 한 번만 평가되지만 컨트롤러에 포함된 모든 실행 가능한 요소에 대해 평가되도록 하는 옵션이 있습니다.

가장 좋은 옵션(기본값)은 조건을 변수 표현식으로 해석을 선택하는 것입니다. , 조건 필드에 2가지 옵션이 있습니다.

  • 옵션 1: true 또는 false 를 포함하는 변수 사용
    마지막 샘플이 성공했는지 테스트하려면 ${JMeterThread.last_sample_ok} 를 사용할 수 있습니다.
    변수를 사용하는 컨트롤러인 경우
    변수를 사용하는 컨트롤러인 경우
  • 옵션 2: 함수( ${__jexl3()} 권장)를 사용하여 true 또는 false 를 반환해야 하는 표현식 평가
    표현식을 사용하는 컨트롤러인 경우
    표현식을 사용하는 컨트롤러인 경우
예를 들어, 이전에는 ${__jexl3(${VAR} == 23)} 조건을 사용할 수 있었고 이는 true / false 로 평가되고 결과는 JavaScript에 전달되어 true / false 를 반환합니다 . 변수 표현식 옵션을 선택 하면 JavaScript를 사용할 필요 없이 표현식이 평가되고 " true "와 비교됩니다.

변수가 정의되지 않았는지(또는 null인지) 테스트하려면 다음을 수행합니다. var의 이름이 myVar 라고 가정 하고 표현식은 다음과 같습니다.
"${myVar}" == "\${myVar}"
또는 다음을 사용하십시오.
"${myVar}" != "\${myVar}"
변수가 정의되어 있고 null이 아닌지 테스트합니다.
조건을 변수 표현식으로 해석 을 선택 취소하면 ? , 컨트롤러 가 내부적으로 자바스크립트를 사용하여 성능 패널티가 매우 크고 테스트의 확장성을 떨어뜨릴 수 있는 조건을 평가하는 경우.
자바스크립트를 사용하는 컨트롤러인 경우
자바스크립트를 사용하는 컨트롤러인 경우
If 컨트롤러의 제어판 스크린샷
If 컨트롤러의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 컨트롤러를 설명하는 이름입니다.
아니
조건(기본 JavaScript)
기본적으로 조건은 " true " 또는 " false "를 반환하는 JavaScript 코드 로 해석 되지만 재정의될 수 있습니다(아래 참조).
조건을 변수 표현식으로 해석하시겠습니까?
이것이 선택되면 조건은 " true "로 평가되는 표현식이어야 합니다(대소문자는 무시됨). 예: ${FOUND} 또는 ${__jexl3(${VAR} > 100)} . JavaScript의 경우와 달리 조건은 " true "와 일치하는지 확인하기 위해서만 검사됩니다(대소문자는 무시됨).
이를 확인하고 Condition에서 __jexl3 또는 __groovy 함수를 사용하는 것이 성능을 위해 권장됩니다.
모든 어린이에 대해 평가
모든 어린이의 상태를 평가해야 합니까? 선택하지 않으면 조건은 입력 시에만 평가됩니다.
예제(자바스크립트)
  • ${COUNT} < 10
  • "${VAR}" == "abcd"
코드 해석에 오류가 있으면 조건이 false 로 간주되고 메시지가 jmeter.log 에 기록됩니다 .
성능을 위해 JavaScript 모드를 사용하지 않는 것이 좋습니다. __groovy

를 사용할 때 문자열에서 변수 교체를 사용하지 않도록 주의하십시오. 그렇지 않으면 스크립트를 변경하는 변수를 사용하는 경우 캐시할 수 없습니다. 대신 다음을 사용하여 변수를 가져옵니다. vars.get("myVar"). 아래의 Groovy 예제를 참조하십시오.
예제(변수 표현식)
  • ${__groovy(vars.get("myVar") != "Invalid" )} (Groovy check myVar가 Invalid와 같지 않음)
  • ${__groovy(vars.get("myInt").toInteger() <=4 )} (Groovy 검사 myInt는 4보다 작거나 같음)
  • ${__groovy(vars.get("myMissing") != null )} (myMissing 변수가 설정되지 않았는지 Groovy 확인)
  • ${__jexl3(${COUNT} < 10)}
  • ${결과}
  • ${JMeterThread.last_sample_ok} (마지막 샘플이 성공했는지 확인)
^^

동안 컨트롤러

While 컨트롤러는 조건이 " false " 가 될 때까지 자식을 실행합니다 .

JMeter는 루핑 인덱스를 __jm__<Name of your element>__idx 라는 변수로 노출합니다 . 예를 들어, While 컨트롤러의 이름이 WC인 경우 ${__jm__WC__idx} 를 통해 루핑 인덱스에 액세스할 수 있습니다 . 인덱스는 0에서 시작합니다.

가능한 조건 값:

  • 공백 - 루프의 마지막 샘플이 실패하면 루프 종료
  • LAST - 루프의 마지막 샘플이 실패하면 루프를 종료합니다. 루프 직전의 마지막 샘플이 실패한 경우 루프에 들어가지 마십시오.
  • 그렇지 않으면 - 조건이 " false " 문자열과 같을 때 루프를 종료하거나 입력하지 마십시오 .
조건은 결국 문자열 " false "로 평가되는 모든 변수 또는 함수일 수 있습니다. 이를 통해 필요에 따라 __jexl3 , __groovy 함수, 속성 또는 변수를 사용할 수 있습니다.

조건은 자식 샘플링을 시작하기 전에 한 번, 자식 샘플링이 끝날 때 한 번, 두 번 평가되므로 Condition( __counter 와 같은 )에 멱등성이 아닌 함수를 넣으면 문제가 발생할 수 있습니다.

예를 들어:
  • ${VAR} - VAR 이 다른 테스트 요소에 의해 false로 설정된 경우
  • ${__jexl3(${C}==10)}
  • ${__jexl3("${VAR2}"=="abcd")}
  • ${_P(property)} - 속성이 다른 곳 에서 " false "로 설정된 경우
While 컨트롤러의 제어판 스크린샷
While 컨트롤러의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되고 트랜잭션 이름을 지정하는 데 사용되는 이 컨트롤러에 대한 설명적인 이름입니다.
아니
상태
공백, LAST 또는 변수/함수
아니
^^

스위치 컨트롤러

스위치 컨트롤러는 각 반복에서 하위 요소 중 하나를 실행한다는 점에서 인터리브 컨트롤러 처럼 작동 하지만 컨트롤러는 순서대로 실행하는 대신 스위치 값으로 정의된 요소를 실행합니다.

스위치 값은 이름일 수도 있습니다.

스위치 값이 범위를 벗어나면 0번째 요소를 실행하므로 숫자 케이스의 기본값으로 작동합니다. 값이 빈 문자열인 경우 0번째 요소도 실행합니다.

값이 숫자가 아닌(비어 있지 않은 경우) 스위치 컨트롤러는 동일한 이름을 가진 요소를 찾습니다(대소문자가 중요함). 일치하는 이름이 없으면 " default "(대소문자가 중요하지 않음)라는 요소가 선택됩니다. 기본값이 없으면 요소가 선택되지 않고 컨트롤러는 아무 것도 실행하지 않습니다.

스위치 컨트롤러의 제어판 스크린샷
스위치 컨트롤러의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 컨트롤러를 설명하는 이름입니다.
아니
스위치 값
호출할 하위 요소의 번호(또는 이름)입니다. 요소는 0부터 번호가 매겨집니다. 기본값은 0입니다.
아니
^^

ForEach 컨트롤러

ForEach 컨트롤러는 관련 변수 집합의 값을 반복합니다. 샘플러(또는 컨트롤러)를 ForEach 컨트롤러에 추가하면 모든 샘플(또는 컨트롤러)이 한 번 이상 실행되며, 여기서 모든 루프 동안 변수는 새 값을 갖습니다. 입력은 밑줄과 숫자로 확장된 여러 변수로 구성되어야 합니다. 이러한 각 변수에는 값이 있어야 합니다. 따라서 예를 들어 입력 변수의 이름이 inputVar 인 경우 다음 변수가 정의되어야 합니다.

  • inputVar_1 = 웬디
  • inputVar_2 = 찰스
  • inputVar_3 = 피터
  • inputVar_4 = 존

참고: " _ " 구분 기호는 이제 선택 사항입니다.

반환 변수가 " returnVar "로 지정되면 ForEach 컨트롤러 아래의 샘플러 및 컨트롤러 컬렉션이 4 회 연속 실행되며 반환 변수는 위의 값을 각각 가지며 샘플러에서 사용할 수 있습니다.

JMeter는 루핑 인덱스를 __jm__<Name of your element>__idx 라는 변수로 노출합니다 . 예를 들어 루프 컨트롤러의 이름이 FEC인 경우 ${__jm__FEC__idx} 를 통해 루핑 인덱스에 액세스할 수 있습니다 . 인덱스는 0에서 시작합니다.

정규식 후처리기로 실행하는 데 특히 적합합니다. 이것은 이전 요청의 결과 데이터에서 필요한 입력 변수를 "생성"할 수 있습니다. " _ " 구분 기호 를 생략하면 ForEach 컨트롤러를 사용하여 입력 변수 refName_g 를 사용하여 그룹을 반복할 수 있으며 refName_${C 형식의 입력 변수를 사용하여 모든 일치 항목의 모든 그룹을 반복할 수도 있습니다. }_g , 여기서 C 는 카운터 변수입니다.

inputVar_1null 이면 ForEach 컨트롤러는 샘플을 실행하지 않습니다 . 정규 표현식이 일치 항목을 반환하지 않은 경우입니다.
ForEach 컨트롤러의 제어판 스크린샷
ForEach 컨트롤러의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 컨트롤러를 설명하는 이름입니다.
아니
입력 변수 접두사
입력으로 사용할 변수 이름의 접두사. 기본값은 접두사로 빈 문자열입니다.
아니
루프용 시작 인덱스
변수에 대한 루프의 시작 인덱스(독점)(첫 번째 요소는 시작 인덱스 + 1에 있음)
아니
루프에 대한 끝 인덱스
변수에 대한 루프에 대한 끝 인덱스(포함)
아니
출력 변수
샘플러에서 교체를 위해 루프에서 사용할 수 있는 변수의 이름입니다. 기본값은 비어 있는 변수 이름으로, 아마도 원하지 않을 것입니다.
아니
구분 기호 사용
선택하지 않으면 " _ " 구분 기호가 생략됩니다.
ForEach 예제

이 예를 다운로드 하십시오(그림 7 참조). 이 예에서는 특정 HTTP 요청을 한 번만 보내고 페이지에서 찾을 수 있는 모든 링크에 또 다른 HTTP 요청을 보내는 테스트 계획을 만들었습니다.

그림 7 - ForEach 컨트롤러 예
그림 7 - ForEach 컨트롤러 예

단일 스레드에 대해 스레드 그룹을 구성하고 루프 카운트 값을 1로 구성했습니다. 스레드 그룹에 하나의 HTTP 요청을 추가하고 ForEach 컨트롤러에 다른 HTTP 요청을 추가한 것을 볼 수 있습니다.

첫 번째 HTTP 요청 후에 정규식 추출기가 추가되어 반환 페이지에서 모든 html 링크를 추출하고 이를 inputVar 변수 에 넣습니다.

ForEach 루프에는 첫 번째 반환된 HTML 페이지에서 추출된 모든 링크를 요청하는 HTTP 샘플러가 추가됩니다.

ForEach 예제

다음은 다운로드할 수 있는 또 다른 예 입니다. 여기에는 두 개의 정규식과 ForEach 컨트롤러가 있습니다. 첫 번째 RE는 일치하지만 두 번째 RE는 일치하지 않으므로 두 번째 ForEach 컨트롤러에서 샘플을 실행하지 않습니다.

그림 8 - ForEach 컨트롤러 예 2
그림 8 - ForEach 컨트롤러 예 2

스레드 그룹에는 단일 스레드와 2개의 루프 수가 있습니다.

샘플 1은 JavaTest 샘플러를 사용하여 " abcd " 문자열을 반환합니다.

Regex Extractor는 (\w)\s 식 을 사용하여 문자 다음에 공백이 오는 것과 일치하고 문자(공백이 아님)를 반환합니다. 모든 일치 항목에는 문자열 " inputVar "가 접두사로 붙습니다.

ForEach 컨트롤러는 접두어 " inputVar_ "가 있는 모든 변수를 추출하고 해당 샘플을 실행하여 변수 " returnVar "에 값을 전달합니다. 이 경우 변수를 " a " " b " 및 " c " 값으로 차례로 설정합니다.

For 1 샘플러 는 반환 변수 " returnVar "를 샘플 레이블의 일부로 샘플러 데이터로 사용하는 또 다른 Java 샘플러입니다.

샘플 2 , Regex 2For 2 는 Regex가 " (\w)\sx " 로 변경되었다는 점을 제외하고는 거의 동일합니다 . 이는 분명히 일치하지 않습니다. 따라서 For 2 Sampler는 실행되지 않습니다.

^^

모듈 컨트롤러

모듈 컨트롤러는 런타임에 테스트 계획 조각을 현재 테스트 계획으로 대체하는 메커니즘을 제공합니다.

테스트 계획 조각은 컨트롤러와 여기에 포함된 모든 테스트 요소(샘플러 등)로 구성됩니다. 프래그먼트는 모든 스레드 그룹에 있을 수 있습니다. 프래그먼트가 스레드 그룹에 있는 경우 해당 컨트롤러를 비활성화하여 모듈 컨트롤러를 제외하고 프래그먼트가 실행되는 것을 방지할 수 있습니다. 또는 더미 스레드 그룹에 조각을 저장하고 전체 스레드 그룹을 비활성화할 수 있습니다.

여러 조각이 있을 수 있으며 각 조각 아래에는 서로 다른 일련의 샘플러가 있습니다. 그런 다음 모듈 컨트롤러를 사용하여 드롭다운 상자에서 적절한 컨트롤러를 선택하기만 하면 이러한 여러 테스트 사례 간에 쉽게 전환할 수 있습니다. 이를 통해 많은 대체 테스트 계획을 빠르고 쉽게 실행할 수 있습니다.

프래그먼트 이름은 컨트롤러 이름과 모든 상위 이름으로 구성됩니다. 예를 들어:

테스트 계획/프로토콜: JDBC/제어/인터리브 컨트롤러(Module1)

테스트 계획이 다시 로드될 때 이름이 대상 컨트롤러를 찾는 데 사용되기 때문에 모듈 컨트롤러에서 사용하는 모든 조각에는 고유한 이름이 있어야 합니다 . 이러한 이유로 컨트롤러 이름이 기본값에서 변경되었는지 확인하는 것이 가장 좋습니다(위의 예와 같이). 그렇지 않으면 새 요소가 테스트 계획에 추가될 때 실수로 중복이 생성될 수 있습니다.

모듈 컨트롤러의 제어판용 스크린샷
모듈 컨트롤러의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 컨트롤러를 설명하는 이름입니다.
아니
실행할 모듈
모듈 컨트롤러는 GUI에 로드된 모든 컨트롤러 목록을 제공합니다. 런타임에 대체할 것을 선택하십시오.
^^

컨트롤러 포함

포함 컨트롤러는 외부 JMX 파일을 사용하도록 설계되었습니다. 그것을 사용하려면 테스트 계획 아래에 테스트 조각을 만들고 그 아래에 원하는 샘플러, 컨트롤러 등을 추가하십시오. 그런 다음 테스트 계획을 저장합니다. 이제 파일이 다른 테스트 계획의 일부로 포함될 준비가 되었습니다.

편의를 위해 디버깅을 위해 외부 JMX 파일에 스레드 그룹 을 추가할 수도 있습니다. 모듈 컨트롤러 를 사용하여 테스트 조각을 참조할 수 있습니다 . 스레드 그룹 은 포함 프로세스 중에 무시됩니다.

테스트에서 쿠키 관리자 또는 사용자 정의 변수를 사용하는 경우 포함된 파일이 아닌 최상위 테스트 계획에 배치해야 합니다. 그렇지 않으면 작동이 보장되지 않습니다.

이 요소는 파일 이름 필드에서 변수/함수를 지원하지 않습니다.
그러나 includecontroller.prefix 속성 이 정의된 경우 내용은 경로 이름 접두사로 사용됩니다.
포함 컨트롤러를 사용하고 동일한 JMX 파일을 포함하는 경우 알려진 문제 버그 50898 이 발생하지 않도록 포함 컨트롤러의 이름을 다르게 지정해야 합니다 .

접두사 + Filename 으로 지정된 위치에서 파일을 찾을 수 없는 경우 컨트롤러 는 JMX 시작 디렉터리와 관련된 Filename 열기를 시도합니다 .

Include Controller의 제어판에 대한 스크린샷
Include Controller의 제어판 스크린샷

매개변수

기인하다
설명
필수의
파일 이름
포함할 파일입니다.
^^

트랜잭션 컨트롤러

트랜잭션 컨트롤러는 중첩 테스트 요소를 수행하는 데 걸리는 전체 시간을 측정하는 추가 샘플을 생성합니다.

참고: " Include duration of timer and pre-post processor in generated sample " 확인란이 선택된 경우 시간에는 샘플뿐만 아니라 컨트롤러 범위 내의 모든 처리가 포함됩니다.

두 가지 작동 모드가 있습니다.

  • 중첩된 샘플 다음에 추가 샘플이 추가됩니다.
  • 추가 샘플이 중첩 샘플의 상위 항목으로 추가됩니다.

생성된 샘플 시간에는 기본적으로(2.11 이후) 타이머를 제외한 중첩된 샘플러의 모든 시간과 " 생성된 샘플에 타이머 및 사전 사후 프로세서의 지속 시간 포함 " 확인란이 선택되어 있지 않는 한 사전/사후 프로세서의 처리 시간이 포함 됩니다. 클럭 해상도에 따라 개별 샘플러와 타이머를 합한 것보다 약간 더 길 수 있습니다. 시계는 컨트롤러가 시작 시간을 기록한 후 첫 번째 샘플이 시작되기 전에 똑딱거릴 수 있습니다. 마찬가지로 마지막에.

생성된 샘플은 모든 하위 샘플이 성공한 경우에만 성공한 것으로 간주됩니다.

상위 모드에서 개별 샘플은 여전히 ​​트리 보기 리스너에서 볼 수 있지만 더 이상 다른 리스너에서 별도의 항목으로 나타나지 않습니다. 또한 하위 샘플은 CSV 로그 파일에 나타나지 않지만 XML 파일로 저장할 수 있습니다.

상위 모드에서는 어설션(등)을 트랜잭션 컨트롤러에 추가할 수 있습니다. 그러나 기본적으로 개별 샘플과 전체 트랜잭션 샘플 모두에 적용됩니다. Assertion의 범위를 제한하려면 Simple Controller를 사용하여 샘플을 포함하고 Assertion을 Simple Controller에 추가하십시오. 상위 모드 컨트롤러는 현재 두 유형의 중첩 트랜잭션 컨트롤러를 제대로 지원하지 않습니다.
트랜잭션 컨트롤러의 제어판 스크린샷
트랜잭션 컨트롤러의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되고 트랜잭션 이름을 지정하는 데 사용되는 이 컨트롤러에 대한 설명적인 이름입니다.
상위 샘플 생성
체크하면 샘플이 다른 샘플의 상위 샘플로 생성되고, 그렇지 않으면 샘플이 독립 샘플로 생성됩니다.
생성된 샘플에 타이머 및 사전 사후 프로세서 기간 포함
생성된 샘플에 타이머, 사전 및 사후 처리 지연을 포함할지 여부입니다. 기본값은 거짓 입니다.
^^

녹음 컨트롤러

녹음 컨트롤러는 프록시 서버가 샘플을 녹음해야 하는 위치를 나타내는 자리 표시자입니다. 테스트 실행 중에는 Simple Controller와 유사하게 효과가 없습니다. 그러나 HTTP(S) 테스트 스크립트 레코더 를 사용하여 녹음하는 동안 모든 녹음된 샘플은 기본적으로 녹음 컨트롤러 아래에 저장됩니다.

녹화 컨트롤러의 제어판 스크린샷
Recording Controller의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 컨트롤러를 설명하는 이름입니다.
아니
^^

크리티컬 섹션 컨트롤러

크리티컬 섹션 컨트롤러는 컨트롤러의 자식을 실행하기 전에 명명된 잠금이 취해지기 때문에 자식 요소(샘플러/컨트롤러 등)가 단 하나의 스레드에 의해 실행되도록 합니다.

크리티컬 섹션 컨트롤러의 제어판 스크린샷
크리티컬 섹션 컨트롤러의 제어판 스크린샷

아래 그림은 크리티컬 섹션 컨트롤러를 사용하는 예를 보여줍니다. 아래 그림에서 2개의 크리티컬 섹션 컨트롤러는 다음을 확인합니다.

  • DS2-${__threadNum} 은 한 번에 하나의 스레드에서만 실행됩니다.
  • DS4-${__threadNum} 은 한 번에 하나의 스레드에서만 실행됩니다.
Critical Section Controller를 이용한 테스트 계획
Critical Section Controller를 이용한 테스트 계획

매개변수

기인하다
설명
필수의
잠금 이름
컨트롤러가 가져갈 잠금, 관련 없는 섹션에 대해 다른 잠금 이름을 사용해야 합니다.
Critical Section Controller는 하나의 JVM 내에서만 잠금을 사용하므로 분산 테스트를 사용하는 경우 사용 사례가 차단하는 모든 JVM의 모든 스레드에 의존하지 않는지 확인하십시오.
^^
^^

18.3 리스너


대부분의 청취자는 테스트 결과를 "듣는" 것 외에도 여러 역할을 수행합니다. 또한 저장된 테스트 결과를 보고, 저장하고, 읽을 수 있는 수단을 제공합니다.

리스너는 발견된 범위의 끝에서 처리됩니다.

테스트 결과의 저장 및 읽기는 일반적입니다. 다양한 리스너에는 결과를 기록하거나 읽을 파일을 지정할 수 있는 패널이 있습니다. 기본적으로 결과는 일반적으로 " .jtl " 확장자를 가진 XML 파일로 저장됩니다. CSV로 저장하는 것이 가장 효율적인 옵션이지만 XML(다른 사용 가능한 옵션)보다 상세하지 않습니다.

리스너는 CLI 모드에서 샘플 데이터를 처리하지 않지만 출력 파일이 구성된 경우 원시 데이터가 저장됩니다. CLI 실행으로 생성된 데이터를 분석하려면 파일을 적절한 리스너에 로드해야 합니다.

기존 결과를 읽고 표시하려면 파일 패널 찾아보기 버튼을 사용하여 파일을 엽니다.

새 파일을 로드하기 전에 현재 데이터를 지우려면 파일을 로드하기 전에 실행  →  지우기 ( Ctrl  +  Shift  +  E ) 또는 실행  →  모두 지우기 ( Ctrl  +  E ) 메뉴 항목을 사용 하십시오.

결과는 XML 또는 CSV 형식 파일에서 읽을 수 있습니다. CSV 결과 파일에서 읽을 때 헤더(있는 경우)는 존재하는 필드를 결정하는 데 사용됩니다. 헤더가 없는 CSV 파일을 올바르게 해석하려면 jmeter.properties 에 적절한 속성을 설정해야 합니다 .

JMeter로 작성된 XML 파일은 헤더에 버전 1.0이 선언되어 있지만 실제 파일은 1.1 규칙으로 직렬화됩니다. (이것은 역사적 호환성을 위해 수행됩니다. 버그 59973 버그 58679 참조 ) 이로 인해 엄격한 XML 파서가 실패합니다. JTL 파일을 읽기 위해 엄격하지 않은 XML 파서를 사용하는 것을 고려하십시오.

파일 이름에는 함수 및/또는 변수 참조가 포함될 수 있습니다. 그러나 변수 참조는 클라이언트-서버 모드에서 작동하지 않습니다(함수는 정상 작동). 클라이언트에서 파일이 생성되고 클라이언트가 로컬에서 테스트를 실행하지 않으므로 변수를 설정하지 않기 때문입니다.

리스너는 샘플이 많으면 많은 메모리를 사용할 수 있습니다. 대부분의 리스너는 현재 다음을 제외하고 해당 범위에 있는 모든 샘플의 복사본을 보관합니다.

  • 단순 데이터 작성기
  • BeanShell/JSR223 리스너
  • 메일러 시각화 도우미
  • 요약 보고서

다음 리스너는 더 이상 모든 단일 샘플의 복사본을 보관할 필요가 없습니다. 대신 경과 시간이 동일한 샘플이 집계됩니다. 이제 더 적은 메모리가 필요합니다. 특히 대부분의 샘플이 기껏해야 1~2초 밖에 걸리지 않는 경우에 더욱 그렇습니다.

  • 집계 보고서
  • 집계 그래프

필요한 메모리 양을 최소화하려면 Simple Data Writer를 사용하고 CSV 형식을 사용하십시오.

JMeter 변수는 출력 파일에 저장할 수 있습니다. 속성을 통해서만 지정할 수 있습니다. 자세한 내용은 리스너 샘플 변수 를 참조하세요 .

저장할 기본 항목 설정에 대한 자세한 내용은 리스너 기본 구성 설명서를 참조하십시오. 출력 파일의 내용에 대한 자세한 내용은 CSV 로그 형식 또는 XML 로그 형식을 참조하십시오.

jmeter.properties 의 항목 은 기본값을 정의하는 데 사용됩니다. 아래와 같이 구성 버튼을 사용하여 개별 수신기에 대해 재정의할 수 있습니다. jmeter.properties 의 설정 은 -l 명령줄 플래그 를 사용하여 추가된 수신기에도 적용됩니다 .

아래 그림은 결과 파일 구성 패널의 예를 보여줍니다.

결과 파일 구성 패널
결과 파일 구성 패널

매개변수

기인하다
설명
필수의
파일 이름
샘플 결과가 포함된 파일의 이름입니다. 파일 이름은 상대 또는 절대 경로 이름을 사용하여 지정할 수 있습니다. 상대 경로는 현재 작업 디렉토리(기본값은 bin/ 디렉토리)를 기준으로 확인됩니다. JMeter는 현재 테스트 계획(JMX 파일)이 포함된 디렉토리에 대한 상대 경로도 지원합니다. 경로 이름이 " ~/ "(또는 jmeter.save.saveservice.base_prefix JMeter 속성에 있는 모든 것)로 시작하는 경우 경로는 JMX 파일 위치에 상대적인 것으로 간주됩니다.
아니
검색 …
파일 찾아보기 버튼
아니
오류
오류가 있는 결과를 쓰기/읽기 전용으로 하려면 이것을 선택하십시오.
아니
성공
오류 없이 결과를 쓰기/읽기 전용으로 하려면 이 옵션을 선택합니다. 오류나 성공 을 선택 하지 않으면 모든 결과가 처리됩니다.
아니
구성
버튼 구성, 아래 참조
아니

샘플 결과 저장 구성

리스너는 아래와 같이 구성 팝업을 사용하여 결과 로그 파일(JTL)에 다른 항목을 저장하도록 구성할 수 있습니다. 기본값은 리스너 기본 구성 설명서에 설명된 대로 정의됩니다. 이름 뒤에 ( CSV )가 있는 항목은 CSV 형식에만 적용됩니다. ( XML )이 있는 항목은 XML 형식에만 적용됩니다. CSV 형식은 현재 줄 바꿈이 포함된 항목을 저장하는 데 사용할 수 없습니다.

쿠키, 메서드 및 쿼리 문자열은 " 샘플러 데이터 " 옵션 의 일부로 저장됩니다 .

샘플 결과 저장 구성의 제어판 스크린샷
샘플 결과 저장 구성의 제어판 스크린샷
^^

그래프 결과

그래프 결과는 많은 리소스(메모리 및 CPU)를 소비하므로 부하 테스트 중에 사용해서는 안 됩니다. 기능 테스트 또는 테스트 계획 디버깅 및 검증 중에만 사용하십시오.

그래프 결과 수신기는 모든 샘플 시간을 표시하는 간단한 그래프를 생성합니다. 그래프 하단을 따라 현재 샘플(검정색), 모든 샘플의 현재 평균(파란색), 현재 표준 편차(빨간색) 및 현재 처리율(녹색)이 밀리초 단위로 표시됩니다.

처리량 숫자는 서버가 처리한 실제 요청/분 수를 나타냅니다. 이 계산에는 테스트에 추가한 지연과 JMeter의 자체 내부 처리 시간이 포함됩니다. 이와 같은 계산을 수행할 때의 이점은 이 숫자가 실제를 나타낸다는 것입니다. 실제로 서버는 분당 많은 요청을 처리했으며 스레드 수를 늘리거나 지연을 줄여 서버의 최대 처리량을 찾을 수 있습니다. 반면에 지연과 JMeter의 처리를 고려한 계산을 수행했다면 그 수치에서 무엇을 결론을 내릴 수 있는지 명확하지 않을 것입니다.

그래프 결과 제어판의 스크린샷
그래프 결과 제어판의 스크린샷

다음 표는 그래프의 항목을 간략하게 설명합니다. 통계 용어의 정확한 의미에 대한 자세한 내용은 웹(예: Wikipedia) 또는 통계 관련 서적을 참조하십시오.

  • 데이터 - 실제 데이터 값을 플로팅합니다.
  • 평균 - 평균 플롯
  • 중앙값 - 중앙값 (중간 값) 을 플로팅합니다.
  • 편차 - 표준 편차 (변동 측정)를 플로팅합니다.
  • 처리량 - 단위 시간당 샘플 수를 표시합니다.

디스플레이 하단의 개별 수치는 현재 값입니다. " Latest Sample "은 그래프에 " Data " 로 표시된 현재 경과된 샘플 시간 입니다.

그래프 왼쪽 상단에 표시되는 값은 응답 시간의 최대 90 번째 백분위수입니다.

^^

주장 결과

어설션 결과는 많은 리소스(메모리 및 CPU)를 소비하므로 부하 테스트 중에 사용해서는 안 됩니다. 기능 테스트 또는 테스트 계획 디버깅 및 검증 중에만 사용하십시오.

어설션 결과 시각화 도우미는 가져온 각 샘플의 레이블을 보여줍니다. 또한 테스트 계획의 일부인 모든 어설션 의 실패를 보고합니다.

어설션 결과 제어판의 스크린샷
어설션 결과 제어판의 스크린샷
^^

결과 트리 보기

결과 보기 트리는 많은 리소스(메모리 및 CPU)를 소비하므로 부하 테스트 중에 사용해서는 안 됩니다. 기능 테스트 또는 테스트 계획 디버깅 및 검증 중에만 사용하십시오.
결과 트리 보기에는 모든 샘플 응답의 트리가 표시되어 모든 샘플에 대한 응답을 볼 수 있습니다. 응답을 표시하는 것 외에도 이 응답을 받는 데 걸린 시간과 일부 응답 코드를 볼 수 있습니다. 요청 패널에는 JMeter에 의해 추가된 헤더만 표시됩니다. HTTP 프로토콜 구현에 의해 추가될 수 있는 헤더(예: Host ) 는 표시되지 않습니다 .

응답을 보는 방법에는 여러 가지가 있으며 왼쪽 패널 하단의 드롭다운 상자에서 선택할 수 있습니다.

렌더러설명
CSS/JQuery 테스터 CSS/JQuery 테스터 는 텍스트 응답에 대해서만 작동합니다. 상단 패널에 일반 텍스트를 표시합니다. " 테스트 " 버튼을 사용하면 사용자가 CSS/JQuery를 상단 패널에 적용할 수 있으며 결과는 하단 패널에 표시됩니다.
CSS/JQuery 표현 엔진은 JSoup 또는 Jodd일 수 있으며 이 두 가지 구현의 구문은 약간 다릅니다.
예를 들어 현재 JMeter 기능 페이지에 적용된 href 속성 이 있는 선택기 a[class=sectionlink] 는 다음 출력을 제공합니다.
일치 횟수: 74
일치[1]=#기능
경기[2]=#할 수 있는 일
일치[3]=#어디서
경기[4]=#어떻게
일치[5]=#function_helper
일치[6]=#기능
일치[7]=#__regex함수
일치[8]=#__regexFunction_parms
일치[9]=#__카운터
… 등등 …

문서 문서 보기 는 Microsoft Office(Word, Excel, PowerPoint 97-2003, 2007-2010(openxml), Apache OpenOffice(writer, calc, impress), HTML, gzip, jar/zip과 같은 다양한 유형의 문서에서 추출한 텍스트를 표시합니다 . 파일(콘텐츠 목록) 및 mp3, mp4, flv 등과 같은 "멀티미디어" 파일의 일부 메타데이터. 지원 형식의 전체 목록은 Apache Tika 형식 페이지에서 사용할 수 있습니다.
문서 보기 에 대한 요구 사항 은 Apache Tika 바이너리 패키지 ( tika-app-xxjar ) 를 다운로드하여 JMETER_HOME/lib 디렉토리에 저장하는 것입니다.
문서가 10MB보다 크면 표시되지 않습니다. 이 제한을 변경하려면 JMeter 속성 document.max_size (단위는 바이트)를 설정하거나 0 으로 설정 하여 제한을 제거합니다.
HTML HTML 보기 는 응답을 HTML로 렌더링하려고 시도합니다. 렌더링된 HTML은 웹 브라우저에서 볼 수 있는 보기와 잘 비교되지 않을 수 있습니다. 그러나 초기 결과 평가에 도움이 되는 빠른 근사값을 제공합니다.
이미지, 스타일 시트 등은 다운로드되지 않습니다.
HTML(자료 다운로드) HTML(다운로드 리소스) 보기 옵션이 선택 되면 렌더러는 HTML 코드에서 참조하는 이미지, 스타일 시트 등을 다운로드할 수 있습니다.
HTML 소스 형식 HTML 소스 형식 보기 옵션이 선택 되면 렌더러는 Jsoup 에 의해 형식이 지정되고 정리된 HTML 소스 코드를 표시합니다 .
JSON JSON 보기 는 트리 스타일로 응답을 표시합니다(JavaScript에 포함된 JSON도 처리).
JSON 경로 테스터 JSON Path Tester 보기 를 사용 하면 JSON-PATH 표현식을 테스트하고 특정 응답에서 추출된 데이터를 볼 수 있습니다.
JSON JMESPath 테스터 JSON JMESPath 테스터 보기 를 사용 하면 JMESPath 표현식을 테스트하고 특정 응답에서 추출된 데이터를 볼 수 있습니다.
정규 표현식 테스터 Regexp 테스터 보기 는 텍스트 응답에 대해서만 작동합니다. 상단 패널에 일반 텍스트를 표시합니다. " 테스트 " 버튼을 사용하여 사용자는 정규식을 상단 패널에 적용하고 결과는 하단 패널에 표시합니다.
정규식 엔진은 정규식 추출기에서 사용되는 것과 동일합니다.
예를 들어 현재 JMeter 홈 페이지에 적용된 RE (JMeter\w*).* 는 다음과 같은 출력을 제공합니다.
일치 횟수: 26
Match[1][0]=JMeter - Apache JMeter</title>
일치[1][1]=JMeter
일치[2][0]=JMeter" title="JMeter" border="0"/></a>
일치[2][1]=JMeter
Match[3][0]=JMeterCommitters">기여자</a>
Match[3][1]=JMeterCommitters
… 등등 …

[] 의 첫 번째 숫자 는 일치 번호입니다. 두 번째 숫자는 그룹입니다. 그룹 [0] 은 전체 RE와 일치하는 항목입니다. 그룹 [1] 은 첫 번째 그룹 과 일치하는 것 , 즉 이 경우 (JMeter\w*) 입니다. 그림 9b(아래)를 참조하십시오.
텍스트 기본 텍스트 보기 에는 응답에 포함된 모든 텍스트가 표시됩니다. 이것은 응답 콘텐츠 유형 이 텍스트로 간주되는 경우에만 작동 합니다. content-type 이 다음 중 하나로 시작 하면 바이너리로 간주되고 그렇지 않으면 텍스트로 간주됩니다.
영상/
오디오/
동영상/

XML XML 보기 는 트리 스타일로 응답을 표시합니다. DTD 노드 또는 Prolog 노드는 트리에 표시되지 않습니다. 그러나 응답에는 해당 노드가 포함될 수 있습니다. 노드를 마우스 오른쪽 버튼으로 클릭하고 그 아래의 모든 노드를 확장하거나 축소할 수 있습니다.
XPath 테스터 XPath 테스터 는 텍스트 응답에 대해서만 작동합니다. 상단 패널에 일반 텍스트를 표시합니다. " 테스트 " 버튼을 사용하여 사용자는 XPath 쿼리를 상단 패널에 적용할 수 있으며 결과는 하단 패널에 표시됩니다.
경계 추출기 테스터 Boundary Extractor Tester 는 텍스트 응답에만 작동합니다. 상단 패널에 일반 텍스트를 표시합니다. " 테스트 " 버튼을 사용하면 사용자가 Boundary Extractor 쿼리를 상단 패널에 적용할 수 있으며 결과는 하단 패널에 표시됩니다.

자동으로 스크롤하시겠습니까? 옵션은 트리 선택에서 마지막 노드를 표시하도록 허용합니다.

버전 3.2부터 보기의 항목 수는 view.results.tree.max_results 속성 값으로 제한 되며 기본값은 500 개 항목입니다. 속성을 0 으로 설정하면 이전 동작을 복원할 수 있습니다 . 메모리를 많이 소모할 수 있으므로 주의하십시오.

검색 옵션을 사용하면 대부분의 보기에서 표시된 데이터를 검색할 수도 있습니다. 검색 결과는 위의 디스플레이에서 강조 표시됩니다. 예를 들어 아래 제어판 스크린샷은 " Java "를 검색한 결과 중 하나를 보여줍니다. 검색은 보이는 텍스트에 대해 작동하므로 텍스트 및 HTML 보기를 검색할 때 다른 결과를 얻을 수 있습니다.
참고: 정규식은 Java 엔진(정규식 추출기 또는 Regexp 테스터 보기와 같은 ORO 엔진이 아님)을 사용합니다.

컨텐츠 유형 이 제공 되지 않으면 응답 데이터 패널에 컨텐츠가 표시되지 않습니다. 이 경우 파일에 응답 저장 을 사용 하여 데이터를 저장할 수 있습니다. 응답 데이터는 샘플 결과에서 계속 사용할 수 있으므로 포스트 프로세서를 사용하여 계속 액세스할 수 있습니다.

응답 데이터가 200K보다 크면 표시되지 않습니다. 이 제한을 변경하려면 JMeter 속성 view.results.tree.max_size 를 설정하십시오 . 파일에 응답 저장 을 사용하여 전체 응답을 파일에 저장할 수도 있습니다 .

추가 렌더러를 만들 수 있습니다. 클래스는 인터페이스 org.apache.jmeter.visualizers.ResultRenderer 를 구현 하거나 추상 클래스 org.apache.jmeter.visualizers.SamplerResultTab 을 확장해야 하며 컴파일된 코드는 JMeter에서 사용할 수 있어야 합니다(예: lib/ 확장 디렉토리).

보기 결과 트리의 제어판에 대한 스크린샷
보기 결과 트리의 제어판 스크린샷

제어판(위)은 HTML 디스플레이의 예를 보여줍니다.
그림 9(아래)는 XML 디스플레이의 예를 보여줍니다.
그림 9a(아래)는 Regexp 테스터 디스플레이의 예를 보여줍니다.
그림 9b(아래)는 문서 디스플레이의 예를 보여줍니다.

그림 9 샘플 XML 디스플레이
그림 9 샘플 XML 디스플레이
그림 9a 샘플 Regexp 테스트 디스플레이
그림 9a 샘플 Regexp 테스트 디스플레이
그림 9b 샘플 문서(여기서는 PDF) 표시
그림 9b 샘플 문서(여기서는 PDF) 표시
^^

집계 보고서

집계 보고서는 테스트에서 이름이 다른 각 요청에 대한 테이블 행을 생성합니다. 각 요청에 대해 응답 정보를 합산하고 요청 수, 최소, 최대, 평균, 오류율, 대략적인 처리량(요청/초) 및 초당 킬로바이트 처리량을 제공합니다. 테스트가 완료되면 처리량은 전체 테스트 기간 동안의 실제 처리량입니다.

처리량은 샘플러 대상(예: HTTP 샘플의 경우 원격 서버)의 관점에서 계산됩니다. JMeter는 요청이 생성된 총 시간을 고려합니다. 다른 샘플러와 타이머가 동일한 스레드에 있으면 총 시간이 증가하므로 처리량 값이 감소합니다. 따라서 이름이 다른 두 개의 동일한 샘플러는 동일한 이름을 가진 두 개의 샘플러 처리량의 절반이 됩니다. 집계 보고서에서 최상의 결과를 얻으려면 샘플러 이름을 올바르게 선택하는 것이 중요합니다.

중앙값 및 90% 선(90 번째 백분위수 ) 값 을 계산 하려면 추가 메모리가 필요합니다. JMeter는 이제 동일한 경과 시간으로 샘플을 결합하므로 훨씬 적은 메모리가 사용됩니다. 그러나 몇 초 이상 걸리는 샘플의 경우 더 적은 수의 샘플이 동일한 시간을 가질 가능성이 있으며 이 경우 더 많은 메모리가 필요합니다. 나중에 이 리스너를 사용하여 성능 영향을 피하기 위해 권장되는 방법인 CSV 또는 XML 결과 파일을 다시 로드할 수 있습니다. 개별 샘플을 저장하지 않으므로 일정한 메모리가 필요한 유사한 리스너에 대한 요약 보고서 를 참조하십시오 .

JMeter 2.12부터 계산하려는 3백분위수 값을 구성할 수 있습니다. 이는 속성을 설정하여 수행할 수 있습니다.
  • 레이블 - 샘플의 레이블입니다. " 레이블에 그룹 이름을 포함하시겠습니까? "를 선택하면 스레드 그룹의 이름이 접두사로 추가됩니다. 이를 통해 필요한 경우 서로 다른 스레드 그룹의 동일한 레이블을 별도로 대조할 수 있습니다.
  • # 샘플 - 동일한 레이블을 가진 샘플의 수
  • Average - 결과 집합의 평균 시간
  • 중앙값 - 중앙값 은 결과 집합의 중간에 있는 시간입니다. 샘플의 50%는 이 시간을 넘지 않았습니다. 나머지는 최소한 시간이 걸렸습니다.
  • 90% 라인 - 샘플의 90%가 이 시간을 넘지 않았습니다. 나머지 샘플은 최소한 이 정도의 시간이 소요되었습니다. (90 번째 백분위수 )
  • 95% 라인 - 샘플의 95%가 이 시간을 넘지 않았습니다. 나머지 샘플은 최소한 이 정도의 시간이 소요되었습니다. (95 번째 백분위수 )
  • 99% 라인 - 샘플의 99%가 이 시간을 넘지 않았습니다. 나머지 샘플은 최소한 이 정도의 시간이 소요되었습니다. (99 번째 백분위수 )
  • Min - 동일한 라벨의 샘플에 대한 최단 시간
  • Max - 동일한 레이블을 가진 샘플의 가장 긴 시간
  • 오류 % - 오류가 있는 요청 비율
  • 처리량 - 처리량 은 초/분/시간당 요청으로 측정됩니다. 표시되는 비율이 최소 1.0이 되도록 시간 단위가 선택됩니다. 처리량을 CSV 파일로 저장할 때 요청/초로 표시됩니다. 즉, 30.0 요청/분은 0.5로 저장됩니다.
  • 수신된 KB/초 - 초당 수신된 킬로바이트로 측정된 처리량
  • 전송된 KB/초 - 전송된 초당 킬로바이트로 측정된 처리량

시간은 밀리초 단위입니다.

집계 보고서 제어판의 스크린샷
집계 보고서의 제어판 스크린샷

아래 그림은 " Include group name " 체크박스를 선택하는 예를 보여줍니다.

샘플 "
샘플 " 그룹 이름 포함 " 디스플레이
^^

테이블에서 결과 보기

이 시각화 도우미는 모든 샘플 결과에 대한 행을 만듭니다. View Results Tree 와 마찬가지로 이 시각화 도우미는 많은 메모리를 사용합니다.

기본적으로 기본(상위) 샘플만 표시합니다. 하위 샘플(하위 샘플)을 표시하지 않습니다. JMeter에는 " Child Samples? " 체크박스가 있습니다. 이 옵션을 선택하면 기본 샘플 대신 하위 샘플이 표시됩니다.

표의 결과 보기 제어판에 대한 스크린샷
표의 결과 보기 제어판 스크린샷
^^

단순 데이터 작성기

이 리스너는 결과를 파일에 기록할 수 있지만 UI에는 기록할 수 없습니다. GUI 오버헤드를 제거하여 데이터를 기록하는 효율적인 수단을 제공하기 위한 것입니다. CLI 모드에서 실행할 때 -l 플래그를 사용하여 데이터 파일을 생성할 수 있습니다. 저장할 필드는 JMeter 속성에 의해 정의됩니다. 자세한 내용은 jmeter.properties 파일을 참조하십시오.
Simple Data Writer의 제어판 스크린샷
Simple Data Writer의 제어판 스크린샷
^^

집계 그래프

집계 그래프는 집계 보고서와 유사합니다. 주요 차이점은 집계 그래프가 막대 그래프를 생성하고 그래프를 PNG 파일로 저장하는 쉬운 방법을 제공한다는 것입니다.
집계 그래프의 제어판 스크린샷
집계 그래프의 제어판 스크린샷

아래 그림은 이 그래프를 그리기 위한 설정의 예를 보여줍니다.

집계 그래프 설정
집계 그래프 설정
참고: 이 모든 매개변수 는 JMeter JMX 스크립트에 저장 되지 않습니다 .

매개변수

기인하다
설명
필수의
열 설정
  • 표시할 열 : 그래프에 표시할 열을 선택합니다.
  • 직사각형 색상: 오른쪽 색상 직사각형을 클릭하면 팝업 대화 상자가 열리고 열에 대한 사용자 정의 색상을 선택합니다.
  • 전경색 값 텍스트 색상을 변경할 수 있습니다.
  • 값 글꼴: 텍스트의 글꼴 설정을 정의할 수 있습니다.
  • 윤곽선 막대를 그리시겠습니까? 막대 차트에 경계선을 그리거나 하지 않으려면
  • 번호 그룹화를 표시하시겠습니까? Y축 레이블에 숫자 그룹화를 표시할지 여부를 지정합니다.
  • 값 레이블이 수직입니까? 값 레이블의 방향을 변경합니다. (기본값은 가로)
  • 열 레이블 선택: 결과 레이블로 필터링합니다. 정규 표현식을 사용할 수 있습니다. 예: .*트랜잭션.*
    그래프를 표시하기 전에 필터 적용 버튼을 클릭하여 내부 데이터를 새로 고칩니다.
제목
차트 헤드에 그래프의 제목을 정의합니다. 빈 값은 기본값인 " 집계 그래프 "입니다. 이름과 동기화 버튼 은 리스너의 레이블로 제목을 정의합니다. 그리고 그래프 제목에 대한 글꼴 설정 정의
아니
그래프 크기
현재 JMeter의 창 크기에 따라 너비와 높이로 그래프 크기를 계산합니다. 너비높이 필드를 사용 하여 사용자 정의 크기를 정의합니다. 단위는 픽셀입니다.
아니
X축 설정
X축 레이블의 최대 길이(픽셀)를 정의합니다.
아니
Y축 설정
Y축에 대한 사용자 정의 최대값을 정의합니다.
아니
전설
차트 범례의 배치 및 글꼴 설정 정의
^^

응답 시간 그래프

응답 시간 그래프는 레이블이 지정된 각 요청에 대해 테스트 중 응답 시간의 변화를 보여주는 선 차트를 그립니다. 동일한 타임스탬프에 대해 많은 샘플이 있는 경우 평균 값이 표시됩니다.
응답 시간 그래프의 제어판 스크린샷
응답 시간 그래프의 제어판 스크린샷

아래 그림은 이 그래프를 그리기 위한 설정의 예를 보여줍니다.

응답 시간 그래프 설정
응답 시간 그래프 설정
참고: 이 모든 매개변수는 JMeter .jmx 파일에 저장됩니다.

매개변수

기인하다
설명
필수의
간격(밀리초)
X축 간격의 시간(밀리초)입니다. 샘플은 이 값에 따라 그룹화됩니다. 그래프를 표시하기 전에 간격 적용 버튼을 클릭하여 내부 데이터를 새로 고칩니다.
샘플러 라벨 선택
결과 레이블로 필터링합니다. 정규 표현식을 사용할 수 있습니다(예: .*거래.* . 그래프를 표시하기 전에 필터 적용 버튼을 클릭하여 내부 데이터를 새로 고칩니다.
아니
제목
차트 헤드에 그래프의 제목을 정의합니다. 비어 있는 값은 기본값인 " 응답 시간 그래프 "입니다. 이름과 동기화 버튼 은 리스너의 레이블로 제목을 정의합니다. 그리고 그래프 제목에 대한 글꼴 설정 정의
아니
라인 설정
선의 너비를 정의합니다. 각 밸류 포인트의 유형을 정의합니다. 표시가 없는 행을 사용 하려면 없음 을 선택하십시오 .
그래프 크기
현재 JMeter의 창 크기에 따라 너비와 높이로 그래프 크기를 계산합니다. 너비높이 필드를 사용 하여 사용자 정의 크기를 정의합니다. 단위는 픽셀입니다.
아니
X축 설정
X축 레이블의 날짜 형식을 사용자 지정합니다. 구문은 Java SimpleDateFormat API 입니다.
아니
Y축 설정
Y축의 사용자 정의 최대값을 밀리초 단위로 정의합니다. 스케일의 증분을 정의합니다(ms). Y축 레이블에 숫자 그룹화를 표시할지 여부를 지정합니다.
아니
전설
차트 범례의 배치 및 글꼴 설정 정의
^^

메일러 시각화 도우미

메일러 시각화 도우미는 테스트 실행이 서버에서 너무 많은 실패한 응답을 받는 경우 이메일을 보내도록 설정할 수 있습니다.

Mailer Visualizer의 제어판 스크린샷
Mailer Visualizer의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
아니
에서
메시지를 보낼 이메일 주소입니다.
수취인
쉼표로 구분하여 메시지를 보낼 이메일 주소입니다.
성공 주제
성공 메시지의 이메일 제목 줄.
아니
성공 제한
이전에 실패 한도에 도달한 후 이 성공적인 응답 수가 초과되면 성공 이메일이 전송됩니다. 따라서 메일러는 실패-성공-실패-성공 등의 순서로 메시지를 보냅니다.
실패 주제
실패 메시지의 이메일 제목 줄.
아니
실패 한계
이 실패한 응답 수가 초과되면 실패 이메일이 전송됩니다. 즉 , 첫 번째 실패 시 이메일을 보내 려면 카운트를 0 으로 설정하십시오.
주최자
SMTP 서버(이메일 리디렉터) 서버의 IP 주소 또는 호스트 이름입니다.
아니
포트
SMTP 서버의 포트(기본값은 25 )입니다.
아니
로그인
인증에 사용된 로그인입니다.
아니
비밀번호
인증에 사용되는 비밀번호입니다.
아니
연결 보안
SMTP 인증을 위한 암호화 유형(SSL, TLS 또는 없음).
아니
테스트 메일
테스트 메일을 보내려면 이 버튼을 누르십시오.
아니
실패
지금까지 수신된 실패의 누계를 유지하는 필드입니다.
아니
^^

BeanShell 수신기

BeanShell 리스너는 저장 등을 위해 샘플을 처리하기 위해 BeanShell을 사용할 수 있도록 합니다.

BeanShell 사용에 대한 자세한 내용은 BeanShell 웹사이트를 참조하십시오.

테스트 요소는 ThreadListenerTestListener 메서드를 지원합니다. 이들은 초기화 파일에 정의되어야 합니다. 예제 정의 는 BeanShellListeners.bshrc 파일을 참조하십시오 .

BeanShell 리스너 제어판 스크린샷
BeanShell 리스너 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다. 이름은 스크립트 변수 Label에 저장됩니다.
각 호출 전에 bsh.Interpreter 재설정
이 옵션을 선택하면 각 샘플에 대해 인터프리터가 다시 생성됩니다. 이것은 일부 장기 실행 스크립트에 필요할 수 있습니다. 자세한 내용은 모범 사례 - BeanShell 스크립팅 을 참조하십시오 .
매개변수
BeanShell 스크립트에 전달할 매개변수입니다. 매개변수는 다음 변수에 저장됩니다.
매개변수
매개변수를 단일 변수로 포함하는 문자열
bsh.args
매개변수를 포함하는 문자열 배열, 공백으로 분할
아니
스크립트 파일
실행할 BeanShell 스크립트가 포함된 파일입니다. 파일 이름은 스크립트 변수 FileName 에 저장됩니다.
아니
스크립트
실행할 BeanShell 스크립트입니다. 반환 값은 무시됩니다.
예(스크립트 파일이 제공되지 않은 경우)

스크립트를 호출하기 전에 BeanShell 인터프리터에서 일부 변수가 설정됩니다.

  • log - ( Logger ) - 로그 파일에 쓰는 데 사용할 수 있습니다.
  • ctx - ( JMeterContext ) - 컨텍스트에 대한 액세스를 제공합니다.
  • vars - ( JMeterVariables ) - 변수에 대한 읽기/쓰기 액세스를 제공합니다.
    vars.get(키);
    vars.put(키, 발);
    vars.putObject("OBJ1", 새로운 객체());
    
  • 소품 - (JMeterProperties - 클래스 java.util.Properties ) - 예: props.get("START.HMS"); props.put("PROP1","1234");
  • sampleResult , prev - ( SampleResult ) - 이전 SampleResult 에 대한 액세스를 제공합니다.
  • sampleEvent ( SampleEvent )는 현재 샘플 이벤트에 대한 액세스를 제공합니다.

위의 각 변수에서 사용할 수 있는 모든 방법에 대한 자세한 내용은 Javadoc을 확인하십시오.

beanshell.listener.init 속성 이 정의되어 있으면 BeanShell 스크립트에서 사용할 메소드 등을 정의하는 데 사용할 수 있는 초기화 파일을 로드하는 데 사용됩니다.

^^

요약 보고서

요약 보고서는 테스트에서 이름이 다른 각 요청에 대한 테이블 행을 생성합니다. 이것은 더 적은 메모리를 사용한다는 점을 제외하고 집계 보고서 와 유사합니다.

처리량은 샘플러 대상(예: HTTP 샘플의 경우 원격 서버)의 관점에서 계산됩니다. JMeter는 요청이 생성된 총 시간을 고려합니다. 다른 샘플러와 타이머가 동일한 스레드에 있으면 총 시간이 증가하므로 처리량 값이 감소합니다. 따라서 이름이 다른 두 개의 동일한 샘플러는 동일한 이름을 가진 두 개의 샘플러 처리량의 절반이 됩니다. 보고서에서 최상의 결과를 얻으려면 샘플러 레이블을 올바르게 선택하는 것이 중요합니다.

  • 레이블 - 샘플의 레이블입니다. " 레이블에 그룹 이름을 포함하시겠습니까? "를 선택하면 스레드 그룹의 이름이 접두사로 추가됩니다. 이를 통해 필요한 경우 서로 다른 스레드 그룹의 동일한 레이블을 별도로 대조할 수 있습니다.
  • # 샘플 - 동일한 레이블을 가진 샘플의 수
  • Average - 결과 집합의 평균 경과 시간
  • 최소 - 동일한 레이블이 있는 샘플의 가장 낮은 경과 시간
  • Max - 동일한 레이블이 있는 샘플의 가장 긴 경과 시간
  • 표준 개발 - 샘플 경과 시간 의 표준편차
  • 오류 % - 오류가 있는 요청 비율
  • 처리량 - 처리량 은 초/분/시간당 요청으로 측정됩니다. 표시되는 비율이 최소 1.0 이 되도록 시간 단위가 선택됩니다 . 처리량을 CSV 파일로 저장할 때 요청/초로 표시됩니다. 즉, 30.0 요청/분은 0.5 로 저장됩니다 .
  • 수신된 KB/초 - 초당 킬로바이트로 측정된 처리량
  • 보낸 KB/초 - 초당 킬로바이트로 측정된 처리량
  • 평균 바이트 - 샘플 응답의 평균 크기(바이트)입니다.

시간은 밀리초 단위입니다.

요약 보고서 제어판의 스크린샷
요약 보고서의 제어판 스크린샷

아래 그림은 " Include group name " 체크박스를 선택하는 예를 보여줍니다.

샘플 "
샘플 " 그룹 이름 포함 " 디스플레이
^^

파일에 응답 저장

이 테스트 요소는 테스트 계획의 아무 곳에나 배치할 수 있습니다. 해당 범위의 각 샘플에 대해 응답 데이터의 파일을 생성합니다. 이것의 주요 용도는 기능 테스트를 생성하는 것이지만 응답이 너무 커서 결과 보기 트리 수신기에 표시할 수 없는 경우에도 유용할 수 있습니다. 파일 이름은 지정된 접두사에 숫자를 더하여 생성됩니다(이가 비활성화되지 않은 경우 아래 참조). 파일 확장자는 알려진 경우 문서 유형에서 생성됩니다. 알 수 없는 경우 파일 확장자가 ' unknown 으로 설정됩니다.'. 번호 매기기가 비활성화되고 접미사 추가가 비활성화된 경우 파일 접두사가 전체 파일 이름으로 사용됩니다. 이렇게 하면 필요한 경우 고정 파일 이름을 생성할 수 있습니다. 생성된 파일 이름은 샘플 응답에 저장되며 필요한 경우 테스트 로그 출력 파일에 저장할 수 있습니다.

현재 샘플이 먼저 저장되고 그 다음에 하위 샘플(하위 샘플)이 저장됩니다. 변수 이름이 제공되면 파일 이름은 하위 샘플이 나타나는 순서대로 저장됩니다. 아래를 참조하십시오.

파일에 대한 응답 저장 제어판의 스크린샷
파일에 대한 응답 저장 제어판의 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
아니
파일 이름 접두사(폴더 포함 가능)
생성된 파일 이름의 접두사. 여기에는 디렉토리 이름이 포함될 수 있습니다. 상대 경로는 현재 작업 디렉토리(기본값은 bin/ 디렉토리)를 기준으로 확인됩니다. JMeter는 또한 현재 테스트 계획(JMX 파일)을 포함하는 디렉토리에 상대적인 경로를 지원합니다. 경로 이름이 " ~/ "(또는 jmeter.save.saveservice.base_prefix JMeter 속성에 있는 모든 것)로 시작하는 경우 경로는 JMX 파일 위치에 상대적인 것으로 간주됩니다.
접두사에 상위 폴더가 없으면 JMeter는 이를 생성하고 실패하면 테스트를 중지합니다.
파일 이름 접두사는 스레드 관련 데이터를 포함해서는 안 되므로 이 필드에 변수( ${varName} ) 또는 ${__threadNum} 과 같은 함수 를 사용하지 마십시오 .
저장된 파일 이름을 포함하는 변수 이름
생성된 파일 이름을 저장할 변수의 이름(나중에 테스트 계획에서 사용할 수 있도록). 하위 샘플이 있는 경우 숫자 접미사가 변수 이름에 추가됩니다. 예를 들어 변수 이름이 FILENAME 이면 상위 샘플 파일 이름은 변수 FILENAME 에 저장되고 하위 샘플러의 파일 이름은 FILENAME1 , FILENAME2 등에 저장됩니다.
아니
시퀀스 번호의 최소 길이
" Do not add number to prefix "를 체크하지 않으면, prefix에 추가된 숫자는 0 으로 채워져 prefix가 이 값의 크기를 갖습니다. 기본값은 0 입니다.
아니
실패한 응답만 저장
선택하면 실패한 응답만 저장됩니다.
성공한 응답만 저장
선택하면 성공한 응답만 저장됩니다.
접두사에 숫자를 추가하지 마십시오.
선택하면 접두사에 번호가 추가되지 않습니다. 이 옵션을 선택하는 경우 접두사가 고유한지 확인하십시오. 그렇지 않으면 파일을 덮어쓸 수 있습니다.
콘텐츠 유형 접미사를 추가하지 마세요.
선택하면 접미사가 추가되지 않습니다. 이 옵션을 선택하는 경우 접두사가 고유한지 확인하십시오. 그렇지 않으면 파일을 덮어쓸 수 있습니다.
타임스탬프 추가
선택하면 날짜가 yyyyMMdd-HHmm_ 형식에 따라 파일 접미사에 포함됩니다.
트랜잭션 컨트롤러 SampleResult를 저장하지 마십시오.
선택하면 트랜잭션 컨트롤러에서 생성한 SamplerResult가 무시됩니다.
^^

JSR223 리스너

JSR223 Listener를 사용하면 JSR223 스크립트 코드를 샘플 결과에 적용할 수 있습니다.

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
아니
언어
사용할 JSR223 언어
매개변수
스크립트에 전달할 매개변수입니다. 매개변수는 다음 변수에 저장됩니다.
매개변수
매개변수를 단일 변수로 포함하는 문자열
인수
매개변수를 포함하는 문자열 배열, 공백으로 분할
아니
스크립트 파일
실행할 스크립트가 포함된 파일, 상대 파일 경로가 사용되는 경우 " user.dir " 시스템 속성 에서 참조하는 디렉터리에 상대적입니다.
아니
스크립트 컴파일 캐싱
사용된 언어가 Compilable 인터페이스를 지원하는 경우 JMeter가 스크립트 컴파일 결과를 캐시하는 데 사용할 테스트 계획 전체의 고유 문자열입니다 (Groovy는 이 중 하나이고 Java, beanshell 및 javascript는 지원하지 않음).
이 옵션을 선택하지 않고 Groovy를 사용하는 경우 JSR223 Sampler Java System 속성의 참고 사항을 참조하십시오.
아니
스크립트
실행할 스크립트입니다.
예(스크립트 파일이 제공되지 않은 경우)

스크립트를 호출하기 전에 일부 변수가 설정됩니다. 이것은 JSR223 변수라는 점에 유의하십시오. 즉, 스크립트에서 직접 사용할 수 있습니다.

통나무
( 로거 ) - 로그 파일에 쓰는 데 사용할 수 있습니다.
상표
문자열 레이블
파일 이름
스크립트 파일 이름(있는 경우)
매개변수
매개변수(문자열로)
인수
매개변수를 문자열 배열로 사용(공백으로 분할)
ctx
( JMeterContext ) - 컨텍스트에 대한 액세스를 제공합니다.
vars
( JMeterVariables ) - 변수에 대한 읽기/쓰기 액세스를 제공합니다.
vars.get(키);
vars.put(키, 발);
vars.putObject("OBJ1", 새로운 객체());
vars.getObject("OBJ2");
소품
(JMeterProperties - 클래스 java.util.Properties ) - 예: props.get("START.HMS"); props.put("PROP1","1234");
샘플 결과 , 이전
( SampleResult ) - SampleResult에 대한 액세스 권한을 부여합니다.
샘플 이벤트
( SampleEvent ) - SampleEvent에 대한 액세스 권한을 부여합니다.
샘플러
( 샘플러 )- 마지막 샘플러에 대한 액세스를 제공합니다.
밖으로
System.out - 예: OUT.println("메시지")

위의 각 변수에서 사용할 수 있는 모든 방법에 대한 자세한 내용은 Javadoc을 확인하십시오.

^^

요약 결과 생성

이 테스트 요소는 테스트 계획의 아무 곳에나 배치할 수 있습니다. 지금까지의 테스트 실행 요약을 로그 파일 및/또는 표준 출력에 생성합니다. 누적 합계와 차등 합계가 모두 표시됩니다. 출력은 적절한 시간 경계에서 n 초(기본값 30초) 마다 생성 되므로 동일한 시간에 여러 테스트 실행이 동기화됩니다.
요약/차등 라인은 방출된 샘플이 있는 경우에만 작성되기 때문에 테스트에서 간격 내에 생성된 샘플이 없는 경우 생성 간격이 존중되지 않을 수 있습니다.
요약기 구성 항목은 jmeter.properties 파일을 참조하십시오 .
# 해당 이름으로 요약자를 자동으로 시작하려면 다음 속성을 정의합니다.
# (CLI 모드에만 적용됨)
#summariser.name=요약
#
# 요약 사이의 간격(초) 기본 3분
#summariser.interval=30
#
# 로그 파일에 메시지 쓰기
#summariser.log=참
#
# System.out에 메시지 쓰기
#summariser.out=참
이 요소는 주로 배치(CLI) 실행을 위한 것입니다. 출력은 다음과 같습니다.
레이블 + 16 in 0:00:12 = 1.3/s 평균: 1608 최소: 1163 최대: 2009 오류: 0(0.00%) 활성: 5 시작: 5 완료: 0
레이블 + 82 in 0:00:30 = 2.7/s 평균: 1518 최소: 1003 최대: 2020 오류: 0(0.00%) 활성: 5 시작: 5 완료: 0
레이블 = 98 in 0:00:42 = 2.3/s 평균: 1533 최소: 1003 최대: 2020 오류: 0(0.00%)
레이블 + 85 in 0:00:30 = 2.8/s 평균: 1505 최소: 1008 최대: 2005 오류: 0(0.00%) 활성: 5 시작: 5 완료: 0
레이블 = 183 in 0:01:13 = 2.5/s 평균: 1520 최소: 1003 최대: 2020 오류: 0(0.00%)
레이블 + 79 in 0:00:30 = 2.7/s 평균: 1578 최소: 1089 최대: 2012 오류: 0 (0.00%) 활성: 5 시작: 5 완료: 0
레이블 = 262 in 0:01:43 = 2.6/s 평균: 1538 최소: 1003 최대: 2020 오류: 0(0.00%)
레이블 + 80 in 0:00:30 = 2.7/s 평균: 1531 최소: 1013 최대: 2014 오류: 0 (0.00%) 활성: 5 시작: 5 완료: 0
레이블 = 342 in 0:02:12 = 2.6/s 평균: 1536 최소: 1003 최대: 2020 오류: 0(0.00%)
레이블 + 83 in 0:00:31 = 2.7/s 평균: 1512 최소: 1003 최대: 1982 오류: 0(0.00%) 활성: 5 시작: 5 완료: 0
레이블 = 425 in 0:02:43 = 2.6/s 평균: 1531 최소: 1003 최대: 2020 오류: 0(0.00%)
레이블 + 83 in 0:00:29 = 2.8/s 평균: 1487 최소: 1023 최대: 2013 오류: 0(0.00%) 활성: 5 시작: 5 완료: 0
레이블 = 508 in 0:03:12 = 2.6/s 평균: 1524 최소: 1003 최대: 2020 오류: 0(0.00%)
레이블 + 78 in 0:00:30 = 2.6/s 평균: 1594 최소: 1013 최대: 2016 오류: 0(0.00%) 활성: 5 시작: 5 완료: 0
레이블 = 586 in 0:03:43 = 2.6/s 평균: 1533 최소: 1003 최대: 2020 오류: 0(0.00%)
레이블 + 80 in 0:00:30 = 2.7/s 평균: 1516 최소: 1013 최대: 2005 오류: 0(0.00%) 활성: 5 시작: 5 완료: 0
레이블 = 666 in 0:04:12 = 2.6/s 평균: 1531 최소: 1003 최대: 2020 오류: 0(0.00%)
레이블 + 86 in 0:00:30 = 2.9/s 평균: 1449 최소: 1004 최대: 2017 오류: 0 (0.00%) 활성: 5 시작: 5 완료: 0
레이블 = 752 in 0:04:43 = 2.7/s 평균: 1522 최소: 1003 최대: 2020 오류: 0(0.00%)
레이블 + 65 in 0:00:24 = 2.7/s 평균: 1579 최소: 1007 최대: 2003 오류: 0 (0.00%) 활성: 0 시작: 5 완료: 5
레이블 = 817 in 0:05:07 = 2.7/s 평균: 1526 최소: 1003 최대: 2020 오류: 0(0.00%)
" label "은 요소의 이름입니다. "+" 는 라인이 델타 라인임을 의미합니다. 즉, 마지막 출력 이후의 변경 사항을 보여줍니다 . "=" 는 행이 총계임을 의미합니다. 즉, 누계를 표시합니다
. JMeter 로그 파일의 항목에는 타임스탬프도 포함됩니다. 예 " 817 in 0:05:07 = 2.7/s "는 5분 7초 동안 817개의 샘플이 기록되었고 초당 2.7개의 샘플로 작동한다는 것을 의미합니다. Avg ( 평균), Min (최소) 및 Max (최대) 시간은 밀리초 단위입니다. " Err "은 오류 수를 의미합니다(백분율로도 표시됨).



테스트가 끝나면 마지막 두 줄이 나타납니다. 적절한 시간 경계에 동기화되지 않습니다. 초기 및 최종 델타는 간격보다 짧을 수 있습니다(위의 예에서는 30초). JMeter가 간격 경계와 동기화하므로 첫 번째 델타는 일반적으로 더 낮습니다. 테스트가 일반적으로 정확한 간격 경계에서 끝나지 않기 때문에 마지막 델타는 더 낮을 것입니다.

레이블은 샘플 결과를 함께 그룹화하는 데 사용됩니다. 따라서 여러 스레드 그룹이 있고 모두 요약하려면 동일한 레이블을 사용하거나 요약자를 테스트 계획에 추가하십시오(모든 스레드 그룹이 범위 내에 있도록). 적절한 레이블을 사용하고 요약자를 테스트 계획의 적절한 부분에 추가하여 다양한 요약 그룹화를 구현할 수 있습니다.

CLI 모드에서는 기본적으로 " summariser " 라는 이름의 요약 결과 생성 리스너 가 구성되어 있습니다. 이미 테스트 계획에 추가한 경우 이름을 다르게 지정해야 합니다. 그렇지 않으면 결과가 이 레이블(요약) 아래에 누적되어 잘못된 결과(합계 총 샘플 수 + 요약 결과 생성 리스너의 상위 항목 아래에 있는 샘플 수).
이것은 버그가 아니라 스레드 그룹 전체를 요약할 수 있는 디자인 선택입니다.
요약 결과 생성 제어판의 스크린샷
요약 결과 생성의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다. 출력에서 " 레이블 " 로 나타납니다 . 동일한 레이블을 가진 모든 요소에 대한 세부정보가 함께 추가됩니다.
^^

비교 어설션 시각화 도우미

비교 주장 시각화 도우미는 모든 비교 주장 요소의 결과를 보여줍니다.
비교 어설션 시각화 도우미의 제어판에 대한 스크린샷
비교 어설션 시각화 도우미의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
^^

백엔드 리스너

백엔드 리스너는 BackendListenerClient 의 사용자 정의 구현을 연결할 수 있는 비동기 리스너입니다 . 기본적으로 Graphite 구현이 제공됩니다.
백엔드 리스너의 제어판 스크린샷
백엔드 리스너의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
백엔드 리스너 구현
BackendListenerClient 구현 의 클래스입니다 .
비동기 대기열 크기
비동기적으로 처리되는 동안 SampleResults를 보유하는 큐의 크기입니다.
매개변수
BackendListenerClient 구현 의 매개변수입니다 .

다음 매개변수는 GraphiteBackendListenerClient 구현에 적용됩니다.

매개변수

기인하다
설명
필수의
흑연MetricsSender
org.apache.jmeter.visualizers.backend.graphite.TextGraphiteMetricsSender 또는 org.apache.jmeter.visualizers.backend.graphite.PickleGraphiteMetricsSender
흑연 호스트
Graphite 또는 InfluxDB(Graphite 플러그인 사용) 서버 호스트
흑연포트
Graphite 또는 InfluxDB(Graphite 플러그인 활성화됨) 서버 포트, 기본값은 2003 입니다. 참고 PickleGraphiteMetricsSender (포트 2004 )는 Graphite 서버와만 통신할 수 있습니다.
rootMetricsPrefix
백엔드로 전송된 메트릭의 접두사. 기본값은 " jmeter ." JMeter는 루트 접두사와 samplerName 사이에 구분 기호를 추가하지 않습니다. 이것이 현재 후행 점이 필요한 이유입니다.
요약만
세부 정보 없이 요약만 보내십시오. 기본값은 true 입니다.
샘플러 목록
백엔드로 보낼 샘플 결과의 이름(레이블)을 정의합니다. useRegexpForSamplersList=false 인 경우 세미콜론으로 구분된 이름 목록입니다. useRegexpForSamplersList=true 인 경우 이름과 일치하는 정규식입니다.
useRegexpForSamplersList
샘플러 목록을 정규 표현식으로 고려하여 백엔드에 메트릭을 보고할 샘플러를 선택하십시오. 기본값은 false 입니다.
백분위수
백엔드로 보낼 백분위수입니다. 백분위수에는 분수 부분이 포함될 수 있습니다(예: 12.5 ) . (구분 기호는 항상 "."입니다.) 목록은 세미콜론으로 구분해야 합니다. 일반적으로 3개 또는 4개의 값이면 충분합니다.

자세한 내용은 실시간 결과 를 참조하십시오.

그라파나 대시보드
그라파나 대시보드

JMeter 3.2부터 사용자 정의 스키마를 사용하여 InfluxDB에 직접 쓸 수 있는 구현입니다. InfluxdbBackendListenerClient 라고 합니다 . 다음 매개변수는 InfluxdbBackendListenerClient 구현에 적용됩니다.

매개변수

기인하다
설명
필수의
influxdbMetricsSender
org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender
influxdbUrl
유입 URL(예: http://influxHost:8086/write?db=jmeter )
influxdbToken
InfluxDB 2 인증 토큰 (예: HE9yIdAPzWJDspH_tCc2UvdKZpX== ); 5.2부터.
아니
신청
테스트한 애플리케이션의 이름입니다. 이 값은 ' 응용 프로그램 ' 이라는 태그로 ' 이벤트 ' 측정에 저장됩니다.
측정
유입 라인 프로토콜 참조 에 따른 측정 . 기본값은 " jmeter "입니다.
요약만
세부 정보 없이 요약만 보내십시오. 기본값은 true 입니다.
샘플러정규식
샘플 이름과 일치하여 백엔드로 보낼 정규식입니다.
테스트제목
테스트 이름. 기본값은 테스트 이름 입니다. 이 값은 ' 이벤트 ' 측정에 ' 텍스트 ' 라는 필드로 저장됩니다 . JMeter는 이 값이 '시작됨' 및 '종료됨'으로 끝나는 테스트 시작 및 종료 시 자동으로 주석을 생성합니다.
이벤트 태그
Grafana에서는 각 주석에 대한 태그를 표시할 수 있습니다. 여기에서 채울 수 있습니다. 이 값은 ' 태그 ' 라는 태그로 ' 이벤트 ' 측정에 저장됩니다 .
아니
백분위수
백엔드로 보낼 백분위수입니다. 백분위수에는 12.5 와 같은 소수 부분이 포함될 수 있습니다 (구분자는 항상 " . "). 목록은 세미콜론으로 구분해야 합니다. 일반적으로 3개 또는 4개의 값이면 충분합니다.
TAG_원하는 것
원하는 만큼 사용자 정의 태그를 추가할 수 있습니다. 각각에 대해 새 줄을 만들고 이름 앞에 " TAG_ " 를 붙입니다.
아니

자세한 내용은 Grafana 의 실시간 결과Influxdb 주석 도 참조하세요. InfluxDB v2용 리스너 구성에 대한 하위 섹션도 있습니다 .

JMeter 5.4부터 모든 샘플 결과를 InfluxDB에 쓰는 구현입니다. InfluxDBrawBackendListenerClient 라고 합니다 . 이것은 데이터 및 개별 쓰기의 증가로 인해 JMeter와 InfluxDB 모두 에서 InfluxdbBackendListenerClient 보다 더 많은 리소스를 사용한다는 점에 주목할 가치가 있습니다 . 다음 매개변수는 InfluxDBrawBackendListenerClient 구현에 적용됩니다.

매개변수

기인하다
설명
필수의
influxdbMetricsSender
org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender
influxdbUrl
유입 URL(예: http://influxHost:8086/write?db=jmeter 또는 클라우드의 경우 https://eu-central-1-1.aws.cloud2.influxdata.com/api/v2/write?org) =org-id&bucket=jmeter)
influxdbToken
InfluxDB 2 인증 토큰 (예: HE9yIdAPzWJDspH_tCc2UvdKZpX==)
아니
측정
유입 라인 프로토콜 참조 에 따른 측정 . 기본값은 " jmeter ."
^^
^^

18.4 구성 요소


구성 요소는 샘플러에서 나중에 사용할 수 있도록 기본값과 변수를 설정하는 데 사용할 수 있습니다. 이러한 요소는 발견된 범위의 시작 부분, 즉 동일한 범위에 있는 샘플러보다 먼저 처리됩니다.

CSV 데이터 세트 구성

CSV 데이터 세트 구성은 파일에서 행을 읽고 변수로 분할하는 데 사용됩니다. __CSVRead()__StringFromFile() 함수 보다 사용하기 쉽습니다 . 많은 수의 변수를 처리하는 데 적합하며 "임의" 및 고유한 값으로 테스트하는 데에도 유용합니다.

런타임 시 고유한 임의 값을 생성하는 것은 CPU 및 메모리 측면에서 비용이 많이 들기 때문에 테스트 전에 데이터를 생성하십시오. 필요한 경우 파일의 "무작위" 데이터를 런타임 매개변수와 함께 사용하여 각 실행에서 다른 값 세트를 생성할 수 있습니다(예: 연결 사용). 이는 런타임에 모든 것을 생성하는 것보다 훨씬 저렴합니다.

JMeter를 사용하면 값을 인용할 수 있습니다. 이렇게 하면 값에 구분 기호가 포함될 수 있습니다. " 인용 데이터 허용 "이 활성화된 경우 값을 큰따옴표로 묶을 수 있습니다. 이들은 제거됩니다. 인용된 필드에 큰따옴표를 포함하려면 두 개의 큰따옴표를 사용합니다. 예를 들어:

1,"2,3","4""5" =>
1
2,3
4"5

JMeter는 열 이름을 정의하는 헤더 행이 있는 CSV 파일을 지원합니다. 이를 활성화하려면 " 변수 이름 " 필드를 비워 둡니다. 올바른 구분 기호를 제공해야 합니다.

JMeter는 줄 바꿈이 포함된 인용 데이터가 있는 CSV 파일을 지원합니다.

기본적으로 파일은 한 번만 열리며 각 스레드는 파일과 다른 행을 사용합니다. 그러나 행이 스레드로 전달되는 순서는 실행 순서에 따라 달라지며, 이는 반복마다 다를 수 있습니다. 각 테스트 반복이 시작될 때 행을 읽습니다. 파일 이름과 모드는 첫 번째 반복에서 확인됩니다.

추가 옵션은 아래 공유 모드에 대한 설명을 참조하십시오. 각 스레드가 고유한 값 집합을 가지려면 각 스레드에 대해 하나씩 파일 집합을 만들어야 합니다. 예를 들어 test1.csv , test2.csv , ..., test n .csv . 파일 이름 test${__threadNum}.csv 를 사용하고 " 공유 모드 "를 " 현재 스레드 "로 설정합니다.

CSV 데이터 세트 변수는 각 테스트 반복이 시작될 때 정의됩니다. 이것은 구성 처리가 완료된 후이므로 구성 시간에 내용을 처리하는 JDBC 구성과 같은 일부 구성 항목에 사용할 수 없습니다( 버그 40394 참조 ). 그러나 변수는 HTTP 인증 관리자에서 사용자 이름 등 으로 작동합니다. .는 런타임에 처리됩니다.

특별한 경우로 구분자 필드 의 문자열 " \t "(따옴표 제외)는 탭으로 처리됩니다.

파일의 끝( EOF )에 도달하고 재활용 옵션이 true 이면 파일의 첫 번째 줄부터 읽기가 다시 시작됩니다.

재활용 옵션이 false 이고 stopThread 가 false 이면 파일 끝에 도달할 때 모든 변수가 <EOF> 로 설정됩니다. 이 값은 JMeter 속성 csvdataset.eofstring 을 설정하여 변경할 수 있습니다 .

Recycle 옵션이 false 이고 Stop Thread 가 true 이면 EOF 에 도달 하면 스레드가 중지됩니다.

CSV 데이터 세트 구성의 제어판 스크린샷
CSV 데이터 세트 구성의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
파일 이름
읽을 파일의 이름입니다. 활성 테스트 계획의 경로와 관련하여 상대 파일 이름이 확인됩니다. 분산 테스트의 경우 CSV 파일은 JMeter 서버가 시작되는 올바른 상대 디렉토리의 서버 호스트 시스템에 저장되어야 합니다. 절대 파일 이름도 지원되지만 원격 서버의 디렉토리 구조가 동일하지 않으면 원격 모드에서 작동하지 않을 수 있습니다. 동일한 실제 파일이 두 가지 다른 방식(예: csvdata.txt./csvdata.txt )으로 참조되는 경우 이들은 서로 다른 파일로 처리됩니다. OS에서 대문자와 소문자를 구분하지 않으면 csvData.TXT 도 별도로 열립니다.
파일 인코딩
플랫폼 기본값이 아닌 경우 파일을 읽는 데 사용할 인코딩입니다.
아니
변수 이름
변수 이름 목록입니다. 이름은 구분 기호로 구분해야 합니다. 큰따옴표를 사용하여 인용할 수 있습니다. JMeter는 CSV 헤더 행을 지원합니다. 변수 이름 필드가 비어 있으면 파일의 첫 번째 행을 읽고 열 이름 목록으로 해석합니다.
아니
첫 번째 줄을 변수 이름으로 사용
CSV 파일의 첫 번째 줄을 무시합니다. 변수 이름이 비어 있지 않은 경우에만 사용되며, 변수 이름이 비어 있으면 첫 번째 줄에 헤더가 포함되어야 합니다.
아니
구분자
파일의 레코드를 분할하는 데 사용할 구분 기호입니다. 라인에 변수보다 적은 값이 있으면 나머지 변수는 업데이트되지 않으므로 이전 값(있는 경우)을 유지합니다.
인용 데이터를 허용하시겠습니까?
CSV 파일에서 값을 인용할 수 있어야 합니까? 활성화된 경우 값을 " - 큰따옴표 -로 묶을 수 있으므로 값에 구분 기호가 포함될 수 있습니다.
EOF에 재활용?
EOF 에 도달하면 파일을 처음부터 다시 읽어야 합니까? (기본값은 true )
EOF에서 스레드를 중지하시겠습니까?
Recycle이 false인 경우 스레드를 EOF 에서 중지해야 합니까? (기본값은 false )
공유 모드
  • 모든 스레드 - (기본값) 파일은 모든 스레드 간에 공유됩니다.
  • 현재 스레드 그룹 - 요소가 나타나는 각 스레드 그룹에 대해 각 파일이 한 번씩 열립니다.
  • 현재 스레드 - 각 파일은 각 스레드에 대해 별도로 열립니다.
  • 식별자 - 동일한 식별자를 공유하는 모든 스레드가 동일한 파일을 공유합니다. 예를 들어 4개의 스레드 그룹이 있는 경우 둘 이상의 그룹에 대해 공통 ID를 사용하여 그룹 간에 파일을 공유할 수 있습니다. 또는 스레드 번호를 사용하여 다른 스레드 그룹의 동일한 스레드 번호 간에 파일을 공유할 수 있습니다.
^^

FTP 요청 기본값

FTP 요청 기본값의 제어판 스크린샷
FTP 요청 기본값의 제어판 스크린샷
^^

DNS 캐시 관리자

DNS 캐시 관리자 요소를 사용하면 사용자가 다른 IP에서 콘텐츠를 수신할 때 로드 밸런서(CDN 등) 뒤에 여러 서버가 있는 응용 프로그램을 테스트할 수 있습니다. 기본적으로 JMeter는 JVM DNS 캐시를 사용합니다. 그렇기 때문에 클러스터에서 하나의 서버만 부하를 받습니다. DNS 캐시 관리자는 각 반복마다 개별적으로 각 스레드의 이름을 확인하고 확인 결과를 JVM 및 OS DNS 캐시와 독립적인 내부 DNS 캐시에 저장합니다.

정적 호스트에 대한 매핑을 사용하여 /etc/hosts 파일 과 같은 것을 시뮬레이션할 수 있습니다 . 이러한 항목은 사용자 지정 해석기보다 우선 적용됩니다. 이 매핑을 사용 하려면 사용자 지정 DNS 확인자를 사용 하도록 설정해야 합니다.

정적 호스트 테이블의 사용

예를 들어, DNS 서버에 아직 설정되지 않은 이름으로 연결하려는 테스트 서버가 있다고 가정해 보겠습니다. 우리의 예에서 이것은 서버 이름에 대해 www.example.com 이 될 것이며, 서버 a123.another.example.org 의 IP에 도달하고자 하는 것 입니다.

워크스테이션을 변경하고 /etc/hosts 파일에 항목을 추가하거나 OS에 해당하는 항목을 추가하거나 DNS 캐시 관리자의 정적 호스트 테이블에 항목을 추가할 수 있습니다.

www.example.com 을 첫 번째 열( Host )에 입력 하고 a123.another.example.org 를 두 번째 열( Hostname 또는 IP address )에 입력합니다. 두 번째 열의 이름에서 알 수 있듯이 테스트 서버의 IP 주소를 사용할 수도 있습니다.

테스트 서버의 IP 주소는 사용자 지정 DNS 확인자를 사용하여 조회됩니다. 아무 것도 지정하지 않으면 시스템 DNS 확인자가 사용됩니다.

이제 HTTPClient4 샘플러에서 www.example.com 을 사용할 수 있으며 모든 헤더가 www.example.com 으로 설정된 a123.another.example.org 에 대해 요청이 이루어집니다 .

DNS 캐시 관리자의 제어판 스크린샷
DNS 캐시 관리자의 제어판 스크린샷
DNS 캐시 관리자는 스레드 그룹 또는 테스트 계획의 루트에서 사용하도록 설계되었습니다. 특정 HTTP 샘플러의 자식 요소로 배치하지 마십시오.
DNS 캐시 관리자는 HTTPClient4 구현을 사용하는 HTTP 요청에서만 작동합니다.

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
아니
각 반복에서 캐시 지우기
선택하면 새 반복이 시작될 때마다 모든 스레드의 DNS 캐시가 지워집니다.
아니
시스템 DNS 확인자 사용
시스템 DNS 확인자가 사용됩니다. 올바른 작업을 위해 $JAVA_HOME/jre/lib/security/java.security 를 ​​편집하고 networkaddress.cache.ttl=0 을 추가하십시오 .
해당 없음
사용자 지정 DNS 확인자 사용
사용자 정의 DNS 해석기(dnsjava 라이브러리에서)가 사용됩니다.
해당 없음
호스트 이름 또는 IP 주소
사용할 DNS 서버 목록입니다. 비어 있으면 네트워크 구성 DNS가 사용됩니다.
아니
버튼 추가
DNS 서버 테이블에 항목을 추가합니다.
해당 없음
삭제 버튼
현재 선택된 테이블 항목을 삭제합니다.
해당 없음
호스트 및 호스트 이름 또는 IP 주소
사용자 지정 DNS 확인자를 사용하여 확인할 정적 호스트 항목에 대한 호스트 이름 매핑.
아니
정적 호스트 추가 버튼
정적 호스트 테이블에 항목을 추가합니다.
해당 없음
정적 호스트 삭제 버튼
테이블에서 현재 선택된 정적 호스트를 삭제합니다.
해당 없음
^^

HTTP 권한 부여 관리자

권한 부여 관리자를 사용하면 서버 인증을 사용하여 제한된 웹 페이지에 대해 하나 이상의 사용자 로그인을 지정할 수 있습니다. 브라우저를 사용하여 제한된 페이지에 액세스하고 브라우저에 로그인 대화 상자가 표시되면 이러한 유형의 인증이 표시됩니다. JMeter는 이러한 유형의 페이지를 만나면 로그인 정보를 전송합니다.

인증 헤더는 트리 보기 수신기 " 요청 " 탭 에 표시되지 않을 수 있습니다 . Java 구현은 선점 인증을 수행하지만 JMeter가 헤더를 가져올 때 Authorization 헤더를 반환하지 않습니다. HttpComponents(HC 4.5.X) 구현은 3.2 이후로 기본적으로 선점형이며 헤더가 표시됩니다. 이를 비활성화하려면 다음과 같이 값을 설정하십시오. 이 경우 인증은 챌린지에 대한 응답으로만 수행됩니다.

jmeter.properties 파일에서 httpclient4.auth.preemptive =false 설정

참고: 위의 설정은 HttpClient 샘플러에만 적용됩니다.
URL과 일치하는 항목을 찾을 때 JMeter는 각 항목을 차례로 확인하고 첫 번째 일치 항목을 찾으면 중지합니다. 따라서 가장 구체적인 URL이 목록에서 먼저 나타나고 덜 구체적인 URL이 뒤따라야 합니다. 중복 URL은 무시됩니다. 스레드마다 다른 사용자 이름/비밀번호를 사용하려면 변수를 사용할 수 있습니다. CSV 데이터 세트 구성 요소(예 :) 를 사용하여 설정할 수 있습니다 .
HTTP Authorization Manager의 제어판 스크린샷
HTTP 권한 부여 관리자의 제어판 스크린샷
샘플러 범위에 둘 이상의 권한 부여 관리자가 있는 경우 현재 사용할 권한 부여 관리자를 지정할 수 있는 방법이 없습니다.

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
아니
각 반복에서 인증을 지우시겠습니까?
Kerberos 인증에 사용됩니다. 체크하면 메인 스레드 그룹 루프의 각 반복마다 인증이 수행됩니다. 이것은 일반적으로 각 기본 스레드 그룹 반복이 한 가상 사용자의 동작을 나타내는 경우에 유용합니다.
기본 URL
하나 이상의 HTTP 요청 URL과 일치하는 부분 또는 전체 URL입니다. 예를 들어 사용자 이름 이 " jmeter "이고 암호 가 " jmeter "인 기본 URL " http://localhost/restricted/ " 를 지정한다고 가정해 보겠습니다 . HTTP 요청을 URL " http://localhost/restricted/ant/myPage.html "로 보내면 Authorization Manager는 " jmeter "라는 사용자의 로그인 정보를 보냅니다.
사용자 이름
인증할 사용자 이름입니다.
비밀번호
사용자의 비밀번호입니다. (NB 이것은 테스트 계획에서 암호화되지 않은 상태로 저장됩니다)
도메인
NTLM에 사용할 도메인입니다.
아니
왕국
NTLM에 사용할 영역입니다.
아니
기구
수행할 인증 유형입니다. JMeter는 사용된 Http 샘플러를 기반으로 다양한 유형의 인증을 수행할 수 있습니다.
자바
기초적인
HTTP 클라이언트 4
BASIC , DIGESTKerberos
아니
Realm은 HttpClient 샘플러에만 적용됩니다.

Kerberos 구성:

Kerberos를 구성하려면 최소한 두 개의 JVM 시스템 속성을 설정해야 합니다.

  • -Djava.security.krb5.conf=krb5.conf
  • -Djava.security.auth.login.config=jaas.conf

bin/system.properties 파일에서 두 속성을 구성할 수도 있습니다 . JMeter bin 폴더에 있는 두 개의 샘플 구성 파일( krb5.confjaas.conf )에서 추가 문서에 대한 참조를 확인하고 Kerberos 구성과 일치하도록 조정하십시오.

SPNEGO의 경우 기본적으로 자격 증명 위임이 비활성화되어 있습니다. 활성화하려면 kerberos.spnego.delegate_cred 속성 을 true 로 설정하면 됩니다 .

Kerberos SPNEGO 인증용 SPN을 생성할 때 IE 및 Firefox는 URL에서 포트 번호를 생략합니다. Chrome에는 표준 번호( 80443 )와 다른 경우 포트 번호를 포함 하는 옵션( --enable-auth-negotiate-port )이 있습니다 . 그 동작은 아래와 같이 다음 JMeter 속성을 설정하여 에뮬레이트할 수 있습니다.

jmeter.properties 또는 user.properties 에서 다음 을 설정합니다.

  • kerberos.spnego.strip_port=거짓

통제 수단:
  • 추가 버튼 - 인증 테이블에 항목을 추가합니다.
  • 삭제 버튼 - 현재 선택된 테이블 항목을 삭제합니다.
  • 로드 버튼 - 이전에 저장한 인증 테이블을 로드하고 기존 인증 테이블 항목에 항목을 추가합니다.
  • 다른 이름으로 저장 버튼 - 현재 인증 테이블을 파일로 저장합니다.
테스트 계획을 저장할 때 JMeter는 암호화되지 않은 암호를 포함하여 모든 인증 테이블 항목을 자동으로 저장합니다.
권한 부여 예제

이 예제를 다운로드 하십시오. 이 예에서 우리는 세 개의 HTTP 요청을 보내는 로컬 서버에 테스트 계획을 만들었습니다. 두 요청은 로그인이 필요하고 다른 하나는 모든 사람에게 열려 있습니다. 테스트 계획의 구성을 보려면 그림 10을 참조하십시오. 우리 서버 에는 " index.html "과 " index2.html " 이라는 두 개의 파일이 포함된 " secret "이라는 제한된 디렉토리가 있습니다 . 암호가 " spot " 인 로그인 ID " kevin "을 만들었습니다 . 따라서 Authorization Manager에서 제한된 디렉토리와 사용자 이름 및 암호에 대한 항목을 만들었습니다(그림 11 참조). " SecretPage1 " 및 " SecretPage2 " 라는 두 개의 HTTP 요청/secret/index.html " 및 " /secret/index2.html ". " NoSecretPage " 라는 다른 HTTP 요청 은 " /index.html " 에 대한 요청을 만듭니다 .

그림 10 - 테스트 계획
그림 10 - 테스트 계획
그림 11 - 권한 부여 관리자 제어판
그림 11 - 권한 부여 관리자 제어판

테스트 계획을 실행할 때 JMeter는 요청하는 URL에 대한 Authorization 테이블을 찾습니다. 기본 URL이 URL과 일치하면 JMeter는 요청과 함께 이 정보를 전달합니다.

테스트 계획을 다운로드할 수 있지만 로컬 서버에 대한 테스트로 구축되었으므로 실행할 수 없습니다. 그러나 자신의 테스트 계획을 구성할 때 참조로 사용할 수 있습니다.
^^

HTTP 캐시 관리자

HTTP 캐시 관리자는 브라우저 캐시 기능을 시뮬레이션하기 위해 해당 범위 내에서 HTTP 요청에 캐싱 기능을 추가하는 데 사용됩니다. 각 가상 사용자 스레드에는 자체 캐시가 있습니다. 기본적으로 캐시 관리 프로그램은 LRU 알고리즘을 사용하여 가상 사용자 스레드당 최대 5000개의 항목을 캐시에 저장합니다. 이 값을 수정 하려면 " maxSize " 속성을 사용하십시오 . 이 값을 늘릴수록 HTTP 캐쉬 관리 프로그램이 메모리를 더 많이 사용하므로 -Xmx JVM 옵션을 적절하게 조정해야 합니다.

샘플이 성공하면(즉, 응답 코드가 2xx ) Last-ModifiedEtag ( 관련되는 경우 만료됨 ) 값이 URL에 저장됩니다. 다음 샘플을 실행하기 전에 샘플러는 캐시에 항목이 있는지 확인하고, 있으면 If-Last-ModifiedIf-None-Match 조건부 헤더가 요청에 대해 설정됩니다.

또한 " Cache-Control/Expires 헤더 사용 " 옵션을 선택하면 Cache-Control / Expires 값이 현재 시간에 대해 확인됩니다. 요청이 GET 요청이고 타임스탬프가 미래의 것이라면 샘플러는 원격 서버에서 URL을 요청하지 않고 즉시 반환합니다. 이것은 브라우저 동작을 에뮬레이트하기 위한 것입니다. Cache-Control 헤더가 " no-cache "인 경우 응답은 사전 만료된 것으로 캐시에 저장되므로 조건부 GET 요청이 생성됩니다. Cache-Control 에 다른 값이 있으면 " max -age" 만료 옵션은 항목 수명을 계산하기 위해 처리되며 누락된 경우 만료 헤더가 사용되며 누락된 항목도 마지막 수정 시간 및 응답 날짜 를 사용하여 RFC 2616 섹션 13.2.4 에 지정된 대로 캐시됩니다.

요청된 문서가 캐시된 이후 변경되지 않은 경우 응답 본문은 비어 있습니다. 마찬가지로 만료 날짜가 미래인 경우에도 마찬가지입니다. 이는 어설션에 문제를 일으킬 수 있습니다.
HTTP 캐시 관리자의 제어판 스크린샷
HTTP 캐시 관리자의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
아니
각 반복마다 캐시 지우기
선택하면 스레드 시작 시 캐시가 지워집니다.
GET 요청을 처리할 때 캐시 제어/만료 헤더 사용
위의 설명을 참조하십시오.
캐시의 최대 요소 수
위의 설명을 참조하십시오.
^^

쿠키 관리자 요소에는 두 가지 기능이 있습니다.
첫째, 웹 브라우저처럼 쿠키를 저장하고 전송합니다. HTTP 요청이 있고 응답에 쿠키가 포함된 경우 쿠키 관리자는 자동으로 해당 쿠키를 저장하고 해당 특정 웹 사이트에 대한 모든 향후 요청에 사용합니다. 각 JMeter 스레드에는 자체 "쿠키 저장 영역"이 있습니다. 따라서 세션 정보를 저장하기 위해 쿠키를 사용하는 웹 사이트를 테스트하는 경우 각 JMeter 스레드에는 고유한 세션이 있습니다. 이러한 쿠키는 쿠키 관리자 디스플레이에 나타나지 않지만 View Results Tree Listener를 사용하여 볼 수 있습니다.

JMeter는 수신된 쿠키가 URL에 유효한지 확인합니다. 즉, 도메인 간 쿠키가 저장되지 않습니다. 버그가 있는 동작이 있거나 도메인 간 쿠키를 사용하려면 JMeter 속성 " CookieManager.check.cookies=false "를 정의하십시오.

수신된 쿠키는 JMeter 스레드 변수로 저장할 수 있습니다. 쿠키를 변수로 저장하려면 " CookieManager.save.cookies=true " 속성을 정의하십시오. 또한 쿠키 이름에는 저장되기 전에 " COOKIE_ "가 접두사로 붙습니다(이렇게 하면 지역 변수가 우발적으로 손상되는 것을 방지할 수 있습니다). 원래 동작으로 되돌리려면 " CookieManager.name.prefix= " 속성을 정의하십시오(하나 이상의 공백). 활성화되면 이름이 TEST 인 쿠키의 값을 ${COOKIE_TEST} 로 참조할 수 있습니다 .

둘째, 쿠키 관리자에 쿠키를 수동으로 추가할 수 있습니다. 그러나 이렇게 하면 쿠키가 모든 JMeter 스레드에서 공유됩니다.

이러한 쿠키는 훨씬 먼 미래의 만료 시간으로 생성됩니다.

null 값이 있는 쿠키는 기본적으로 무시됩니다. 이것은 JMeter 속성을 설정하여 변경할 수 있습니다. CookieManager.delete_null_cookies=false . 이는 수동으로 정의된 쿠키에도 적용됩니다. 이러한 쿠키는 업데이트될 때 디스플레이에서 제거됩니다. 또한 쿠키 이름은 고유해야 합니다. 동일한 이름으로 두 번째 쿠키가 정의되면 첫 번째 쿠키가 대체됩니다.

HTTP 쿠키 관리자 제어판 스크린샷
HTTP 쿠키 관리자 제어판 스크린샷
샘플러 범위에 둘 이상의 쿠키 관리자가 있는 경우 현재 사용할 쿠키 관리자를 지정할 수 있는 방법이 없습니다. 또한, 하나의 쿠키 관리자에 저장된 쿠키는 다른 관리자가 사용할 수 없으므로 여러 쿠키 관리자를 사용할 때는 주의해야 합니다.
기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
아니
반복할 때마다 쿠키 지우기
선택하면 기본 스레드 그룹 루프가 실행될 때마다 모든 서버 정의 쿠키가 지워집니다. GUI에 정의된 쿠키는 지워지지 않습니다.
쿠키 정책
쿠키를 관리하는 데 사용되는 쿠키 정책입니다. " standard "는 3.0 이후의 기본값이며 대부분의 경우 작동합니다. 쿠키 사양CookieSpec 구현 을 참조하십시오 . [참고: " ignoreCookies "는 CookieManager를 생략하는 것과 같습니다.]
구현
HC4CookieHandler (HttpClient 4.5.X API). 기본값은 3.0부터 HC4CookieHandler 입니다.
[참고: IPv6 주소로 테스트할 웹사이트가 있는 경우 HC4CookieHandler (IPv6 호환)를 선택하세요.]
사용자 정의 쿠키
이렇게 하면 테스트 실행 중에 모든 스레드에서 사용할 하드코딩된 쿠키를 사용할 수 있습니다.
" domain "은 서버의 호스트 이름입니다( http:// 제외). 포트는 현재 무시됩니다.
아니요(당신이 무엇을 하고 있는지 알지 못하는 한 낙담합니다)
버튼 추가
쿠키 테이블에 항목을 추가합니다.
해당 없음
삭제 버튼
현재 선택된 테이블 항목을 삭제합니다.
해당 없음
로드 버튼
이전에 저장한 쿠키 테이블을 로드하고 기존 쿠키 테이블 항목에 항목을 추가합니다.
해당 없음
다른 이름으로 저장 버튼
현재 쿠키 테이블을 파일에 저장합니다(HTTP 응답에서 추출한 쿠키는 저장하지 않음).
해당 없음
^^

HTTP 요청 기본값

이 요소를 사용하면 HTTP 요청 컨트롤러가 사용하는 기본값을 설정할 수 있습니다. 예를 들어, 25개의 HTTP 요청 컨트롤러가 있는 테스트 계획을 만들고 모든 요청이 동일한 서버로 전송되는 경우 " 서버 이름 또는 IP " 필드가 채워진 단일 HTTP 요청 기본값 요소를 추가할 수 있습니다. 그런 다음 , 25개의 HTTP 요청 컨트롤러를 추가할 때 " 서버 이름 또는 IP " 필드를 비워 둡니다. 컨트롤러는 HTTP 요청 기본값 요소에서 이 필드 값을 상속합니다.

모든 포트 값은 동일하게 처리됩니다. 포트를 지정하지 않는 샘플러는 HTTP 요청 기본값 포트가 제공되는 경우 이를 사용합니다.
HTTP 요청 기본값의 제어판 스크린샷
HTTP 요청 기본값의 제어판 스크린샷
HTTP 요청 고급 구성 필드
HTTP 요청 고급 구성 필드

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
아니
섬기는 사람
웹 서버의 도메인 이름 또는 IP 주소입니다. 예: www.example.com . [ http:// 접두사 를 포함하지 마십시오 .
아니
포트
웹 서버가 수신 대기 중인 포트입니다.
아니
연결 시간 초과
접속 시간 초과. 연결이 열릴 때까지 대기하는 시간(밀리초)입니다.
아니
응답 시간 초과
응답 시간 초과. 응답을 기다리는 시간(밀리초)입니다.
아니
구현
자바 , HttpClient4 . 지정하지 않으면 기본값은 JMeter 속성 jmeter.httpsampler 의 값에 따라 달라지며 , 그렇지 않으면 Java 구현이 사용됩니다.
아니
규약
HTTP 또는 HTTPS .
아니
콘텐츠 인코딩
요청에 사용할 인코딩입니다.
아니
리소스 경로(예: /servlets/myServlet ). 리소스에 쿼리 문자열 매개변수가 필요한 경우 아래에 " 요청과 함께 매개변수 보내기 " 섹션에 추가합니다. 경로는 HTTP 요청 화면에 지정된 경로에 적용되는 접두사가 아니라 전체 경로의 기본값입니다.
아니
요청과 함께 매개변수 보내기
쿼리 문자열은 제공한 매개변수 목록에서 생성됩니다. 각 매개변수에는 이름 이 있습니다. 쿼리 문자열은 선택한 " Method " 에 따라 올바른 방식으로 생성됩니다 (즉 , GET 을 선택한 경우 쿼리 문자열이 URL에 추가되고 POST 인 경우 별도로 전송됨). 또한 다중 파트 양식을 사용하여 파일을 보내는 경우 다중 파트 양식 사양을 사용하여 쿼리 문자열이 생성됩니다.
아니
서버(프록시)
요청을 수행할 프록시 서버의 호스트 이름 또는 IP 주소입니다. [ http:// 접두사 를 포함하지 마십시오 .]
아니
포트
프록시 서버가 수신 대기 중인 포트입니다.
아니요, 프록시 호스트 이름을 지정하지 않는 한
사용자 이름
(선택 사항) 프록시 서버의 사용자 이름.
아니
비밀번호
(선택 사항) 프록시 서버의 비밀번호입니다. (NB 이것은 테스트 계획에서 암호화되지 않은 상태로 저장됩니다)
아니
HTML 파일에서 포함된 모든 리소스 검색
HTML 파일을 구문 분석하고 파일에서 참조되는 모든 이미지, Java 애플릿, JavaScript 파일, CSS 등에 대한 HTTP/HTTPS 요청을 보내도록 JMeter에 지시합니다.
아니
동시 풀 사용
임베디드 리소스를 얻으려면 동시 연결 풀을 사용하십시오.
아니
크기
포함된 리소스를 가져오는 데 사용되는 동시 연결의 풀 크기입니다.
아니
URL은 다음과 일치해야 합니다.
있는 경우 발견된 포함된 URL과 일치시키는 데 사용되는 정규식이어야 합니다. 따라서 http://example.invalid/ 에서 포함된 리소스만 다운로드하려면 http://example\.invalid/.* 표현식을 사용하십시오 .
아니
URL은 다음과 일치하면 안 됩니다.
있는 경우 발견된 포함된 URL을 필터링하는 데 사용되는 정규식이어야 합니다. 따라서 어떤 소스에서든 PNG 또는 SVG 파일을 다운로드하지 않으려면 .*\.(?i:svg|png) 표현식을 사용하십시오.
아니
참고: 라디오 버튼에는 켜짐 또는 꺼짐의 두 가지 상태만 있습니다. 이렇게 하면 설정을 일관되게 무시할 수 없습니다. 꺼짐은 꺼짐을 의미합니까, 아니면 현재 기본값을 사용한다는 의미입니까? JMeter는 후자를 사용합니다(그렇지 않으면 기본값이 전혀 작동하지 않습니다). 따라서 버튼이 꺼져 있으면 나중 요소에서 이를 켤 수 있지만 버튼이 켜져 있으면 나중 요소에서 끌 수 없습니다.
^^

HTTP 헤더 관리자

헤더 관리자를 사용하면 HTTP 요청 헤더를 추가하거나 재정의할 수 있습니다.

JMeter는 이제 여러 헤더 관리자를 지원합니다 . 헤더 항목이 병합되어 샘플러에 대한 목록을 형성합니다. 병합할 항목이 기존 헤더 이름과 일치하면 이전 항목을 대체합니다. 이를 통해 기본 헤더 세트를 설정하고 특정 샘플러에 조정을 적용할 수 있습니다. 헤더의 빈 값은 기존 헤더를 제거하지 않고 해당 값을 대체할 뿐입니다.

HTTP 헤더 관리자의 제어판 스크린샷
HTTP 헤더 관리자의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
아니
이름(헤더)
요청 헤더의 이름입니다. 실험할 수 있는 두 가지 일반적인 요청 헤더는 " User-Agent " 및 " Referer "입니다.
아니요(하지만 적어도 하나는 있어야 함)
헤더 값을 요청합니다.
아니요(하지만 적어도 하나는 있어야 함)
버튼 추가
헤더 테이블에 항목을 추가합니다.
해당 없음
삭제 버튼
현재 선택된 테이블 항목을 삭제합니다.
해당 없음
로드 버튼
이전에 저장한 헤더 테이블을 로드하고 기존 헤더 테이블 항목에 항목을 추가합니다.
해당 없음
다른 이름으로 저장 버튼
현재 헤더 테이블을 파일에 저장합니다.
해당 없음
헤더 관리자 예제

이 예제를 다운로드 하십시오. 이 예에서는 JMeter가 기본 " User-Agent " 요청 헤더를 재정의하고 특정 Internet Explorer 에이전트 문자열을 대신 사용하도록 지시하는 테스트 계획을 만들었습니다. (그림 12 및 13 참조).

그림 12 - 테스트 계획
그림 12 - 테스트 계획
그림 13 - 헤더 관리자 제어판
그림 13 - 헤더 관리자 제어판
^^

자바 요청 기본값

Java 요청 기본값 구성 요소를 사용하면 Java 테스트에 대한 기본값을 설정할 수 있습니다. Java 요청 을 참조하십시오 .

Java 요청 기본값의 제어판 스크린샷
Java 요청 기본값의 제어판 스크린샷
^^

JDBC 연결 구성

제공된 JDBC 연결 설정에서 데이터베이스 연결( JDBC 요청 샘플러에서 사용)을 만듭니다. 연결은 스레드 간에 선택적으로 풀링될 수 있습니다. 그렇지 않으면 각 스레드가 자체 연결을 얻습니다. 연결 구성 이름은 JDBC 샘플러에서 적절한 연결을 선택하는 데 사용됩니다. 사용된 풀은 DBCP입니다. BasicDataSource 구성 매개변수 를 참조하십시오.
JDBC 연결 구성의 제어판 스크린샷
JDBC 연결 구성의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 연결 구성을 설명하는 이름입니다.
아니
생성된 풀의 변수 이름
연결이 연결된 변수의 이름입니다. 여러 연결을 사용할 수 있으며 각각 다른 변수에 연결되어 JDBC 샘플러가 적절한 연결을 선택할 수 있습니다.
각각의 이름은 달라야 합니다. 동일한 이름을 사용하는 두 개의 구성 요소가 있는 경우 하나만 저장됩니다. JMeter는 중복 이름이 감지되면 메시지를 기록합니다.
최대 연결 수
풀에서 허용되는 최대 연결 수입니다. 대부분의 경우 이 값을 0으로 설정합니다 . 즉, 각 스레드는 단일 연결이 있는 자체 풀을 갖게 됩니다. 즉, 연결은 스레드 간에 공유되지 않습니다.
정말로 공유 풀링을 사용하고 싶다면(왜?), 스레드가 서로를 기다리지 않도록 최대 개수를 스레드 수와 동일하게 설정하십시오.
최대 대기(ms)
연결 검색을 시도하는 과정에서 시간 초과 기간이 초과되면 풀에서 오류가 발생합니다. BasicDataSource.html#getMaxWaitMillis 를 참조하세요.
제거 실행 사이의 시간(ms)
유휴 개체 축출기 스레드 실행 사이의 휴면 시간(밀리초)입니다. 비양수인 경우 유휴 개체 축출기 스레드가 실행되지 않습니다. (기본값은 " 60000 ", 1분). BasicDataSource.html#getTimeBetweenEvictionRunsMillis 를 참조하세요 .
자동 커밋
연결에 대해 자동 커밋을 켜거나 끕니다.
트랜잭션 격리
트랜잭션 격리 수준
프리니트 풀
연결 풀은 즉시 초기화할 수 있습니다. False (기본값) 로 설정하면 이 풀을 사용하는 JDBC 요청 샘플러가 전체 풀에 대한 연결 설정 시간이 포함되기 때문에 첫 번째 쿼리에 대해 더 높은 응답 시간을 측정할 수 있습니다.
아니
새 줄로 구분된 초기화 SQL 문
물리적 연결이 처음 생성될 때 물리적 연결을 초기화하는 데 사용되는 SQL 문의 모음입니다. 이 명령문은 구성된 연결 팩토리가 연결을 생성할 때 한 번만 실행됩니다.
아니
유휴 상태에서 테스트
풀의 유휴 연결을 테스트합니다( BasicDataSource.html#getTestWhileIdle 참조) . 검증 쿼리를 사용하여 테스트합니다.
소프트 최소 제거 가능 유휴 시간(ms)
연결이 유휴 개체 축출기에 의해 축출될 자격이 되기 전에 풀에서 유휴 상태로 유지될 수 있는 최소 시간(최소한 minIdle 연결이 풀에 남아 있다는 추가 조건). BasicDataSource.html#getSoftMinEvictableIdleTimeMillis 를 참조 하세요 . 기본값은 5000(5초)입니다.
검증 쿼리
데이터베이스가 여전히 응답하는지 확인하는 데 사용되는 간단한 쿼리입니다. 이것은 많은 데이터베이스에 적합한 jdbc 드라이버의 ' isValid() ' 메소드로 기본 설정됩니다. 그러나 일부는 다른 쿼리가 필요할 수 있습니다. 예를 들어 ' SELECT 1 FROM DUAL ' 과 같은 Oracle을 사용할 수 있습니다.

유효성 검사 쿼리 목록은 jdbc.config.check.query 속성으로 구성할 수 있으며 기본적으로 다음과 같습니다.

hsqldb
INFORMATION_SCHEMA.SYSTEM_USERS에서 1개 선택
신탁
이중에서 1을 선택
DB2
sysibm.sysdummy1에서 1을 선택하십시오.
MySQL 또는 MariaDB
1을 선택
Microsoft SQL Server(MS JDBC 드라이버)
1을 선택
PostgreSQL
1을 선택
잉그레스
1을 선택
더비
값 1
H2
1을 선택
불새
rdb$database에서 1개 선택
엑사솔
1을 선택
목록은 다른 데이터베이스 유효성 검사 쿼리의 stackoverflow 항목에서 가져온 것이며 올바르지 않을 수 있습니다.
이 유효성 검사 쿼리는 " 유휴 상태 동안 테스트 "에서 쿼리가 유휴 연결에서만 사용되도록 제안 하더라도 풀 생성 시 유효성을 검사하는 데 사용됩니다. 이것은 DBCP 동작입니다.
아니
데이터베이스 URL
데이터베이스에 대한 JDBC 연결 문자열입니다.
JDBC 드라이버 클래스
드라이버 클래스의 정규화된 이름입니다. (JMeter의 클래스 경로에 있어야 합니다 - .jar 파일을 JMeter의 /lib 디렉토리에 복사하는 것이 가장 쉽습니다).

사전 구성된 jdbc 드라이버 클래스 목록은 jdbc.config.jdbc.driver.class 속성으로 구성할 수 있으며 기본적으로 다음과 같습니다.

hsqldb
org.hsqldb.jdbc.JDBC드라이버
신탁
oracle.jdbc.OracleDriver
DB2
com.ibm.db2.jcc.DB2드라이버
MySQL
com.mysql.jdbc.드라이버
Microsoft SQL Server(MS JDBC 드라이버)
com.microsoft.sqlserver.jdbc.SQLServerDriver 또는 com.microsoft.jdbc.sqlserver.SQLServerDriver
PostgreSQL
org.postgresql.드라이버
잉그레스
com.ingres.jdbc.IngresDriver
더비
org.apache.derby.jdbc.ClientDriver
H2
org.h2.드라이버
불새
org.firebirdsql.jdbc.FBDriver
아파치 더비
org.apache.derby.jdbc.ClientDriver
마리아DB
org.mariadb.jdbc.Driver
SQLite
org.sqlite.JDBC
사이베이스 AES
net.sourceforge.jtds.jdbc.Driver
엑사솔
com.exasol.jdbc.EXADriver
사용자 이름
연결할 사용자의 이름입니다.
아니
비밀번호
연결할 비밀번호입니다. (NB 이것은 테스트 계획에서 암호화되지 않은 상태로 저장됩니다)
아니
연결 속성
연결을 설정할 때 설정할 연결 속성( 예: Oracle의 경우 internal_logon=sysdba )
아니

다른 데이터베이스와 JDBC 드라이버에는 다른 JDBC 설정이 필요합니다. 데이터베이스 URL 및 JDBC 드라이버 클래스는 JDBC 구현 제공자가 정의합니다.

몇 가지 가능한 설정이 아래에 나와 있습니다. JDBC 드라이버 문서에서 정확한 내용을 확인하십시오.

JMeter가 No 적당한 드라이버 를 보고하면 다음 중 하나를 의미할 수 있습니다.

  • 드라이버 클래스를 찾을 수 없습니다. 이 경우 DataSourceElement: 드라이버를 로드할 수 없음: {classname} java.lang.ClassNotFoundException: {classname} 과 같은 로그 메시지가 표시됩니다 .
  • 드라이버 클래스를 찾았지만 클래스가 연결 문자열을 지원하지 않습니다. 연결 문자열의 구문 오류 또는 잘못된 클래스 이름이 사용되었기 때문일 수 있습니다.

데이터베이스 서버가 실행 중이 아니거나 액세스할 수 없는 경우 JMeter는 java.net.ConnectException 을 보고합니다 .

데이터베이스 및 해당 매개변수에 대한 몇 가지 예가 아래에 나와 있습니다.

MySQL
드라이버 클래스
com.mysql.jdbc.드라이버
데이터베이스 URL
jdbc:mysql://호스트[:포트]/dbname
PostgreSQL
드라이버 클래스
org.postgresql.드라이버
데이터베이스 URL
jdbc:postgresql:{dbname}
신탁
드라이버 클래스
oracle.jdbc.OracleDriver
데이터베이스 URL
jdbc:oracle:thin:@//호스트:포트/서비스 또는 jdbc:oracle:thin:@(설명=(주소=(호스트={mc-이름})(프로토콜=tcp)(포트={포트 번호}) ))(connect_data=(sid={sid})))
인그레스 (2006)
드라이버 클래스
ingres.jdbc.IngresDriver
데이터베이스 URL
jdbc:ingres://host:port/db[;attr=값]
Microsoft SQL Server(MS JDBC 드라이버)
드라이버 클래스
com.microsoft.sqlserver.jdbc.SQLServerDriver
데이터베이스 URL
jdbc:sqlserver://host:port;DatabaseName=dbname
아파치 더비
드라이버 클래스
org.apache.derby.jdbc.ClientDriver
데이터베이스 URL
jdbc:derby://서버[:포트]/데이터베이스이름[;URL속성=값[;…]]
마리아DB
드라이버 클래스
org.mariadb.jdbc.Driver
데이터베이스 URL
jdbc:mariadb://host[:포트]/dbname[;URL속성=값[;…]]
Exasol( JDBC 드라이버 문서 참조 )
드라이버 클래스
com.exasol.jdbc.EXADriver
데이터베이스 URL
jdbc:exa:호스트[:포트][;schema=SCHEMA_NAME][;prop_x=value_x]
위의 내용은 정확하지 않을 수 있습니다. 관련 JDBC 드라이버 설명서를 확인하십시오.
^^

키 저장소 구성

키 저장소 구성 요소를 사용하면 키 저장소가 로드되는 방법과 사용할 키를 구성할 수 있습니다. 이 구성 요소는 일반적으로 응답 시간에 키 저장소 초기화를 고려하지 않으려는 HTTPS 시나리오에서 사용됩니다.

이 요소를 사용하려면 먼저 테스트하려는 클라이언트 인증서로 Java 키 저장소를 설정해야 합니다.

  1. Java keytool 유틸리티 또는 PKI를 통해 인증서 생성
  2. PKI로 생성한 경우 JKS에서 허용하는 형식으로 변환하여 Java Key Store에서 키를 가져옵니다.
  3. 그런 다음 두 JVM 속성을 통해 키 저장소 파일을 참조하거나 system.properties 에 추가합니다 .
    • -Djavax.net.ssl.keyStore=path_to_keystore
    • -Djavax.net.ssl.keyStorePassword=password_of_keystore

PKCS11을 저장소의 소스로 사용하려면 javax.net.ssl.keyStoreTypePKCS11 로, javax.net.ssl.keyStoreNONE 으로 설정해야 합니다 .

키 저장소 구성의 제어판 스크린샷
키 저장소 구성의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
아니
예압
키 저장소를 미리 로드할지 여부입니다. true 로 설정하는 것이 일반적으로 최상의 옵션입니다.
인증서 별칭을 보유하는 변수 이름
클라이언트 인증서로 인증하는 데 사용할 별칭을 포함하는 변수 이름입니다. 변수 값은 예를 들어 CSV 데이터 세트에서 채워집니다. 스크린샷에서 " certificat_ssl "은 CSV 데이터 세트의 변수이기도 합니다. 기본값은 clientCertAliasVarName입니다.
거짓
별칭 시작 인덱스
Keystore에서 사용할 첫 번째 키의 인덱스(0부터 시작).
별칭 끝 인덱스
Keystore에서 사용할 마지막 키의 인덱스(0부터 시작). " 인증서 별칭을 보유하는 변수 이름 "을 사용할 때 시작 시 모든 키가 로드될 수 있을 만큼 충분히 큰지 확인하십시오. 기본값은 모두 로드를 의미하는 -1입니다.
JMeter가 둘 이상의 인증서를 사용하도록 하려면 다음을 확인해야 합니다.
  • https.use.cached.ssl.context=false 는 jmeter.properties 또는 user.properties에 설정 되어 있습니다 .
  • HTTP 요청에 HTTPClient 4 구현을 사용합니다.
^^

로그인 구성 요소

로그인 구성 요소를 사용하면 설정의 일부로 사용자 이름과 비밀번호를 사용하는 샘플러에서 사용자 이름과 비밀번호 설정을 추가하거나 무시할 수 있습니다.

로그인 구성 요소의 제어판 스크린샷
로그인 구성 요소의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
아니
사용자 이름
사용할 기본 사용자 이름입니다.
아니
비밀번호
사용할 기본 암호입니다. (NB 이것은 테스트 계획에서 암호화되지 않은 상태로 저장됩니다)
아니
^^

LDAP 요청 기본값

LDAP 요청 기본값 구성 요소를 사용하면 LDAP 테스트에 대한 기본값을 설정할 수 있습니다. LDAP 요청 을 참조하십시오 .

LDAP 요청 기본값의 제어판 스크린샷
LDAP 요청 기본값의 제어판 스크린샷
^^

LDAP 확장 요청 기본값

LDAP 확장 요청 기본값 구성 요소를 사용하면 확장 LDAP 테스트에 대한 기본값을 설정할 수 있습니다. LDAP 확장 요청 을 참조하십시오 .

LDAP 확장 요청 기본값의 제어판 스크린샷
LDAP 확장 요청 기본값의 제어판 스크린샷
^^

TCP 샘플러 구성

TCP 샘플러 구성은 TCP 샘플러에 대한 기본 데이터를 제공합니다.

TCP 샘플러 구성의 제어판 스크린샷
TCP 샘플러 구성의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
TCPClient 클래스 이름
TCPClient 클래스의 이름입니다. 기본값은 tcp.handler 속성으로, TCPClientImpl 에 실패합니다 .
아니
서버 이름 또는 IP
TCP 서버의 이름 또는 IP
포트 번호
사용할 포트
재사용 연결
선택하면 연결이 열린 상태로 유지됩니다. 그렇지 않으면 데이터를 읽을 때 닫힙니다.
연결 닫기
선택하면 샘플러를 실행한 후 연결이 닫힙니다.
SO_LINGER
소켓이 생성될 때 지정된 지연 시간(초)으로 SO_LINGER 를 활성화/비활성화 합니다. " SO_LINGER " 값을 0 으로 설정 하면 많은 수의 소켓이 TIME_WAIT 상태로 돌아다니는 것을 방지할 수 있습니다.
아니
줄 끝(EOL) 바이트 값
줄 끝의 바이트 값입니다 . EOL 검사를 건너뛰려면 -128 ~ +127 범위 밖의 값으로 설정하십시오. jmeter.properties 파일에서도 tcp.eolByte 속성 으로 설정할 수 있습니다 . TCP Sampler Config와 jmeter.properties 파일에서 동시에 설정하면 TCP Sampler Config의 설정값이 사용된다.
아니
연결 시간 초과
연결 시간 초과(밀리초, 0 비활성화).
아니
응답 시간 초과
응답 시간 초과(밀리초, 0 비활성화).
아니
노드레이 설정
nodelay 속성을 설정해야 합니까?
보낼 문자
보낼 문자
^^

사용자 정의 변수

사용자 정의 변수 요소를 사용하면 테스트 계획 에서와 같이 초기 변수 세트 를 정의할 수 있습니다 .

테스트 계획의 모든 UDV 요소는 위치에 관계없이 시작 시 처리됩니다.
따라서 예를 들어 포스트 프로세서에서 테스트 실행의 일부로 정의된 변수를 참조할 수 없습니다.

UDV는 호출될 때마다 다른 결과를 생성하는 함수와 함께 사용하면 안 됩니다. 첫 번째 함수 호출의 결과만 변수에 저장됩니다. 그러나 UDV는 __P() 와 같은 함수와 함께 사용할 수 있습니다 . 예를 들면 다음과 같습니다.

호스트 ${__P(호스트, 로컬 호스트)}

JMeter 속성 " host " 의 값을 갖도록 " HOST " 변수를 정의하고 정의되지 않은 경우 기본값은 " localhost "입니다.

테스트 실행 중 변수를 정의하려면 사용자 매개변수 를 참조하십시오 . UDV는 계획에 나타나는 순서대로 위에서 아래로 처리됩니다.

단순화를 위해 UDV는 스레드 그룹의 시작 부분에만(또는 테스트 계획 자체 아래에) 배치하는 것이 좋습니다.

테스트 계획과 모든 UDV가 처리되면 결과 변수 집합이 각 스레드에 복사되어 초기 변수 집합을 제공합니다.

사용자 매개변수 전처리기 또는 정규식 추출기와 같은 런타임 요소가 UDV 변수 중 하나와 동일한 이름을 가진 변수를 정의하는 경우 이는 초기 값을 대체하고 스레드의 다른 모든 테스트 요소는 업데이트된 값을 보게 됩니다. 값.

사용자 정의 변수의 제어판 스크린샷
사용자 정의 변수의 제어판 스크린샷
스레드 그룹이 두 개 이상인 경우 스레드 그룹 간에 UDV가 공유되므로 값에 따라 다른 이름을 사용해야 합니다. 또한 변수는 요소가 처리될 때까지 사용할 수 없으므로 동일한 요소에 정의된 변수를 참조할 수 없습니다. 이전 UDV 또는 테스트 계획에 정의된 변수를 참조할 수 있습니다.

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
사용자 정의 변수
변수 이름/값 쌍. " Name " 열 아래의 문자열은 나중에 변수를 사용하기 위해 ${…} 구문 의 대괄호 안에 넣어야 하는 것 입니다. 그러면 전체 ${…} 가 " Value " 열의 문자열로 바뀝니다 .
^^

랜덤 변수

임의 변수 구성 요소는 임의의 숫자 문자열을 생성하고 나중에 사용할 수 있도록 변수에 저장하는 데 사용됩니다. __Random() 함수 와 함께 사용자 정의 변수 를 사용하는 것보다 간단 합니다.

출력 변수는 난수 생성기를 사용하여 구성되고 결과 숫자는 형식 문자열을 사용하여 형식이 지정됩니다. 숫자는 minimum+Random.nextInt(maximum-minimum+1) 공식을 사용하여 계산됩니다 . Random.nextInt() 에는 양의 정수가 필요합니다. 이것은 최대-최소값 (즉, 범위)이 2147483647 보다 작아야 함을 의미합니다 . 그러나 최소값최대 값은 범위가 정상인 한 값 이 될 수 있습니다 .

임의의 값은 각 반복의 시작에서 평가되기 때문에 최소 또는 최대 값으로 속성 이외의 변수를 사용하는 것은 좋은 생각이 아닙니다. 첫 번째 반복에서는 0이 됩니다.
랜덤 변수 제어판의 스크린샷
랜덤 변수의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
변수 이름
임의의 문자열을 저장할 변수의 이름입니다.
형식 문자열
사용할 java.text.DecimalFormat 형식 문자열입니다 . 예를 들어 " 000 "은 3자리 이상의 숫자를 생성하거나 " USER_000 "은 USER_nnn 형식의 출력을 생성합니다 . 지정하지 않으면 기본값은 Long.toString() 을 사용하여 숫자를 생성하는 것입니다.
아니
최소값
생성된 난수 의 최소값( long )입니다.
최대값
생성된 난수 의 최대값( long )입니다.
랜덤 시드
난수 생성기의 시드입니다. 스레드당이 true 로 설정된 상태에서 동일한 시드 값을 사용하면 Random 클래스 별로 각 스레드에 대해 동일한 값을 얻게 됩니다 . 시드가 설정되지 않은 경우 Random의 기본 생성자가 사용됩니다.
아니
스레드(사용자)당?
False 인 경우 생성기는 스레드 그룹의 모든 스레드 간에 공유됩니다. True 이면 각 스레드에는 자체 임의 생성기가 있습니다.
^^

카운터

사용자가 스레드 그룹의 어디에서나 참조할 수 있는 카운터를 만들 수 있습니다. 카운터 구성을 통해 사용자는 시작점, 최대값 및 증분을 구성할 수 있습니다. 카운터는 처음부터 최대까지 반복한 다음 처음부터 다시 시작하여 테스트가 끝날 때까지 계속합니다.

카운터는 값을 저장하기 위해 long을 사용하므로 범위는 -2^63 ~ 2^63-1 입니다.

Counter 제어판의 스크린샷
Counter 제어판의 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
시작 값
카운터의 시작 값입니다. 카운터는 첫 번째 반복 동안 이 값과 동일합니다(기본값은 0).
아니
증가
각 반복 후 카운터를 얼마나 증가시킬 것인지(기본값은 0으로, 증가 없음을 의미함).
최대값
카운터가 최대값을 초과하면 시작 값 으로 재설정됩니다 . 기본값은 Long입니다 .MAX_VALUE
아니
체재
선택적 형식, 예를 들어 000001 , 002 등으로 형식이 지정됩니다. 이것은 DecimalFormat 으로 전달 되므로 모든 유효한 형식을 사용할 수 있습니다. 형식을 해석하는 데 문제가 있으면 무시됩니다. [기본 형식은 Long.toString() 을 사용하여 생성됩니다 .]
아니
내보낸 변수 이름
이것은 카운터 값을 사용할 수 있는 변수 이름입니다. 이름을 counterA 로 지정하면 사용자 정의 값 에 설명된 대로 ${counterA} 를 사용하여 액세스할 수 있습니다 (기본적으로 ${} 를 사용하여 액세스할 수 있는 빈 문자열 변수를 생성 하지만 이는 권장하지 않음)
아니
각 사용자에 대해 독립적으로 카운터 추적
즉, 이것은 전역 카운터입니까, 아니면 각 사용자가 자신의 카운터를 얻습니까? 선택하지 않으면 카운터는 전역적입니다(즉, 사용자 #1은 값 " 1 "을 가져오고 사용자 #2는 첫 번째 반복에서 값 " 2 "를 얻음). 선택하면 각 사용자는 독립적인 카운터를 갖습니다.
아니
각 스레드 그룹 반복에서 카운터 재설정
이 옵션은 사용자별로 카운터를 추적할 때만 사용할 수 있습니다. 이 옵션을 선택하면 각 스레드 그룹 반복 에서 카운터가 시작 값으로 재설정됩니다. 이것은 카운터가 루프 컨트롤러 안에 있을 때 유용할 수 있습니다.
아니
^^

단순 구성 요소

단순 구성 요소를 사용하면 샘플러에서 임의의 값을 추가하거나 재정의할 수 있습니다. 값의 이름과 값 자체를 선택할 수 있습니다. 일부 모험적인 사용자는 이 요소의 용도를 찾을 수 있지만 여기서는 주로 개발자를 위한 기본 GUI로 새 JMeter 구성 요소를 개발하는 동안 사용할 수 있습니다.

단순 구성 요소의 제어판 스크린샷
단순 구성 요소의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
매개변수 이름
각 매개변수의 이름입니다. 이러한 값은 JMeter의 작동 내부에 있으며 일반적으로 문서화되지 않습니다. 코드에 익숙한 사람만 이러한 값을 알 수 있습니다.
매개변수 값
해당 매개변수에 적용할 값입니다.
^^

MongoDB 소스 구성(지원 중단됨)

제공된 연결 설정에서 MongoDB 연결( MongoDB 스크립트 샘플러에서 사용)을 만듭니다. 각 스레드는 고유한 연결을 얻습니다. 연결 구성 이름은 JDBC 샘플러에서 적절한 연결을 선택하는 데 사용됩니다.

그런 다음 이 코드를 사용하여 MongoDBHolder 요소를 통해 Beanshell 또는 JSR223 테스트 요소의 com.mongodb.DB 개체에 액세스할 수 있습니다.

수입 com.mongodb.DB;
org.apache.jmeter.protocol.mongodb.config.MongoDBHolder 가져오기;
DB db = MongoDBHolder.getDBFromSource("MongoDB 소스 속성 값",
            "속성 데이터베이스 이름의 값");
…
    
MongoDB 소스 구성의 제어판 스크린샷(지원 중단됨)
MongoDB 소스 구성의 제어판 스크린샷(지원 중단됨)

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 연결 구성을 설명하는 이름입니다.
아니
서버 주소 목록
몽고 DB 서버
몽고DB 소스
연결이 연결된 변수의 이름입니다.
각각의 이름은 달라야 합니다. 동일한 이름을 사용하는 두 개의 구성 요소가 있는 경우 하나만 저장됩니다.
계속 시도
true 이면 소켓 을 설정할 수 없는 경우 드라이버가 동일한 서버에 계속 연결을 시도합니다.
재시도를 계속할 수 있는 최대 시간이 있으며 기본적으로 15초입니다.
이는 작업을 차단하여 서버가 일시적으로 다운될 때 일부 예외가 throw되는 것을 방지하는 데 유용할 수 있습니다.
새 기본 노드로의 전환을 원활하게 하는 것도 유용할 수 있습니다(다시 시도 시간 내에 새 기본 노드가 선택되도록).
이 플래그를 사용할 때
  • 복제본 세트의 경우 드라이버는 새 노드로 즉시 장애 조치하는 대신 해당 시간 동안 이전 기본 노드에 연결을 시도합니다.
  • 이것은 응용 프로그램에서 처리해야 하는 소켓의 읽기/쓰기 작업에서 예외가 throw되는 것을 방지하지 않습니다.
이 플래그가 false인 경우에도 드라이버에는 끊어진 연결을 자동으로 다시 만들고 읽기 작업을 재시도하는 메커니즘이 이미 있습니다.
기본값은 false 입니다.
아니
호스트당 최대 연결 수
아니
접속 시간 초과
연결 시간 초과(밀리초)입니다.
새 연결을 설정할 때만 사용됩니다. Socket.connect(java.net.SocketAddress, int)
기본값은 0 이며 시간 초과가 없음을 의미합니다.
아니
최대 재시도 시간
동일한 서버에 연결을 다시 시도하는 데 소요되는 최대 시간(밀리초)입니다.
기본값은 0 이며 autoConnectRetry 가 켜져 있는 경우 기본값 15초를 사용함을 의미합니다 .
아니
최대 대기 시간
스레드가 연결을 사용할 수 있을 때까지 기다릴 수 있는 최대 대기 시간(밀리초)입니다.
기본값은 120,000 입니다.
아니
소켓 시간 초과
소켓 시간 초과(밀리초) I/O 소켓 읽기 및 쓰기 작업에 사용됩니다. Socket.setSoTimeout(int)
기본값은 0 이며 시간 초과가 없음을 의미합니다.
아니
소켓 연결 유지
이 플래그는 방화벽을 통해 연결을 유지하는 소켓 연결 유지 기능을 제어합니다. Socket.setKeepAlive(boolean)
기본값은 false 입니다.
아니
ThreadsAllowedToBlockForConnectionMultiplier
이 승수에 connectionsPerHost 설정을 곱하면 연결이 풀에서 사용 가능해질 때까지 대기할 수 있는 최대 스레드 수를 알 수 있습니다.
모든 추가 스레드는 즉시 예외를 받습니다.
예를 들어 connectionsPerHost10 이고 threadAllowedToBlockForConnectionMultiplier5 이면 최대 50개의 스레드가 연결을 기다릴 수 있습니다.
기본값은 5 입니다.
아니
우려 사항 작성: 안전
true 인 경우 드라이버는 모든 작업에 대해 WriteConcern.SAFEWriteConcern 을 사용합니다. w , wtimeout , fsync 또는 j
가 지정 되면 이 설정은 무시됩니다. 기본값은 false 입니다.
아니
우려 사항 작성: Fsync
전역 WriteConcernfsync 값입니다 . 기본값은 false 입니다.
아니
우려 사항 작성: 저널을 기다리십시오
전역 WriteConcernj 값입니다 . 기본값은 false 입니다.
아니
우려 사항 작성: 서버 대기
전역 WriteConcernw 값입니다 . 기본값은 0 입니다.
아니
쓰기 우려: 대기 시간 초과
전역 WriteConcernwtimeout 값입니다 . 기본값은 0 입니다.
아니
우려 사항 작성: 오류 발생 시 계속
첫 번째 오류 이후 일괄 삽입을 계속해야 하는 경우
아니
^^
^^

볼트 연결 구성

제공된 연결 설정에서 볼트 연결 풀( 볼트 요청 샘플러에서 사용)을 만듭니다.
볼트 연결 구성의 제어판 스크린샷
볼트 연결 구성의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 샘플러를 설명하는 이름입니다.
아니
코멘트
자세한 내용은 무료 텍스트입니다.
아니
볼트 URI
데이터베이스 URI입니다.
사용자 이름
사용자 계정.
아니
비밀번호
사용자 자격 증명.
아니
^^
^^

18.5 주장

어설션은 샘플러에 대한 추가 검사를 수행하는 데 사용되며 동일한 범위의 모든 샘플러 후에 처리 됩니다. Assertion이 특정 샘플러에만 적용되도록 하려면 샘플러의 자식으로 추가하십시오.

참고: 달리 문서화되지 않는 한, 어설션은 하위 샘플(하위 샘플)에 적용되지 않고 상위 샘플에만 적용됩니다. JSR223 및 BeanShell Assertions의 경우 스크립트는 SampleResults의 배열을 반환하는 prev.getSubResults() 메서드를 사용하여 하위 샘플을 검색할 수 있습니다. 배열이 없으면 비어 있습니다.

어설션은 기본 샘플, 하위 샘플 또는 둘 다에 적용할 수 있습니다. 기본값은 어설션을 기본 샘플에만 적용하는 것입니다. Assertion이 이 옵션을 지원하면 GUI에 다음과 같은 항목이 표시됩니다.

주장 범위
주장 범위
또는 다음
주장 범위
주장 범위

서브 샘플러가 실패하고 메인 샘플이 성공하면 메인 샘플은 실패 상태로 설정되고 주장 결과가 추가됩니다. JMeter 변수 옵션을 사용하면 메인 샘플과 관련이 있는 것으로 가정하며, 모든 실패는 메인 샘플에만 적용됩니다.

JMeterThread.last_sample_ok 변수 는 샘플러에 대한 모든 주장이 실행된 후 " true " 또는 " false " 로 업데이트됩니다 .

응답 주장

응답 어설션 제어판을 사용하면 요청 또는 응답의 다양한 필드와 비교할 패턴 문자열을 추가할 수 있습니다. 패턴 문자열은 다음과 같습니다.

  • 포함 , 일치 : Perl5 스타일 정규식
  • Equals , Substring : 일반 텍스트, 대소문자 구분

패턴 일치 문자의 요약은 ORO Perl5 정규식에서 찾을 수 있습니다.

문자열이 전체 응답 과 일치 할 것으로 예상되는지 또는 응답에 패턴 만 포함 할 것으로 예상되는지 여부를 선택할 수도 있습니다 . 추가 유연성을 위해 모든 컨트롤러에 여러 어설션을 연결할 수 있습니다.

패턴 문자열은 둘러싸는 구분 기호를 포함하지 않아야 합니다. 즉 /Price: \d+/ 가 아닌 Price: \d + 를 사용 합니다.

기본적으로 패턴은 여러 줄 모드에 있습니다. 즉, " . " 메타 문자가 줄 바꿈과 일치하지 않습니다. 여러 줄 모드에서 " ^ " 및 " $ "는 전체 문자열의 시작과 끝이 아니라 문자열 내의 모든 줄의 시작 또는 끝과 일치합니다. \s 는 개행과 일치합니다 . 경우도 중요합니다. 이러한 설정을 재정의하려면 확장된 정규식 구문을 사용할 수 있습니다. 예를 들어:

(?나)
대소문자 무시
(?에스)
대상을 한 줄로 취급합니다. 즉 " . "는 개행과 일치 합니다.
(?이다)
위의 둘 다
이들은 표현식 내 어디에서나 사용할 수 있으며 재정의될 때까지 유효합니다. 예
(?i)사과(?-i) 파이
" AppLE Pie " 는 일치 하지만 " AppLE pIe " 는 일치하지 않습니다.
(?s)애플.+?파이
다음 줄에 있을 수 있는 Apple 다음에 Pie 와 일치 합니다.
사과(?s).+?파이
위와 같지만 처음에 (?s) 를 사용하는 것이 더 명확할 것 입니다.
응답 어설션 제어판의 스크린샷
Response Assertion의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
아니
적용하다:
이것은 하위 샘플을 생성할 수 있는 샘플러와 함께 사용하기 위한 것입니다(예: 포함된 리소스가 있는 HTTP 샘플러, 메일 판독기 또는 트랜잭션 컨트롤러에서 생성한 샘플).
  • 메인 샘플만 - 메인 샘플에만 적용
  • 하위 샘플만 - 하위 샘플에만 적용됩니다.
  • 기본 샘플 및 하위 샘플 - 둘 다에 적용됩니다.
  • 사용할 JMeter 변수 이름 - 어설션은 명명된 변수의 내용에 적용됩니다.
테스트할 필드
테스트할 요청 또는 응답의 필드를 JMeter에 지시합니다.
  • 텍스트 응답 - HTTP 헤더를 제외한 서버의 응답 텍스트, 즉 본문입니다.
  • 요청 데이터 - HTTP 헤더를 제외한 서버로 보낸 요청 텍스트, 즉 본문입니다.
  • 응답 코드 - 예: 200
  • 응답 메시지 - 예: 확인
  • Set-Cookie 헤더를 포함한 응답 헤더(있는 경우)
  • 헤더 요청
  • 샘플링된 URL
  • 문서(텍스트) - Apache Tika를 통해 다양한 유형의 문서에서 텍스트를 추출합니다( 보기 결과 트리 문서 보기 섹션 참조).
상태 무시
JMeter가 초기에 상태를 성공으로 설정하도록 지시합니다.

샘플의 전체 성공은 어설션의 결과와 기존 응답 상태를 결합하여 결정됩니다. Ignore Status (상태 무시) 확인란을 선택 하면 어설션을 평가하기 전에 응답 상태가 강제로 성공 상태가 됩니다.

상태가 4xx5xx 범위 인 HTTP 응답 은 일반적으로 실패한 것으로 간주됩니다. " 상태 무시 " 확인란을 사용하여 추가 검사를 수행하기 전에 성공적인 상태를 설정할 수 있습니다. 이것은 이전 어설션 실패를 지우는 효과가 있으므로 이것이 첫 번째 어설션에만 설정되어 있는지 확인하십시오.
패턴 매칭 규칙
테스트 중인 텍스트가 패턴에 대해 확인되는 방법을 나타냅니다.
  • 포함 - 텍스트에 정규식 패턴이 포함된 경우 true
  • 일치 - 전체 텍스트가 정규식 패턴과 일치하는 경우 true
  • 같음 - 전체 텍스트가 패턴 문자열과 같으면 참(대소문자 구분)
  • 하위 문자열 - 텍스트에 패턴 문자열이 포함된 경우 true(대소문자 구분)
EqualsSubstring 패턴은 정규식이 아닌 일반 문자열입니다. 체크 결과를 반전시키기 위해 NOT 을 선택할 수도 있습니다. OR AND(어설션이 OK가 되도록 모든 패턴이 일치해야 함) 대신 OR 조합으로 각 어설션을 적용합니다.
테스트할 패턴
테스트할 패턴 목록입니다. 각 패턴은 별도로 테스트됩니다. 패턴이 실패하면 추가 패턴이 확인되지 않습니다. 여러 패턴으로 하나의 Assertion을 설정하는 것과 각각 하나의 패턴으로 여러 Assertion을 설정하는 것 사이에는 차이가 없습니다(다른 옵션이 동일하다고 가정).
그러나 Ignore Status 확인란을 선택하면 이전 어설션 실패를 취소하는 효과가 있으므로 Ignore Status 확인란이 첫 번째 어설션에서만 사용되는지 확인하십시오.
사용자 정의 실패 메시지
생성된 메시지를 대체할 실패 메시지를 정의할 수 있습니다.
아니

패턴은 Perl5 스타일의 정규 표현식이지만 괄호가 없습니다.

어설션 예제
그림 14 - 테스트 계획
그림 14 - 테스트 계획
그림 15 - 패턴이 있는 어설션 제어판
그림 15 - 패턴이 있는 어설션 제어판
그림 16 - 어설션 리스너 결과(통과)
그림 16 - 어설션 리스너 결과(통과)
그림 17 - 어설션 리스너 결과(실패)
그림 17 - 어설션 리스너 결과(실패)
^^

기간 주장

Duration Assertion은 각 응답이 주어진 시간 내에 수신되었는지 테스트합니다. 주어진 시간(밀리초)보다 오래 걸리는 응답(사용자가 지정)은 실패한 응답으로 표시됩니다.

Duration Assertion 제어판의 스크린샷
Duration Assertion의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
기간(밀리초)
실패로 표시되기 전에 각 응답이 허용되는 최대 시간(밀리초)입니다.
^^

크기 주장

Size Assertion은 각 응답에 올바른 수의 바이트가 포함되어 있는지 테스트합니다. 크기가 주어진 바이트 수와 같거나, 크거나, 작거나, 같지 않음을 지정할 수 있습니다.

빈 응답은 오류로 보고되지 않고 0바이트로 처리됩니다.
Size Assertion의 제어판 스크린샷
Size Assertion의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
적용하다:
이것은 하위 샘플을 생성할 수 있는 샘플러와 함께 사용하기 위한 것입니다(예: 포함된 리소스가 있는 HTTP 샘플러, 메일 판독기 또는 트랜잭션 컨트롤러에서 생성한 샘플).
  • 기본 샘플만 - 어설션은 기본 샘플에만 적용됩니다.
  • 하위 샘플만 - 어설션은 하위 샘플에만 적용됩니다.
  • 기본 샘플 및 하위 샘플 - 어설션이 둘 다에 적용됩니다.
  • 사용할 JMeter 변수 이름 - 어설션은 명명된 변수의 내용에 적용됩니다.
크기(바이트)
응답 크기(또는 JMeter 변수 값)를 테스트하는 데 사용할 바이트 수입니다.
비교 유형
응답이 지정된 바이트 수와 같은지, 큰지, 작은지 또는 같지 않은지 테스트할지 여부입니다.
^^

XML 어설션

XML Assertion은 응답 데이터가 형식적으로 올바른 XML 문서로 구성되어 있는지 테스트합니다. DTD 또는 스키마를 기반으로 하는 XML의 유효성을 검사하거나 추가 유효성 검사를 수행하지 않습니다.

XML 어설션의 제어판 스크린샷
XML 어설션의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
^^

BeanShell 어설션

BeanShell 주장은 사용자가 BeanShell 스크립트를 사용하여 주장 확인을 수행할 수 있도록 합니다.

BeanShell 사용에 대한 자세한 내용은 BeanShell 웹사이트를 참조하십시오.

JSR223 Assertion +Groovy 로의 마이그레이션 은 성능, 새로운 Java 기능 지원 및 BeanShell 라이브러리의 제한된 유지 관리를 위해 적극 권장됩니다.

테스트 스크립트의 각 스레드에서 어설션이 독립적으로 발생할 때마다 다른 인터프리터가 사용되지만 후속 호출에는 동일한 인터프리터가 사용됩니다. 이는 변수가 어설션에 대한 호출 간에 지속됨을 의미합니다.

모든 어설션은 샘플러와 동일한 스레드에서 호출됩니다.

" beanshell.assertion.init " 속성 이 정의되면 소스 파일의 이름으로 인터프리터에 전달됩니다. 이것은 공통 메소드 및 변수를 정의하는 데 사용할 수 있습니다. bin 디렉토리 에 샘플 초기화 파일이 있습니다 : BeanShellAssertion.bshrc

테스트 요소는 ThreadListenerTestListener 메서드를 지원합니다. 이들은 초기화 파일에 정의되어야 합니다. 예제 정의 는 BeanShellListeners.bshrc 파일을 참조하십시오 .

BeanShell 주장의 제어판 스크린샷
BeanShell Assertion의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다. 이름은 스크립트 변수 Label 에 저장됩니다.
각 호출 전에 bsh.Interpreter 재설정
이 옵션을 선택하면 각 샘플에 대해 인터프리터가 다시 생성됩니다. 이것은 일부 장기 실행 스크립트에 필요할 수 있습니다. 자세한 내용은 모범 사례 - BeanShell 스크립팅 을 참조하십시오 .
매개변수
BeanShell 스크립트에 전달할 매개변수입니다. 매개변수는 다음 변수에 저장됩니다.
  • 매개변수 - 매개변수를 단일 변수로 포함하는 문자열
  • bsh.args - 매개변수를 포함하는 문자열 배열, 공백으로 분할
아니
스크립트 파일
실행할 BeanShell 스크립트가 포함된 파일입니다. 이것은 스크립트를 재정의합니다. 파일 이름은 스크립트 변수 FileName 에 저장됩니다.
아니
스크립트
실행할 BeanShell 스크립트입니다. 반환 값은 무시됩니다.
예(스크립트 파일이 제공되지 않은 경우)

시도할 수 있는 샘플 스크립트 가 있습니다.

스크립트를 호출하기 전에 BeanShell 인터프리터에서 일부 변수가 설정됩니다. 달리 명시되지 않는 한 다음은 문자열입니다.

  • log - 로거 객체. (예) log.warn("메시지"[,Throwable])
  • SampleResult , 이전 - SampleResult 객체. 읽기-쓰기
  • 응답 - 응답 객체. 읽기-쓰기
  • 실패 - 부울; 읽기-쓰기; Assertion 상태를 설정하는 데 사용
  • 실패 메시지 - 문자열; 읽기-쓰기; Assertion 메시지를 설정하는 데 사용
  • ResponseData - 응답 본문(byte [])
  • ResponseCode - 예: 200
  • ResponseMessage - 예: 확인
  • ResponseHeaders - HTTP 헤더를 포함합니다.
  • RequestHeaders - 서버로 전송되는 HTTP 헤더를 포함합니다.
  • 샘플 라벨
  • SamplerData - 서버로 전송된 데이터
  • ctx - JMeterContext
  • vars - JMeterVariables - 예
    vars.get("VAR1");
    vars.put("VAR2","값");
    vars.putObject("OBJ1", 새로운 객체());
  • 소품 - JMeterProperties(클래스 java.util.Properties ) - 예
    props.get("START.HMS");
    props.put("PROP1","1234");

Response 개체의 다음 메서드가 유용할 수 있습니다.

  • setStopThread(부울)
  • setStopTest(부울)
  • 문자열 getSampleLabel()
  • setSampleLabel(문자열)
^^

MD5Hex 어설션

MD5Hex Assertion을 통해 사용자는 응답 데이터의 MD5 해시를 확인할 수 있습니다.

MD5Hex 어설션의 제어판 스크린샷
MD5Hex 어설션의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
MD5 합계
MD5 해시를 나타내는 32개의 16진수(대소문자는 중요하지 않음)
^^

HTML 주장

HTML Assertion을 사용하면 JTidy를 사용하여 응답 데이터의 HTML 구문을 확인할 수 있습니다.

HTML 어설션의 제어판 스크린샷
HTML 어설션의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
문서 유형
생략 , 자동 , 엄격 또는 느슨함
체재
HTML , XHTML 또는 XML
오류만
오류만 기록하시겠습니까?
오류 임계값
응답을 실패로 분류하기 전에 허용된 오류 수
경고 임계값
응답을 실패로 분류하기 전에 허용되는 경고 수
파일 이름
보고서가 기록되는 파일 이름
아니
^^

XPath 어설션

XPath 어설션은 문서의 형식이 올바른지 테스트하고 DTD에 대해 유효성을 검사하거나 JTidy를 통해 문서를 배치하고 XPath를 테스트하는 옵션이 있습니다. 해당 XPath가 존재하는 경우 어설션은 true입니다. " / "를 사용하면 올바른 형식의 모든 문서와 일치하며 기본 XPath 표현식입니다. 어설션은 " count(//*error)=2 " 와 같은 부울 표현식도 지원합니다 . XPath에 대한 자세한 내용 은 http://www.w3.org/TR/xpath 를 참조 하십시오.

몇 가지 샘플 표현식:
  • //title[text()='일치할 텍스트'] - 응답의 모든 위치에서 <title>일치할 텍스트</title>와 일치 합니다.
  • /title[text()='일치할 텍스트'] - 응답의 루트 수준에서 <title>일치할 텍스트</title>와 일치
XPath 어설션의 제어판 스크린샷
XPath 어설션의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
아니
Tidy 사용(관용 파서)
Tidy를 사용하십시오. 즉, XML/HTML 오류를 허용하십시오.
조용한
Tidy Quiet 플래그를 설정합니다.
깔끔함을 선택한 경우
오류 보고
Tidy 오류가 발생하면 그에 따라 Assertion을 설정하십시오.
깔끔함을 선택한 경우
경고 표시
Tidy showWarnings 옵션을 설정합니다.
깔끔함을 선택한 경우
네임스페이스 사용
네임스페이스를 존중해야 합니까? (NAMESPACES에 대한 아래 참고 참조)
Tidy가 선택되지 않은 경우
XML 유효성 검사
해당 스키마에 대해 문서를 확인하십시오.
Tidy가 선택되지 않은 경우
공백 무시
요소 공백을 무시합니다.
Tidy가 선택되지 않은 경우
외부 DTD 가져오기
선택하면 외부 DTD를 가져옵니다.
Tidy가 선택되지 않은 경우
XPath 어설션
문서에서 일치시킬 XPath입니다.
어설션 반전(위의 조건이 충족되면 실패)
XPath 표현식이 일치하지 않거나 false를 반환하면 True
아니
허용되지 않는 파서는 DTD 등을 다운로드해야 할 수 있으므로 상당히 느릴 수 있습니다.
NAMESPACES
Xalan XPath 파서(JMeter가 기반으로 하는 구현)의 네임스페이스 제한에 대한 해결 방법으로 다음을 수행해야 합니다.
  • 네임스페이스 접두사에 대한 매핑이 포함 된 속성 파일(예: 파일 이름이 namespaces.properties 인 경우)을 제공합니다.
    접두사1=http\://foo.apache.org
    접두사2=http\://toto.apache.org
    …
    
  • 속성을 사용하여 user.properties 파일 에서 이 파일을 참조하십시오 .
    xpath.namespace.config=namespaces.properties
^^

XPath2 어설션

XPath2 Assertion은 문서가 제대로 구성되었는지 테스트합니다. " / "를 사용하면 올바른 형식의 모든 문서와 일치하며 기본 XPath2 표현식입니다. 어설션은 " count(//*error)=2 " 와 같은 부울 표현식도 지원합니다 .

몇 가지 샘플 표현식:
  • //title[text()='일치할 텍스트'] - 응답의 모든 위치에서 <title>일치할 텍스트</title>와 일치 합니다.
  • /title[text()='일치할 텍스트'] - 응답의 루트 수준에서 <title>일치할 텍스트</title>와 일치
XPath2 어설션의 제어판 스크린샷
XPath2 어설션의 제어판 스크린샷

매개변수

기인하다
설명
필수의
네임스페이스 별칭 목록
문서를 구문 분석하는 데 사용할 네임스페이스 별칭 목록(선언당 한 줄). 다음과 같이 지정해야 합니다. prefix=namespace . 이 구현을 통해 이전 XPathExtractor 버전보다 네임스페이스를 더 쉽게 사용할 수 있습니다.
아니
XPath2 어설션
문서에서 일치시킬 XPath입니다.
주장 반전
xpath 표현식이 true를 반환하거나 일치하면 실패하고 그렇지 않으면 성공합니다.
아니
네임스페이스 별칭 목록
네임스페이스 별칭 목록 접두사=전체 네임스페이스(한 줄에 하나씩)
아니
^^

XML 스키마 어설션

XML Schema Assertion을 사용하면 사용자가 XML Schema에 대한 응답의 유효성을 검사할 수 있습니다.

XML 스키마 어설션의 제어판 스크린샷
XML 스키마 어설션의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
파일 이름
XML 스키마 파일 이름 지정
^^

JSR223 어설션

JSR223 Assertion을 사용하면 JSR223 스크립트 코드를 사용하여 이전 샘플의 상태를 확인할 수 있습니다.

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
아니
언어
사용할 JSR223 언어
매개변수
스크립트에 전달할 매개변수입니다. 매개변수는 다음 변수에 저장됩니다.
  • 매개변수 - 매개변수를 단일 변수로 포함하는 문자열
  • args - 매개변수를 포함하는 문자열 배열, 공백으로 분할
아니
스크립트 파일
실행할 스크립트가 포함된 파일, 상대 파일 경로가 사용되는 경우 " user.dir " 시스템 속성 에서 참조하는 디렉터리에 상대적입니다.
아니
스크립트 컴파일 캐싱
사용된 언어가 Compilable 인터페이스를 지원하는 경우 JMeter가 스크립트 컴파일 결과를 캐시하는 데 사용할 테스트 계획 전체의 고유 문자열 (Groovy는 이 중 하나이고 Java, BeanShell 및 JavaScript는 지원하지 않음)
이 옵션을 선택하지 않고 Groovy를 사용하는 경우 JSR223 Sampler Java System 속성의 참고 사항을 참조하십시오.
아니
스크립트
실행할 스크립트입니다.
예(스크립트 파일이 제공되지 않은 경우)

다음 변수는 스크립트에서 사용하도록 설정됩니다.

  • log - ( Logger ) - 로그 파일에 쓰는 데 사용할 수 있습니다.
  • 레이블 - 문자열 레이블
  • 파일 이름 - 스크립트 파일 이름(있는 경우)
  • 매개변수 - 매개변수(문자열)
  • args - 문자열 배열로서의 매개변수(공백으로 분할)
  • ctx - ( JMeterContext ) - 컨텍스트에 대한 액세스를 제공합니다.
  • vars - ( JMeterVariables ) - 변수에 대한 읽기/쓰기 액세스를 제공합니다.
    vars.get(키);
    vars.put(키, 발);
    vars.putObject("OBJ1", 새로운 객체());
    vars.getObject("OBJ2");
    
  • 소품 - (JMeterProperties - 클래스 java.util.Properties ) - 예
    props.get("START.HMS");
    props.put("PROP1","1234");
    
  • SampleResult , prev - ( SampleResult ) - 이전 SampleResult(있는 경우)에 대한 액세스를 제공합니다.
  • sampler - ( Sampler ) - 현재 샘플러에 대한 액세스를 제공합니다.
  • OUT - System.out - 예: OUT.println("메시지")
  • AssertionResult - ( AssertionResult ) - 주장 결과

스크립트는 SampleResult 의 다양한 측면을 확인할 수 있습니다 . 오류가 감지되면 스크립트는 AssertionResult.setFailureMessage("message")AssertionResult.setFailure(true) 를 사용해야 합니다 .

위의 각 변수에서 사용할 수 있는 모든 방법에 대한 자세한 내용은 Javadoc을 확인하십시오.

^^

주장 비교

Compare Assertion 은 부하 테스트 중에 많은 리소스(메모리 및 CPU)를 소모하므로 사용하지 않아야 합니다 . 기능 테스트 또는 테스트 계획 디버깅 및 검증 중에만 사용하십시오.
비교 어설션은 해당 범위 내에서 샘플 결과를 비교하는 데 사용할 수 있습니다. 내용 또는 경과 시간 중 하나를 비교할 수 있으며 비교 전에 내용을 필터링할 수 있습니다. 어설션 비교는 Comparison Assertion Visualizer 에서 볼 수 있습니다 .
비교 어설션의 제어판에 대한 스크린샷
비교 어설션의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
아니
콘텐츠 비교
내용(응답 데이터) 비교 여부
시간 비교
값이 ≥0이면 응답 시간 차이가 값보다 크지 않은지 확인합니다. 즉, 값이 0 이면 응답 시간이 정확히 같아야 합니다.
비교 필터
필터를 사용하여 콘텐츠 비교에서 문자열을 제거할 수 있습니다. 예를 들어 페이지에 타임스탬프가 있는 경우 " Time: \d\d:\d\d:\d\d "와 일치하고 더미 고정 시간 " Time: HH:MM: SS ".
아니
^^

SMIME 어설션

SMIME 어설션을 사용하여 메일 판독기 샘플러의 샘플 결과를 평가할 수 있습니다. 이 어설션은 MIME 메시지 본문이 서명되었는지 여부를 확인합니다. 서명은 특정 서명자 인증서에 대해서도 확인할 수 있습니다. 이것은 대부분의 사용자에게 반드시 필요한 것은 아닌 기능이므로 JMETER_HOME/lib 에 추가 jar를 다운로드하여 추가해야 합니다 .
  • bcmail-xxx.jar (바운시캐슬 SMIME/CMS)
  • bcprov-xxx.jar (BouncyCastle 공급자)
BouncyCastle에서 다운로드 해야 합니다 .

메일 판독기 샘플러 를 사용하는 경우 " MIME(원시)를 사용하여 메시지 저장 "을 선택했는지 확인하십시오 . 그렇지 않으면 어설션이 메시지를 올바르게 처리할 수 없습니다.

SMIME 어설션의 제어판 스크린샷
SMIME 어설션의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
아니
서명 확인
선택하면 어설션은 서명자 인증서 상자 에 정의된 매개변수에 따라 유효한 서명인지 확인합니다 .
서명되지 않은 메시지
메시지에 서명을 기대하는지 여부
서명자 인증서
" No Check "는 서명 확인을 수행하지 않음을 의미합니다. " 값 확인 "은 제공된 입력에 대해 서명을 확인하는 데 사용됩니다. 그리고 " 인증서 파일 "은 특정 인증서 파일에 대해 검증을 수행합니다.
메시지 위치
메일 샘플러는 단일 샘플에서 여러 메시지를 검색할 수 있습니다. 이 필드를 사용하여 확인할 메시지를 지정합니다. 메시지는 0 부터 번호가 지정되므로 0 은 첫 번째 메시지를 의미합니다. 음수는 LAST 메시지에서 계산됩니다. -1 은 마지막을 의미하고 -2 는 끝에서 두 번째 등 을 의미합니다.
^^

JSON 어설션

이 구성 요소를 사용하면 JSON 문서의 유효성 검사를 수행할 수 있습니다. 먼저 JSON을 구문 분석하고 데이터가 JSON이 아닌 경우 실패합니다. 둘째, Jayway JsonPath 1.2.0 의 구문을 사용하여 지정된 경로를 검색합니다 . 경로를 찾지 못하면 실패합니다. 셋째, 문서에서 JSON 경로가 발견되고 예상 값에 대한 유효성 검사가 요청되면 유효성 검사를 수행합니다. null 값 의 경우 GUI에 특수 확인란이 있습니다. 경로가 배열 개체를 반환하면 반복되고 예상 값이 발견되면 어설션이 성공합니다. 빈 배열을 확인하려면 [] 를 사용하십시오.끈. 또한 patch가 사전 객체를 반환하면 비교 전에 문자열로 변환됩니다.

JSON 어설션의 제어판 스크린샷
JSON 어설션의 제어판 스크린샷

매개변수

기인하다
설명
필수의
어설션 JSON 경로가 존재합니다.
어설션을 위한 JSON 요소의 경로입니다.
추가로 값 주장
일부 값으로 주장하려면 확인란을 선택하십시오.
아니
정규 표현식으로 일치
정규식을 사용하려면 확인란을 선택하십시오.
아니
예상 가치
어설션에 대한 값 또는 일치에 대한 정규식
아니
null 예상
null이 예상되는 경우 확인란을 선택합니다.
아니
어설션 반전(위의 조건이 충족되면 실패)
어설션 반전(위의 조건이 충족되면 실패)
아니
^^

JSON JMESPath 어설션

이 구성 요소를 사용하면 JMESPath 를 사용하여 JSON 문서 콘텐츠에 대해 어설션을 수행할 수 있습니다 . 먼저 JSON을 구문 분석하고 데이터가 JSON이 아닌 경우 실패합니다.
둘째, JMESPath 구문을 사용하여 지정된 경로를 검색합니다.
경로를 찾지 못하면 실패합니다.
셋째, 문서에서 JMES 경로가 발견되고 예상 값에 대한 유효성 검사가 요청되면 이 추가 검사를 수행합니다. null 여부를 확인하려면 null 예상 확인란을 사용합니다.
JMESPath 표현식이 컴파일되지 않고 오류가 발생하므로 경로는 null일 수 없습니다. 비어 있거나 null 응답이 예상되는 경우에도 유효한 JMESPath 표현식을 입력해야 합니다.

JSON JMESPath 어설션의 제어판 스크린샷
JSON JMESPath 어설션의 제어판 스크린샷

매개변수

기인하다
설명
필수의
JMESPath가 존재하는지 확인
JSON 요소에 대한 JMESPath가 존재하는지 확인하십시오.
추가로 값 주장
추출된 JMESPath를 예상되는 JMESPath와 비교하여 확인하는 경우 확인란을 선택합니다.
아니
정규 표현식으로 일치
일치에 정규식을 사용하려면 확인란을 선택하십시오.
아니
예상 가치
정규식 으로 일치 가 선택된 경우 정확한 일치 또는 정규식에 사용할 값
아니
null 예상
값이 null일 것으로 예상되는 경우 확인란을 선택합니다.
아니
어설션 반전(위의 조건이 충족되면 실패)
어설션 반전(위의 조건이 충족되면 실패)
아니
^^
^^

18.6 타이머

버전 3.1 이후로 다음 기능을 제공하는 새로운 기능(JMeter 3.1 현재 베타 모드 및 변경 가능)이 구현되었습니다. 속성 timer.factor=float number
를 설정하여 임의 타이머로 계산된 절전 지연에 곱셈 계수를 적용할 수 있습니다. 여기서 float number는 10진수 양수입니다. JMeter는 이 요소에 계산된 수면 지연을 곱합니다. 이 기능은 다음에서 사용할 수 있습니다.
타이머 는 발견된 범위의 각 샘플러 보다 먼저 처리됩니다. 동일한 범위에 여러 타이머가 있는 경우 모든 타이머는 샘플러 보다 먼저 처리됩니다 .
타이머는 샘플러와 함께만 처리됩니다. 샘플러와 동일한 범위에 있지 않은 타이머는 전혀 처리되지 않습니다.
단일 샘플러에 타이머를 적용하려면 타이머를 샘플러의 자식 요소로 추가합니다. 타이머는 샘플러가 실행되기 전에 적용됩니다. 샘플러 다음에 타이머를 적용하려면 다음 샘플러에 타이머를 추가하거나 Flow Control Action Sampler의 자식으로 추가하십시오.

일정한 타이머

요청 사이에 동일한 시간 동안 각 스레드가 일시 중지되도록 하려면 이 타이머를 사용하십시오.

상수 타이머의 제어판 스크린샷
상수 타이머의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 타이머를 설명하는 이름입니다.
아니
스레드 지연
일시 중지할 시간(밀리초)입니다.
^^

가우스 랜덤 타이머

이 타이머는 대부분의 시간 간격이 특정 값 근처에서 발생하는 임의의 시간 동안 각 스레드 요청을 일시 중지합니다. 총 지연은 가우스 분포 값(평균 0.0 및 표준 편차 1.0 )에 지정한 편차 값과 오프셋 값을 곱한 값의 합입니다. 그것을 설명하는 또 다른 방법은 Gaussian Random Timer에서 일정한 오프셋 주변의 변동이 가우스 곡선 분포를 갖는 것입니다.

가우스 랜덤 타이머의 제어판 스크린샷
가우스 랜덤 타이머의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 타이머를 설명하는 이름
아니
편차
밀리초 단위의 편차입니다.
일정한 지연 오프셋
임의 지연 외에 일시 중지할 시간(밀리초)입니다.
^^

균일한 랜덤 타이머

이 타이머는 각 스레드 요청을 임의의 시간 동안 일시 중지하며 각 시간 간격은 동일한 발생 확률을 갖습니다. 총 지연은 임의 값과 오프셋 값의 합입니다.

Uniform Random Timer의 제어판 스크린샷
Uniform Random Timer의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 타이머를 설명하는 이름입니다.
아니
무작위 지연 최대값
일시 중지할 최대 임의의 시간(밀리초)입니다.
일정한 지연 오프셋
임의 지연 외에 일시 중지할 시간(밀리초)입니다.
^^

일정한 처리량 타이머

이 타이머는 전체 처리량(분당 샘플 수)을 주어진 수치에 최대한 가깝게 유지하기 위해 계산된 가변 일시 중지를 도입합니다. 물론 서버가 처리할 수 없거나 다른 타이머나 시간 소모적인 테스트 요소가 처리를 방해하는 경우 처리량이 낮아집니다.

NB Timer를 Constant Throughput 타이머라고 하지만, Throughput 값이 반드시 일정할 필요는 없다. 변수 또는 함수 호출로 정의할 수 있으며 테스트 중에 값을 변경할 수 있습니다. 값은 다양한 방법으로 변경할 수 있습니다.

  • 카운터 변수 사용
  • __jexl3 , __groovy 함수를 사용하여 변화하는 값 제공
  • 원격 BeanShell 서버를 사용하여 JMeter 속성 변경

자세한 내용은 모범 사례 를 참조하십시오.

테스트 중에 처리량 값을 너무 자주 변경하면 안 됩니다. 새 값이 적용되는 데 시간이 걸립니다.

일정한 처리량 타이머의 제어판 스크린샷
일정한 처리량 타이머의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 타이머를 설명하는 이름입니다.
아니
목표 처리량
처리량은 타이머가 생성하려고 하는 것입니다.
다음을 기반으로 처리량 계산
  • 이 스레드만 - 각 스레드는 목표 처리량을 유지하려고 시도합니다. 전체 처리량은 활성 스레드 수에 비례합니다.
  • 현재 스레드 그룹의 모든 활성 스레드 - 목표 처리량은 그룹의 모든 활성 스레드로 나뉩니다. 각 스레드는 마지막으로 실행된 시간을 기준으로 필요에 따라 지연됩니다.
  • 모든 활성 스레드 - 목표 처리량은 모든 스레드 그룹의 모든 활성 스레드로 나뉩니다. 각 스레드는 마지막으로 실행된 시간을 기준으로 필요에 따라 지연됩니다. 이 경우 서로 다른 스레드 그룹에 동일한 설정의 일정한 처리량 타이머가 필요합니다.
  • 현재 스레드 그룹의 모든 활성 스레드(공유) - 위와 같지만 그룹의 스레드가 마지막으로 실행된 시간을 기준으로 각 스레드가 지연됩니다.
  • 모든 활성 스레드(공유) - 위와 같습니다. 각 스레드는 스레드가 마지막으로 실행된 시간을 기준으로 지연됩니다.

공유 및 비공유 알고리즘은 모두 원하는 처리량을 생성하는 것을 목표로 하며 유사한 결과를 생성합니다.
공유 알고리즘은 보다 정확한 전체 트랜잭션 비율을 생성해야 합니다.
비공유 알고리즘은 스레드 간에 트랜잭션을 더 고르게 분산시켜야 합니다.

^^

정확한 처리량 타이머

이 타이머는 전체 처리량(예: 분당 샘플 수)을 주어진 수치에 최대한 가깝게 유지하기 위해 계산된 가변 일시 중지를 도입합니다. 물론 서버가 처리할 수 없거나 다른 타이머가 있거나 스레드가 충분하지 않거나 시간 소모적인 테스트 요소가 이를 방지하는 경우 처리량이 더 낮습니다.

이 타이머를 정밀 처리량 타이머라고 하지만 테스트 중 1초 간격으로 정확히 동일한 수의 샘플을 생성하는 것을 목표로 하지는 않습니다.

타이머는 시간당 요청이 36000건 미만일 때 가장 잘 작동하지만 마일리지는 다를 수 있습니다(목표가 크게 다른 경우 아래 모니터링 섹션 참조).

테스트 계획에서 정확한 처리량 타이머의 최적 위치

알다시피 타이머는 모든 형제와 자식 요소에 의해 상속됩니다. 이것이 바로 정밀 처리량 타이머 를 위한 가장 좋은 장소 중 하나 가 테스트 루프의 첫 번째 요소 아래에 있는 이유입니다. 예를 들어, 처음에 더미 샘플러를 추가하고 해당 더미 샘플러 아래에 타이머를 배치할 수 있습니다.

제작 일정

정확한 처리량 타이머 는 푸아송 도착 일정 을 모델링 합니다. 이 일정은 실제 생활에서 자주 발생하므로 부하 테스트에 사용하는 것이 좋습니다. 예를 들어 자연스럽게 서로 가까운 샘플을 생성할 수 있으므로 동시성 문제가 드러날 수 있습니다. Poisson Random Timer 로 Poisson arrivals를 생성하더라도 아래 나열된 문제에 취약할 수 있습니다. 예를 들어, 진정한 푸아송 도착은 무한정 긴 일시 중지를 가질 수 있으며 이는 부하 테스트에 실용적이지 않습니다. 예를 들어, 초당 1 속도로 "정규" 푸아송 도착은 60초의 긴 테스트 동안 50개의 샘플로 끝날 수 있습니다.

일정한 처리량 타이머 는 지정된 속도로 수렴하지만 일정한 간격으로 샘플을 생성하는 경향이 있습니다.

램프업 및 시작 스파이크

테스트 시작 시 스파이크를 방지하기 위해 "램프 업(ramp-up)" 또는 유사한 접근 방식을 사용할 수 있습니다. 예를 들어, 스레드 그룹 이 100개의 스레드를 갖도록 구성하고 램프 업 기간0 (또는 적은 수)으로 설정하면 모든 스레드가 동시에 시작되고 원치 않는 로드 스파이크가 생성됩니다. . 게다가 램프업 기간을 너무 높게 설정 하면 처음에 필요한 로드를 달성하기 위해 사용 가능한 " 너무 적은 " 스레드가 발생할 수 있습니다.

Precise Throughput Timer 는 임의의 방식으로 실행을 예약하므로 일정한 부하를 생성하는 데 사용할 수 있으며 Ramp-up PeriodDelay 를 모두 0 으로 설정하는 것이 좋습니다 .

동시에 시작하는 여러 스레드 그룹

테스트 계획 에 여러 스레드 그룹 이 포함된 경우 램프업 문제 의 변형 이 나타날 수 있습니다 . 이 문제를 완화하기 위해 일반적으로 각 스레드 그룹 에 "임의" 지연을 추가 하여 스레드가 다른 시간에 시작되도록 합니다.

정확한 처리량 타이머 는 임의의 방식으로 실행을 예약하기 때문에 이러한 문제를 방지합니다. 시작 스파이크를 완화하기 위해 추가 임의 지연을 추가할 필요가 없습니다.

시간당 반복 횟수

기본 요구 사항 중 하나는 M분당 N개의 샘플을 발행하는 것입니다. 시간당 60회 반복하도록 합니다. "임의가 무작위였다는 이유만으로" 57회 실행된 부하 테스트 결과를 보고하면 비즈니스 고객은 이해하지 못할 것입니다. 시간당 60회 반복을 생성하려면 다음과 같이 구성해야 합니다(다른 매개변수는 기본값으로 남을 수 있음).

  • 목표 처리량(샘플) : 60
  • 처리 시간(초) : 3600
  • 테스트 시간(초) : 3600

처음 두 옵션은 처리량을 설정합니다. 60/3600, 30/1800 및 120/7200이 정확히 동일한 로드 수준을 나타내더라도 비즈니스 요구 사항을 더 잘 나타내는 것을 선택하십시오. 예를 들어 요구 사항이 "시간당 60개 샘플"에 대해 테스트하는 것이라면 60/3600으로 설정합니다. 요구 사항이 "분당 1개의 샘플"을 테스트하는 것이라면 1/60으로 설정하십시오.

테스트 기간(초) 이 있으므로 타이머는 주어진 테스트 기간 동안 정확한 샘플 수를 보장합니다. 정확한 처리량 타이머 는 테스트 시작 시 샘플에 대한 일정을 생성합니다. 예를 들어 시간당 60개의 처리량으로 5분 테스트를 수행하려면 테스트 기간(초) 을 300으로 설정합니다. 이를 통해 비즈니스 친화적인 방식으로 처리량을 구성할 수 있습니다. 참고: 테스트 기간(초) 은 테스트 기간을 제한 하지 않습니다 . 타이머에 대한 힌트일 뿐입니다.

스레드 수 및 생각 시간

일반적인 함정 중 하나는 원하는 처리량으로 끝내기 위해 스레드 수와 생각 시간을 조정하는 것입니다. 그것이 효과가 있더라도 그 접근 방식은 테스트 실행에 많은 시간을 소비하게 합니다. 새 애플리케이션 버전이 도착하면 스레드와 지연을 다시 조정해야 할 수 있습니다.

정확한 처리량 타이머 를 사용하면 처리량 목표를 설정하고 애플리케이션이 얼마나 잘 수행되는지에 상관없이 목표를 달성할 수 있습니다. 이를 위해 Precise Throughput Timer 는 테스트 시작 시 일정을 생성한 다음 해당 일정을 사용하여 스레드를 해제합니다. 생각 시간과 스레드 수에 대한 주요 동인은 처리량을 어떻게든 일치시키려는 욕구가 아니라 비즈니스 요구 사항이어야 합니다.

예를 들어, 콜 센터의 지원 엔지니어가 애플리케이션을 사용하는 경우입니다. 콜 센터에 2명의 엔지니어가 있고 목표 처리량이 분당 1명이라고 가정합니다. 엔지니어가 웹 페이지를 읽고 검토하는 데 4분이 걸린다고 가정합니다. 이 경우 그룹에 2개의 스레드를 설정하고, 생각 시간 지연에 4분을 사용하고, 정확한 처리량 타이머 에서 분당 1개를 지정해야 합니다. 물론 2samples/4minutes=0.5/min 정도의 결과가 나오며 이러한 테스트의 결과는 "콜 센터에 더 많은 지원 엔지니어가 필요합니다" 또는 "엔지니어가 작업을 수행하는 데 걸리는 시간을 줄여야 함"을 의미합니다. ".

낮은 비율 및 반복 가능한 테스트 테스트

낮은 비율(예: 시간당 60회)로 테스트하려면 원하는 테스트 프로필을 알아야 합니다. 예를 들어, 일정한 간격(예: 60초 사이)으로 부하를 주입해야 하는 경우 일정한 처리량 타이머 를 사용하는 것이 좋습니다 . 그러나 임의의 일정이 필요한 경우(예: 보고서를 실행하는 실제 사용자를 모델링하기 위해) Precise Throughput Timer 가 당신의 친구입니다.

여러 부하 테스트의 결과를 비교할 때 정확히 동일한 테스트 프로필을 반복할 수 있는 것이 유용합니다. 예를 들어, 테스트 시작 5분 후에 작업 X(예: "이익 보고서")가 호출되면 후속 테스트 실행을 위해 해당 패턴을 복제하는 것이 좋습니다. 동일한 로드 패턴을 복제하면 테스트 결과 분석이 간소화됩니다(예: CPU% 차트).

랜덤 시드(0에서 랜덤으로 변경)를 사용하면 정확한 처리량 타이머 에서 사용하는 시드 값을 제어할 수 있습니다 . 기본적으로 0 으로 초기화 되며 이는 각 테스트 실행에 임의의 시드가 사용됨을 의미합니다. 반복 가능한 로드 패턴이 필요한 경우 임의 값을 임의 값으로 변경 하십시오 . 일반적인 조언은 0이 아닌 시드를 사용하는 것이며 "기본적으로 0"은 구현 제한입니다.

참고: 처리 속도가 동일하고 0이 아닌 동일한 시드가 있는 여러 스레드 그룹을 사용하는 경우 원치 않는 동시에 샘플이 실행될 수 있습니다.

높은 비율 및/또는 긴 테스트 기간 테스트

정확한 처리량 타이머 는 일정을 생성하고 메모리에 보관합니다. 대부분의 경우 문제가 되지는 않지만 일정을 1'000'000개 샘플보다 짧게 유지하는 것이 좋습니다. 1'000'000 샘플에 대한 일정을 생성하는 데 ~200ms가 걸리고 일정은 힙에서 8MB를 소비합니다. 1000만 항목에 대한 일정은 빌드하는 데 1-2초가 걸리고 힙에서 80MB를 소비합니다.

예를 들어, 시간당 5,000개의 비율로 2주 동안의 테스트를 수행하려는 경우 시간당 정확히 5,000개의 샘플이 필요합니다. 타이머 타이머의 테스트 시간(초) 속성을 1시간으로 설정할 수 있습니다 . 그런 다음 타이머는 한 시간 동안 5,000개 샘플의 일정을 생성하고 일정이 소진되면 타이머는 다음 시간에 대한 일정을 생성합니다.

동시에 테스트 기간(초) 을 2주로 설정할 수 있으며 타이머는 168,000개 샘플 = 2주 * 5,000개 샘플/시간 = 2*7*24*500 으로 일정을 생성합니다 . 일정을 생성하는 데 ~30ms가 걸리고 1메가바이트 이상을 소비합니다.

버스트 로드

모든 샘플이 쌍, 삼중 등으로 제공되어야 하는 경우가 있을 수 있습니다. 특정 경우는 타이머 동기화 를 통해 해결될 수 있지만 정확한 처리량 타이머 에는 팩으로 요청을 발행하는 기본 방법이 있습니다. 이 동작은 기본적으로 비활성화되어 있으며 "일괄 출발" 설정으로 제어됩니다.

  • 일괄 처리의 스레드 수(threads) . 배치의 샘플 수를 지정합니다. 전체 샘플 수는 여전히 목표 처리량 과 일치합니다.
  • 일괄 처리의 스레드 간 지연(ms) . 예를 들어, 42로 설정하고 배치 크기가 3이면 스레드는 x, x+42ms, x+84ms에서 출발합니다.

가변 부하율

속성 값(예: 처리량)은 표현식을 통해 정의할 수 있지만 새 값을 적용하기 위해 새 일정을 다시 계산하는 데 시간이 걸리므로 테스트를 통해 값을 거의 동일하게 유지하는 것이 좋습니다.

모니터링

다음 일정이 생성되면 정확한 처리량 타이머 가 jmeter.log 에 메시지를 기록합니다 . 2018-01-04 17:34:03,635 INFO oajtConstantPoissonProcessGenerator: 생성된 21개의 타이밍(... 20개 필요, 속도 1.0, 기간 20, 정확한 한계 20000, i21) 0ms. First 15 events will be fired at: 1.1869653574244292 (+1.1869653574244292), 1.4691340403043207 (+0.2821686828798915), 3.638151706179226 (+2.169017665874905), 3.836357090410566 (+0.19820538423134026), 4.709330071408575 (+0.8729729809980085), 5.61330076999953 (+0.903970698590955), ... 이것은 스케줄 생성에 0ms가 소요되었음을 보여주고 절대 타임스탬프를 초 단위로 보여줍니다. 위의 경우 속도를 1초로 설정하고 실제 타임스탬프는 1.2초, 1.5초, 3.6초, 3.8초, 4.7초 등이 되었습니다.

정밀 처리량 타이머의 제어판 스크린샷
정밀 처리량 타이머의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 타이머를 설명하는 이름
아니
목표 처리량('처리량 기간'당 샘플)
영향을 받는 모든 샘플러에서 그룹의 모든 스레드를 포함하여 "처리량 기간"당 얻고자 하는 최대 샘플 수입니다.
처리 기간(초)
처리 기간. 예를 들어 "처리량"이 42로 설정되고 "처리량 기간"이 21초로 설정된 경우 초당 2개의 샘플을 얻게 됩니다.
테스트 기간(초)
이는 "테스트 기간" 기간 동안 처리량*기간 샘플을 확보하는 데 사용됩니다.
일괄 처리의 스레드 수(스레드)
값이 1을 초과하면 여러 스레드가 타이머에서 동시에 출발합니다. 평균 처리량은 여전히 ​​"처리량" 값을 충족합니다.
일괄 처리의 스레드 간 지연(ms)
예를 들어, 42로 설정되고 배치 크기가 3이면 스레드는 x, x+42ms, x+84ms에서 출발합니다.
랜덤 시드(0에서 랜덤으로 변경)
참고: 다른 타이머는 다른 시드 값을 갖는 것이 좋습니다. 일정한 시드는 타이머가 테스트를 시작할 때마다 동일한 지연을 생성하도록 합니다. 값 "0"은 타이머가 실제로 임의적임을 의미합니다(한 실행에서 다른 실행으로 반복할 수 없음).
^^

타이머 동기화

SyncTimer의 목적은 X개의 스레드가 차단될 때까지 스레드를 차단한 다음 모두 한 번에 해제하는 것입니다. 따라서 SyncTimer는 테스트 계획의 다양한 지점에서 대규모 인스턴트 로드를 생성할 수 있습니다.

타이머 동기화 제어판의 스크린샷
타이머 동기화 제어판의 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 타이머를 설명하는 이름입니다.
아니
그룹화 기준 동시 사용자 수
한 번에 해제할 스레드 수입니다. 0 으로 설정 하는 것은 스레드 그룹의 스레드 수로 설정하는 것과 같습니다.
시간 초과(밀리초)
0 으로 설정하면 타이머는 스레드 수가 " 그룹화할 동시 사용자 수 "의 값에 도달할 때까지 기다립니다 . 0 보다 크면 타이머는 스레드 수에 대해 최대 " 타임아웃(밀리초) "에서 기다립니다 . 시간 초과 간격 후에 대기 중인 사용자 수에 도달하지 않으면 타이머가 대기를 중지합니다. 기본값은 0 입니다.
아니
시간 초과(밀리초)가 0 으로 설정되고 스레드 수가 " 그룹화할 동시 사용자 수 "에 도달하지 않으면 테스트가 무한정 일시 중지됩니다. 강제 정지만이 그것을 멈출 것입니다. 이 경우 시간 초과를 밀리초 단위로 설정하는 것이 좋습니다.
하나의 JVM 내에서만 타이머 블록을 동기화하므로 분산 테스트를 사용하는 경우 " 그룹화할 동시 사용자 수 "를 1개의 인젝터만 고려하여 포함하는 스레드 그룹의 사용자 수보다 높은 값으로 설정하지 마십시오.
^^

BeanShell 타이머

BeanShell 타이머를 사용하여 지연을 생성할 수 있습니다.

BeanShell 사용에 대한 자세한 내용은 BeanShell 웹사이트를 참조하십시오.

JSR223 Timer +Groovy 로의 마이그레이션 은 성능, 새로운 Java 기능 지원 및 BeanShell 라이브러리의 제한된 유지 관리를 위해 적극 권장됩니다.

테스트 요소는 ThreadListenerTestListener 메서드를 지원합니다. 이들은 초기화 파일에 정의되어야 합니다. 예제 정의 는 BeanShellListeners.bshrc 파일을 참조하십시오 .

BeanShell 타이머의 제어판 스크린샷
BeanShell 타이머의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다. 이름은 스크립트 변수 Label 에 저장됩니다.
아니
각 호출 전에 bsh.Interpreter 재설정
이 옵션을 선택하면 각 샘플에 대해 인터프리터가 다시 생성됩니다. 이것은 일부 장기 실행 스크립트에 필요할 수 있습니다. 자세한 내용은 모범 사례 - BeanShell 스크립팅 을 참조하십시오 .
매개변수
BeanShell 스크립트에 전달할 매개변수입니다. 매개변수는 다음 변수에 저장됩니다.
  • 매개변수 - 매개변수를 단일 변수로 포함하는 문자열
  • bsh.args - 매개변수를 포함하는 문자열 배열, 공백으로 분할
아니
스크립트 파일
실행할 BeanShell 스크립트가 포함된 파일입니다. 파일 이름은 스크립트 변수 FileName 에 저장됩니다 . 반환 값은 대기할 밀리초 수로 사용됩니다.
아니
스크립트
BeanShell 스크립트. 반환 값은 대기할 밀리초 수로 사용됩니다.
예(스크립트 파일이 제공되지 않은 경우)

스크립트를 호출하기 전에 BeanShell 인터프리터에서 일부 변수가 설정됩니다.

  • log - ( Logger ) - 로그 파일에 쓰는 데 사용할 수 있습니다.
  • ctx - ( JMeterContext ) - 컨텍스트에 대한 액세스를 제공합니다.
  • vars - ( JMeterVariables ) - 변수에 대한 읽기/쓰기 액세스를 제공합니다.
    vars.get(키);
    vars.put(키, 발);
    vars.putObject("OBJ1", 새로운 객체());
    
  • 소품 - (JMeterProperties - 클래스 java.util.Properties) - 예: props.get("START.HMS"); props.put("PROP1","1234");
  • prev - ( SampleResult ) - 이전 SampleResult (있는 경우) 에 대한 액세스 권한을 제공합니다.

위의 각 변수에서 사용할 수 있는 모든 방법에 대한 자세한 내용은 Javadoc을 확인하십시오.

Beanshell.timer.init 속성 이 정의되어 있으면 초기화 파일을 로드하는 데 사용되며 BeanShell 스크립트에서 사용할 메서드 등을 정의하는 데 사용할 수 있습니다.

^^

JSR223 타이머

JSR223 타이머는 JSR223 스크립팅 언어를 사용하여 지연을 생성하는 데 사용할 수 있습니다.

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
아니
스크립트 언어
사용할 스크립팅 언어입니다.
매개변수
스크립트에 전달할 매개변수입니다. 매개변수는 다음 변수에 저장됩니다.
  • 매개변수 - 매개변수를 단일 변수로 포함하는 문자열
  • args - 매개변수를 포함하는 문자열 배열, 공백으로 분할
아니
스크립트 파일
실행할 스크립트가 포함된 파일, 상대 파일 경로가 사용되면 " user.dir "이 참조하는 디렉토리에 상대적입니다. 시스템 속성 반환 값은 긴 정수로 변환되고 대기할 밀리초 수로 사용됩니다. .
아니
스크립트 컴파일 캐싱
사용된 언어가 Compilable 인터페이스를 지원하는 경우 JMeter가 스크립트 컴파일 결과를 캐시하는 데 사용할 테스트 계획 전체의 고유 문자열 (Groovy는 이 중 하나이고 Java, beanshell 및 javascript는 지원하지 않음)
이 옵션을 선택하지 않고 Groovy를 사용하는 경우 JSR223 Sampler Java System 속성의 참고 사항을 참조하십시오.
아니
스크립트
스크립트. 반환 값은 대기할 밀리초 수로 사용됩니다.
예(스크립트 파일이 제공되지 않은 경우)

스크립트를 호출하기 전에 스크립트 인터프리터에서 일부 변수가 설정됩니다.

  • log - ( Logger ) - 로그 파일에 쓰는 데 사용할 수 있습니다.
  • ctx - ( JMeterContext ) - 컨텍스트에 대한 액세스를 제공합니다.
  • vars - ( JMeterVariables ) - 변수에 대한 읽기/쓰기 액세스를 제공합니다.
    vars.get(키);
    vars.put(키, 발);
    vars.putObject("OBJ1", 새로운 객체());
  • 소품 - (JMeterProperties - 클래스 java.util.Properties) - 예: props.get("START.HMS"); props.put("PROP1","1234");
  • 샘플러 - ( 샘플러 ) - 현재 샘플러
  • 레이블 - 타이머의 이름
  • FileName - 파일 이름(있는 경우)
  • 아웃 - 시스템 아웃

위의 각 변수에서 사용할 수 있는 모든 방법에 대한 자세한 내용은 Javadoc을 확인하십시오.

^^

포아송 랜덤 타이머

이 타이머는 대부분의 시간 간격이 특정 값 근처에서 발생하는 임의의 시간 동안 각 스레드 요청을 일시 중지합니다. 총 지연은 푸아송 분포 값과 오프셋 값의 합입니다.

참고: 포아송 도착을 모델링하려면 대신 정확한 처리량 타이머 를 사용하는 것이 좋습니다.

Poisson Random Timer 제어판의 스크린샷
Poisson Random Timer 제어판의 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 타이머를 설명하는 이름
아니
람다
밀리초 단위의 Lambda 값입니다.
일정한 지연 오프셋
임의 지연 외에 일시 중지할 시간(밀리초)입니다.
^^
^^

18.7 전처리기


전처리기는 해당 범위에서 샘플러를 수정하는 데 사용됩니다.

이 수정자는 서버에서 HTML 응답을 구문 분석하고 링크와 양식을 추출합니다. 이 수정자를 통과하는 URL 테스트 샘플은 바로 이전 응답에서 추출한 링크나 양식이 "일치"하는지 확인하기 위해 검사됩니다. 그런 다음 URL 테스트 샘플의 값을 일치하는 링크 또는 양식의 적절한 값으로 바꿉니다. Perl 유형 정규식은 일치 항목을 찾는 데 사용됩니다.

HTML 링크 파서의 제어판 스크린샷
HTML 링크 파서의 제어판 스크린샷
일치는 프로토콜 , 호스트 , 경로매개변수 이름 을 사용하여 수행됩니다 . 대상 샘플러는 응답 링크에 없는 매개변수를 포함할 수 없습니다.
분산 테스트를 사용 하는 경우 스트리핑이 되지 않도록 모드를 전환해야 합니다( jmeter.properties 참조). 버그 56376 을 참조하세요.
스파이더링 예제

간단한 예를 고려하십시오. JMeter가 사이트를 "스파이더"하고 서버에서 반환된 HTML에서 구문 분석된 링크 다음에 링크를 누르기를 원한다고 가정해 보겠습니다(실제로 가장 유용한 작업은 아니지만 좋은 예 역할을 함). . Simple Controller 를 만들고 "HTML Link Parser"를 추가합니다. 그런 다음 HTTP 요청을 만들고 도메인을 " .* "로 설정하고 경로도 마찬가지로 설정합니다. 이렇게 하면 테스트 샘플이 반환된 페이지에 있는 링크와 일치하게 됩니다. 스파이더링을 특정 도메인으로 제한하려면 도메인 값을 원하는 값으로 변경하십시오. 그런 다음 해당 도메인에 대한 링크만 따라갑니다.

투표 예

더 유용한 예: 웹 투표 응용 프로그램에서 사용자가 선택할 수 있는 라디오 버튼으로 여러 투표 옵션이 있는 페이지가 있을 수 있습니다. 투표 옵션의 값이 매우 동적이라고 가정해 봅시다. 아마도 사용자가 생성했을 것입니다. JMeter가 폴링을 테스트하도록 하려면 선택한 하드코딩된 값으로 테스트 샘플을 생성하거나 HTML Link Parser가 양식을 구문 분석하도록 하고 임의의 폴링 옵션을 URL 테스트 샘플에 삽입할 수 있습니다. 이렇게 하려면 웹 테스트 컨트롤러의 URL 옵션을 구성할 때 방법으로 " POST "를 선택해야 한다는 점을 제외하고 위의 예를 따르십시오. domain , path 및 추가 양식 매개변수 에 대해 하드 코딩된 값을 입력합니다 . 그런 다음 실제 라디오 버튼 매개변수에 이름을 입력합니다(예를 들어 'poll_choice "), 그런 다음 해당 매개변수의 값에 대해 " .* ". 수정자가 이 URL 테스트 샘플을 검사할 때 설문조사 형식이 "일치"한다는 것을 알게 됩니다(그리고 다음과 같은 경우 다른 형식과 일치해서는 안 됩니다. URL 테스트 샘플의 다른 모든 측면을 지정했습니다.) 그러면 양식 매개변수가 양식의 일치하는 매개변수로 바뀝니다. 정규식 " .* "는 무엇이든 일치하므로 수정자에는 아마도 목록이 있을 것입니다. 라디오 버튼 중에서 선택할 수 있습니다. 무작위로 선택하고 URL 테스트 샘플의 값을 대체합니다. 테스트를 통해 매번 새로운 무작위 값이 선택됩니다.

그림 18 - 온라인 투표 예
그림 18 - 온라인 투표 예
기억해야 할 한 가지 중요한 점은 동적 테스트 샘플과 관련된 링크 및 양식이 포함된 HTML 페이지를 반환하기 직전에 테스트 샘플을 생성해야 한다는 것입니다.
^^

HTTP URL 재작성 수정자

이 수정자는 HTML 링크 파서보다 사용하기 쉽고 더 효율적인 특정 목적이 있다는 점을 제외하고는 HTML 링크 파서와 유사하게 작동합니다. URL 재작성을 사용하여 쿠키 대신 세션 ID를 저장하는 웹 애플리케이션의 경우 이 요소는 HTTP 쿠키 관리자 와 마찬가지로 ThreadGroup 수준에서 첨부될 수 있습니다 . 세션 id 매개변수의 이름을 지정하기만 하면 페이지에서 이를 찾아 해당 ThreadGroup의 모든 요청에 ​​인수를 추가합니다.

또는 이 수정자를 선택 요청에 첨부할 수 있으며 요청만 수정합니다. 영리한 사용자는 이 수정자를 사용하여 HTML Link Parser 를 피하는 값을 얻을 수 있다는 사실도 알게 될 것 입니다.

HTTP URL 재작성 수정자의 제어판 스크린샷
HTTP URL 재작성 수정자의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
테스트 트리에서 이 요소에 지정된 설명적인 이름입니다.
아니
세션 인수 이름
이전 응답에서 가져올 매개변수의 이름입니다. 이 수정자는 페이지에 있는 모든 위치에서 매개변수를 찾고 HREF 또는 양식에 관계없이 할당된 값을 가져옵니다.
경로 확장
일부 웹 앱은 세미콜론과 세션 ID 매개변수를 추가하여 URL을 다시 작성합니다. 그렇다면 이 확인란을 선택하십시오.
아니
경로 확장에 equals를 사용하지 마십시오.
일부 웹 앱 은 매개변수 이름과 값(예: Intershop Enfinity) 사이에 " = " 기호를 사용하지 않고 URL을 다시 작성합니다.
아니
경로 확장에 물음표를 사용하지 마십시오.
쿼리 문자열이 경로 확장(예: Intershop Enfinity)에서 끝나는 것을 방지합니다.
아니
캐시 세션 ID?
세션 ID가 없을 때 나중에 사용하기 위해 세션 ID 값을 저장해야 합니까?
URL 인코딩
매개변수 작성 시 URL 인코딩 값
아니
분산 테스트를 사용 하는 경우 스트리핑이 되지 않도록 모드를 전환해야 합니다( jmeter.properties 참조) . 버그 56376 참조하세요 .
^^

사용자 매개변수

사용자가 개별 스레드에 특정한 사용자 변수 값을 지정할 수 있습니다.

사용자 변수는 테스트 계획에서도 지정할 수 있지만 개별 스레드에 한정되지는 않습니다. 이 패널을 사용하면 모든 사용자 변수에 대한 일련의 값을 지정할 수 있습니다. 각 스레드에 대해 변수에는 시리즈의 값 중 하나가 순서대로 할당됩니다. 값보다 스레드가 더 많으면 값이 다시 사용됩니다. 예를 들어, 이것은 각 스레드에서 사용할 고유한 사용자 ID를 할당하는 데 사용할 수 있습니다. 사용자 변수는 JMeter 구성 요소의 모든 필드에서 참조할 수 있습니다.

변수는 패널 하단의 변수 추가 버튼을 클릭하고 ' 이름: ' 열에 변수 이름을 입력하여 지정합니다. 시리즈에 새 값을 추가하려면 ' 사용자 추가 ' 버튼을 클릭하고 새로 추가된 열에 원하는 값을 입력합니다.

${variable} 함수 구문 을 사용하여 동일한 스레드 그룹의 모든 테스트 구성 요소에서 값에 액세스할 수 있습니다 .

많은 수의 매개변수에 더 적합한 CSV 데이터 세트 구성 요소 도 참조하십시오.

사용자 매개변수의 제어판 스크린샷
사용자 매개변수의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
반복당 한 번 업데이트
사용자 매개변수 요소가 반복당 한 번만 변수를 업데이트해야 하는지 여부를 나타내는 플래그입니다. UP에 함수를 포함하면 변수 값이 업데이트되는 빈도를 더 잘 제어해야 할 수 있습니다. UP의 상위 컨트롤러를 통해 매번 값이 업데이트되도록 하려면 이 상자를 선택된 상태로 유지하십시오. 확인란을 선택 취소하면 UP이 해당 범위 내에서 이루어진 모든 샘플 요청에 대한 매개변수를 업데이트합니다 .
^^

BeanShell 전처리기

BeanShell PreProcessor를 사용하면 샘플을 채취하기 전에 임의의 코드를 적용할 수 있습니다.

BeanShell 사용에 대한 자세한 내용은 BeanShell 웹사이트를 참조하십시오.

JSR223 PreProcessor +Groovy 로의 마이그레이션 은 성능, 새로운 Java 기능 지원 및 BeanShell 라이브러리의 제한된 유지 관리를 위해 적극 권장됩니다.

테스트 요소는 ThreadListenerTestListener 메서드를 지원합니다. 이들은 초기화 파일에 정의되어야 합니다. 예제 정의 는 BeanShellListeners.bshrc 파일을 참조하십시오 .

BeanShell 전처리기 제어판 스크린샷
BeanShell 전처리기의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다. 이름은 스크립트 변수 Label 에 저장됩니다.
아니
각 호출 전에 bsh.Interpreter 재설정
이 옵션을 선택하면 각 샘플에 대해 인터프리터가 다시 생성됩니다. 이것은 일부 장기 실행 스크립트에 필요할 수 있습니다. 자세한 내용은 모범 사례 - BeanShell 스크립팅 을 참조하십시오 .
매개변수
BeanShell 스크립트에 전달할 매개변수입니다. 매개변수는 다음 변수에 저장됩니다.
  • 매개변수 - 매개변수를 단일 변수로 포함하는 문자열
  • bsh.args - 매개변수를 포함하는 문자열 배열, 공백으로 분할
아니
스크립트 파일
실행할 BeanShell 스크립트가 포함된 파일입니다. 파일 이름은 스크립트 변수 FileName 에 저장됩니다.
아니
스크립트
BeanShell 스크립트. 반환 값은 무시됩니다.
예(스크립트 파일이 제공되지 않은 경우)

스크립트를 호출하기 전에 BeanShell 인터프리터에서 일부 변수가 설정됩니다.

  • log - ( Logger ) - 로그 파일에 쓰는 데 사용할 수 있습니다.
  • ctx - ( JMeterContext ) - 컨텍스트에 대한 액세스를 제공합니다.
  • vars - ( JMeterVariables ) - 변수에 대한 읽기/쓰기 액세스를 제공합니다.
    vars.get(키);
    vars.put(키, 발);
    vars.putObject("OBJ1", 새로운 객체());
  • 소품 - (JMeterProperties - 클래스 java.util.Properties) - 예: props.get("START.HMS"); props.put("PROP1","1234");
  • prev - ( SampleResult ) - 이전 SampleResult(있는 경우)에 대한 액세스 권한을 제공합니다.
  • sampler - ( Sampler )- 현재 샘플러에 대한 액세스를 제공합니다.

위의 각 변수에서 사용할 수 있는 모든 방법에 대한 자세한 내용은 Javadoc을 확인하십시오.

Beanshell.preprocessor.init 속성 이 정의되어 있으면 초기화 파일을 로드하는 데 사용되며 BeanShell 스크립트에서 사용할 메서드 등을 정의하는 데 사용할 수 있습니다.

^^

JSR223 전처리기

JSR223 PreProcessor는 샘플을 취하기 전에 JSR223 스크립트 코드를 적용할 수 있도록 합니다.

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
아니
언어
사용할 JSR223 언어
매개변수
스크립트에 전달할 매개변수입니다. 매개변수는 다음 변수에 저장됩니다.
  • 매개변수 - 매개변수를 단일 변수로 포함하는 문자열
  • args - 매개변수를 포함하는 문자열 배열, 공백으로 분할
아니
스크립트 파일
실행할 스크립트가 포함된 파일, 상대 파일 경로가 사용되는 경우 " user.dir " 시스템 속성 에서 참조하는 디렉터리에 상대적입니다.
아니
스크립트 컴파일 캐싱
사용된 언어가 Compilable 인터페이스를 지원하는 경우 JMeter가 스크립트 컴파일 결과를 캐시하는 데 사용할 테스트 계획 전체의 고유 문자열 (Groovy는 이 중 하나이고 Java, beanshell 및 javascript는 지원하지 않음)
이 옵션을 선택하지 않고 Groovy를 사용하는 경우 JSR223 Sampler Java System 속성의 참고 사항을 참조하십시오.
아니
스크립트
실행할 스크립트입니다.
예(스크립트 파일이 제공되지 않은 경우)

다음 JSR223 변수는 스크립트에서 사용하도록 설정됩니다.

  • log - ( Logger ) - 로그 파일에 쓰는 데 사용할 수 있습니다.
  • 레이블 - 문자열 레이블
  • FileName - 스크립트 파일 이름(있는 경우)
  • 매개변수 - 매개변수(문자열)
  • args - 문자열 배열로서의 매개변수(공백으로 분할)
  • ctx - ( JMeterContext ) - 컨텍스트에 대한 액세스를 제공합니다.
  • vars - ( JMeterVariables ) - 변수에 대한 읽기/쓰기 액세스를 제공합니다.
    vars.get(키);
    vars.put(키, 발);
    vars.putObject("OBJ1", 새로운 객체());
    vars.getObject("OBJ2");
  • 소품 - (JMeterProperties - 클래스 java.util.Properties) - 예: props.get("START.HMS"); props.put("PROP1","1234");
  • sampler - ( Sampler )- 현재 샘플러에 대한 액세스를 제공합니다.
  • OUT - System.out - 예: OUT.println("메시지")

위의 각 변수에서 사용할 수 있는 모든 방법에 대한 자세한 내용은 Javadoc을 확인하십시오.

^^

JDBC 전처리기

JDBC PreProcessor를 사용하면 샘플이 실행되기 직전에 일부 SQL 문을 실행할 수 있습니다. 이것은 JDBC 샘플이 일부 데이터가 DataBase에 있어야 하고 설정 스레드 그룹에서 이를 계산할 수 없는 경우에 유용할 수 있습니다. 자세한 내용은 JDBC 요청 을 참조하십시오 .

다음 테스트 계획을 참조하십시오.

연결된 테스트 계획에서 " 가격 인하 생성 " JDBC PreProcessor는 데이터베이스에 가격 인하를 생성하기 위해 저장 프로시저를 호출합니다. 이것은 " 가격 인하 계산 "에 의해 사용됩니다 .

가격 인하 전처리기 생성
가격 인하 전처리기 생성
^^

RegEx 사용자 매개변수

정규식을 사용하여 다른 HTTP 요청에서 추출된 HTTP 매개변수에 대한 동적 값을 지정할 수 있습니다. RegEx 사용자 매개변수는 개별 스레드에 따라 다릅니다.

이 구성 요소를 사용하면 HTTP 요청 매개변수의 이름과 값을 추출하는 정규식의 참조 이름을 지정할 수 있습니다. 매개변수 이름과 매개변수 값에 대해 정규식 그룹 번호를 지정해야 합니다. 이름이 일치하는 이 RegEx 사용자 매개변수를 사용하는 샘플러의 매개변수에 대해서만 교체가 발생합니다.

RegEx 사용자 매개변수의 제어판 스크린샷
RegEx 사용자 매개변수의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
정규식 참조 이름
정규식에 대한 참조 이름
매개변수 이름 정규 표현식 그룹 번호
매개변수 이름을 추출하는 데 사용되는 정규식의 그룹 번호
매개변수 값 정규식 그룹 번호
매개변수 값을 추출하는 데 사용되는 정규식의 그룹 번호
정규 표현식 예제

3개의 입력 매개변수가 있는 양식을 반환하는 요청이 있고 그 중 2개의 값을 추출하여 다음 요청에 삽입하려고 한다고 가정합니다.

  1. 첫 번째 HTTP 요청에 대한 포스트 프로세서 정규식 생성
    • refName - 정규식 표현식의 이름 설정( listParams )
    • 정규식 - 입력 이름 및 입력 값 속성을 추출하는 표현식
      예: input name="([^"]+?)" value="([^"]+?)"
    • 템플릿 - 비어 있음
    • match nr - -1 (가능한 모든 일치를 반복하기 위해)
  2. 두 번째 HTTP 요청에 대한 전처리기 RegEx 사용자 매개변수 생성
    • refName - 정규식의 동일한 참조 이름을 설정합니다. 이 예에서는 listParams 가 됩니다.
    • 매개변수 이름 그룹 번호 - 매개변수 이름에 대한 정규식의 그룹 번호는 이 예에서 1 입니다.
    • 매개변수 값 그룹 번호 - 매개변수 값에 대한 정규식의 그룹 번호는 이 예에서 2 입니다.

매개변수 이름 및 값을 추출하는 데 사용되는 정규식 추출기 요소 도 참조하십시오.

^^

샘플 타임아웃

이 전처리기는 완료하는 데 너무 오래 걸리는 경우 샘플을 중단하도록 타이머 작업을 예약합니다. 시간 제한이 0이거나 음수이면 무시됩니다. 이것이 작동하려면 샘플러가 Interruptible을 구현해야 합니다.
AJP, BeanShell, FTP, HTTP, Soap, AccessLog, MailReader, JMS Subscriber, TCPSampler, TestAction, JavaSampler와 같은 샘플러가 그렇게 하는 것으로 알려져 있습니다.

테스트 요소는 연결 시간 초과 또는 응답 시간 초과와 같은 개별 시간 초과가 충분하지 않거나 샘플러가 시간 초과를 지원하지 않는 경우에 사용하기 위한 것입니다. 타임아웃은 정상적인 테스트에서 트리거되지 않도록 충분히 길게 설정해야 하지만, 멈춰 있는 샘플을 방해할 만큼 짧게 설정해야 합니다.

[기본적으로 JMeter는 Callable을 사용하여 샘플러를 중단합니다. 이는 타이머와 동일한 스레드에서 실행되므로 인터럽트가 오래 걸리면 후속 타임아웃 처리가 지연될 수 있습니다. 이것은 문제가 될 것으로 예상되지 않지만 필요한 경우 InterruptTimer.useRunnable 속성을 true 로 설정 하여 Callable 대신 별도의 Runnable 스레드를 사용할 수 있습니다.]

샘플 시간 초과 제어판의 스크린샷
샘플 시간 초과 제어판의 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 타이머를 설명하는 이름입니다.
아니
샘플 시간 초과
샘플을 완료하는 데 시간이 더 오래 걸리면 중단됩니다.
^^
^^

18.8 포스트 프로세서

이름에서 알 수 있듯이 포스트 프로세서는 샘플러 다음에 적용됩니다. 동일한 범위의 모든 샘플러에 적용 되므로 포스트 프로세서가 특정 샘플러에만 적용되도록 하려면 샘플러의 자식으로 추가하십시오.

참고: 달리 문서화되지 않는 한 포스트 프로세서는 하위 샘플(하위 샘플)에 적용되지 않고 상위 샘플에만 적용됩니다. JSR223 및 BeanShell 후처리기의 경우 스크립트는 SampleResults의 배열을 반환하는 prev.getSubResults() 메서드를 사용하여 하위 샘플을 검색할 수 있습니다. 배열이 없으면 비어 있습니다.

포스트 프로세서는 어설션 전에 실행되므로 어설션 결과에 액세스할 수 없으며 샘플 상태가 어설션 결과를 반영하지 않습니다. 어설션 결과에 액세스해야 하는 경우 대신 리스너를 사용해 보십시오. 또한 JMeterThread.last_sample_ok 변수 는 모든 어설션이 실행된 후에 " true " 또는 " false " 로 설정됩니다 .

정규식 추출기

사용자가 Perl 유형 정규식을 사용하여 서버 응답에서 값을 추출할 수 있습니다. 후처리기로서 이 요소는 해당 범위의 각 샘플 요청 후에 실행되어 정규식을 적용하고 요청된 값을 추출하고 템플릿 문자열을 생성하고 결과를 지정된 변수 이름에 저장합니다.

정규식 추출기 제어판의 스크린샷
정규식 추출기의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
적용하다:
이것은 하위 샘플을 생성할 수 있는 샘플러와 함께 사용하기 위한 것입니다(예: 포함된 리소스가 있는 HTTP 샘플러, 메일 판독기 또는 트랜잭션 컨트롤러에서 생성한 샘플).
  • 메인 샘플만 - 메인 샘플에만 적용
  • 하위 샘플만 - 하위 샘플에만 적용됩니다.
  • 기본 샘플 및 하위 샘플 - 둘 다에 적용됩니다.
  • 사용할 JMeter 변수 이름 - 추출은 명명된 변수의 내용에 적용됩니다.
매칭은 모든 적격 샘플에 차례로 적용됩니다. 예를 들어 기본 샘플과 3개의 하위 샘플이 있는 경우 각 샘플에는 정규식에 대한 단일 일치가 포함됩니다(즉, 총 4개의 일치). 일치 번호 = 3 의 경우 하위 샘플만 추출기는 세 번째 하위 샘플과 일치합니다. 일치 번호 = 3 , 기본 샘플 및 하위 샘플의 경우 추출기는 두 번째 하위 샘플과 일치합니다( 첫 번째 일치는 기본 샘플임). 일치 번호 = 0 또는 음수인 경우 모든 적격 샘플이 처리됩니다. 일치 번호 > 0 의 경우 일치하는 항목이 충분히 발견되는 즉시 일치가 중지됩니다.
확인할 필드
다음 필드를 확인할 수 있습니다.
  • 본문 - 응답의 본문, 예를 들어 웹 페이지의 내용(헤더 제외)
  • 본문(이스케이프 처리되지 않음) - 모든 Html 이스케이프 코드가 대체된 응답 본문입니다. Html 이스케이프는 컨텍스트에 관계없이 처리되므로 일부 잘못된 대체가 만들어질 수 있습니다.
    이 옵션은 성능에 큰 영향을 미치므로 절대적으로 필요한 경우에만 사용하고 그 영향을 인식하십시오.
  • 문서로서의 본문 - Apache Tika를 통해 다양한 유형의 문서에서 텍스트를 추출합니다( 보기 결과 트리 문서 보기 섹션 참조).
    Body as a Document 옵션은 성능에 영향을 줄 수 있으므로 테스트에 적합한지 확인하십시오.
  • 요청 헤더 - HTTP가 아닌 샘플에는 없을 수 있음
  • 응답 헤더 - HTTP가 아닌 샘플에는 없을 수 있습니다.
  • URL
  • 응답 코드 - 예: 200
  • 응답 메시지 - 예: 확인
헤더는 HTTP 샘플에 유용할 수 있습니다. 다른 샘플 유형에는 존재하지 않을 수 있습니다.
생성된 변수의 이름
결과를 저장할 JMeter 변수의 이름입니다. 또한 각 그룹은 [refname]_g# 로 저장됩니다 . 여기서 [refname] 은 참조 이름으로 입력한 문자열이고 # 은 그룹 번호입니다. 여기서 그룹 0 은 전체 일치, 그룹 1 은 첫 번째 괄호 세트 등
정규식
응답 데이터를 구문 분석하는 데 사용되는 정규식입니다. $0$ 그룹을 사용하지 않는 한, 여기에는 문자열의 일부를 캡처하기 위해 하나 이상의 괄호 " () " 세트가 포함되어야 합니다 . 물론 이러한 문자도 일치시키려는 경우가 아니면 표현식을 / / - 로 묶지 마십시오 .
주형
찾은 일치 항목에서 문자열을 만드는 데 사용되는 템플릿입니다. 이것은 정규식 내의 그룹을 참조하는 특수 요소가 있는 임의의 문자열입니다. 그룹을 참조하는 구문은 다음과 같습니다. ' $1$ '은 그룹 1 을 참조하고 ' $2$ '는 그룹 2 를 참조하는 등 입니다. $0$ 는 전체 표현식이 일치하는 항목을 참조합니다.
일치 번호(랜덤의 경우 0)
사용할 일치 항목을 나타냅니다. 정규식은 여러 번 일치할 수 있습니다.
  • JMeter가 무작위로 일치 항목을 선택해야 함을 나타내려면 0 값을 사용하십시오.
  • 양수 N은 n 번째 일치 항목을 선택한다는 의미입니다.
  • 음수는 ForEach 컨트롤러 와 함께 사용됩니다( 아래 참조).
기본값
정규식이 일치하지 않으면 참조 변수가 기본값으로 설정됩니다. 이것은 테스트 디버깅에 특히 유용합니다. 기본값이 제공되지 않으면 정규식이 일치하지 않았는지, RE 요소가 처리되지 않았는지 또는 잘못된 변수가 사용되었는지 여부를 알기 어렵습니다.

그러나 동일한 변수를 설정하는 테스트 요소가 여러 개 있는 경우 표현식이 일치하지 않으면 변수를 변경하지 않고 그대로 둘 수 있습니다. 이 경우 디버깅이 완료되면 기본값을 제거하십시오.

아니요, 하지만 권장됩니다.
빈 기본값 사용
확인란이 선택되고 기본값 이 비어 있으면 JMeter는 변수를 설정하지 않고 빈 문자열로 설정합니다. 따라서 예를 들어 테스트 계획에서 ${var} ( 참조 이름 이 var인 경우)를 사용할 때 추출된 값을 찾을 수 없는 경우 ${var} 는 ${var} 를 포함하는 대신 빈 문자열과 같을 수 있습니다. 추출된 값이 선택 사항인 경우 유용합니다.
아니

일치 번호가 음수가 아닌 숫자로 설정되고 일치가 발생하면 변수는 다음과 같이 설정됩니다.

  • refName - 템플릿의 값
  • refName_g n , 여기서 n = 0 , 1 , 2 - 일치하는 그룹
  • refName_g - 정규식의 그룹 수( 0 제외 )

일치하는 항목이 없으면 refName 변수가 기본값으로 설정됩니다(없는 경우 제외). 또한 다음 변수가 제거됩니다.

  • refName_g0
  • refName_g1
  • refName_g

일치 번호가 음수로 설정되면 샘플러 데이터에서 가능한 모든 일치 항목이 처리됩니다. 변수는 다음과 같이 설정됩니다.

  • refName_matchNr - 발견된 일치 항목의 수. 0 이 될 수 있습니다
  • refName_ n , 여기서 n = 1 , 2 , 3 등 - 템플릿에 의해 생성된 문자열
  • refName_ n _g m , 여기서 m = 0 , 1 , 2 - 일치하는 그룹 n
  • refName - 항상 기본값으로 설정
  • refName_g n - 설정되지 않음

이 경우 refName 변수는 항상 기본값으로 설정되며 연결된 그룹 변수는 설정되지 않습니다.

수정자를 지정하는 방법에 대한 몇 가지 예와 JMeter 정규식에 대한 추가 정보 는 Response Assertion 을 참조하십시오 .

^^

CSS 선택기 추출기 (기존: CSS/JQuery 추출기)

사용자가 CSS 선택기 구문을 사용하여 서버 HTML 응답에서 값을 추출할 수 있습니다. 포스트 프로세서로서, 이 요소는 CSS/JQuery 표현식을 적용하고, 요청된 노드를 추출하고, 노드를 텍스트 또는 속성 값으로 추출하고, 결과를 주어진 변수 이름에 저장하면서 해당 범위의 각 샘플 요청 후에 실행됩니다.

CSS 선택기 추출기의 제어판 스크린샷
CSS 선택기 추출기의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
적용하다:
이것은 하위 샘플을 생성할 수 있는 샘플러와 함께 사용하기 위한 것입니다(예: 포함된 리소스가 있는 HTTP 샘플러, 메일 판독기 또는 트랜잭션 컨트롤러에서 생성한 샘플).
  • 메인 샘플만 - 메인 샘플에만 적용
  • 하위 샘플만 - 하위 샘플에만 적용됩니다.
  • 기본 샘플 및 하위 샘플 - 둘 다에 적용됩니다.
  • 사용할 JMeter 변수 이름 - 추출은 명명된 변수의 내용에 적용됩니다.
매칭은 모든 적격 샘플에 차례로 적용됩니다. 예를 들어 기본 샘플과 3개의 하위 샘플이 있는 경우 각 샘플에는 정규식에 대한 단일 일치가 포함됩니다(즉, 총 4개의 일치). 일치 번호 = 3 의 경우 하위 샘플만 추출기는 세 번째 하위 샘플과 일치합니다. 일치 번호 = 3 , 기본 샘플 및 하위 샘플의 경우 추출기는 두 번째 하위 샘플과 일치합니다( 첫 번째 일치는 기본 샘플임). 일치 번호 = 0 또는 음수인 경우 모든 적격 샘플이 처리됩니다. 일치 번호 > 0 의 경우 일치하는 항목이 충분히 발견되는 즉시 일치가 중지됩니다.
CSS 선택기 구현
2 CSS/JQuery 기반 구문에 대한 구현이 지원됩니다. 선택기가 비어 있으면 기본 구현(JSoup)이 사용됩니다.
거짓
생성된 변수의 이름
결과를 저장할 JMeter 변수의 이름입니다.
CSS/JQuery 표현식
응답 데이터에서 노드를 선택하는 데 사용되는 CSS/JQuery 선택기입니다. 선택기, 선택기 조합 및 의사 선택기가 지원됩니다. 예:
  • E[foo] - " foo " 속성 을 가진 E 요소
  • 조상 자식 - 조상에서 내려온 자식 요소, 예를 들어 .body p 는 " body " 클래스가 있는 블록 아래에서 p 요소를 찾습니다 .
  • :lt(n) - 형제 인덱스(즉, 부모에 대한 DOM 트리에서의 위치)가 n 보다 작은 요소를 찾습니다 . 예: td:lt(3)
  • :contains(text) - 주어진 텍스트 를 포함하는 요소를 찾습니다 . 검색은 대소문자를 구분하지 않습니다. 예: p:contains(jsoup)
구문에 대한 자세한 내용은 다음을 참조하세요.
기인하다
선택기와 일치하는 노드에서 추출할 속성의 이름(HTML 구문에 따름). 비어 있으면 이 요소와 모든 하위 요소의 결합된 텍스트가 반환됩니다. 속성이 설정된 경우 JSoup
에 해당하는 Element#attr(name) 함수입니다.
속성 값이 설정된 CSS 추출기
속성 값이 설정된 CSS 추출기

비어 있으면 속성에 값이 설정되지 않은 경우 JSoup에 대한 Element#text() 함수와 동일합니다.
속성이 설정되지 않은 CSS 추출기
속성이 설정되지 않은 CSS 추출기
거짓
일치 번호(랜덤의 경우 0)
사용할 일치 항목을 나타냅니다. CSS/JQuery 선택기는 여러 번 일치할 수 있습니다.
  • JMeter가 무작위로 일치 항목을 선택해야 함을 나타내려면 0 값을 사용하십시오.
  • 양수 N 은 n 번째 일치 항목 을 선택한다는 의미 입니다.
  • 음수는 ForEach 컨트롤러 와 함께 사용됩니다( 아래 참조).
기본값
표현식이 일치하지 않으면 참조 변수가 기본값으로 설정됩니다. 이것은 테스트 디버깅에 특히 유용합니다. 기본값이 제공되지 않으면 표현식이 일치하지 않았는지, CSS/JQuery 요소가 처리되지 않았는지, 아니면 잘못된 변수가 사용되고 있는지 알기 어렵습니다.

그러나 동일한 변수를 설정하는 테스트 요소가 여러 개 있는 경우 표현식이 일치하지 않으면 변수를 변경하지 않고 그대로 둘 수 있습니다. 이 경우 디버깅이 완료되면 기본값을 제거하십시오.

아니요, 하지만 권장됩니다.
빈 기본값 사용
확인란이 선택되고 기본값 이 비어 있으면 JMeter는 변수를 설정하지 않고 빈 문자열로 설정합니다. 따라서 예를 들어 테스트 계획에서 ${var} ( 참조 이름 이 var인 경우)를 사용할 때 추출된 값을 찾을 수 없는 경우 ${var} 는 ${var} 를 포함하는 대신 빈 문자열과 같을 수 있습니다. 추출된 값이 선택 사항인 경우 유용합니다.
아니

일치 번호가 음수가 아닌 숫자로 설정되고 일치가 발생하면 변수는 다음과 같이 설정됩니다.

  • refName - 템플릿의 값

일치하는 항목이 없으면 refName 변수가 기본값으로 설정됩니다(없는 경우 제외).

일치 번호가 음수로 설정되면 샘플러 데이터에서 가능한 모든 일치 항목이 처리됩니다. 변수는 다음과 같이 설정됩니다.

  • refName_matchNr - 발견된 일치 항목의 수. 0 이 될 수 있습니다
  • refName_n , 여기서 n = 1 , 2 , 3 등 - 템플릿에 의해 생성된 문자열
  • refName - 항상 기본값으로 설정

이 경우 refName 변수는 항상 기본값으로 설정됩니다.

^^

XPath2 추출기

이 테스트 요소를 사용하면 XPath2 쿼리 언어를 사용하여 구조화된 응답(XML 또는 (X)HTML)에서 값을 추출할 수 있습니다.
XPath2 Extractor 제어판의 스크린샷
XPath2 Extractor의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
아니
적용하다:
이것은 하위 샘플을 생성할 수 있는 샘플러와 함께 사용하기 위한 것입니다(예: 포함된 리소스가 있는 HTTP 샘플러, 메일 판독기 또는 트랜잭션 컨트롤러에서 생성한 샘플).
  • 메인 샘플만 - 메인 샘플에만 적용
  • 하위 샘플만 - 하위 샘플에만 적용됩니다.
  • 기본 샘플 및 하위 샘플 - 둘 다에 적용됩니다.
  • 사용할 JMeter 변수 이름 - 추출은 명명된 변수의 내용에 적용됩니다.
XPath 일치는 모든 적격 샘플에 차례로 적용되며 모든 일치 결과가 반환됩니다.
텍스트 콘텐츠 대신 전체 XPath 조각을 반환하시겠습니까?
선택하면 텍스트 내용이 아닌 조각이 반환됩니다.
예를 들어 //title 은 " Apache JMeter "가 아닌 " <title>Apache JMeter</title> " 를 반환 합니다. 이 경우 //title/text() 는 " Apache JMeter " 를 반환 합니다.
생성된 변수의 이름
결과를 저장할 JMeter 변수의 이름입니다.
XPath 쿼리
XPath 2.0 언어의 요소 쿼리. 둘 이상의 일치 항목을 반환할 수 있습니다.
일치 번호(랜덤의 경우 0)
XPath 경로 쿼리가 많은 결과를 가져오는 경우 변수로 추출할 결과를 선택할 수 있습니다.
  • 0 : 임의(기본값)를 의미
  • -1 은 모든 결과를 추출한다는 의미이며, 이름은 <변수 이름> _N (여기서 N 은 1에서 결과 수)로 지정됩니다.
  • X : X 번째 결과를 추출하는 것을 의미합니다 . 이 X 번째 가 일치 항목 수보다 크면 아무 것도 반환되지 않습니다. 기본값이 사용됩니다
아니
기본값
일치하는 항목이 없으면 기본값이 반환됩니다. 노드에 값이 없고 조각 옵션이 선택되지 않은 경우에도 반환됩니다.
네임스페이스 별칭 목록
문서를 구문 분석하는 데 사용할 네임스페이스 별칭 목록(선언당 한 줄). 다음과 같이 지정해야 합니다. prefix=namespace . 이 구현을 통해 이전 XPathExtractor 버전보다 네임스페이스를 더 쉽게 사용할 수 있습니다.
아니

ForEach Controller 에서 사용할 수 있도록 위의 XPath Extractor와 정확히 동일하게 작동합니다.

XPath2 Extractor는 개선된 구문 및 첫 번째 버전보다 훨씬 더 많은 기능과 같은 몇 가지 흥미로운 도구를 제공합니다.

다음은 몇 가지 예입니다.

abs(/책/페이지[2])
책에서 페이지의 두 번째 절대값을 추출 합니다.
평균(/도서관/도서/페이지)
도서관의 모든 책에서 평균 페이지 수를 추출합니다.
비교(/책[1]/페이지[2],/책[2]/페이지[2])
첫 번째 책의 두 번째 페이지가 두 번째 책의 두 번째 페이지와 같으면 정수 0 이고 그렇지 않으면 -1을 반환합니다.

이러한 기능에 대한 자세한 내용을 보려면 xPath2 기능 을 확인하십시오.

^^

XPath 추출기

이 테스트 요소를 통해 사용자는 XPath 쿼리 언어를 사용하여 구조화된 응답(XML 또는 (X)HTML)에서 값을 추출할 수 있습니다.
JMeter 5.0부터 XPath 2.0에 대한 더 나은 네임스페이스 관리, 더 나은 성능 및 지원을 제공 하는 XPath2 Extractor 를 사용해야 합니다 .
XPath Extractor 제어판의 스크린샷
XPath Extractor의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
아니
적용하다:
이것은 하위 샘플을 생성할 수 있는 샘플러와 함께 사용하기 위한 것입니다(예: 포함된 리소스가 있는 HTTP 샘플러, 메일 판독기 또는 트랜잭션 컨트롤러에서 생성한 샘플).
  • 메인 샘플만 - 메인 샘플에만 적용
  • 하위 샘플만 - 하위 샘플에만 적용됩니다.
  • 기본 샘플 및 하위 샘플 - 둘 다에 적용됩니다.
  • 사용할 JMeter 변수 이름 - 추출은 명명된 변수의 내용에 적용됩니다.
XPath 일치는 모든 적격 샘플에 차례로 적용되며 모든 일치 결과가 반환됩니다.
Tidy 사용(관용 파서)
선택하면 Tidy를 사용하여 HTML 응답을 XHTML로 구문 분석합니다.
  • HTML 응답을 위해 " Use Tidy "를 체크해야 합니다. 이러한 응답은 Tidy를 사용하여 유효한 XHTML(XML 호환 HTML)로 변환됩니다.
  • " Use Tidy "는 XHTML 또는 XML 응답(예: RSS)에 대해 선택을 취소해야 합니다.
HTML의 경우 CSS Selector Extractor가 정확하고 성능이 좋은 솔루션입니다. HTML 추출에 XPath를 사용하지 마십시오.
조용한
Tidy Quiet 플래그를 설정합니다.
깔끔함을 선택한 경우
오류 보고
Tidy 오류가 발생하면 그에 따라 Assertion을 설정하십시오.
깔끔함을 선택한 경우
경고 표시
Tidy showWarnings 옵션을 설정합니다.
깔끔함을 선택한 경우
네임스페이스 사용
선택하면 XML 파서는 네임스페이스 확인을 사용합니다.(NAMESPACES에 대한 아래 참고 참조) 현재 루트 요소에 선언된 네임스페이스만 인식됩니다. 추가 작업 공간 이름의 사용자 정의는 아래를 참조하십시오.
Tidy가 선택되지 않은 경우
XML 유효성 검사
해당 스키마에 대해 문서를 확인하십시오.
Tidy가 선택되지 않은 경우
공백 무시
요소 공백을 무시합니다.
Tidy가 선택되지 않은 경우
외부 DTD 가져오기
선택하면 외부 DTD를 가져옵니다.
Tidy가 선택되지 않은 경우
텍스트 콘텐츠 대신 전체 XPath 조각을 반환하시겠습니까?
선택하면 텍스트 내용이 아닌 조각이 반환됩니다.
예를 들어 //title 은 " Apache JMeter "가 아닌 " <title>Apache JMeter</title> " 를 반환 합니다. 이 경우 //title/text() 는 " Apache JMeter " 를 반환 합니다.
생성된 변수의 이름
결과를 저장할 JMeter 변수의 이름입니다.
XPath 쿼리
XPath 언어의 요소 쿼리. 둘 이상의 일치 항목을 반환할 수 있습니다.
일치 번호(랜덤의 경우 0)
XPath 경로 쿼리가 많은 결과를 가져오는 경우 변수로 추출할 결과를 선택할 수 있습니다.
  • 0 : 랜덤을 의미
  • -1 은 모든 결과 추출(기본값)을 의미하며, 이름은 <변수 이름> _N 으로 지정됩니다 (여기서 N 은 1에서 결과 수로 이동).
  • X : X 번째 결과를 추출하는 것을 의미합니다 . 이 X 번째 가 일치 항목 수보다 크면 아무 것도 반환되지 않습니다. 기본값이 사용됩니다
아니
기본값
일치하는 항목이 없으면 기본값이 반환됩니다. 노드에 값이 없고 조각 옵션이 선택되지 않은 경우에도 반환됩니다.

ForEach Controller 에서 사용할 수 있도록 반환 시 다음 변수가 설정됩니다.

  • refName - 첫 번째(또는 유일한) 일치로 설정합니다. 일치하지 않으면 기본값으로 설정
  • refName_matchNr - 일치 수로 설정( 0 일 수 있음 )
  • refName_n - n = 1 , 2 , 3 등. 첫 번째 , 두 번째 , 세 번째 일치 등 으로 설정합니다.
참고: 다음 refName_n 변수는 null 로 설정됩니다 . 예를 들어 2개의 일치 항목이 있는 경우 refName_3null 로 설정되고 일치 항목이 없으면 refName_1 은 null 로 설정됩니다 .

XPath는 주로 XSLT 변환을 대상으로 하는 쿼리 언어입니다. 그러나 구조화된 데이터에 대한 일반 쿼리 언어로도 유용합니다. 자세한 내용은 XPath 참조 또는 XPath 사양 을 참조하십시오. 다음은 몇 가지 예입니다.

/html/head/제목
HTML 응답에서 제목 요소 추출
/책/페이지[2]
책에서 두 번째 페이지를 추출 합니다.
/책/페이지
책의 모든 페이지를 추출
//form[@name='countryForm']//select[@name='country']/option[text()='체코 공화국'])/@value
name 속성이 ' countryForm ' 인 폼 내에서 name 속성이 ' country ' 인 select 요소 내에서 텍스트 ' Czech Republic ' 과 일치하는 옵션 요소의 값 속성을 추출합니다 .
" 깔끔한 사용 "이 선택된 경우 - 결과 XML 문서가 원래 HTML 응답과 약간 다를 수 있습니다.
  • 모든 요소 및 속성 이름은 소문자로 변환됩니다.
  • Tidy는 부적절하게 중첩된 요소를 수정하려고 시도합니다. 예를 들어 - 원래(잘못된) ul/font/li 가 올바른 ul/li/font 가 됩니다.
자세한 내용은 Tidy 홈페이지 를 참조하세요.
NAMESPACES
Xalan XPath 파서(JMeter가 기반으로 하는 구현)의 네임스페이스 제한에 대한 해결 방법으로 다음을 수행해야 합니다.
  • 네임스페이스 접두사에 대한 매핑이 포함 된 속성 파일(예: 파일 이름이 namespaces.properties 인 경우)을 제공합니다.
    접두사1=http\://foo.apache.org
    접두사2=http\://toto.apache.org
    …
    
  • 속성을 사용하여 user.properties 파일 에서 이 파일을 참조하십시오 .
    xpath.namespace.config=namespaces.properties

//내이름공간:태그이름
//*[local-name()='tagname' 및 namespace-uri()='uri-for-namespace']
uri-for-namespace mynamespace
^^

JSON JMESPath 추출기

이 테스트 요소를 사용하면 JMESPath 쿼리 언어를 사용하여 구조화된 응답(XML 또는 (X)HTML)에서 값을 추출할 수 있습니다.
JSON JMESPath 추출기의 제어판 스크린샷
JSON JMESPath 추출기의 제어판 스크린샷
XPATH Extractor에서는 동시에 여러 xpath 추출을 지원하지만 JMES Extractor에서는 한 번에 하나의 JMES 표현식만 입력할 수 있습니다.

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
아니
적용하다:
이것은 하위 샘플을 생성할 수 있는 샘플러와 함께 사용하기 위한 것입니다(예: 포함된 리소스가 있는 HTTP 샘플러, 메일 판독기 또는 트랜잭션 컨트롤러에서 생성한 샘플).
  • 메인 샘플만 - 메인 샘플에만 적용
  • 하위 샘플만 - 하위 샘플에만 적용됩니다.
  • 기본 샘플 및 하위 샘플 - 둘 다에 적용됩니다.
  • 사용할 JMeter 변수 이름 - 추출은 명명된 변수의 내용에 적용됩니다.
생성된 변수의 이름
결과를 저장할 JMeter 변수의 이름입니다.
JMESPath 표현식
JMESPath 쿼리 언어의 요소 쿼리. 일치하는 결과를 반환할 수 있습니다.
일치 번호(랜덤의 경우 0)
JMESPath 쿼리가 많은 결과로 이어지는 경우 변수로 추출할 결과를 선택할 수 있습니다.
  • 0 : 랜덤을 의미
  • -1 은 모든 결과 추출(기본값)을 의미하며, 이름은 <변수 이름> _N 으로 지정됩니다 (여기서 N 은 1에서 결과 수로 이동).
  • X : X 번째 결과를 추출하는 것을 의미합니다 . 이 X 번째 가 일치 항목 수보다 크면 아무 것도 반환되지 않습니다. 기본값이 사용됩니다
아니
기본값
일치하는 항목이 없으면 기본값이 반환됩니다. 노드에 값이 없고 조각 옵션이 선택되지 않은 경우에도 반환됩니다.

JMESPath는 JSON용 쿼리 언어입니다. 완전한 사양으로 ABNF 문법에 설명되어 있습니다. 이렇게 하면 언어 구문이 정확하게 정의됩니다. 자세한 내용은 JMESPath 참조 를 참조하세요. 다음은 JMESPath 예제 의 몇 가지 예 입니다.

^^

결과 상태 작업 처리기

이 테스트 요소를 사용하면 관련 샘플러가 실패한 경우 스레드 또는 전체 테스트를 중지할 수 있습니다.
결과 상태 작업 처리기의 제어판 스크린샷
결과 상태 작업 처리기의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
샘플러 오류 후 취해야 할 조치
샘플 자체가 실패했거나 어설션이 실패했기 때문에 샘플러 오류가 발생하면 어떻게 되는지 결정합니다. 가능한 선택은 다음과 같습니다.
  • 계속 - 오류를 무시하고 테스트를 계속합니다.
  • 다음 스레드 루프 시작 - 현재 반복에서 오류가 발생한 샘플러를 따라 샘플러를 실행하지 않고 다음 반복에서 루프를 다시 시작합니다.
  • 스레드 중지 - 현재 스레드 종료
  • 테스트 중지 - 현재 샘플이 끝나면 전체 테스트가 중지됩니다.
  • 지금 테스트 중지 - 전체 테스트가 갑자기 중지됩니다. 가능한 경우 모든 현재 샘플러가 중단됩니다.
아니
^^

BeanShell 포스트 프로세서

BeanShell PreProcessor를 사용하면 샘플을 채취한 후 임의의 코드를 적용할 수 있습니다.

BeanShell 포스트 프로세서는 더 이상 길이가 0인 결과 데이터가 있는 샘플을 무시하지 않습니다.

BeanShell 사용에 대한 자세한 내용은 BeanShell 웹사이트를 참조하십시오.

JSR223 PostProcessor +Groovy 로의 마이그레이션 은 성능, 새로운 Java 기능 지원 및 BeanShell 라이브러리의 제한된 유지 관리를 위해 적극 권장됩니다.

테스트 요소는 ThreadListenerTestListener 메서드를 지원합니다. 이들은 초기화 파일에 정의되어야 합니다. 예제 정의 는 BeanShellListeners.bshrc 파일을 참조하십시오 .

BeanShell PostProcessor 제어판 스크린샷
BeanShell PostProcessor의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다. 이름은 스크립트 변수 Label 에 저장됩니다.
아니
각 호출 전에 bsh.Interpreter 재설정
이 옵션을 선택하면 각 샘플에 대해 인터프리터가 다시 생성됩니다. 이것은 일부 장기 실행 스크립트에 필요할 수 있습니다. 자세한 내용은 모범 사례 - BeanShell 스크립팅 을 참조하십시오 .
매개변수
BeanShell 스크립트에 전달할 매개변수입니다. 매개변수는 다음 변수에 저장됩니다.
  • 매개변수 - 매개변수를 단일 변수로 포함하는 문자열
  • bsh.args - 매개변수를 포함하는 문자열 배열, 공백으로 분할
아니
스크립트 파일
실행할 BeanShell 스크립트가 포함된 파일입니다. 파일 이름은 스크립트 변수 FileName 에 저장됩니다.
아니
스크립트
BeanShell 스크립트. 반환 값은 무시됩니다.
예(스크립트 파일이 제공되지 않은 경우)

다음 BeanShell 변수는 스크립트에서 사용하도록 설정됩니다.

  • log - ( Logger ) - 로그 파일에 쓰는 데 사용할 수 있습니다.
  • ctx - ( JMeterContext ) - 컨텍스트에 대한 액세스를 제공합니다.
  • vars - ( JMeterVariables ) - 변수에 대한 읽기/쓰기 액세스를 제공합니다.
    vars.get(키);
    vars.put(키, 발);
    vars.putObject("OBJ1", 새로운 객체());
  • 소품 - (JMeterProperties - 클래스 java.util.Properties) - 예: props.get("START.HMS"); props.put("PROP1","1234");
  • prev - ( SampleResult ) - 이전 SampleResult에 대한 액세스를 제공합니다.
  • 데이터 - (바이트 [])- 현재 샘플 데이터에 대한 액세스를 제공합니다.

위의 각 변수에서 사용할 수 있는 모든 방법에 대한 자세한 내용은 Javadoc을 확인하십시오.

Beanshell.postprocessor.init 속성 이 정의되어 있으면 초기화 파일을 로드하는 데 사용되며 BeanShell 스크립트에서 사용할 메서드 등을 정의하는 데 사용할 수 있습니다.

^^

JSR223 포스트프로세서

JSR223 PostProcessor는 샘플을 취한 후 JSR223 스크립트 코드를 적용할 수 있도록 합니다.

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
아니
언어
사용할 JSR223 언어
매개변수
스크립트에 전달할 매개변수입니다. 매개변수는 다음 변수에 저장됩니다.
  • 매개변수 - 매개변수를 단일 변수로 포함하는 문자열
  • args - 매개변수를 포함하는 문자열 배열, 공백으로 분할
아니
스크립트 파일
실행할 스크립트가 포함된 파일, 상대 파일 경로가 사용되는 경우 " user.dir " 시스템 속성 에서 참조하는 디렉터리에 상대적입니다.
아니
스크립트 컴파일 캐싱
사용된 언어가 Compilable 인터페이스를 지원하는 경우 JMeter가 스크립트 컴파일 결과를 캐시하는 데 사용할 테스트 계획 전체의 고유 문자열 (Groovy는 이 중 하나이고 Java, beanshell 및 javascript는 지원하지 않음)
이 옵션을 선택하지 않고 Groovy를 사용하는 경우 JSR223 Sampler Java System 속성의 참고 사항을 참조하십시오.
아니
스크립트
실행할 스크립트입니다.
예(스크립트 파일이 제공되지 않은 경우)

스크립트를 호출하기 전에 일부 변수가 설정됩니다. 이것은 JSR223 변수라는 점에 유의하십시오. 즉, 스크립트에서 직접 사용할 수 있습니다.

  • log - ( Logger ) - 로그 파일에 쓰는 데 사용할 수 있습니다.
  • 레이블 - 문자열 레이블
  • FileName - 스크립트 파일 이름(있는 경우)
  • 매개변수 - 매개변수(문자열)
  • args - 문자열 배열로서의 매개변수(공백으로 분할)
  • ctx - ( JMeterContext ) - 컨텍스트에 대한 액세스를 제공합니다.
  • vars - ( JMeterVariables ) - 변수에 대한 읽기/쓰기 액세스를 제공합니다.
    vars.get(키);
    vars.put(키, 발);
    vars.putObject("OBJ1", 새로운 객체());
    vars.getObject("OBJ2");
  • 소품 - (JMeterProperties - 클래스 java.util.Properties) - 예: props.get("START.HMS"); props.put("PROP1","1234");
  • prev - ( SampleResult ) - 이전 SampleResult(있는 경우)에 대한 액세스 권한을 제공합니다.
  • sampler - ( Sampler )- 현재 샘플러에 대한 액세스를 제공합니다.
  • OUT - System.out - 예: OUT.println("메시지")

위의 각 변수에서 사용할 수 있는 모든 방법에 대한 자세한 내용은 Javadoc을 확인하십시오.

^^

JDBC 포스트프로세서

JDBC PostProcessor를 사용하면 샘플이 실행된 직후에 일부 SQL 문을 실행할 수 있습니다. 이것은 JDBC 샘플이 일부 데이터를 변경하고 JDBC 샘플이 실행되기 전의 상태로 재설정하려는 경우에 유용할 수 있습니다.

연결된 테스트 계획에서 " JDBC PostProcessor " JDBC PostProcessor는 PreProcessor에 의해 생성된 Price Cut-Off 데이터베이스에서 삭제하기 위해 저장 프로시저를 호출합니다.

JDBC 포스트프로세서
JDBC 포스트프로세서
^^

JSON 추출기

JSON PostProcessor를 사용하면 JSON-PATH 구문을 사용하여 JSON 응답에서 데이터를 추출할 수 있습니다. 이 포스트 프로세서는 정규식 추출기와 매우 유사합니다. HTTP 샘플러 또는 응답이 있는 다른 샘플러의 자식으로 배치해야 합니다. 매우 쉬운 방법으로 텍스트 콘텐츠를 추출할 수 있습니다( JSON 경로 구문 참조) .

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
아니
생성된 변수의 이름
JSON-PATH 표현식의 결과를 포함할 변수의 세미콜론으로 구분된 이름(JSON-PATH 표현식의 수와 일치해야 함)
JSON 경로 표현식
세미콜론으로 구분된 JSON-PATH 표현식(변수 수와 일치해야 함)
기본값
JSON-PATH 표현식이 결과를 반환하지 않는 경우 세미콜론으로 구분된 기본값(변수 수와 일치해야 함)
아니
일치 번호(랜덤의 경우 0)
JSON 경로 쿼리가 많은 결과로 이어지는 경우 변수로 추출할 결과를 선택할 수 있습니다.
  • 0 : 랜덤을 의미(기본값)
  • -1 은 모든 결과를 추출한다는 의미이며, 이름은 <변수 이름> _N (여기서 N 은 1에서 결과 수)로 지정됩니다.
  • X : X 번째 결과를 추출하는 것을 의미합니다 . 이 X 번째 가 일치 항목 수보다 크면 아무 것도 반환되지 않습니다. 기본값이 사용됩니다
아니
연결 변수 계산
많은 결과가 발견되면 플러그인은 ' , ' 구분 기호를 사용하여 결과를 연결하고 <변수 이름> _ALL 이라는 var에 저장합니다.
아니
JSON 포스트프로세서
JSON 포스트프로세서
^^

경계 추출기

사용자가 왼쪽 및 오른쪽 경계를 사용하여 서버 응답에서 값을 추출할 수 있습니다. 후처리기로서 이 요소는 해당 범위의 각 샘플 요청 후에 실행되어 경계를 테스트하고 요청된 값을 추출하고 템플릿 문자열을 생성하고 결과를 지정된 변수 이름에 저장합니다.

Boundary Extractor 제어판의 스크린샷
경계 추출기의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
적용하다:
이것은 하위 샘플을 생성할 수 있는 샘플러와 함께 사용하기 위한 것입니다(예: 포함된 리소스가 있는 HTTP 샘플러, 메일 판독기 또는 트랜잭션 컨트롤러에서 생성한 샘플).
  • 메인 샘플만 - 메인 샘플에만 적용
  • 하위 샘플만 - 하위 샘플에만 적용됩니다.
  • 기본 샘플 및 하위 샘플 - 둘 다에 적용됩니다.
  • 사용할 JMeter 변수 이름 - 어설션은 명명된 변수의 내용에 적용됩니다.
매칭은 모든 적격 샘플에 차례로 적용됩니다. 예를 들어 기본 샘플과 3개의 하위 샘플이 있고 각각에 단일 일치 테스트가 포함되어 있는 경우(즉, 총 4개의 일치). 일치 번호 = 3 의 경우 하위 샘플만 추출기는 세 번째 하위 샘플과 일치합니다. 일치 번호 = 3 , 기본 샘플 및 하위 샘플의 경우 추출기는 두 번째 하위 샘플과 일치합니다( 첫 번째 일치는 기본 샘플임). 일치 번호 = 0 또는 음수인 경우 모든 적격 샘플이 처리됩니다. 일치 번호 > 0 의 경우 일치하는 항목이 충분히 발견되는 즉시 일치가 중지됩니다.
확인할 필드
다음 필드를 확인할 수 있습니다.
  • 본문 - 응답의 본문, 예를 들어 웹 페이지의 내용(헤더 제외)
  • 본문(이스케이프 처리되지 않음) - 모든 Html 이스케이프 코드가 대체된 응답 본문입니다. Html 이스케이프는 컨텍스트에 관계없이 처리되므로 일부 잘못된 대체가 만들어질 수 있습니다.
    이 옵션은 성능에 큰 영향을 미치므로 절대적으로 필요한 경우에만 사용하고 그 영향을 인식하십시오.
  • 문서로서의 본문 - Apache Tika를 통해 다양한 유형의 문서에서 텍스트를 추출합니다( 보기 결과 트리 문서 보기 섹션 참조).
    Body as a Document 옵션은 성능에 영향을 줄 수 있으므로 테스트에 적합한지 확인하십시오.
  • 요청 헤더 - HTTP가 아닌 샘플에는 없을 수 있음
  • 응답 헤더 - HTTP가 아닌 샘플에는 없을 수 있습니다.
  • URL
  • 응답 코드 - 예: 200
  • 응답 메시지 - 예: 확인
헤더는 HTTP 샘플에 유용할 수 있습니다. 다른 샘플 유형에는 존재하지 않을 수 있습니다.
생성된 변수의 이름
결과를 저장할 JMeter 변수의 이름입니다. 또한 각 그룹은 [refname]_g# 로 저장됩니다 . 여기서 [refname] 은 참조 이름으로 입력한 문자열이고 # 은 그룹 번호입니다. 여기서 그룹 0 은 전체 일치, 그룹 1 은 첫 번째 괄호 세트 등
왼쪽 경계
찾을 값의 왼쪽 경계
아니
오른쪽 경계
찾을 가치의 오른쪽 경계
아니
일치 번호(랜덤의 경우 0)
사용할 일치 항목을 나타냅니다. 경계는 여러 번 일치할 수 있습니다.
  • JMeter가 무작위로 일치 항목을 선택해야 함을 나타내려면 0 값을 사용하십시오.
  • 양수 N은 n 번째 일치 항목을 선택한다는 의미입니다.
  • 음수는 ForEach 컨트롤러 와 함께 사용됩니다( 아래 참조).
기본값
경계가 일치하지 않으면 참조 변수가 기본값으로 설정됩니다. 이것은 테스트 디버깅에 특히 유용합니다. 기본값이 제공되지 않으면 경계가 일치하지 않았는지 또는 잘못된 변수가 사용 중인지 말하기 어렵습니다.

그러나 동일한 변수를 설정하는 테스트 요소가 여러 개 있는 경우 표현식이 일치하지 않으면 변수를 변경하지 않고 그대로 둘 수 있습니다. 이 경우 디버깅이 완료되면 기본값을 제거하십시오.

아니요, 하지만 권장됩니다.

일치 번호가 음수가 아닌 숫자로 설정되고 일치가 발생하면 변수는 다음과 같이 설정됩니다.

  • refName - 추출 값

일치하는 항목이 없으면 refName 변수가 기본값으로 설정됩니다(없는 경우 제외).

일치 번호가 음수로 설정되면 샘플러 데이터에서 가능한 모든 일치 항목이 처리됩니다. 변수는 다음과 같이 설정됩니다.

  • refName_matchNr - 발견된 일치 항목의 수. 0 이 될 수 있습니다
  • refName_ n , 여기서 n = 1 , 2 , 3 등 - 템플릿에 의해 생성된 문자열
  • refName_ n _g m , 여기서 m = 0 , 1 , 2 - 일치하는 그룹 n
  • refName - 항상 기본값으로 설정

이 경우 refName 변수는 항상 기본값으로 설정되며 연결된 그룹 변수는 설정되지 않습니다.

왼쪽과 오른쪽 경계가 모두 null이면 범위에서 선택한 전체 데이터가 반환됩니다.
^^

18.9 기타 기능


테스트 계획

테스트 계획은 테스트에 대한 전체 설정이 지정되는 곳입니다.

서버 이름과 같이 테스트 전체에서 반복되는 값에 대해 정적 변수를 정의할 수 있습니다. 예를 들어 SERVER 변수는 www.example.com 으로 정의할 수 있고 나머지 테스트 계획은 이를 ${SERVER} 로 참조할 수 있습니다. 이렇게 하면 나중에 이름을 쉽게 변경할 수 있습니다.

동일한 변수 이름이 하나 이상의 사용자 정의 변수 구성 요소에서 재사용되는 경우 값은 테스트 계획의 마지막 정의로 설정됩니다(위에서 아래로 읽기). 이러한 변수는 테스트 실행 간에 변경될 수 있지만 테스트 실행 중에 동일하게 유지되는 항목에 사용해야 합니다.

테스트 계획은 정의한 변수를 참조할 수 없습니다.
테스트 계획 변수에서 다른 변수를 구성해야 하는 경우 사용자 정의 변수 테스트 요소를 사용하십시오.

Functional Testing을 선택하면 JMeter가 추가 샘플 정보(응답 데이터 및 샘플러 데이터)를 모든 결과 파일에 저장하도록 지시합니다. 이것은 테스트를 실행하는 데 필요한 리소스를 증가시키고 JMeter 성능에 부정적인 영향을 줄 수 있습니다. 특정 샘플러에만 더 많은 데이터가 필요한 경우 리스너를 추가하고 필요에 따라 필드를 구성합니다.

이 옵션은 현재 이러한 정보를 저장할 수 없는 CSV 결과 파일에 영향을 주지 않습니다.

또한 JMeter가 스레드 그룹 을 병렬이 아닌 직렬 로 실행하도록 지시하는 옵션이 있습니다 .

기본 스레드 종료 후 tearDown 스레드 그룹 실행: 선택하면 기본 스레드가 정상적으로 종료된 후 tearDown 그룹(있는 경우)이 실행됩니다. 테스트가 강제로 중지되면 tearDown 스레드가 실행되지 않습니다.

테스트 계획은 이제 특정 테스트 계획에 클래스 경로 설정을 추가하는 쉬운 방법을 제공합니다. 이 기능은 추가적입니다. 즉, jar 파일이나 디렉토리를 추가할 수 있지만 항목을 제거하려면 JMeter를 다시 시작해야 합니다.

JMeter GUI 플러그인을 추가하는 데 사용할 수 없습니다. 이전에 처리되기 때문입니다.
그러나 JDBC 드라이버와 같은 유틸리티 jar에는 유용할 수 있습니다. jar는 시스템 클래스 로더가 아닌 JMeter 로더의 검색 경로에만 추가됩니다.

JMeter 속성은 추가 클래스 경로를 로드하기 위한 항목도 제공합니다. jmeter.properties 에서 " user.classpath " 또는 " plugin_dependency_paths "를 편집 하여 추가 라이브러리를 포함합니다. 자세한 내용은 JMeter의 클래스 경로JMeter 구성 을 참조하세요.

테스트 계획의 제어판 스크린샷
테스트 계획의 제어판 스크린샷
^^

스레드 그룹

스레드 그룹은 서버에 대해 특정 테스트 케이스를 실행할 사용자 풀을 정의합니다. 스레드 그룹 GUI에서 시뮬레이션된 사용자 수(스레드 수), 램프 업 시간(모든 스레드를 시작하는 데 걸리는 시간), 테스트 수행 횟수 및 선택적으로 시작 시간을 제어할 수 있습니다. 그리고 시험을 위한 정지 시간.

또한 tearDown 스레드 그룹setUp 스레드 그룹 을 참조하십시오 .

스케줄러를 사용할 때 JMeter는 루프 수에 도달하거나 기간/종료 시간 중 먼저 발생하는 시점까지 스레드 그룹을 실행합니다. 조건은 샘플 사이에서만 확인됩니다. 종료 조건에 도달하면 해당 스레드가 중지됩니다. JMeter는 응답을 기다리는 샘플러를 방해하지 않으므로 종료 시간이 임의로 지연될 수 있습니다.

스레드 그룹의 제어판 스크린샷
스레드 그룹의 제어판 스크린샷

JMeter 3.0부터 스레드 그룹을 선택하고 마우스 오른쪽 버튼을 클릭하여 실행할 수 있습니다. 팝업 메뉴가 나타납니다:

스레드 그룹 선택을 시작하는 팝업 메뉴
스레드 그룹 선택을 시작하는 팝업 메뉴

스레드 그룹 선택을 실행할 수 있는 세 가지 옵션이 있습니다.
시작
선택한 스레드 그룹만 시작
일시 중지 없이 시작
타이머를 실행하지 않고 선택한 스레드 그룹만 시작합니다.
확인
유효성 검사 모드를 사용하여 선택한 스레드 그룹만 시작합니다. 기본적으로 이것은 유효성 검사 모드에서 스레드 그룹을 실행합니다(아래 참조).
검증 모드:
이 모드는 스레드 그룹을 하나의 스레드, 하나의 반복, 타이머 및 시작 지연 이 0 으로 설정 되지 않은 상태로 실행하여 스레드 그룹의 빠른 검증을 가능하게 합니다 . user.properties 에서 설정하여 일부 속성으로 동작을 수정할 수 있습니다 .
testplan_validation.nb_threads_per_thread_group
스레드 그룹의 유효성을 검사하는 데 사용할 스레드 수, 기본적으로 1
testplan_validation.ignore_timers
기본적으로 계획의 스레드 그룹을 확인할 때 타이머를 무시합니다 .
testplan_validation.number_iterations
스레드 그룹의 유효성을 검사하는 데 사용할 반복 횟수
testplan_validation.tpc_force_100_pct
백분율 모드의 처리량 컨트롤러를 백분율이 100%인 것처럼 실행할지 여부입니다. 기본값은 false

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
샘플러 오류 후 취해야 할 조치
샘플 자체가 실패했거나 어설션이 실패했기 때문에 샘플러 오류가 발생하면 어떻게 되는지 결정합니다. 가능한 선택은 다음과 같습니다.
  • 계속 - 오류를 무시하고 테스트를 계속합니다.
  • 다음 스레드 루프 시작 - 오류를 무시하고 다음 루프를 시작하고 테스트를 계속하십시오.
  • 스레드 중지 - 현재 스레드 종료
  • 테스트 중지 - 현재 샘플이 끝나면 전체 테스트가 중지됩니다.
  • 지금 테스트 중지 - 전체 테스트가 갑자기 중지됩니다. 가능한 경우 모든 현재 샘플러가 중단됩니다.
아니
스레드 수
시뮬레이션할 사용자 수입니다.
램프업 기간
JMeter가 모든 스레드를 시작하는 데 걸리는 시간입니다. 10개의 스레드가 있고 100초의 램프업 시간이 있는 경우 각 스레드는 이전 스레드가 시작된 후 10초 동안 시작되어 테스트 속도를 완전히 높이는 데 총 100초가 소요됩니다.
첫 번째 스레드는 항상 직접 시작하므로 하나 의 스레드를 구성한 경우 램프업 시간은 사실상 0 입니다. 같은 이유로 위의 예에서 10번째 스레드는 실제로 100초가 아니라 90초 후에 시작됩니다.
루프 수
테스트 케이스를 수행할 횟수입니다. 또는 " 무한 "을 선택하여 수동으로 중지하거나 스레드 수명이 끝날 때까지 테스트를 실행할 수 있습니다.
예, 무한을 선택하지 않는 한
필요할 때까지 스레드 생성 지연
이 옵션을 선택하면 적절한 비율의 램프업 시간이 경과한 경우에만 스레드가 생성됩니다. 이것은 단일 스레드를 실행하는 시간보다 훨씬 더 긴 램프업 시간이 있는 테스트에 가장 적합합니다. 즉, 나중 스레드가 시작되기 전에 이전 스레드가 끝나는 곳입니다.
선택하지 않으면 테스트가 시작될 때 모든 스레드가 생성됩니다(그런 다음 적절한 비율의 램프업 시간 동안 일시 중지됨). 이것은 원래 기본값이며 대부분의 테스트에서 스레드가 활성 상태인 테스트에 적합합니다.
스레드 수명 지정
선택하면 스레드 작업 시간이 주어진 범위로 제한됩니다.
기간(초)
스케줄러 확인란을 선택하면 상대적인 종료 시간을 선택할 수 있습니다. JMeter는 이것을 사용하여 종료 시간을 계산합니다.
아니
시작 지연(초)
스케줄러 확인란을 선택하면 상대적 시작 지연을 선택할 수 있습니다. JMeter는 이것을 사용하여 시작 시간을 계산합니다.
아니
^^

워크벤치

^^

SSL 관리자

SSL 관리자는 PKI(공개 키 인프라)를 사용하는 응용 프로그램을 테스트할 수 있도록 클라이언트 인증서를 선택하는 방법입니다. 적절한 시스템 속성을 설정하지 않은 경우에만 필요합니다.

클라이언트 인증서 인증을 테스트하려면 키 저장소 구성 을 참조하세요.
클라이언트 인증서 선택

JKS(Java Key Store) 형식 키 저장소를 사용하거나 클라이언트 인증서에 대해 PKCS12(공개 키 인증서 표준 #12) 파일을 사용할 수 있습니다. JSSE 라이브러리에는 키에 최소 6자의 암호가 있어야 하는 기능이 있습니다(적어도 JDK와 함께 제공되는 keytool 유틸리티의 경우).

클라이언트 인증서를 선택하려면 메뉴 표시줄에서 옵션  →  SSL 관리자 를 선택합니다. 기본적으로 PKCS12 파일을 찾는 파일 찾기가 표시됩니다. SSL 관리자가 PKCS12 파일로 인식 하려면 PKCS12 파일의 확장자가 ' .p12 ' 여야 합니다. 다른 모든 파일은 평균 JKS 키 저장소처럼 취급됩니다. JSSE가 올바르게 설치된 경우 암호를 입력하라는 메시지가 표시됩니다. 이 시점에서 입력하는 문자는 텍스트 상자에 숨겨져 있지 않으므로 어깨 너머로 보고 있는 사람이 없는지 확인하세요. 현재 구현에서는 키 저장소의 비밀번호가 인증하려는 클라이언트의 개인 키에 대한 비밀번호이기도 하다고 가정합니다.

또는 적절한 시스템 속성을 설정할 수 있습니다 . system.properties 파일을 참조하십시오.

다음에 테스트를 실행할 때 SSL 관리자는 키 저장소를 검사하여 사용 가능한 키가 하나 이상 있는지 확인합니다. 키가 하나만 있는 경우 SSL 관리자가 키를 선택합니다. 키가 두 개 이상인 경우 현재 첫 번째 키를 선택합니다. 현재 키 저장소에서 다른 항목을 선택할 수 있는 방법이 없으므로 원하는 키가 첫 번째 키여야 합니다.

주의할 점

JDK와 함께 제공되는 5개의 CA 인증서 중 하나로 서명되지 않은 경우 인증 기관(CA) 인증서가 제대로 설치되어 있어야 합니다. 이를 설치하는 한 가지 방법은 CA 인증서를 JKS 파일로 가져오고 JKS 파일의 이름을 " jssecacerts "로 지정하는 것입니다. 파일을 JRE의 lib/security 폴더에 넣습니다. 이 파일은 같은 디렉토리에 있는 " cacerts " 파일 보다 먼저 읽힙니다 . " jssecacerts " 파일이 존재하는 한 " cacerts " 에 설치된 인증서 는 사용되지 않습니다. 이로 인해 문제가 발생할 수 있습니다. CA 인증서를 " cacerts" 파일이 있으면 설치된 모든 CA 인증서에 대해 인증할 수 있습니다.

^^

HTTP(S) 테스트 스크립트 레코더 (이전: HTTP 프록시 서버)

HTTP(S) 테스트 스크립트 레코더를 사용하면 일반 브라우저로 웹 애플리케이션을 탐색하는 동안 JMeter가 작업을 가로채고 기록할 수 있습니다. JMeter는 테스트 샘플 개체를 생성하고 이동하면서 테스트 계획에 직접 저장합니다(따라서 샘플을 만드는 동안 대화식으로 샘플을 볼 수 있음). JMeter를 올바르게 설정하려면 이 위키 페이지
를 읽으십시오 .

레코더를 사용하려면 HTTP(S) 테스트 스크립트 레코더 요소 를 추가 합니다. 테스트 계획 요소를 마우스 오른쪽 버튼으로 클릭하여 추가 메뉴를 가져옵니다. ( 추가  →  비 테스트 요소  →  HTTP(S) 테스트 스크립트 레코더 ).

레코더는 HTTP(S) 프록시 서버로 구현됩니다. 모든 HTTP 및 HTTPS 요청에 대해 프록시를 사용하도록 브라우저를 설정해야 합니다.

다른 요청 유형(FTP 등)에 대한 프록시로 JMeter를 사용하지 마십시오. JMeter는 이를 처리할 수 없습니다.

세션을 기록할 때 개인 브라우징 모드를 사용하는 것이 가장 좋습니다. 이렇게 하면 브라우저가 저장된 쿠키 없이 시작되고 특정 변경 사항이 저장되지 않도록 해야 합니다. 예를 들어, Firefox는 인증서 재정의가 영구적으로 저장되는 것을 허용하지 않습니다.

HTTPS 기록 및 인증서

HTTPS 연결은 인증서를 사용하여 브라우저와 웹 서버 간의 연결을 인증합니다. HTTPS를 통해 연결할 때 서버는 인증서를 브라우저에 제공합니다. 인증서를 인증하기 위해 브라우저는 내장된 루트 CA 중 하나에 연결된 인증 기관(CA)에서 서버 인증서에 서명했는지 확인합니다.

브라우저는 또한 인증서가 올바른 호스트 또는 도메인용인지, 유효하며 만료되지 않았는지 확인합니다.
브라우저 검사 중 하나라도 실패하면 연결을 계속할지 여부를 결정할 수 있는 사용자에게 메시지가 표시됩니다.

JMeter는 브라우저에서 HTTPS 연결을 가로챌 수 있도록 자체 인증서를 사용해야 합니다. 효과적으로 JMeter는 대상 서버인 척해야 합니다.

JMeter는 자체 인증서를 생성합니다. 이는 proxy.cert.validity 속성에 의해 정의된 유효 기간 , 기본 7일 및 임의의 암호로 생성됩니다. JMeter가 Java 8 이상에서 실행 중임을 감지하면 다음 속성이 정의되지 않는 한 필요에 따라 각 대상 서버에 대한 인증서를 생성합니다(동적 모드): proxy.cert.dynamic_keys=false. 동적 모드를 사용할 때 인증서는 올바른 호스트 이름에 대한 것이며 JMeter 생성 CA 인증서로 서명됩니다. 기본적으로 이 CA 인증서는 브라우저에서 신뢰할 수 없지만 신뢰할 수 있는 인증서로 설치할 수 있습니다. 이 작업이 완료되면 생성된 서버 인증서가 브라우저에서 수락됩니다. 이는 내장된 HTTPS 리소스도 가로챌 수 있고 각각의 새 서버에 대한 브라우저 검사를 재정의할 필요가 없다는 이점이 있습니다.

브라우저는 포함된 리소스를 묻는 메시지를 표시하지 않습니다. 따라서 이전 버전에서는 브라우저에 이미 '알려진' 서버에 대해서만 임베디드 리소스가 다운로드됩니다.

키 저장소가 제공되지 않는 한(및 속성 proxy.cert.alias 정의 ) JMeter는 키 저장소 항목을 생성하기 위해 keytool 애플리케이션을 사용해야 합니다. JMeter에는 다양한 표준 위치를 찾아 keytool이 사용 가능한지 확인하는 코드가 포함되어 있습니다. JMeter가 keytool 응용 프로그램을 찾을 수 없으면 오류가 보고됩니다. 필요한 경우 시스템 속성 keytool.directory 를 사용하여 JMeter에 keytool을 찾을 위치를 알릴 수 있습니다. 이것은 system.properties 파일에 정의되어야 합니다 .

시작 버튼을 누르면 JMeter 인증서가 생성됩니다(필요한 경우) .

인증서 생성에는 다소 시간이 걸릴 수 있으며 그 동안 GUI가 응답하지 않습니다.
이 작업이 수행되는 동안 커서가 모래 시계로 변경됩니다. 인증서 생성이 완료되면 GUI에 루트 CA에 대한 인증서 세부 정보가 포함된 팝업 대화 상자가 표시됩니다. 이 인증서는 JMeter에 의해 생성된 호스트 인증서를 수락하기 위해 브라우저에서 설치해야 합니다. 자세한 내용은 아래 를 참조하십시오.

필요한 경우 JMeter 디렉토리에서 키 저장소 파일 proxyserver.jks 를 삭제하여 JMeter가 키 저장소(및 내보낸 인증서 - ApacheJMeterTemporaryRootCA[.usr|.crt] )를 다시 생성하도록 할 수 있습니다.

이 인증서는 브라우저가 일반적으로 신뢰하는 인증서 중 하나가 아니며 올바른 호스트용이 아닙니다.
결과로서:

  • 브라우저는 인증서를 수락할지 여부를 묻는 대화 상자를 표시해야 합니다. 예를 들어:
    1) 서버 이름 " www.example.com "이 인증서 이름과 일치하지 않습니다.
       " _ 녹음용 JMeter 루트 CA(자신의 것인 경우에만 설치) ". 누군가 당신을 도청하려고 할 수 있습니다.
    2) " _ JMeter Root CA for recording (INSTALL ONLY IF IT S YOURS) "에 대한 인증서는 알 수 없는 인증 기관에서 서명했습니다.
       " _ 녹음용 JMeter 루트 CA(자신의 것인 경우에만 설치) ". 유효한 인증서인지 확인할 수 없습니다.
    
    JMeter 프록시가 SSL 트래픽을 기록하기 위해 가로채도록 허용하려면 인증서를 수락해야 합니다. 그러나 이 인증서를 영구적으로 수락하지 마십시오. 일시적으로만 받아들여야 합니다. 브라우저는 보안 외부 CDN에서 호스팅되는 이미지, CSS 또는 JavaScript 파일과 같이 페이지에 로드된 리소스가 아닌 기본 URL의 인증서에 대해서만 이 대화 상자를 표시합니다. 이러한 리소스가 있는 경우(예: Gmail에 있음) JMeter의 인증서를 수락하려면 먼저 이러한 다른 도메인을 수동으로 검색해야 합니다. 인증서를 등록해야 하는 보안 도메인 은 jmeter.log 에서 확인하십시오 .
  • 브라우저가 이미 이 도메인에 대해 검증된 인증서를 등록한 경우 브라우저는 JMeter를 보안 위반으로 감지하고 페이지 로드를 거부합니다. 그렇다면 브라우저의 키 저장소에서 신뢰할 수 있는 인증서를 제거해야 합니다.

2.10 이후의 JMeter 버전은 여전히 ​​이 방법을 지원하며 다음 속성을 정의하면 계속 지원할 것입니다. proxy.cert.alias 다음 속성을 사용하여 사용되는 인증서를 변경할 수 있습니다.

  • proxy.cert.directory - 인증서를 찾을 디렉토리(기본값 = JMeter bin/ )
  • proxy.cert.file - 키 저장소 파일의 이름(기본값 " proxyserver.jks ")
  • proxy.cert.keystorepass - 키 저장소 암호(기본값 " password ") [JMeter 인증서를 사용하는 경우 무시됨]
  • proxy.cert.keypassword - 인증서 키 비밀번호(기본값 " password ") [JMeter 인증서를 사용하는 경우 무시됨]
  • proxy.cert.type - 인증서 유형(기본값 " JKS ") [JMeter 인증서를 사용하는 경우 무시됨]
  • proxy.cert.factory - 공장(기본값 " SunX509 ") [JMeter 인증서를 사용하는 경우 무시됨]
  • proxy.cert.alias - 사용할 키의 별칭. 이것이 정의되면 JMeter는 자체 인증서 생성을 시도하지 않습니다.
  • proxy.ssl.protocol - 사용할 프로토콜(기본값 " SSLv3 ")
브라우저가 현재 프록시를 사용하는 경우(예: 회사 인트라넷이 프록시를 통해 모든 외부 요청을 라우팅할 수 있음) JMeter를 시작하기 전에 명령줄 옵션 -H-P 를 사용 하여 해당 프록시를 사용하도록 JMeter에 알려야 합니다 . 이 설정은 생성된 테스트 계획을 실행할 때도 필요합니다.

HTTPS 기록을 위한 JMeter CA 인증서 설치

위에서 언급했듯이 JMeter는 Java 8에서 실행될 때 각 서버에 대한 인증서를 생성할 수 있습니다. 이것이 원활하게 작동하려면 JMeter에서 사용하는 루트 CA 서명 인증서가 브라우저에서 신뢰할 수 있어야 합니다. 레코더를 처음 시작할 때 필요한 경우 인증서를 생성합니다. 루트 CA 인증서는 현재 실행 디렉토리에서 ApacheJMeterTemporaryRootCA 라는 이름의 파일로 내보내집니다. 인증서가 설정되면 JMeter는 현재 인증서 세부 정보가 포함된 대화 상자를 표시합니다. 이 시점에서 아래 지침에 따라 인증서를 브라우저로 가져올 수 있습니다.

루트 CA 인증서가 신뢰할 수 있는 CA로 설치되면 브라우저는 이 인증서가 서명한 모든 인증서를 신뢰합니다. 인증서가 만료되거나 브라우저에서 인증서가 제거될 때까지 인증서가 사용 중임을 사용자에게 경고하지 않습니다. 따라서 키 저장소와 비밀번호를 얻을 수 있는 사람은 누구나 인증서를 사용하여 JMeter 루트 CA 인증서를 신뢰하는 모든 브라우저에서 수락할 인증서를 생성할 수 있습니다. 이러한 이유로 키 저장소 및 개인 키의 암호는 무작위로 생성되고 짧은 유효 기간이 사용됩니다. 암호는 로컬 기본 설정 영역에 저장됩니다. 신뢰할 수 있는 사용자만 키 저장소가 있는 호스트에 액세스할 수 있는지 확인하십시오.

레코더를 시작하면 표시되는 팝업은 정보 팝업입니다.
레코더 설치 인증서 팝업
레코더 설치 인증서 팝업
확인을 클릭하고 계속 진행하십시오.
Firefox에 인증서 설치

다음 옵션을 선택합니다.

  • 도구/옵션
  • 고급 / 인증서
  • 인증서 보기
  • 당국
  • 가져오기 …
  • JMeter 시작 디렉토리로 이동하여 ApacheJMeterTemporaryRootCA.crt 파일을 클릭하고 열기 를 누릅니다.
  • 보기 를 클릭 하고 인증서 세부 정보가 JMeter 테스트 스크립트 레코더에 표시된 내용과 일치하는지 확인합니다.
  • 확인되면 " 이 CA를 신뢰하여 웹 사이트 식별 "을 선택 하고 확인을 누릅니다 .
  • 필요에 따라 확인 을 눌러 대화 상자를 닫습니다 .
Chrome 또는 Internet Explorer에 인증서 설치

Chrome과 Internet Explorer는 인증서에 대해 동일한 신뢰 저장소를 사용합니다.

  • JMeter 시작 디렉토리로 이동하여 ApacheJMeterTemporaryRootCA.crt 파일을 클릭 하고 엽니다.
  • " 세부사항 " 탭을 클릭 하고 인증서 세부사항이 JMeter 테스트 스크립트 레코더에 의해 표시된 것과 일치하는지 확인하십시오.
  • 확인되면 " 일반 " 탭 으로 돌아가서 " 인증서 설치 ... "를 클릭하고 마법사의 지시를 따릅니다.
Opera에서 인증서 설치
  • 도구 / 기본 설정 / 고급 / 보안
  • 인증서 관리 …
  • " 중간 " 탭을 선택하고 " 가져오기 ... " 를 클릭하십시오 .
  • JMeter 시작 디렉토리로 이동하여 ApacheJMeterTemporaryRootCA.usr 파일을 클릭 하고 엽니다.
HTTP(S) 테스트 스크립트 레코더의 제어판 스크린샷
HTTP(S) 테스트 스크립트 레코더의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
아니
포트
HTTP(S) 테스트 스크립트 레코더가 수신 대기하는 포트입니다. 8888 이 기본값이지만 변경할 수 있습니다.
HTTPS 도메인
HTTPS의 도메인(또는 호스트) 이름 목록입니다. 이를 사용하여 기록하려는 모든 서버에 대한 인증서를 미리 생성합니다.
예: *.example.com,*.subdomain.example.com
와일드카드 도메인은 한 수준에만 적용됩니다. 즉, abc.subdomain.example.com은 * .subdomain.example.com 과 일치 하지만 *.example.com 은 일치하지 않습니다.
아니
대상 컨트롤러
프록시가 생성된 샘플을 저장할 컨트롤러입니다. 기본적으로 녹음 컨트롤러를 찾아 어디에 있던지 저장합니다.
그룹화
단일 "클릭" 요청에 대해 샘플러를 그룹화할지 여부(상당한 시간 간격 없이 수신된 요청) 및 녹음에서 해당 그룹화를 나타내는 방법:
  • 샘플러를 그룹화하지 마십시오 . 기록된 모든 샘플러를 그룹화하지 않고 순차적으로 저장합니다.
  • 그룹 사이에 구분 기호 추가 - " -------------- " 라는 컨트롤러를 추가하여 그룹 사이를 시각적으로 구분합니다. 그렇지 않으면 샘플러가 모두 순차적으로 저장됩니다.
  • 각 그룹을 새 컨트롤러에 넣습니다. 각 그룹에 대해 새 단순 컨트롤러 를 만들고 해당 그룹에 대한 모든 샘플러를 그 안에 저장합니다.
  • 각 그룹의 첫 번째 샘플러만 저장 합니다 . 각 그룹의 첫 번째 요청만 기록됩니다. " Follow Redirects " 및 " Retrieve All Embedded Resources ... " 플래그는 해당 샘플러에서 켜집니다.
  • 각 그룹을 새 트랜잭션 컨트롤러에 넣습니다. 각 그룹에 대해 새 트랜잭션 컨트롤러 만들고 해당 그룹에 대한 모든 샘플러를 그 안에 저장합니다.
proxy.pause 속성 은 JMeter가 요청을 별도의 "클릭"으로 처리하기 위해 요청 사이에 필요한 최소 간격을 결정합니다. 기본값은 5000 (밀리초), 즉 5초입니다. 그룹화를 사용하는 경우 클릭 사이에 필요한 간격을 유지해야 합니다.
HTTP 헤더 캡처
헤더를 계획에 추가해야 합니까? 지정된 경우 헤더 관리자가 각 HTTP 샘플러에 추가됩니다. 프록시 서버는 항상 생성된 헤더 관리자에서 쿠키 및 권한 부여 헤더를 제거합니다. 기본적으로 If-Modified-SinceIf-None-Match 헤더도 제거합니다. 브라우저 캐시 항목이 최신 상태인지 확인하는 데 사용됩니다. 녹화할 때 일반적으로 모든 콘텐츠를 다운로드하려고 합니다. 제거할 추가 헤더를 변경하려면 JMeter 속성 proxy.headers.remove 를 쉼표로 구분된 헤더 목록으로 정의합니다.
주장 추가
각 샘플러에 빈 주장을 추가하시겠습니까?
정규식 일치
변수를 바꿀 때 정규식 일치를 사용하시겠습니까? 확인된 대체가 단어 경계를 사용하는 경우, 즉 단어의 일부가 아닌 변수의 값과 일치하는 단어만 대체합니다. 단어 경계는 Perl5 정의를 따르며 \b 와 동일합니다 . " 사용자 정의 변수 교체 " 에 대한 단락 아래의 자세한 정보 .
접두사/트랜잭션 이름
녹음 중 샘플러 이름에 접두사를 추가합니다(접두사 모드). 또는 샘플러 이름을 사용자가 선택한 이름(트랜잭션 이름)으로 바꿉니다.
아니
명명 체계
녹음하는 동안 샘플러 이름에 대한 명명 체계를 선택합니다. 기본값은 트랜잭션 이름 입니다.
아니
명명 형식
형식 문자열 사용 을 명명 체계로 선택하면 자유 형식을 지정할 수 있습니다 . 트랜잭션 이름, 경로 및 카운터에 대한 자리 표시자는 #{name} , #{path}#{counter} 로 지정할 수 있습니다 . 간단한 형식은 " #{name}-#{counter} "일 수 있으며, 이는 번호가 매겨진 기본 명명 체계와 동일합니다. 보다 복잡한 형식의 경우 " #{counter,number,000}: #{name}-#{path} " 에서와 같이 MessageFormat에 대한 Java 형식을 사용할 수 있습니다 . 그러면 카운터가 최대 3개의 0으로 채워져 인쇄됩니다. 기본값은 빈 문자열입니다.
아니
카운터 시작 값
카운터를 지정된 값으로 재설정하는 데 사용할 수 있습니다. 다음 샘플은 먼저 증분한 다음 값을 사용합니다. 첫 번째 샘플러가 1 로 시작해야 하는 경우 카운터를 0 으로 재설정합니다 .
아니
요청 후 새 트랜잭션 생성(ms)
두 개의 개별 그룹으로 간주하는 데 필요한 두 요청 사이의 비활성 시간입니다.
아니
유형
생성할 샘플러 유형(HTTPClient 기본값 또는 Java)
자동으로 리디렉션
생성된 샘플러에서 자동으로 리디렉션을 설정하시겠습니까?
리디렉션 팔로우
생성된 샘플러에서 Follow Redirects를 설정하시겠습니까?
참고: 중요한 정보는 아래의 "녹화 및 리디렉션" 섹션을 참조하십시오.
연결 유지 사용
생성된 샘플러에서 Keep-Alive 사용을 설정하시겠습니까?
포함된 모든 리소스 검색
생성된 샘플러에서 모든 임베디드 리소스 검색을 설정하시겠습니까?
콘텐츠 유형 필터
콘텐츠 유형 에 따라 요청을 필터링합니다 (예: " text/html [;charset=utf-8 ] "). 필드는 content-type 에 포함되어 있는지 확인하는 정규식입니다 . [필드 전체를 일치시킬 필요는 없습니다.] 포함 필터를 먼저 확인한 다음 제외 필터를 확인합니다. 필터링된 샘플은 저장되지 않습니다.
참고: 이 필터링은 응답의 콘텐츠 유형에 적용됩니다.
아니
포함할 패턴
샘플링된 전체 URL과 일치하는 정규식입니다. 기록된 요청을 필터링할 수 있습니다. 모든 요청은 통과하지만 포함 / 제외 필드 의 요구 사항을 충족하는 요청만 기록 됩니다. IncludeExclude 가 모두 비어 있으면 모든 것이 기록됩니다(이미지, 스타일시트 등이 기록됨에 따라 각 페이지에 대해 수십 개의 샘플이 기록될 수 있음).
포함 필드 에 항목이 하나 이상 있는 경우 하나 이상의 포함 패턴과 일치하는 요청만 기록됩니다 .
.
아니
제외할 패턴
샘플링된 URL과 일치하는 정규식입니다.
하나 이상의 제외 패턴 과 일치하는 모든 요청은 기록 되지 않습니다 .
.
아니
필터링된 샘플러의 하위 리스너에게 알림
필터링된 샘플러의 하위 리스너에게 알림
하나 이상의 제외 패턴 과 일치하는 응답은 하위 리스너에게 전달 되지 않습니다 (결과 트리 보기).
.
아니
시작 버튼
프록시 서버를 시작합니다. JMeter는 프록시 서버가 시작되고 요청을 받을 준비가 되면 " Proxy up and running! " 메시지를 콘솔에 씁니다.
해당 없음
정지 버튼
프록시 서버를 중지합니다.
해당 없음
다시 시작 버튼
프록시 서버를 중지했다가 다시 시작합니다. 이는 포함/제외 필터 표현식을 변경/추가/삭제할 때 유용합니다.
해당 없음

녹음 및 리디렉션

기록하는 동안 브라우저는 리디렉션 응답을 따라 추가 요청을 생성합니다. 프록시는 원래 요청과 리디렉션된 요청을 모두 기록합니다(구성된 제외 항목에 따름). 생성된 샘플에는 기본적으로 " 리디렉션 따르기 "가 선택되어 있습니다. 일반적으로 더 좋기 때문입니다.

리디렉션은 원래 요청에 따라 달라질 수 있으므로 원래 녹음된 샘플을 반복하는 것이 항상 작동하지 않을 수 있습니다.

이제 JMeter가 재생 중에 리디렉션을 따르도록 설정되면 원래 요청을 발행한 다음 기록된 리디렉션 요청을 재생합니다. 이 중복 재생을 피하기 위해 JMeter는 샘플이 이전 리디렉션의 결과인 경우를 감지하려고 시도합니다. 현재 응답이 리디렉션인 경우 JMeter는 리디렉션 URL을 저장합니다. 다음 요청이 수신되면 저장된 리디렉션 URL과 비교되고 일치하는 경우 JMeter는 생성된 샘플을 비활성화합니다. 또한 리디렉션 체인에 주석을 추가합니다. 이것은 리디렉션 체인의 모든 요청이 개입 요청 없이 서로를 따를 것이라고 가정합니다. 리디렉션 감지를 비활성화하려면 proxy.redirect.disabling=false 속성을 설정하십시오.

포함 및 제외

포함 및 제외 패턴 은 정규식으로 처리됩니다(자카르타 ORO 사용). 각 브라우저 요청의 호스트 이름, 포트(실제 또는 암시), 경로 및 쿼리(있는 경우)와 일치합니다. 탐색 중인 URL이
" http://localhost/jmeter/index.html?username=xxxx "인
경우 정규식은
" localhost:80/jmeter/index.html?username=xxxx " 문자열에 대해 테스트됩니다. ". 따라서 모든 .html
파일 을 포함하려는 경우 정규식은 " .*\.html(\?.*)? " - 또는 쿼리 문자열이 없다는 것을 알고 있는 경우 " .*\.html 또는 쿼리 문자열이 없는 html 페이지만 원합니다.

포함 패턴이 있는 경우 URL 은 패턴 중 하나 이상과 일치해야 합니다 . 그렇지 않으면 기록되지 않습니다. 제외 패턴이 있는 경우 URL 은 패턴 과 일치하지 않아야 하며 그렇지 않으면 기록되지 않습니다. 포함과 제외의 조합을 사용하여 관심 있는 항목을 기록하고 관심이 없는 항목은 건너뛸 수 있어야 합니다.

NB 정규식과 일치하는 문자열은 전체 호스트+경로 문자열과 동일해야 합니다.
따라서 " \.html "은 localhost:80/index.html 과 일치 하지 않습니다 .

바이너리 POST 데이터 캡처

JMeter는 바이너리 POST 데이터를 캡처할 수 있습니다. 바이너리로 처리되는 콘텐츠 유형 을 구성하려면 JMeter 속성 proxy.binary.types 를 업데이트하십시오 . 기본 설정은 다음과 같습니다.

# 이러한 콘텐츠 유형은 요청을 파일에 저장하여 처리됩니다.
proxy.binary.types=application/x-amf,application/x-java-serialized-object
# 파일은 다음 디렉토리에 저장됩니다.
proxy.binary.directory=user.dir
# 파일은 다음 파일 파일 접미사로 생성됩니다.
proxy.binary.filesuffix=.binary

타이머 추가

프록시가 기록된 스크립트에 타이머를 추가하도록 할 수도 있습니다. 이렇게 하려면 HTTP(S) 테스트 스크립트 레코더 구성 요소 내에서 직접 타이머를 만듭니다. 프록시는 이 타이머의 복사본을 기록하는 각 샘플에 배치하거나 그룹화를 사용하는 경우 각 그룹의 첫 번째 샘플에 배치합니다. 그런 다음 이 복사본은 속성에서 변수 ${T} 의 발생에 대해 스캔 되고 이러한 발생은 기록된 이전 샘플러와의 시간 간격(밀리초)으로 대체됩니다.

시작할 준비가 되면 " 시작 "을 누르십시오.

적절한 서버와 포트를 가리키도록 브라우저의 프록시 설정을 편집해야 합니다. 여기서 서버는 JMeter가 실행 중인 시스템이고 포트 번호는 위에 표시된 프록시 제어판에서 가져옵니다.

샘플은 어디에 기록됩니까?

JMeter는 선택한 대상 컨트롤러에 녹음된 샘플을 배치합니다. 기본 옵션 " 녹음 컨트롤러 사용 "을 선택 하면 테스트 개체 트리에서 찾은 첫 번째 녹음 컨트롤러에 저장됩니다(그래서 녹음을 시작하기 전에 녹음 컨트롤러를 추가해야 함).

프록시가 샘플을 기록하지 않는 것 같으면 브라우저가 실제로 프록시를 사용하고 있지 않기 때문일 수 있습니다. 이 경우인지 확인하려면 프록시를 중지해 보십시오. 브라우저가 여전히 페이지를 다운로드하는 경우 프록시를 통해 요청을 보내지 않은 것입니다. 브라우저 옵션을 다시 확인하십시오. 동일한 호스트에서 실행되는 서버에서 기록을 시도하는 경우 브라우저가 " 로컬 주소에 대해 프록시 서버 우회 "로 설정되어 있지 않은지 확인하십시오 (이 예는 IE7에서 가져온 것이지만 다른 브라우저에서도 유사한 옵션이 있을 것입니다). JMeter가 http://localhost/ 또는 http://127.0.0.1/ 과 같은 브라우저 URL을 기록하지 않는 경우 루프백이 아닌 호스트 이름 또는 IP 주소(예: http://myhost/ 또는 http://192.168)를 사용해 보십시오. 0.2/ .

HTTP 요청 기본값 처리

HTTP(S) 테스트 스크립트 레코더가 샘플이 저장되고 있는 컨트롤러 내에서 또는 상위 컨트롤러 내에서 직접 활성화된 HTTP 요청 기본값 을 찾으면 기록된 샘플에는 사용자가 지정한 기본값에 대한 빈 필드가 있습니다. 공백이 아닌 값이 다른 HTTP 요청 기본값을 재정의하는 HTTP(S) 테스트 스크립트 레코더 내에 HTTP 요청 기본값 요소를 직접 배치하여 이 동작을 추가로 제어할 수 있습니다. 자세한 내용 은 HTTP(S) 테스트 스크립트 레코더의 모범 사례를 참조 하세요.

사용자 정의 변수 대체

유사하게, HTTP(S) 테스트 스크립트 레코더가 샘플이 저장되는 컨트롤러 내에서 직접 또는 상위 컨트롤러 내에서 직접 사용자 정의 변수 (UDV)를 찾으면 기록된 샘플에는 해당 변수 값의 모든 항목이 있습니다. 해당 변수로 대체됩니다. 다시 말하지만, HTTP(S) 테스트 스크립트 레코더 내에 직접 사용자 정의 변수를 배치하여 대체할 값을 재정의할 수 있습니다. 자세한 내용 은 테스트 스크립트 레코더의 모범 사례를 참조하세요 .

일치는 대소문자를 구분합니다.

변수에 의한 대체: 기본적으로 프록시 서버는 UDV 값의 모든 발생을 찾습니다. 예를 들어 www 값 을 사용하여 변수 WEB 를 정의하는 경우 www 문자열 은 발견될 때마다 ${WEB} 으로 대체됩니다 . 모든 곳에서 이러한 일이 발생하지 않도록 하려면 " Regex Matching " 확인란을 설정하십시오. 이것은 프록시 서버가 값을 정규식으로 취급하도록 지시합니다(ORO에서 제공하는 perl5 호환 정규식 일치자를 사용).

" Regex Matching "을 선택하면 모든 변수가 \b()\b 로 묶인 perl 호환 정규식으로 컴파일됩니다 . 그런 식으로 각 일치는 단어 경계에서 시작하고 끝납니다.

경계 문자는 일치하는 그룹의 일부가 아닙니다. 예를 들어 n.* 에서 이름 을 일치시키기 위해 You can call me 'name' 을 호출할 수 있습니다 .

정규식을 경계 일치자로 묶지 않으려면 정규식을 괄호로 묶어야 합니다(예: ('.*?')You can call me 'name' 의 'name' 과 일치 합니다.

변수는 무작위 순서로 검사됩니다. 따라서 잠재적인 일치 항목이 겹치지 않도록 하십시오. 겹치는 일치자는 .* (무엇이든 일치) 및 www ( www 만 일치)입니다. 겹치지 않는 매처는 a+ (a 시퀀스와 일치 ) 및 b+ ( b 의 시퀀스와 일치 )입니다.

전체 문자열만 일치시키려면 (^$) 로 묶으십시오( 예: (^thus$) ) . 일반적으로 추가된 경계 문자로 인해 ^$ 가 일치하지 않으므로 괄호가 필요합니다.

문자열 시작 부분에서만 /images 를 일치시키려면 (^/images) 값을 사용하십시오 . Jakarta ORO는 너비가 0인 미리보기도 지원하므로 /images/… 와 일치시킬 수 있지만 (^/images(?=/)) 를 사용하여 출력에서 ​​후행 / 를 유지할 수 있습니다.

자카르타 ORO의 현재 버전은 look-behind - 즉 (?<=…) 또는 (?<!…) 를 지원하지 않습니다 .

겹치는 일치자를 찾으십시오. 예를 들어 regex라는 변수의 정규식으로 값 . * 이전에 대체된 변수와 부분적으로 일치하여 ${{regex} 와 같은 결과를 가져옵니다. 이는 아마도 원하는 결과가 아닐 것입니다.

변수를 패턴으로 해석하는 데 문제가 있으면 jmeter.log 에 보고 되므로 UDV가 예상대로 작동하지 않는 경우 이를 확인하십시오.

테스트 샘플 기록이 완료되면 프록시 서버를 중지합니다(" 중지 " 버튼 누르기). 브라우저의 프록시 설정을 재설정하는 것을 잊지 마십시오. 이제 테스트 스크립트를 정렬 및 재정렬하고 타이머, 리스너, 쿠키 관리자 등을 추가할 수 있습니다.

서버의 응답도 기록하려면 어떻게 해야 합니까?

보기 결과 트리 수신기를 HTTP(S) 테스트 스크립트 레코더의 자식으로 배치하기만 하면 응답이 표시됩니다. 파일에 대한 응답을 저장할 파일 포스트 프로세서에 응답 저장 을 추가할 수도 있습니다 .

요청과 응답 연결

proxy.number.requests=true 속성을 정의하면 JMeter는 각 샘플러와 각 응답에 숫자를 추가합니다. 제외 또는 포함이 사용된 경우 샘플러보다 응답이 더 많을 수 있습니다. 제외된 응답에는 [] 로 묶인 레이블이 있습니다( 예: [23 /favicon.ico]).

쿠키 관리자

테스트 중인 서버가 쿠키를 사용하는 경우 기록을 마쳤을 때 테스트 계획에 HTTP 쿠키 관리자 를 추가하는 것을 잊지 마십시오. 기록하는 동안 브라우저는 모든 쿠키를 처리하지만 JMeter는 테스트 실행 중에 쿠키를 처리하기 위해 쿠키 관리자가 필요합니다. JMeter 프록시 서버는 기록하는 동안 브라우저에서 보낸 모든 쿠키를 전달하지만 실행 사이에 변경될 가능성이 있기 때문에 테스트 계획에 저장하지 않습니다.

권한 부여 관리자

HTTP(S) 테스트 스크립트 레코더는 " 인증 " 헤더를 가져오고 인증 정책을 계산하려고 시도합니다. 권한 부여 관리자가 대상 컨트롤러에 수동으로 추가된 경우 HTTP(S) 테스트 스크립트 레코더가 이를 찾아 권한을 추가합니다(일치하는 항목은 제거됨). 그렇지 않으면 Authorization Manager가 권한 개체와 함께 대상 컨트롤러에 추가됩니다. 기록 후 자동으로 계산된 값을 수정해야 할 수도 있습니다.

파일 업로드

일부 브라우저(예: Firefox 및 Opera)는 파일을 업로드할 때 파일의 전체 이름을 포함하지 않습니다. 이로 인해 JMeter 프록시 서버가 실패할 수 있습니다. 한 가지 해결책은 업로드할 파일이 JMeter 작업 디렉토리에 있는지 확인하는 것입니다. 여기에 파일을 복사하거나 파일이 포함된 디렉토리에서 JMeter를 시작합니다.

JMeter에서 기본적으로 사용할 수 없는 HTTP 기반 비텍스트 프로토콜 기록

JMeter(Custom Binary Protocol, Adobe Flex, Microsoft Silverlight 등)에서 기본적으로 처리하지 않는 HTTP 프로토콜을 기록해야 할 수도 있습니다. JMeter는 이러한 프로토콜을 기록하기 위한 기본 프록시 구현을 제공하지 않지만 사용자 지정 SamplerCreator 를 구현하여 이러한 프로토콜을 기록할 수 있습니다 . 이 샘플러 생성기는 바이너리 형식을 JMeter 테스트 케이스에 추가할 수 있는 HTTPSamplerBase 하위 클래스로 변환합니다. 자세한 내용은 "JMeter 확장"을 참조하십시오.

^^

HTTP 미러 서버

HTTP 미러 서버는 매우 간단한 HTTP 서버입니다. 단순히 전송된 데이터를 미러링합니다. 이것은 HTTP 요청의 내용을 확인하는 데 유용합니다.

기본 포트 8081 을 사용 합니다.

HTTP 미러 서버의 제어판 스크린샷
HTTP 미러 서버의 제어판 스크린샷

매개변수

기인하다
설명
필수의
포트
미러 서버가 수신하는 포트, 기본값은 8081 입니다.
최대 스레드 수
값 > 0 으로 설정하면 요청을 처리하는 스레드 수는 구성된 수로 제한되고 값 ≤ 0 으로 설정하면 들어오는 각 요청을 처리하기 위해 새 스레드가 생성됩니다. 기본값은 0 입니다.
아니
최대 대기열 크기
스레드 풀에서 작업을 실행하기 전에 작업을 유지하는 데 사용되는 대기열의 크기입니다. 스레드 풀을 초과하면 들어오는 요청이 이 대기열에 보관되고 이 대기열이 가득 차면 폐기됩니다. 이 매개변수는 최대 스레드 수가 0 보다 큰 경우에만 사용됩니다 . 기본값은 25 입니다.
아니
다음 이름/값 쌍으로 HTTP 헤더 관리자를 추가하여 응답을 더 많이 제어할 수 있습니다.

매개변수

기인하다
설명
필수의
엑스슬립
응답을 보내기 전에 절전 모드로 전환되는 시간(ms)
아니
X-SetCookie
응답 시 설정할 쿠키
아니
X-응답 상태
응답 상태, HTTP 상태 응답 참조 , 예 200 OK, 500 Internal Server Error, …
아니
X-응답 길이
응답 크기, 전체 크기보다 작은 경우 요청된 크기로 응답을 자릅니다.
아니
X-SetHeaders
파이프로 구분된 헤더 목록, 예:
headerA: valueA|headerB: valueB 는 headerA 를 valueA 로 설정 하고 headerB 를 valueB설정 합니다 .
아니

다음 쿼리 매개변수를 사용할 수도 있습니다.

매개변수

기인하다
설명
필수의
리디렉션
제공된 위치로 302(임시 리디렉션)를 생성합니다(예: ?redirect=/path ).
아니
상태
기본 상태 반환을 무시합니다(예: ?status=404 Not Found ).
아니
V
Verbose 플래그, 표준 출력에 일부 세부 정보를 씁니다(예: 지정된 경우 첫 번째 줄 및 리디렉션 위치).
아니
^^

속성 표시

속성 표시는 시스템 또는 JMeter 속성의 값을 보여줍니다. 값 열에 새 텍스트를 입력하여 값을 변경할 수 있습니다.

속성 표시 제어판의 스크린샷
속성 표시 제어판의 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
아니
^^

디버그 샘플러

디버그 샘플러는 모든 JMeter 변수 및/또는 속성 값을 포함하는 샘플을 생성합니다.

값은 결과 트리 리스너 응답 데이터 보기 창 에서 볼 수 있습니다 .

디버그 샘플러의 제어판 스크린샷
디버그 샘플러의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
아니
JMeter 속성
JMeter 속성을 포함하시겠습니까?
JMeter 변수
JMeter 변수를 포함하시겠습니까?
시스템 속성
시스템 속성을 포함하시겠습니까?
^^

디버그 포스트 프로세서

Debug PostProcessor는 이전 샘플러 속성, JMeter 변수, 속성 및/또는 시스템 속성의 세부 정보를 사용하여 하위 샘플을 만듭니다.

값은 결과 트리 리스너 응답 데이터 보기 창 에서 볼 수 있습니다 .

디버그 포스트 프로세서의 제어판 스크린샷
디버그 포스트 프로세서의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
아니
JMeter 속성
JMeter 속성을 표시할지 여부(기본값 false ).
JMeter 변수
JMeter 변수를 표시할지 여부(기본값 false ).
샘플러 속성
샘플러 속성을 표시할지 여부(기본값 true ).
시스템 속성
시스템 속성 표시 여부(기본값은 false ).
^^

테스트 조각

테스트 조각의 제어판 스크린샷
테스트 조각의 제어판 스크린샷

매개변수

기인하다
설명
필수의
이름
트리에 표시되는 이 요소에 대한 설명 이름입니다.
모듈 컨트롤러 와 함께 테스트 조각을 사용할 때 테스트 조각 자체가 실행되지 않도록 테스트 조각을 비활성화해야 합니다. 이것은 JMeter 2.13부터 기본적으로 수행됩니다.
^^

스레드 그룹 설정

사전 테스트 작업을 수행하는 데 사용할 수 있는 특수한 유형의 ThreadGroup입니다. 이러한 스레드의 동작은 일반 스레드 그룹 요소와 정확히 같습니다. 차이점은 이러한 유형의 스레드는 테스트가 일반 스레드 그룹의 실행으로 진행되기 전에 실행된다는 것입니다.

설정 스레드 그룹의 제어판 스크린샷
설정 스레드 그룹의 제어판 스크린샷
^^

티어다운 스레드 그룹

테스트 후 작업을 수행하는 데 사용할 수 있는 특수한 유형의 ThreadGroup입니다. 이러한 스레드의 동작은 일반 스레드 그룹 요소와 정확히 같습니다. 차이점은 이러한 유형의 스레드는 테스트가 일반 스레드 그룹 실행을 완료한 후에 실행된다는 것입니다.

tearDown 스레드 그룹의 제어판 스크린샷
tearDown 스레드 그룹의 제어판 스크린샷
기본적으로 테스트가 정상적으로 종료되면 실행되지 않습니다. 이 경우 실행하려면 테스트 계획 요소에서 " 주 스레드 종료 후 tearDown 스레드 그룹 실행 " 옵션을 선택해야 합니다. 테스트 계획이 중지되면 옵션을 선택하더라도 해제가 실행되지 않습니다.
그림 1 - 메인 스레드 종료 후 tearDown 스레드 그룹 실행
그림 1 - 메인 스레드 종료 후 tearDown 스레드 그룹 실행
^^
^^
Go to top