18 소개 ¶
18.1 샘플러 ¶
샘플러는 JMeter의 실제 작업을 수행합니다. 각 샘플러( Flow Control Action 제외 )는 하나 이상의 샘플 결과를 생성합니다. 샘플 결과는 다양한 속성(성공/실패, 경과 시간, 데이터 크기 등)을 가지며 다양한 리스너에서 볼 수 있습니다.
FTP 요청 ¶
대기 시간은 로그인하는 데 걸리는 시간으로 설정됩니다.
매개변수 ¶
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 , DELETE 및 TRACE 메서드만 지원합니다.
- DNS Cache Manager 로 DNS 캐싱에 대한 더 나은 제어
요청에 서버 또는 프록시 로그인 인증이 필요한 경우(즉, 브라우저가 팝업 대화 상자를 생성하는 경우) HTTP 인증 관리자 구성 요소도 추가해야 합니다. 일반 로그인의 경우(즉, 사용자가 양식에 로그인 정보를 입력하는 경우) 양식 제출 버튼이 무엇을 하는지 알아내고 적절한 메소드(일반적으로 POST )와 양식 정의의 적절한 매개변수를 사용하여 HTTP 요청을 생성해야 합니다. . 페이지에서 HTTP를 사용하는 경우 JMeter 프록시를 사용하여 로그인 시퀀스를 캡처할 수 있습니다.
각 스레드에 대해 별도의 SSL 컨텍스트가 사용됩니다. 단일 SSL 컨텍스트(브라우저의 표준 동작이 아님)를 사용하려면 JMeter 속성을 설정하십시오.
https.sessioncontext.shared=true기본적으로 버전 5.0부터 SSL 컨텍스트는 스레드 그룹 반복 중에 유지되고 각 테스트 반복에 대해 재설정됩니다. 테스트 계획에서 동일한 사용자가 여러 번 반복하는 경우 이를 false로 설정해야 합니다.
httpclient.reset_state_on_thread_group_iteration=true
https.default.protocol=SSLv3
JMeter는 또한 https.socket.protocols 속성을 변경하여 추가 프로토콜을 활성화할 수 있습니다 .
요청이 쿠키를 사용하는 경우 HTTP 쿠키 관리자 도 필요합니다 . 스레드 그룹 또는 HTTP 요청에 이러한 요소 중 하나를 추가할 수 있습니다. 권한 부여 또는 쿠키가 필요한 HTTP 요청이 두 개 이상 있는 경우 스레드 그룹에 요소를 추가하십시오. 그렇게 하면 모든 HTTP 요청 컨트롤러가 동일한 권한 부여 관리자와 쿠키 관리자 요소를 공유합니다.
요청이 세션을 유지 관리하기 위해 "URL 재작성"이라는 기술을 사용하는 경우 추가 구성 단계에 대해서는 섹션 6.1 URL 재작성으로 사용자 세션 처리 를 참조하십시오.
매개변수 ¶
- HTTP 요청 기본값 에 의해 제공됩니다.
- 또는 스키마, 호스트 및 포트( scheme://host:port ) 를 포함하는 전체 URL 이 경로 필드 에 설정됩니다.
Duration Assertion 은 완료하는 데 너무 오래 걸리는 응답을 감지하는 데 사용할 수 있습니다 .
JMeter 속성 httpsampler.user_defined_methods 를 사용하여 HttpClient4에 대해 더 많은 메서드를 미리 정의할 수 있습니다 .
"리디렉션이 요청되었지만 followRedirects가 비활성화되었습니다"이것은 무시할 수 있습니다.
JMeter는 절대 및 상대 리디렉션 URL 모두에서 ' /../segment ' 형식의 경로를 축소합니다. 예를 들어 http://host/one/../two 는 http://host/two 로 축소됩니다 . 필요한 경우 JMeter 속성 httpsampler.redirect.removeslashdotdot=false 를 설정하여 이 동작을 억제할 수 있습니다.
또한 각 매개변수를 URL로 인코딩해야 하는지 여부를 지정할 수 있습니다. 이것이 무엇을 의미하는지 확실하지 않은 경우 선택하는 것이 가장 좋습니다. 값에 다음과 같은 문자가 포함되어 있으면 일반적으로 인코딩이 필요합니다.:
- ASCII 제어 문자
- 비 ASCII 문자
- 예약 문자: URL은 구문을 정의할 때 특별한 용도로 일부 문자를 사용합니다. 이러한 문자가 URL 내에서 특정 역할에 사용되지 않는 경우 인코딩해야 합니다(예: ' $ ', ' & ', ' + ', ' , ' , ' / ', ' : ', ' ; ', ' = ', ' ? ', ' @ '
- 안전하지 않은 문자: 일부 문자는 다양한 이유로 URL 내에서 오해될 가능성이 있습니다. 이러한 문자도 항상 인코딩되어야 합니다(예: ' ', ' < ', ' > ', ' # ', ' % ', …
POST 또는 PUT 또는 PATCH 요청이고 '매개변수 이름' 속성(아래)이 생략된 단일 파일이 있는 경우 파일은 요청의 전체 본문으로 전송됩니다. 즉, 래퍼가 추가되지 않습니다. 이를 통해 임의의 본문을 보낼 수 있습니다. 이 기능은 POST 요청과 PUT 요청에 대해 제공됩니다. 매개변수 처리에 대한 추가 정보는 아래를 참조하십시오.
소스 주소 값을 구별하려면 다음 유형을 선택합니다.
- 특정 IP 주소 또는 (로컬) 호스트 이름을 사용하려면 IP/호스트 이름 을 선택하십시오 .
- 장치 를 선택 하여 해당 인터페이스에 사용할 수 있는 첫 번째 주소를 선택합니다(IPv4 또는 IPv6일 수 있음).
- 장치 IPv4 를 선택 하여 장치 이름의 IPv4 주소(예: eth0 , lo , em0 등) 를 선택합니다.
- 장치 IPv6 을 선택 하여 장치 이름의 IPv6 주소(예: eth0 , lo , em0 등) 를 선택합니다.
이 속성은 IP 스푸핑을 활성화하는 데 사용됩니다. 이 샘플의 기본 로컬 IP 주소를 재정의합니다. JMeter 호스트에는 여러 IP 주소(예: IP 별칭, 네트워크 인터페이스, 장치)가 있어야 합니다. 값은 호스트 이름, IP 주소 또는 " eth0 ", " lo " 또는 " wlan0 " 과 같은 네트워크 인터페이스 장치일 수 있습니다 . httpclient.localaddress
속성 이 정의되면 모든 HttpClient 요청에 사용됩니다.
다음 매개변수는 GraphQL HTTP 요청 에만 사용할 수 있습니다 .
매개변수 ¶
매개변수 처리:
POST 및 PUT
방법
의 경우 보낼 파일이 없고 매개변수 이름이 생략된 경우 매개변수의 모든 값을 연결하여 본문이 생성됩니다. 값은 줄 끝 문자를 추가하지 않고 연결됩니다. 값 필드에서 __char() 함수 를 사용하여 추가할 수 있습니다 . 이를 통해 임의의 본문을 보낼 수 있습니다. 인코딩 플래그가 설정된 경우 값이 인코딩됩니다. 전송되는 콘텐츠 유형 요청 헤더를
제어하는 방법 위의 MIME 유형도 참조하십시오 .
다른 방법의 경우 매개변수 이름이 없으면 매개변수가 무시됩니다. 이를 통해 변수에 의해 정의된 선택적 매개변수를 사용할 수 있습니다.
요청에 이름 없는 매개변수만 있는 경우(또는 매개변수가 전혀 없는 경우) 본문 데이터 탭 으로 전환할 수 있는 옵션이 있습니다 . 이 옵션은 다음과 같은 경우에 유용합니다.
- GWT RPC HTTP 요청
- JSON REST HTTP 요청
- XML REST HTTP 요청
- SOAP HTTP 요청
본문 데이터 모드에서 각 행은 마지막 행과 별도로 CRLF가 추가된 상태로 전송 됩니다 . 데이터의 마지막 줄 다음에 CRLF 를 보내려면 그 뒤에 빈 줄이 있는지 확인하십시오. (이것은 커서를 다음 줄에 놓을 수 있는지 여부를 제외하고는 볼 수 없습니다.)
메소드 처리:
GET , DELETE , POST , PUT 및 PATCH 요청 메소드는 유사하게 작동합니다. 단, 3.1 부터는 POST 메소드만 멀티파트 요청 또는 파일 업로드를 지원합니다. PUT 및 PATCH 메서드 본문 은 다음 중 하나로 제공되어야 합니다.
- 매개변수 이름 필드가 비어 있는 파일로 본문을 정의합니다. MIME 유형이 콘텐츠 유형으로 사용되는 경우
- 이름이 없는 매개변수 값으로 본문을 정의합니다.
- 신체 데이터 탭 사용
GET , DELETE 및 POST 메소드에는 매개변수 탭 을 사용하여 매개 변수를 전달하는 추가 방법이 있습니다 . GET , DELETE , PUT 및 PATCH 에는 Content-Type이 필요합니다. 파일을 사용하지 않는 경우 헤더 관리자를 샘플러에 연결하고 거기에서 Content-Type을 정의하십시오.
임베디드 리소스의 JMeter 스캔 응답. htmlParser , cssParser 및 wmlParser 와 같은 파서 ID 목록인 HTTPResponse.parsers 속성을 사용합니다 . 발견된 각 ID에 대해 JMeter는 두 가지 추가 속성을 확인합니다.
- id.types - 콘텐츠 유형 목록
- id.className - 포함된 리소스를 추출하는 데 사용되는 파서
설정에 대한 자세한 내용은 jmeter.properties 파일을 참조하십시오 . HTTPResponse.parser 속성이 설정되지 않은 경우 JMeter는 이전 동작으로 되돌아갑니다. 즉, text/html 응답만 스캔 됩니다 .
느린 연결 에뮬레이션:HttpClient4 및 Java 샘플러는 느린 연결의 에뮬레이션을 지원합니다. jmeter.properties 에서 다음 항목을 참조하십시오 .
# 느린 연결을 에뮬레이트하려면 초당 문자 수 > 0 정의 #httpclient.socket.http.cps=0 #httpclient.socket.https.cps=0그러나 Java 샘플러는 느린 HTTPS 연결만 지원합니다.
응답 크기 계산
구현 은 응답 본문 크기에 오버헤드를 포함하므로 값이 응답 내용의 바이트 수보다 클 수 있습니다.
재시도 처리
기본적으로 재시도는 HttpClient4 및 Java 구현 모두에 대해 0으로 설정되어 있으므로 재시도가 시도되지 않습니다.
HttpClient4의 경우 관련 JMeter 속성을 설정하여 재시도 횟수를 재정의할 수 있습니다. 예를 들면 다음과 같습니다.
httpclient4.retrycount=3
httpclient4.request_sent_retry_enabled=true
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행에 대한 추가 변수가 제거됩니다.
매개변수 ¶
- 문 선택
- 업데이트 문 - 삽입 및 삭제에도 사용
- 호출 가능한 문
- 준비된 Select 문
- 준비된 업데이트 문 - 삽입 및 삭제에도 사용
- 저지르다
- 롤백
- 자동 커밋(거짓)
- 자동 커밋(참)
- 편집 - 위 중 하나로 평가되는 변수 참조여야 합니다.
- id=23인 t_customers에서 * 선택
-
CALL SYSCS_UTIL.SYSCS_EXPORT_TABLE(null, ?, ?, null, null, null)
- 매개변수 값: tablename , 파일 이름
- 매개변수 유형: VARCHAR , VARCHAR
값 중 하나라도 쉼표 또는 큰따옴표를 포함하는 경우 목록을 큰따옴표로 묶어야 하며 포함된 큰따옴표는 반드시 예를 들면:
"Dbl-따옴표: "" 및 쉼표: ,"
이들은 java.sql.Types 클래스의 필드로 정의됩니다 . 예를 들어
java.sql.Types용 Javadoc을 참조하십시오 .
지정하지 않으면 " IN "이 가정됩니다. 즉 " DATE "가 " IN DATE "와 같습니다. 유형이 java.sql.Types
에 있는 필드 중 하나가 아닌 경우 JMeter는 해당하는 정수도 허용합니다. 예를 들어 OracleTypes.CURSOR == -10 이므로 " INOUT -10 " 을 사용할 수 있습니다 .
명령문에 있는 자리 표시자 수만큼 유형이 있어야 합니다.
columnValue = vars.getObject("결과 개체").get(0).get("열 이름");
- 문자열로 저장 (기본값) - 변수 이름 목록의 모든 변수는 문자열로 저장되며 목록에 있는 경우 ResultSet 을 통해 반복되지 않습니다 . CLOB 는 문자열로 변환됩니다. BLOB 는 UTF-8로 인코딩된 바이트 배열인 것처럼 문자열로 변환됩니다. CLOB 및 BLOB 모두 jdbcsampler.max_retain_result_size 바이트 이후에 잘립니다.
- 객체로 저장 - 변수 이름 목록에 있는 ResultSet 유형의 변수는 객체로 저장되고 후속 테스트/스크립트에서 액세스할 수 있으며 ResultSet 을 통해 반복되지 않고 반복됩니다 . CLOB s는 Store As String 이 선택된 것처럼 처리됩니다. BLOB 는 바이트 배열로 저장됩니다. CLOB 및 BLOB 모두 jdbcsampler.max_retain_result_size 바이트 이후에 잘립니다.
- Count Records - ResultSet 유형 의 변수는 결과로 레코드 수를 표시하여 반복됩니다. 변수는 문자열로 저장됩니다. BLOB 의 경우 객체의 크기가 저장됩니다.
자바 요청 ¶
이 샘플러를 사용하면 org.apache.jmeter.protocol.java.sampler.JavaSamplerClient 인터페이스를 구현하는 Java 클래스를 제어할 수 있습니다. 이 인터페이스의 고유한 구현을 작성하여 JMeter를 사용하여 다중 스레드, 입력 매개변수 제어 및 데이터 수집을 활용할 수 있습니다.
풀다운 메뉴는 클래스 경로에서 JMeter가 찾은 모든 구현 목록을 제공합니다. 그런 다음 구현에서 정의한 대로 매개변수를 아래 표에 지정할 수 있습니다. 두 가지 간단한 예제( JavaTest 및 SleepTest )가 제공됩니다.
JavaTest 예제 샘플러는 거의 모든 필드에 값을 설정할 수 있기 때문에 테스트 계획을 확인하는 데 유용할 수 있습니다 . 그런 다음 Assertion 등에서 사용할 수 있습니다. 필드에서 변수를 사용할 수 있으므로 해당 값을 쉽게 볼 수 있습니다.
매개변수 ¶
다음 매개변수는 SleepTest 및 JavaTest 구현에 적용됩니다.
매개변수 ¶
의 양: 수면 시간은 다음과 같이 계산됩니다.
totalSleepTime = SleepTime + (System.currentTimeMillis() % SleepMask)
다음 매개변수는 JavaTest 구현에 추가로 적용됩니다.
매개변수 ¶
LDAP 요청 ¶
동일한 LDAP 서버에 여러 요청을 보내려는 경우 각 LDAP 요청에 대해 동일한 정보를 입력할 필요가 없도록 LDAP 요청 기본값 구성 요소 사용을 고려하십시오.
동일한 방식으로 로그인 구성 요소 가 로그인 및 비밀번호에도 사용합니다.LDAP 서버 테스트를 위한 테스트 케이스를 작성하는 방법에는 두 가지가 있습니다.
- 내장된 테스트 케이스.
- 사용자 정의 테스트 케이스.
LDAP 테스트에는 네 가지 테스트 시나리오가 있습니다. 테스트는 다음과 같습니다.
- 테스트 추가
- 내장 테스트:
이렇게 하면 LDAP 서버에 미리 정의된 항목이 추가되고 실행 시간이 계산됩니다. 테스트 실행 후 생성된 항목은 LDAP 서버에서 삭제됩니다.
- 사용자 정의 테스트:
그러면 LDAP 서버에 항목이 추가됩니다. 사용자는 테이블의 모든 속성을 입력해야 합니다. 항목은 추가할 테이블에서 수집됩니다. 실행 시간이 계산됩니다. 생성된 항목은 테스트 후 삭제되지 않습니다.
- 내장 테스트:
- 테스트 수정
- 내장 테스트:
이것은 먼저 사전 정의된 항목을 생성한 다음 LDAP 서버에서 생성된 항목을 수정합니다. 그리고 실행 시간을 계산합니다. 테스트 실행 후 생성된 항목은 LDAP 서버에서 삭제됩니다.
- 사용자 정의 테스트:
이렇게 하면 LDAP 서버의 항목이 수정됩니다. 사용자는 테이블의 모든 속성을 입력해야 합니다. 항목은 수정할 테이블에서 수집됩니다. 실행 시간이 계산됩니다. 항목은 LDAP 서버에서 삭제되지 않습니다.
- 내장 테스트:
- 검색 테스트
- 내장 테스트:
이렇게 하면 먼저 항목이 생성되고 속성이 사용 가능한지 검색합니다. 검색 쿼리의 실행 시간을 계산합니다. 실행이 끝나면 생성된 항목이 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
앞으로는 응답 코드 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 인터페이스를 구현하는 클래스 는 모든 메서드에 대한 구체적인 구현을 제공해야 합니다. 두 인터페이스를 구현하는 방법의 예는 StandardGenerator 및 TCLogParser 를 참조하십시오 .
(베타 코드)
매개변수 ¶
TCLogParser 는 각 스레드에 대해 독립적으로 액세스 로그를 처리합니다. SharedTCLogParser 및 OrderPreservingLogParser 는 파일에 대한 액세스를 공유합니다 . 즉, 각 스레드는 로그의 다음 항목을 가져옵니다.
SessionFilter 는 스레드에서 쿠키를 처리하기 위한 것입니다. 항목을 필터링하지 않지만 주어진 IP에 대한 쿠키가 한 번에 단일 스레드에서 처리되도록 쿠키 관리자를 수정합니다. 두 스레드가 동일한 클라이언트 IP 주소의 샘플을 처리하려고 하면 한 스레드는 다른 스레드가 완료될 때까지 강제로 기다려야 합니다.
LogFilter 는 파일 확장명을 교체할 수 있을 뿐만 아니라 파일 이름과 정규식으로 액세스 로그 항목을 필터링할 수 있도록 하기 위한 것입니다 . 그러나 현재 GUI를 통해 이를 구성할 수 없으므로 실제로 사용할 수 없습니다.
BeanShell 샘플러 ¶
이 샘플러를 사용하면 BeanShell 스크립팅 언어를 사용하여 샘플러를 작성할 수 있습니다.
BeanShell 사용에 대한 자세한 내용은 BeanShell 웹사이트를 참조하십시오.
테스트 요소는 ThreadListener 및 TestListener 인터페이스 메서드를 지원합니다. 초기화 파일에 정의해야 합니다. 예제 정의 는 BeanShellListeners.bshrc 파일을 참조하십시오 .
BeanShell 샘플러는 Interruptible 인터페이스도 지원합니다. 인터럽트() 메서드 는 스크립트 또는 초기화 파일에서 정의할 수 있습니다.
매개변수 ¶
- 매개변수
- 매개변수를 단일 변수로 포함하는 문자열
- bsh.args
- 매개변수를 포함하는 문자열 배열, 공백으로 분할
" beanshell.sampler.init " 속성 이 정의되면 소스 파일의 이름으로 인터프리터에 전달됩니다. 이것은 공통 메소드 및 변수를 정의하는 데 사용할 수 있습니다. bin 디렉토리에 샘플 초기화 파일이 있습니다: BeanShellSampler.bshrc .
스크립트 파일이 제공되면 해당 파일이 사용되며, 그렇지 않으면 스크립트가 사용됩니다.
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.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 를 설정해야 합니다 . 다음을 참조하세요.
jsr223.compiled_scripts_cache_size=100
props.get("START.HMS"); props.put("PROP1","1234");
매개변수 ¶
Velocity와 같은 일부 언어는 JSR223 변수에 대해 다른 구문을 사용할 수 있습니다.
$log.debug("안녕하세요" + $vars.get("a"));속도를 위해.
스크립트 파일이 제공되면 해당 파일이 사용되며, 그렇지 않으면 스크립트가 사용됩니다.
스크립트를 호출하기 전에 일부 변수가 설정됩니다. 이것은 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에 지정되지 않은 경우에만 사용됩니다.
사용자는 자신의 구현을 제공할 수 있습니다. 클래스는 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 가 정의되어 있으면 응답 메시지에서 접미사까지 이어지는 텍스트를 검색합니다. 이러한 텍스트가 발견되면 응답 코드를 설정하는 데 사용됩니다. 응답 메시지는 속성 파일(제공된 경우)에서 가져옵니다. " 400 "-" 499 " 및 " 500 "-" 599 " 범위의 응답 코드 는 현재 실패로 간주됩니다. 나머지는 모두 성공합니다. [이것은 구성 가능해야합니다!]
테스트 실행이 끝나면 소켓이 분리됩니다.
매개변수 ¶
JMS 게시자 ¶
JMS 게시자는 지정된 대상(주제/대기열)에 메시지를 게시합니다. JMS에 익숙하지 않은 사람들을 위해 메시징을 위한 J2EE 사양입니다. 시장에는 수많은 JMS 서버와 여러 오픈 소스 옵션이 있습니다.
매개변수 ¶
- 파일에서
- 참조된 파일이 모든 샘플에서 읽고 재사용됨을 의미합니다. 파일 이름이 변경되면 JMeter 3.0부터 다시 로드됩니다.
- 아래 지정된 폴더의 임의 파일
- 아래 지정된 폴더에서 임의의 파일이 선택됨을 의미합니다. 이 폴더에는 바이트 메시지의 경우 확장자가 .dat 인 파일이나 개체 또는 텍스트 메시지의 경우 확장자가 .txt 또는 .obj 인 파일이 포함되어야 합니다.
- 텍스트 영역
- 텍스트 또는 개체 메시지에 사용할 메시지
- 원시 :
- 파일에서 변수를 지원하지 않으며 기본 시스템 문자 집합으로 로드합니다.
- 기본 :
- XML 프롤로그에 의존하는 XML을 제외하고 기본 시스템 인코딩으로 파일을 로드합니다. 파일에 변수가 포함되어 있으면 처리됩니다.
- 표준 문자 집합 :
- 지정된 인코딩(유효 여부)은 파일을 읽고 변수를 처리하는 데 사용됩니다.
MapMessage 유형의 경우 JMeter는 소스를 텍스트 행으로 읽습니다. 각 줄에는 쉼표로 구분된 3개의 필드가 있어야 합니다. 필드는 다음과 같습니다.
- 항목 이름
- 객체 클래스 이름, 예: " String "( 지정되지 않은 경우 java.lang 패키지로 가정)
- 개체 문자열 값
이름, 문자열, 예 크기, 정수, 1234
- jmeter_home/lib/ 폴더 에 객체와 해당 종속성을 포함하는 JAR을 넣습니다.
- XStream을 사용하여 객체를 XML로 직렬화
- 결과를 .txt 또는 .obj 접미사가 붙은 파일에 넣거나 XML 콘텐츠를 텍스트 영역에 직접 넣습니다.
다음 표는 JMS를 구성할 때 유용할 수 있는 몇 가지 값을 보여줍니다.
아파치 액티브MQ | 가치 | 논평 |
---|---|---|
컨텍스트 팩토리 | org.apache.activemq.jndi.ActiveMQInitialContextFactory | . |
공급자 URL | VM://localhost | |
공급자 URL | VM:(브로커:(vm://localhost)?persistent=false) | 지속성 비활성화 |
대기열 참조 | 동적 대기열/QUEUENAME | QUEUENAME을 JNDI에 동적으로 정의 |
주제 참조 | 동적주제/TOPICNAME | TOPICNAME을 JNDI에 동적으로 정의 |
JMS 가입자 ¶
JMS 구독자는 지정된 대상(주제 또는 대기열)의 메시지를 구독합니다. JMS에 익숙하지 않은 사람들을 위해 메시징을 위한 J2EE 사양입니다. 시장에는 수많은 JMS 서버와 여러 오픈 소스 옵션이 있습니다.
매개변수 ¶
- MessageConsumer.receive()
- 요청된 모든 메시지에 대해 receive() 를 호출 합니다. 샘플 간의 연결을 유지하지만 샘플러가 활성 상태가 아니면 메시지를 가져오지 않습니다. 큐 구독에 가장 적합합니다.
- MessageListener.onMessage()
- 큐에 들어오는 모든 메시지를 저장하는 리스너를 설정합니다. 리스너는 샘플러가 완료된 후에도 활성 상태를 유지합니다. 주제 구독에 가장 적합합니다.
JMS 지점간 ¶
이 샘플러는 지점간 연결(대기열)을 통해 JMS 메시지를 보내고 선택적으로 받습니다. pub/sub 메시지와 다르며 일반적으로 트랜잭션 처리에 사용됩니다.
request_only 는 일반적으로 JMS 시스템에 부하를 가하는 데 사용됩니다.
request_reply 는 이 모드가 이 서비스에서 보낸 응답 대기열의 응답을 기다리므로 요청 대기열로 보낸 메시지를 처리하는 JMS 서비스의 응답 시간을 테스트하려는 경우에 사용됩니다.
찾아보기 는 현재 대기열 깊이, 즉 대기열에 있는 메시지 수를 반환합니다.
read 는 큐(있는 경우)에서 메시지를 읽습니다.
clear 는 대기열을 지웁니다. 즉, 대기열에서 모든 메시지를 제거합니다.
JMeter 는 대기열 연결을 생성할 때 java.naming.security.[principal|credentials] 속성을 사용합니다(있는 경우). 이 동작을 원하지 않으면 JMeter 속성 JMSSampler.useSecurity.properties=false 를 설정하십시오.
매개변수 ¶
- 요청만
- 메시지만 보내고 응답을 모니터링하지 않습니다. 따라서 시스템에 부하를 가하는 데 사용할 수 있습니다.
- 응답 요청
- 메시지를 보내고 받는 응답을 모니터링합니다. 동작은 JNDI 이름 응답 대기열의 값에 따라 다릅니다. JNDI 이름 응답 대기열에 값이 있는 경우 이 대기열을 사용하여 결과를 모니터링합니다. 요청과 응답의 일치는 요청의 메시지 ID와 응답의 상관 ID로 수행됩니다. JNDI 이름 응답 대기열이 비어 있으면 요청자와 서버 간의 통신에 임시 대기열이 사용됩니다. 이것은 고정 응답 대기열과 매우 다릅니다. 임시 큐를 사용하면 응답 메시지가 수신될 때까지 보내는 스레드가 차단됩니다. 요청 응답 모드를 사용하면 요청 대기열로 보낸 메시지를 수신하고 message.getJMSReplyTo() 에서 참조하는 대기열에 응답을 보내는 서버가 필요합니다 .
- 읽다
- 리스너가 연결되지 않은 나가는 대기열에서 메시지를 읽습니다. 이것은 테스트 목적으로 편리할 수 있습니다. JMS Point-to-Point 샘플러에서만 작동하는 바인딩 파일(jmeter-jms-skip-jndi 라이브러리가 사용되는 경우) 없이 대기열을 처리해야 하는 경우 이 방법을 사용할 수 있습니다. 바인딩 파일이 사용되는 경우 대기열에서 읽기 위해 JMS 구독자 샘플러를 사용할 수도 있습니다.
- 검색
- 대기열에서 메시지를 제거하지 않고 현재 대기열 깊이를 결정하여 대기열의 메시지 수를 반환합니다.
- 분명한
- 대기열을 지웁니다. 즉, 대기열에서 모든 메시지를 제거합니다.
- 요청 메시지 ID 사용
- 선택하면 요청 JMSMessageID가 사용되며, 그렇지 않으면 요청 JMSCorrelationID가 사용됩니다. 후자의 경우 요청에 상관 관계 ID를 지정해야 합니다.
- 응답 메시지 ID 사용
- 선택하면 응답 JMSMessageID가 사용되며, 그렇지 않으면 응답 JMSCorrelationID가 사용됩니다.
- JMS 상관 ID 패턴
- 즉, 상관 관계 ID에 대한 요청 및 응답 일치 => 두 확인란을 모두 선택 취소하고 상관 관계 ID를 제공합니다.
- JMS 메시지 ID 패턴
- 즉, 요청 메시지 ID를 응답 상관 ID와 일치 => "요청 메시지 ID 사용"만 선택하십시오.
JUnit 요청 ¶
- JMeter의 테스트 인터페이스를 사용하는 대신 JUnit의 TestCase 클래스를 확장하는 클래스에 대해 jar 파일을 스캔합니다. 여기에는 모든 클래스 또는 하위 클래스가 포함됩니다.
- JUnit 테스트 jar 파일은 /lib 디렉토리 대신 jmeter/lib/junit 에 위치해야 합니다 . " user.classpath " 속성을 사용하여 TestCase 클래스를 찾을 위치를 지정할 수도 있습니다.
- JUnit 샘플러는 Java 요청 과 같은 구성에 이름/값 쌍을 사용하지 않습니다 . 샘플러는 setUp 및 tearDown 이 테스트를 올바르게 구성할 것이라고 가정합니다.
- 샘플러는 테스트 메서드에 대해서만 경과 시간을 측정하며 setUp 및 tearDown 은 포함하지 않습니다 .
- 테스트 메소드가 호출될 때마다 JMeter는 결과를 리스너에 전달합니다.
- oneTimeSetUp 및 oneTimeTearDown 에 대한 지원은 메서드로 수행됩니다. JMeter는 다중 스레드이므로 Maven과 같은 방식으로 oneTimeSetUp / oneTimeTearDown 을 호출할 수 없습니다.
- 샘플러는 예기치 않은 예외를 오류로 보고합니다. 표준 JUnit 테스트 러너와 JMeter의 구현 사이에는 몇 가지 중요한 차이점이 있습니다. 각 테스트에 대해 클래스의 새 인스턴스를 만드는 대신 JMeter는 샘플러당 1개의 인스턴스를 생성하고 재사용합니다. " 샘플당 새 인스턴스 만들기 " 확인란을 사용하여 변경할 수 있습니다 .
공개 클래스 myTestCase { 공개 myTestCase() {} }문자열 생성자:
공개 클래스 myTestCase { 공개 myTestCase(문자열 텍스트) { 슈퍼(텍스트); } }
일반 지침
setUp 및 tearDown 을 사용하는 경우 메서드가 public으로 선언되었는지 확인하세요. 그렇지 않으면 테스트가 제대로 실행되지 않을 수 있습니다.다음은 JMeter와 잘 작동하도록 JUnit 테스트를 작성하기 위한 몇 가지 일반적인 지침입니다. JMeter는 다중 스레드를 실행하기 때문에 특정 사항을 염두에 두는 것이 중요합니다.
- 스레드로부터 안전하도록 setUp 및 tearDown 메소드를 작성하십시오 . 이것은 일반적으로 정적 멤버를 사용하지 않는 것을 의미합니다.
- 테스트 방법을 작업의 긴 시퀀스가 아닌 개별 작업 단위로 만드십시오. 테스트 방법을 개별 작업으로 유지하면 테스트 방법을 결합하여 새 테스트 계획을 만드는 것이 더 쉬워집니다.
- 테스트 방법이 서로 종속되도록 하지 마십시오. JMeter는 테스트 메소드의 임의 순서를 허용하므로 런타임 동작은 기본 JUnit 동작과 다릅니다.
- 테스트 방법을 구성할 수 있는 경우 속성이 저장되는 위치에 주의하십시오. Jar 파일에서 속성을 읽는 것이 좋습니다.
- 각 샘플러는 테스트 클래스의 인스턴스를 생성하므로 설정이 oneTimeSetUp 및 oneTimeTearDown 에서 발생하도록 테스트를 작성합니다 .
매개변수 ¶
다음 JUnit4 주석이 인식됩니다.
- @테스트
- 테스트 방법 및 클래스를 찾는 데 사용됩니다. " 예상 된 " 및 " 시간 초과 " 속성이 지원됩니다.
- @전에
- JUnit3 의 setUp() 과 동일하게 취급
- @후에
- JUnit3 의 tearDown() 과 동일하게 처리됨
- @BeforeClass , @AfterClass
- 테스트 방법으로 취급되므로 필요에 따라 독립적으로 실행할 수 있습니다.
메일 리더 샘플러 ¶
메일 판독기 샘플러는 POP3(S) 또는 IMAP(S) 프로토콜을 사용하여 메일 메시지를 읽고 선택적으로 삭제할 수 있습니다.
매개변수 ¶
테스트 스크립트(JMX 파일)가 포함된 디렉토리에 대해 실패합니다.
메시지는 메인 샘플러의 서브샘플로 저장됩니다. 다중 부분 메시지 부분은 메시지의 하위 샘플로 저장됩니다.
" file " 프로토콜 에 대한 특수 처리
: 파일 JavaMail 공급자를 사용하여 파일에서 원시 메시지를 읽을 수 있습니다. 서버 필드는 폴더 의 상위 경로를 지정하는 데 사용됩니다 . 개별 메시지 파일은 n.msg 이름으로 저장해야 합니다 . 여기서 n 은 메시지 번호입니다. 또는 서버 필드는 단일 메시지를 포함하는 파일의 이름일 수 있습니다. 현재 구현은 매우 기본적이며 주로 디버깅 목적을 위한 것입니다.
흐름 제어 작업 (이전: 테스트 작업) ¶
이 샘플러는 샘플을 생성할 필요 없이 일시 중지를 포함할 수 있으므로 트랜잭션 컨트롤러와 함께 사용할 수도 있습니다. 가변 지연의 경우 일시 중지 시간을 0으로 설정하고 Timer를 자식으로 추가합니다.
" 중지 " 작업은 진행 중인 샘플을 완료한 후 스레드 또는 테스트를 중지합니다. " 지금 중지 " 작업은 샘플이 완료될 때까지 기다리지 않고 테스트를 중지합니다. 모든 활성 샘플을 중단합니다. 일부 스레드가 5초 제한 시간 내에 중지되지 않으면 GUI 모드에서 메시지가 표시됩니다. Stop 명령을 사용하여 스레드가 중지되는지 확인할 수 있지만 그렇지 않으면 JMeter를 종료해야 합니다. CLI 모드에서 일부 스레드가 5초 제한 시간 내에 중지되지 않으면 JMeter가 종료됩니다.
매개변수 ¶
SMTP 샘플러 ¶
SMTP 샘플러는 SMTP/SMTPS 프로토콜을 사용하여 메일 메시지를 보낼 수 있습니다. 사용자 인증은 물론 연결(SSL 및 TLS)에 대한 보안 프로토콜을 설정할 수 있습니다. 보안 프로토콜을 사용하는 경우 서버 인증서에 대한 확인이 수행됩니다.
이 확인을 처리하는 두 가지 대안을 사용할 수 있습니다.
- 모든 인증서 신뢰
- 인증서 체인 확인을 무시합니다.
- 로컬 신뢰 저장소 사용
- 이 옵션을 사용하면 인증서 체인이 로컬 신뢰 저장소 파일에 대해 검증됩니다.
매개변수 ¶
테스트 스크립트(JMX 파일)가 포함된 디렉토리에 대해 실패합니다.
OS 프로세스 샘플러 ¶
OS 프로세스 샘플러는 로컬 시스템에서 명령을 실행하는 데 사용할 수 있는 샘플러입니다.
명령줄에서 실행할 수 있는 모든 명령의 실행을 허용해야 합니다.
반환 코드의 유효성 검사를 활성화하고 예상 반환 코드를 지정할 수 있습니다.
OS 셸은 일반적으로 명령줄 구문 분석을 제공합니다. 이것은 OS마다 다르지만 일반적으로 쉘은 공백에서 매개변수를 분할합니다. 일부 쉘은 와일드카드 파일 이름을 확장합니다. 일부는 그렇지 않습니다. 인용 메커니즘도 OS마다 다릅니다. 샘플러는 의도적으로 구문 분석이나 인용 처리를 하지 않습니다. 명령 및 해당 매개변수는 실행 파일에서 예상하는 형식으로 제공되어야 합니다. 이는 샘플러 설정이 OS 간에 이식될 수 없음을 의미합니다.
많은 OS에는 별도의 실행 파일로 제공되지 않는 몇 가지 내장 명령이 있습니다. 예를 들어 Windows DIR 명령은 명령 인터프리터( CMD.EXE )의 일부입니다. 이러한 내장 프로그램은 독립적인 프로그램으로 실행할 수 없지만 적절한 명령 인터프리터에 대한 인수로 제공해야 합니다.
예를 들어 Windows 명령줄: DIR C:\TEMP 는 다음과 같이 지정해야 합니다.
- 명령:
- 명령
- 매개변수 1:
- /씨
- 매개변수 2:
- 감독
- 매개변수 3:
- C:\TEMP
매개변수 ¶
MongoDB 스크립트(사용되지 않음) ¶
이 샘플러를 사용하면 MongoDB에 요청을 보낼 수 있습니다.
이것을 사용하기 전에 MongoDB 소스 구성 구성 요소 를 설정해야 합니다.
매개변수 ¶
볼트 요청 ¶
이 샘플러를 사용하면 Bolt 프로토콜을 통해 Cypher 쿼리를 실행할 수 있습니다.
이것을 사용하기 전에 볼트 연결 구성 을 설정해야 합니다.
모든 요청은 풀에서 획득한 연결을 사용하고 샘플러가 완료되면 풀로 반환합니다. 연결 풀 크기는 드라이버 기본값(~100)을 사용하며 현재 구성할 수 없습니다.
측정된 응답 시간은 cypher 쿼리를 실행하는 시간과 데이터베이스에서 다시 보낸 결과를 소비하는 시간을 모두 포함하여 "전체" 쿼리 실행에 해당합니다.
매개변수 ¶
18.2 로직 컨트롤러 ¶
로직 컨트롤러는 샘플러가 처리되는 순서를 결정합니다.
단순 컨트롤러 ¶
Simple Logic Controller를 사용하면 샘플러 및 기타 로직 컨트롤러를 구성할 수 있습니다. 다른 로직 컨트롤러와 달리 이 컨트롤러는 저장 장치 이상의 기능을 제공하지 않습니다.
이 예를 다운로드 하십시오(그림 6 참조). 이 예에서는 두 개의 Ant HTTP 요청과 두 개의 Log4J HTTP 요청을 보내는 테스트 계획을 만들었습니다. Ant 및 Log4J 요청을 Simple Logic Controller 내부에 배치하여 그룹화했습니다. Simple Logic Controller는 JMeter가 추가한 컨트롤러를 처리하는 방법에 영향을 미치지 않습니다. 따라서 이 예에서 JMeter는 Ant 홈 페이지, Ant 뉴스 페이지, Log4J 홈 페이지, Log4J 히스토리 페이지의 순서로 요청을 보냅니다.
파일 리포터는 현재 디렉토리의 " simple-test.dat "라는 파일에 결과를 저장하도록 구성되어 있습니다.
루프 컨트롤러 ¶
루프 컨트롤러에 Generative 또는 Logic 컨트롤러를 추가하면 JMeter는 스레드 그룹에 대해 지정한 루프 값 외에 특정 횟수만큼 루프 컨트롤러를 반복합니다. 예를 들어 루프 카운트가 2인 루프 컨트롤러에 하나의 HTTP 요청을 추가하고 스레드 그룹 루프 카운트를 3으로 구성하면 JMeter는 총 2 * 3 = 6 HTTP 요청을 보냅니다.
매개변수 ¶
값 -1 은 Forever 토글 을 확인하는 것과 같습니다 .
특별한 경우: Thread Group 요소 에 포함된 루프 컨트롤러는 약간 다르게 동작합니다. 영원히 설정하지 않으면 주어진 반복 횟수가 완료된 후 테스트를 중지합니다.
이 예제를 다운로드 하십시오(그림 4 참조). 이 예에서는 특정 HTTP 요청을 한 번만 보내고 다른 HTTP 요청을 다섯 번 보내는 테스트 계획을 만들었습니다.
단일 스레드에 대해 스레드 그룹을 구성하고 루프 카운트 값을 1로 구성했습니다. 스레드 그룹이 루프를 제어하도록 하는 대신 루프 컨트롤러를 사용했습니다. 스레드 그룹에 하나의 HTTP 요청을 추가하고 루프 컨트롤러에 또 다른 HTTP 요청을 추가한 것을 볼 수 있습니다. 루프 카운트 값이 5인 루프 컨트롤러를 구성했습니다.
JMeter는 홈 페이지, 뉴스 페이지, 뉴스 페이지, 뉴스 페이지, 뉴스 페이지 및 뉴스 페이지의 순서로 요청을 보냅니다.
한 번만 컨트롤러 ¶
Once Only Logic Controller는 JMeter에 내부 컨트롤러를 스레드당 한 번만 처리하도록 지시하고 테스트 계획을 통한 추가 반복 동안 그 아래에 있는 모든 요청을 전달합니다.
한 번만 컨트롤러는 이제 모든 루프 상위 컨트롤러의 첫 번째 반복 중에 항상 실행됩니다. 따라서 한 번만 컨트롤러가 5번 반복하도록 지정된 루프 컨트롤러 아래에 배치되면 한 번만 컨트롤러는 루프 컨트롤러를 통한 첫 번째 반복에서만(즉, 5회마다) 실행됩니다.
이것은 한 번만 컨트롤러가 스레드 그룹(스레드당 테스트당 한 번만 실행) 아래에 있는 경우 이전에 예상한 대로 계속 작동하지만 이제 사용자는 한 번만 컨트롤러를 사용할 때 더 많은 유연성을 갖게 됨을 의미합니다.
로그인이 필요한 테스트의 경우 각 스레드가 세션을 설정하기 위해 한 번만 로그인하면 되므로 이 컨트롤러에 로그인 요청을 배치하는 것을 고려하십시오.
이 예를 다운로드 하십시오(그림 5 참조). 이 예에서는 HTTP 요청을 보내는 두 개의 스레드가 있는 테스트 계획을 만들었습니다. 각 스레드는 홈 페이지에 하나의 요청을 보낸 다음 버그 페이지에 세 개의 요청을 보냅니다. 스레드 그룹을 세 번 반복하도록 구성했지만 이 요청은 한 번만 컨트롤러 내부에 있기 때문에 각 JMeter 스레드는 홈 페이지에 하나의 요청만 보냅니다.
각 JMeter 스레드는 홈 페이지, 버그 페이지, 버그 페이지, 버그 페이지의 순서로 요청을 보냅니다.
파일 리포터는 현재 디렉토리의 " loop-test.dat "라는 파일에 결과를 저장하도록 구성되어 있습니다.
인터리브 컨트롤러 ¶
Interleave Controller에 Generative 또는 Logic Controller를 추가하면 JMeter는 각 루프 반복에 대해 다른 컨트롤러 각각을 번갈아 사용합니다.
매개변수 ¶
이 예제를 다운로드 하십시오(그림 1 참조). 이 예에서는 스레드당 총 10개의 요청에 대해 2개의 스레드와 5개의 루프 수를 갖도록 스레드 그룹을 구성했습니다. JMeter가 HTTP 요청을 보내는 순서는 아래 표를 참조하십시오.
루프 반복 | 각 JMeter 스레드는 이러한 HTTP 요청을 보냅니다. |
---|---|
1 | 뉴스 페이지 |
1 | 로그 페이지 |
2 | 자주 묻는 질문 페이지 |
2 | 로그 페이지 |
삼 | 검프 페이지 |
삼 | 로그 페이지 |
4 | 컨트롤러에 더 이상 요청이 없기 때문에 JMeter는 처음부터 다시 시작하여 뉴스 페이지인 첫 번째 HTTP 요청을 보냅니다. |
4 | 로그 페이지 |
5 | 자주 묻는 질문 페이지 |
5 | 로그 페이지 |
다른 예를 다운로드 하십시오(그림 2 참조). 이 예에서는 단일 스레드와 8개의 루프 수를 갖도록 스레드 그룹을 구성했습니다. 테스트 계획에는 내부에 두 개의 인터리브 컨트롤러가 있는 외부 인터리브 컨트롤러가 있습니다.
외부 인터리브 컨트롤러는 두 개의 내부 인터리브 컨트롤러를 번갈아 사용합니다. 그런 다음, 각 내부 인터리브 컨트롤러는 각 HTTP 요청 사이를 교대로 합니다. 각 JMeter 스레드는 홈 페이지, 인터리브드, 버그 페이지, 인터리브드, CVS 페이지, 인터리브드 및 FAQ 페이지, 인터리브드의 순서로 요청을 보냅니다.
파일 리포터는 현재 디렉토리의 " interleave-test2.dat " 라는 파일에 결과를 저장하도록 구성되어 있습니다 .
메인 인터리브 컨트롤러 아래에 있는 두 개의 인터리브 컨트롤러가 대신 단순 컨트롤러인 경우 순서는 홈 페이지, CVS 페이지, 인터리브, 버그 페이지, FAQ 페이지, 인터리브입니다.
그러나 기본 인터리브 컨트롤러에서 " 하위 컨트롤러 블록 무시 "가 선택되어 있으면 순서는 홈 페이지, 인터리브, 버그 페이지, 인터리브, CVS 페이지, 인터리브 및 FAQ 페이지, 인터리브가 됩니다.
랜덤 컨트롤러 ¶
랜덤 로직 컨트롤러는 하위 컨트롤러와 샘플러를 순서대로 거치는 대신 각 패스에서 무작위로 하나를 선택한다는 점을 제외하고는 인터리브 컨트롤러와 유사하게 작동합니다.
매개변수 ¶
무작위 순서 컨트롤러 ¶
Random Order Controller는 각 자식 요소를 최대 한 번만 실행한다는 점에서 Simple Controller와 비슷하지만 노드 실행 순서는 무작위입니다.
처리량 컨트롤러 ¶
처리량 컨트롤러를 사용하면 사용자가 실행 빈도를 제어할 수 있습니다. 두 가지 모드가 있습니다.
- 퍼센트 실행
- 총 처형
- 실행률
- 컨트롤러가 테스트 계획을 통해 일정 비율의 반복을 실행하도록 합니다.
- 총 실행
- 특정 횟수의 실행이 발생한 후 컨트롤러가 실행을 중지하도록 합니다.
매개변수 ¶
런타임 컨트롤러 ¶
런타임 컨트롤러는 자식이 실행되는 시간을 제어합니다. 컨트롤러는 구성된 런타임 이 초과 될 때까지 자식을 실행합니다 .
매개변수 ¶
컨트롤러 ¶
If Controller를 사용하면 그 아래의 테스트 요소(자식)가 실행되는지 여부를 제어할 수 있습니다.
기본적으로 조건은 초기 입력 시 한 번만 평가되지만 컨트롤러에 포함된 모든 실행 가능한 요소에 대해 평가되도록 하는 옵션이 있습니다.
가장 좋은 옵션(기본값)은 조건을 변수 표현식으로 해석을 선택하는 것입니다. , 조건 필드에 2가지 옵션이 있습니다.
- 옵션 1: true 또는 false 를 포함하는 변수 사용
마지막 샘플이 성공했는지 테스트하려면 ${JMeterThread.last_sample_ok} 를 사용할 수 있습니다.
- 옵션 2: 함수( ${__jexl3()} 권장)를 사용하여 true 또는 false 를 반환해야 하는 표현식 평가
"${myVar}" == "\${myVar}"또는 다음을 사용하십시오.
"${myVar}" != "\${myVar}"변수가 정의되어 있고 null이 아닌지 테스트합니다.
매개변수 ¶
- ${COUNT} < 10
- "${VAR}" == "abcd"
를 사용할 때 문자열에서 변수 교체를 사용하지 않도록 주의하십시오. 그렇지 않으면 스크립트를 변경하는 변수를 사용하는 경우 캐시할 수 없습니다. 대신 다음을 사용하여 변수를 가져옵니다. 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 " 가 될 때까지 자식을 실행합니다 .
가능한 조건 값:
- 공백 - 루프의 마지막 샘플이 실패하면 루프 종료
- LAST - 루프의 마지막 샘플이 실패하면 루프를 종료합니다. 루프 직전의 마지막 샘플이 실패한 경우 루프에 들어가지 마십시오.
- 그렇지 않으면 - 조건이 " false " 문자열과 같을 때 루프를 종료하거나 입력하지 마십시오 .
예를 들어:
- ${VAR} - VAR 이 다른 테스트 요소에 의해 false로 설정된 경우
- ${__jexl3(${C}==10)}
- ${__jexl3("${VAR2}"=="abcd")}
- ${_P(property)} - 속성이 다른 곳 에서 " false "로 설정된 경우
매개변수 ¶
스위치 컨트롤러 ¶
스위치 컨트롤러는 각 반복에서 하위 요소 중 하나를 실행한다는 점에서 인터리브 컨트롤러 처럼 작동 하지만 컨트롤러는 순서대로 실행하는 대신 스위치 값으로 정의된 요소를 실행합니다.
스위치 값이 범위를 벗어나면 0번째 요소를 실행하므로 숫자 케이스의 기본값으로 작동합니다. 값이 빈 문자열인 경우 0번째 요소도 실행합니다.
값이 숫자가 아닌(비어 있지 않은 경우) 스위치 컨트롤러는 동일한 이름을 가진 요소를 찾습니다(대소문자가 중요함). 일치하는 이름이 없으면 " default "(대소문자가 중요하지 않음)라는 요소가 선택됩니다. 기본값이 없으면 요소가 선택되지 않고 컨트롤러는 아무 것도 실행하지 않습니다.
매개변수 ¶
ForEach 컨트롤러 ¶
ForEach 컨트롤러는 관련 변수 집합의 값을 반복합니다. 샘플러(또는 컨트롤러)를 ForEach 컨트롤러에 추가하면 모든 샘플(또는 컨트롤러)이 한 번 이상 실행되며, 여기서 모든 루프 동안 변수는 새 값을 갖습니다. 입력은 밑줄과 숫자로 확장된 여러 변수로 구성되어야 합니다. 이러한 각 변수에는 값이 있어야 합니다. 따라서 예를 들어 입력 변수의 이름이 inputVar 인 경우 다음 변수가 정의되어야 합니다.
- inputVar_1 = 웬디
- inputVar_2 = 찰스
- inputVar_3 = 피터
- inputVar_4 = 존
참고: " _ " 구분 기호는 이제 선택 사항입니다.
반환 변수가 " returnVar "로 지정되면 ForEach 컨트롤러 아래의 샘플러 및 컨트롤러 컬렉션이 4 회 연속 실행되며 반환 변수는 위의 값을 각각 가지며 샘플러에서 사용할 수 있습니다.
정규식 후처리기로 실행하는 데 특히 적합합니다. 이것은 이전 요청의 결과 데이터에서 필요한 입력 변수를 "생성"할 수 있습니다. " _ " 구분 기호 를 생략하면 ForEach 컨트롤러를 사용하여 입력 변수 refName_g 를 사용하여 그룹을 반복할 수 있으며 refName_${C 형식의 입력 변수를 사용하여 모든 일치 항목의 모든 그룹을 반복할 수도 있습니다. }_g , 여기서 C 는 카운터 변수입니다.
매개변수 ¶
이 예를 다운로드 하십시오(그림 7 참조). 이 예에서는 특정 HTTP 요청을 한 번만 보내고 페이지에서 찾을 수 있는 모든 링크에 또 다른 HTTP 요청을 보내는 테스트 계획을 만들었습니다.
단일 스레드에 대해 스레드 그룹을 구성하고 루프 카운트 값을 1로 구성했습니다. 스레드 그룹에 하나의 HTTP 요청을 추가하고 ForEach 컨트롤러에 다른 HTTP 요청을 추가한 것을 볼 수 있습니다.
첫 번째 HTTP 요청 후에 정규식 추출기가 추가되어 반환 페이지에서 모든 html 링크를 추출하고 이를 inputVar 변수 에 넣습니다.
ForEach 루프에는 첫 번째 반환된 HTML 페이지에서 추출된 모든 링크를 요청하는 HTTP 샘플러가 추가됩니다.
다음은 다운로드할 수 있는 또 다른 예 입니다. 여기에는 두 개의 정규식과 ForEach 컨트롤러가 있습니다. 첫 번째 RE는 일치하지만 두 번째 RE는 일치하지 않으므로 두 번째 ForEach 컨트롤러에서 샘플을 실행하지 않습니다.
스레드 그룹에는 단일 스레드와 2개의 루프 수가 있습니다.
샘플 1은 JavaTest 샘플러를 사용하여 " abcd " 문자열을 반환합니다.
Regex Extractor는 (\w)\s 식 을 사용하여 문자 다음에 공백이 오는 것과 일치하고 문자(공백이 아님)를 반환합니다. 모든 일치 항목에는 문자열 " inputVar "가 접두사로 붙습니다.
ForEach 컨트롤러는 접두어 " inputVar_ "가 있는 모든 변수를 추출하고 해당 샘플을 실행하여 변수 " returnVar "에 값을 전달합니다. 이 경우 변수를 " a " " b " 및 " c " 값으로 차례로 설정합니다.
For 1 샘플러 는 반환 변수 " returnVar "를 샘플 레이블의 일부로 샘플러 데이터로 사용하는 또 다른 Java 샘플러입니다.
샘플 2 , Regex 2 및 For 2 는 Regex가 " (\w)\sx " 로 변경되었다는 점을 제외하고는 거의 동일합니다 . 이는 분명히 일치하지 않습니다. 따라서 For 2 Sampler는 실행되지 않습니다.
모듈 컨트롤러 ¶
모듈 컨트롤러는 런타임에 테스트 계획 조각을 현재 테스트 계획으로 대체하는 메커니즘을 제공합니다.
테스트 계획 조각은 컨트롤러와 여기에 포함된 모든 테스트 요소(샘플러 등)로 구성됩니다. 프래그먼트는 모든 스레드 그룹에 있을 수 있습니다. 프래그먼트가 스레드 그룹에 있는 경우 해당 컨트롤러를 비활성화하여 모듈 컨트롤러를 제외하고 프래그먼트가 실행되는 것을 방지할 수 있습니다. 또는 더미 스레드 그룹에 조각을 저장하고 전체 스레드 그룹을 비활성화할 수 있습니다.
여러 조각이 있을 수 있으며 각 조각 아래에는 서로 다른 일련의 샘플러가 있습니다. 그런 다음 모듈 컨트롤러를 사용하여 드롭다운 상자에서 적절한 컨트롤러를 선택하기만 하면 이러한 여러 테스트 사례 간에 쉽게 전환할 수 있습니다. 이를 통해 많은 대체 테스트 계획을 빠르고 쉽게 실행할 수 있습니다.
프래그먼트 이름은 컨트롤러 이름과 모든 상위 이름으로 구성됩니다. 예를 들어:
테스트 계획/프로토콜: JDBC/제어/인터리브 컨트롤러(Module1)
테스트 계획이 다시 로드될 때 이름이 대상 컨트롤러를 찾는 데 사용되기 때문에 모듈 컨트롤러에서 사용하는 모든 조각에는 고유한 이름이 있어야 합니다 . 이러한 이유로 컨트롤러 이름이 기본값에서 변경되었는지 확인하는 것이 가장 좋습니다(위의 예와 같이). 그렇지 않으면 새 요소가 테스트 계획에 추가될 때 실수로 중복이 생성될 수 있습니다.
매개변수 ¶
컨트롤러 포함 ¶
포함 컨트롤러는 외부 JMX 파일을 사용하도록 설계되었습니다. 그것을 사용하려면 테스트 계획 아래에 테스트 조각을 만들고 그 아래에 원하는 샘플러, 컨트롤러 등을 추가하십시오. 그런 다음 테스트 계획을 저장합니다. 이제 파일이 다른 테스트 계획의 일부로 포함될 준비가 되었습니다.
편의를 위해 디버깅을 위해 외부 JMX 파일에 스레드 그룹 을 추가할 수도 있습니다. 모듈 컨트롤러 를 사용하여 테스트 조각을 참조할 수 있습니다 . 스레드 그룹 은 포함 프로세스 중에 무시됩니다.
테스트에서 쿠키 관리자 또는 사용자 정의 변수를 사용하는 경우 포함된 파일이 아닌 최상위 테스트 계획에 배치해야 합니다. 그렇지 않으면 작동이 보장되지 않습니다.
그러나 includecontroller.prefix 속성 이 정의된 경우 내용은 경로 이름 접두사로 사용됩니다.
접두사 + Filename 으로 지정된 위치에서 파일을 찾을 수 없는 경우 컨트롤러 는 JMX 시작 디렉터리와 관련된 Filename 열기를 시도합니다 .
트랜잭션 컨트롤러 ¶
트랜잭션 컨트롤러는 중첩 테스트 요소를 수행하는 데 걸리는 전체 시간을 측정하는 추가 샘플을 생성합니다.
두 가지 작동 모드가 있습니다.
- 중첩된 샘플 다음에 추가 샘플이 추가됩니다.
- 추가 샘플이 중첩 샘플의 상위 항목으로 추가됩니다.
생성된 샘플 시간에는 기본적으로(2.11 이후) 타이머를 제외한 중첩된 샘플러의 모든 시간과 " 생성된 샘플에 타이머 및 사전 사후 프로세서의 지속 시간 포함 " 확인란이 선택되어 있지 않는 한 사전/사후 프로세서의 처리 시간이 포함 됩니다. 클럭 해상도에 따라 개별 샘플러와 타이머를 합한 것보다 약간 더 길 수 있습니다. 시계는 컨트롤러가 시작 시간을 기록한 후 첫 번째 샘플이 시작되기 전에 똑딱거릴 수 있습니다. 마찬가지로 마지막에.
생성된 샘플은 모든 하위 샘플이 성공한 경우에만 성공한 것으로 간주됩니다.
상위 모드에서 개별 샘플은 여전히 트리 보기 리스너에서 볼 수 있지만 더 이상 다른 리스너에서 별도의 항목으로 나타나지 않습니다. 또한 하위 샘플은 CSV 로그 파일에 나타나지 않지만 XML 파일로 저장할 수 있습니다.
매개변수 ¶
녹음 컨트롤러 ¶
녹음 컨트롤러는 프록시 서버가 샘플을 녹음해야 하는 위치를 나타내는 자리 표시자입니다. 테스트 실행 중에는 Simple Controller와 유사하게 효과가 없습니다. 그러나 HTTP(S) 테스트 스크립트 레코더 를 사용하여 녹음하는 동안 모든 녹음된 샘플은 기본적으로 녹음 컨트롤러 아래에 저장됩니다.
크리티컬 섹션 컨트롤러 ¶
크리티컬 섹션 컨트롤러는 컨트롤러의 자식을 실행하기 전에 명명된 잠금이 취해지기 때문에 자식 요소(샘플러/컨트롤러 등)가 단 하나의 스레드에 의해 실행되도록 합니다.
아래 그림은 크리티컬 섹션 컨트롤러를 사용하는 예를 보여줍니다. 아래 그림에서 2개의 크리티컬 섹션 컨트롤러는 다음을 확인합니다.
- DS2-${__threadNum} 은 한 번에 하나의 스레드에서만 실행됩니다.
- DS4-${__threadNum} 은 한 번에 하나의 스레드에서만 실행됩니다.
18.3 리스너 ¶
대부분의 청취자는 테스트 결과를 "듣는" 것 외에도 여러 역할을 수행합니다. 또한 저장된 테스트 결과를 보고, 저장하고, 읽을 수 있는 수단을 제공합니다.
리스너는 발견된 범위의 끝에서 처리됩니다.
테스트 결과의 저장 및 읽기는 일반적입니다. 다양한 리스너에는 결과를 기록하거나 읽을 파일을 지정할 수 있는 패널이 있습니다. 기본적으로 결과는 일반적으로 " .jtl " 확장자를 가진 XML 파일로 저장됩니다. CSV로 저장하는 것이 가장 효율적인 옵션이지만 XML(다른 사용 가능한 옵션)보다 상세하지 않습니다.
리스너는 CLI 모드에서 샘플 데이터를 처리하지 않지만 출력 파일이 구성된 경우 원시 데이터가 저장됩니다. CLI 실행으로 생성된 데이터를 분석하려면 파일을 적절한 리스너에 로드해야 합니다.
새 파일을 로드하기 전에 현재 데이터를 지우려면 파일을 로드하기 전에
또는 메뉴 항목을 사용 하십시오.결과는 XML 또는 CSV 형식 파일에서 읽을 수 있습니다. CSV 결과 파일에서 읽을 때 헤더(있는 경우)는 존재하는 필드를 결정하는 데 사용됩니다. 헤더가 없는 CSV 파일을 올바르게 해석하려면 jmeter.properties 에 적절한 속성을 설정해야 합니다 .
리스너는 샘플이 많으면 많은 메모리를 사용할 수 있습니다. 대부분의 리스너는 현재 다음을 제외하고 해당 범위에 있는 모든 샘플의 복사본을 보관합니다.
- 단순 데이터 작성기
- BeanShell/JSR223 리스너
- 메일러 시각화 도우미
- 요약 보고서
다음 리스너는 더 이상 모든 단일 샘플의 복사본을 보관할 필요가 없습니다. 대신 경과 시간이 동일한 샘플이 집계됩니다. 이제 더 적은 메모리가 필요합니다. 특히 대부분의 샘플이 기껏해야 1~2초 밖에 걸리지 않는 경우에 더욱 그렇습니다.
- 집계 보고서
- 집계 그래프
필요한 메모리 양을 최소화하려면 Simple Data Writer를 사용하고 CSV 형식을 사용하십시오.
저장할 기본 항목 설정에 대한 자세한 내용은 리스너 기본 구성 설명서를 참조하십시오. 출력 파일의 내용에 대한 자세한 내용은 CSV 로그 형식 또는 XML 로그 형식을 참조하십시오.
아래 그림은 결과 파일 구성 패널의 예를 보여줍니다.
매개변수
샘플 결과 저장 구성 ¶
리스너는 아래와 같이 구성 팝업을 사용하여 결과 로그 파일(JTL)에 다른 항목을 저장하도록 구성할 수 있습니다. 기본값은 리스너 기본 구성 설명서에 설명된 대로 정의됩니다. 이름 뒤에 ( CSV )가 있는 항목은 CSV 형식에만 적용됩니다. ( XML )이 있는 항목은 XML 형식에만 적용됩니다. CSV 형식은 현재 줄 바꿈이 포함된 항목을 저장하는 데 사용할 수 없습니다.
쿠키, 메서드 및 쿼리 문자열은 " 샘플러 데이터 " 옵션 의 일부로 저장됩니다 .
그래프 결과 ¶
그래프 결과 수신기는 모든 샘플 시간을 표시하는 간단한 그래프를 생성합니다. 그래프 하단을 따라 현재 샘플(검정색), 모든 샘플의 현재 평균(파란색), 현재 표준 편차(빨간색) 및 현재 처리율(녹색)이 밀리초 단위로 표시됩니다.
처리량 숫자는 서버가 처리한 실제 요청/분 수를 나타냅니다. 이 계산에는 테스트에 추가한 지연과 JMeter의 자체 내부 처리 시간이 포함됩니다. 이와 같은 계산을 수행할 때의 이점은 이 숫자가 실제를 나타낸다는 것입니다. 실제로 서버는 분당 많은 요청을 처리했으며 스레드 수를 늘리거나 지연을 줄여 서버의 최대 처리량을 찾을 수 있습니다. 반면에 지연과 JMeter의 처리를 고려한 계산을 수행했다면 그 수치에서 무엇을 결론을 내릴 수 있는지 명확하지 않을 것입니다.
다음 표는 그래프의 항목을 간략하게 설명합니다. 통계 용어의 정확한 의미에 대한 자세한 내용은 웹(예: Wikipedia) 또는 통계 관련 서적을 참조하십시오.
- 데이터 - 실제 데이터 값을 플로팅합니다.
- 평균 - 평균 플롯
- 중앙값 - 중앙값 (중간 값) 을 플로팅합니다.
- 편차 - 표준 편차 (변동 측정)를 플로팅합니다.
- 처리량 - 단위 시간당 샘플 수를 표시합니다.
디스플레이 하단의 개별 수치는 현재 값입니다. " Latest Sample "은 그래프에 " Data " 로 표시된 현재 경과된 샘플 시간 입니다.
그래프 왼쪽 상단에 표시되는 값은 응답 시간의 최대 90 번째 백분위수입니다.
주장 결과 ¶
어설션 결과 시각화 도우미는 가져온 각 샘플의 레이블을 보여줍니다. 또한 테스트 계획의 일부인 모든 어설션 의 실패를 보고합니다.
결과 트리 보기 ¶
응답을 보는 방법에는 여러 가지가 있으며 왼쪽 패널 하단의 드롭다운 상자에서 선택할 수 있습니다.
렌더러 | 설명 |
---|---|
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 쿼리를 상단 패널에 적용할 수 있으며 결과는 하단 패널에 표시됩니다. |
자동으로 스크롤하시겠습니까? 옵션은 트리 선택에서 마지막 노드를 표시하도록 허용합니다.
검색 옵션을
사용하면 대부분의 보기에서 표시된 데이터를 검색할 수도 있습니다. 검색 결과는 위의 디스플레이에서 강조 표시됩니다. 예를 들어 아래 제어판 스크린샷은 " 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(아래)는 문서 디스플레이의 예를 보여줍니다.
집계 보고서 ¶
처리량은 샘플러 대상(예: HTTP 샘플의 경우 원격 서버)의 관점에서 계산됩니다. JMeter는 요청이 생성된 총 시간을 고려합니다. 다른 샘플러와 타이머가 동일한 스레드에 있으면 총 시간이 증가하므로 처리량 값이 감소합니다. 따라서 이름이 다른 두 개의 동일한 샘플러는 동일한 이름을 가진 두 개의 샘플러 처리량의 절반이 됩니다. 집계 보고서에서 최상의 결과를 얻으려면 샘플러 이름을 올바르게 선택하는 것이 중요합니다.
중앙값 및 90% 선(90 번째 백분위수 ) 값 을 계산 하려면 추가 메모리가 필요합니다. JMeter는 이제 동일한 경과 시간으로 샘플을 결합하므로 훨씬 적은 메모리가 사용됩니다. 그러나 몇 초 이상 걸리는 샘플의 경우 더 적은 수의 샘플이 동일한 시간을 가질 가능성이 있으며 이 경우 더 많은 메모리가 필요합니다. 나중에 이 리스너를 사용하여 성능 영향을 피하기 위해 권장되는 방법인 CSV 또는 XML 결과 파일을 다시 로드할 수 있습니다. 개별 샘플을 저장하지 않으므로 일정한 메모리가 필요한 유사한 리스너에 대한 요약 보고서 를 참조하십시오 .
- 레이블 - 샘플의 레이블입니다. " 레이블에 그룹 이름을 포함하시겠습니까? "를 선택하면 스레드 그룹의 이름이 접두사로 추가됩니다. 이를 통해 필요한 경우 서로 다른 스레드 그룹의 동일한 레이블을 별도로 대조할 수 있습니다.
- # 샘플 - 동일한 레이블을 가진 샘플의 수
- 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 " 체크박스를 선택하는 예를 보여줍니다.
테이블에서 결과 보기 ¶
기본적으로 기본(상위) 샘플만 표시합니다. 하위 샘플(하위 샘플)을 표시하지 않습니다. JMeter에는 " Child Samples? " 체크박스가 있습니다. 이 옵션을 선택하면 기본 샘플 대신 하위 샘플이 표시됩니다.
단순 데이터 작성기 ¶
집계 그래프 ¶
아래 그림은 이 그래프를 그리기 위한 설정의 예를 보여줍니다.
매개변수 ¶
- 표시할 열 : 그래프에 표시할 열을 선택합니다.
- 직사각형 색상: 오른쪽 색상 직사각형을 클릭하면 팝업 대화 상자가 열리고 열에 대한 사용자 정의 색상을 선택합니다.
- 전경색 값 텍스트 색상을 변경할 수 있습니다.
- 값 글꼴: 텍스트의 글꼴 설정을 정의할 수 있습니다.
- 윤곽선 막대를 그리시겠습니까? 막대 차트에 경계선을 그리거나 하지 않으려면
- 번호 그룹화를 표시하시겠습니까? Y축 레이블에 숫자 그룹화를 표시할지 여부를 지정합니다.
- 값 레이블이 수직입니까? 값 레이블의 방향을 변경합니다. (기본값은 가로)
-
열 레이블 선택: 결과 레이블로 필터링합니다. 정규 표현식을 사용할 수 있습니다. 예: .*트랜잭션.*
그래프를 표시하기 전에 필터 적용 버튼을 클릭하여 내부 데이터를 새로 고칩니다.
응답 시간 그래프 ¶
아래 그림은 이 그래프를 그리기 위한 설정의 예를 보여줍니다.
매개변수 ¶
메일러 시각화 도우미 ¶
메일러 시각화 도우미는 테스트 실행이 서버에서 너무 많은 실패한 응답을 받는 경우 이메일을 보내도록 설정할 수 있습니다.
매개변수 ¶
BeanShell 수신기 ¶
BeanShell 리스너는 저장 등을 위해 샘플을 처리하기 위해 BeanShell을 사용할 수 있도록 합니다.
BeanShell 사용에 대한 자세한 내용은 BeanShell 웹사이트를 참조하십시오.
테스트 요소는 ThreadListener 및 TestListener 메서드를 지원합니다. 이들은 초기화 파일에 정의되어야 합니다. 예제 정의 는 BeanShellListeners.bshrc 파일을 참조하십시오 .
매개변수 ¶
- 매개변수
- 매개변수를 단일 변수로 포함하는 문자열
- bsh.args
- 매개변수를 포함하는 문자열 배열, 공백으로 분할
스크립트를 호출하기 전에 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 으로 설정됩니다.'. 번호 매기기가 비활성화되고 접미사 추가가 비활성화된 경우 파일 접두사가 전체 파일 이름으로 사용됩니다. 이렇게 하면 필요한 경우 고정 파일 이름을 생성할 수 있습니다. 생성된 파일 이름은 샘플 응답에 저장되며 필요한 경우 테스트 로그 출력 파일에 저장할 수 있습니다.
현재 샘플이 먼저 저장되고 그 다음에 하위 샘플(하위 샘플)이 저장됩니다. 변수 이름이 제공되면 파일 이름은 하위 샘플이 나타나는 순서대로 저장됩니다. 아래를 참조하십시오.
매개변수 ¶
접두사에 상위 폴더가 없으면 JMeter는 이를 생성하고 실패하면 테스트를 중지합니다.
JSR223 리스너 ¶
JSR223 Listener를 사용하면 JSR223 스크립트 코드를 샘플 결과에 적용할 수 있습니다.
매개변수 ¶
- 매개변수
- 매개변수를 단일 변수로 포함하는 문자열
- 인수
- 매개변수를 포함하는 문자열 배열, 공백으로 분할
스크립트를 호출하기 전에 일부 변수가 설정됩니다. 이것은 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을 확인하십시오.
요약 결과 생성 ¶
# 해당 이름으로 요약자를 자동으로 시작하려면 다음 속성을 정의합니다. # (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가 간격 경계와 동기화하므로 첫 번째 델타는 일반적으로 더 낮습니다. 테스트가 일반적으로 정확한 간격 경계에서 끝나지 않기 때문에 마지막 델타는 더 낮을 것입니다.
레이블은 샘플 결과를 함께 그룹화하는 데 사용됩니다. 따라서 여러 스레드 그룹이 있고 모두 요약하려면 동일한 레이블을 사용하거나 요약자를 테스트 계획에 추가하십시오(모든 스레드 그룹이 범위 내에 있도록). 적절한 레이블을 사용하고 요약자를 테스트 계획의 적절한 부분에 추가하여 다양한 요약 그룹화를 구현할 수 있습니다.
이것은 버그가 아니라 스레드 그룹 전체를 요약할 수 있는 디자인 선택입니다.
매개변수 ¶
백엔드 리스너 ¶
매개변수 ¶
다음 매개변수는 GraphiteBackendListenerClient 구현에 적용됩니다.
매개변수 ¶
자세한 내용은 실시간 결과 를 참조하십시오.
JMeter 3.2부터 사용자 정의 스키마를 사용하여 InfluxDB에 직접 쓸 수 있는 구현입니다. InfluxdbBackendListenerClient 라고 합니다 . 다음 매개변수는 InfluxdbBackendListenerClient 구현에 적용됩니다.
매개변수 ¶
자세한 내용은 Grafana 의 실시간 결과 및 Influxdb 주석 도 참조하세요. InfluxDB v2용 리스너 구성에 대한 하위 섹션도 있습니다 .
JMeter 5.4부터 모든 샘플 결과를 InfluxDB에 쓰는 구현입니다. InfluxDBrawBackendListenerClient 라고 합니다 . 이것은 데이터 및 개별 쓰기의 증가로 인해 JMeter와 InfluxDB 모두 에서 InfluxdbBackendListenerClient 보다 더 많은 리소스를 사용한다는 점에 주목할 가치가 있습니다 . 다음 매개변수는 InfluxDBrawBackendListenerClient 구현에 적용됩니다.
매개변수 ¶
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 를 사용하고 " 공유 모드 "를 " 현재 스레드 "로 설정합니다.
특별한 경우로 구분자 필드 의 문자열 " \t "(따옴표 제외)는 탭으로 처리됩니다.
파일의 끝( EOF )에 도달하고 재활용 옵션이 true 이면 파일의 첫 번째 줄부터 읽기가 다시 시작됩니다.
재활용 옵션이 false 이고 stopThread 가 false 이면 파일 끝에 도달할 때 모든 변수가 <EOF> 로 설정됩니다. 이 값은 JMeter 속성 csvdataset.eofstring 을 설정하여 변경할 수 있습니다 .
Recycle 옵션이 false 이고 Stop Thread 가 true 이면 EOF 에 도달 하면 스레드가 중지됩니다.
매개변수 ¶
- 모든 스레드 - (기본값) 파일은 모든 스레드 간에 공유됩니다.
- 현재 스레드 그룹 - 요소가 나타나는 각 스레드 그룹에 대해 각 파일이 한 번씩 열립니다.
- 현재 스레드 - 각 파일은 각 스레드에 대해 별도로 열립니다.
- 식별자 - 동일한 식별자를 공유하는 모든 스레드가 동일한 파일을 공유합니다. 예를 들어 4개의 스레드 그룹이 있는 경우 둘 이상의 그룹에 대해 공통 ID를 사용하여 그룹 간에 파일을 공유할 수 있습니다. 또는 스레드 번호를 사용하여 다른 스레드 그룹의 동일한 스레드 번호 간에 파일을 공유할 수 있습니다.
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 에 대해 요청이 이루어집니다 .
매개변수 ¶
HTTP 권한 부여 관리자 ¶
권한 부여 관리자를 사용하면 서버 인증을 사용하여 제한된 웹 페이지에 대해 하나 이상의 사용자 로그인을 지정할 수 있습니다. 브라우저를 사용하여 제한된 페이지에 액세스하고 브라우저에 로그인 대화 상자가 표시되면 이러한 유형의 인증이 표시됩니다. JMeter는 이러한 유형의 페이지를 만나면 로그인 정보를 전송합니다.
인증 헤더는 트리 보기 수신기 " 요청 " 탭 에 표시되지 않을 수 있습니다 . Java 구현은 선점 인증을 수행하지만 JMeter가 헤더를 가져올 때 Authorization 헤더를 반환하지 않습니다. HttpComponents(HC 4.5.X) 구현은 3.2 이후로 기본적으로 선점형이며 헤더가 표시됩니다. 이를 비활성화하려면 다음과 같이 값을 설정하십시오. 이 경우 인증은 챌린지에 대한 응답으로만 수행됩니다.
jmeter.properties 파일에서 httpclient4.auth.preemptive =false 설정
매개변수 ¶
- 자바
- 기초적인
- HTTP 클라이언트 4
- BASIC , DIGEST 및 Kerberos
Kerberos 구성:
Kerberos를 구성하려면 최소한 두 개의 JVM 시스템 속성을 설정해야 합니다.
- -Djava.security.krb5.conf=krb5.conf
- -Djava.security.auth.login.config=jaas.conf
bin/system.properties 파일에서 두 속성을 구성할 수도 있습니다 . JMeter bin 폴더에 있는 두 개의 샘플 구성 파일( krb5.conf 및 jaas.conf )에서 추가 문서에 대한 참조를 확인하고 Kerberos 구성과 일치하도록 조정하십시오.
SPNEGO의 경우 기본적으로 자격 증명 위임이 비활성화되어 있습니다. 활성화하려면 kerberos.spnego.delegate_cred 속성 을 true 로 설정하면 됩니다 .
Kerberos SPNEGO 인증용 SPN을 생성할 때 IE 및 Firefox는 URL에서 포트 번호를 생략합니다. Chrome에는 표준 번호( 80 및 443 )와 다른 경우 포트 번호를 포함 하는 옵션( --enable-auth-negotiate-port )이 있습니다 . 그 동작은 아래와 같이 다음 JMeter 속성을 설정하여 에뮬레이트할 수 있습니다.
jmeter.properties 또는 user.properties 에서 다음 을 설정합니다.
- kerberos.spnego.strip_port=거짓
통제 수단:
- 추가 버튼 - 인증 테이블에 항목을 추가합니다.
- 삭제 버튼 - 현재 선택된 테이블 항목을 삭제합니다.
- 로드 버튼 - 이전에 저장한 인증 테이블을 로드하고 기존 인증 테이블 항목에 항목을 추가합니다.
- 다른 이름으로 저장 버튼 - 현재 인증 테이블을 파일로 저장합니다.
이 예제를 다운로드 하십시오. 이 예에서 우리는 세 개의 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 " 에 대한 요청을 만듭니다 .
테스트 계획을 실행할 때 JMeter는 요청하는 URL에 대한 Authorization 테이블을 찾습니다. 기본 URL이 URL과 일치하면 JMeter는 요청과 함께 이 정보를 전달합니다.
HTTP 캐시 관리자 ¶
HTTP 캐시 관리자는 브라우저 캐시 기능을 시뮬레이션하기 위해 해당 범위 내에서 HTTP 요청에 캐싱 기능을 추가하는 데 사용됩니다. 각 가상 사용자 스레드에는 자체 캐시가 있습니다. 기본적으로 캐시 관리 프로그램은 LRU 알고리즘을 사용하여 가상 사용자 스레드당 최대 5000개의 항목을 캐시에 저장합니다. 이 값을 수정 하려면 " maxSize " 속성을 사용하십시오 . 이 값을 늘릴수록 HTTP 캐쉬 관리 프로그램이 메모리를 더 많이 사용하므로 -Xmx JVM 옵션을 적절하게 조정해야 합니다.
샘플이 성공하면(즉, 응답 코드가 2xx ) Last-Modified 및 Etag ( 관련되는 경우 만료됨 ) 값이 URL에 저장됩니다. 다음 샘플을 실행하기 전에 샘플러는 캐시에 항목이 있는지 확인하고, 있으면 If-Last-Modified 및 If-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 요청이 있고 응답에 쿠키가 포함된 경우 쿠키 관리자는 자동으로 해당 쿠키를 저장하고 해당 특정 웹 사이트에 대한 모든 향후 요청에 사용합니다. 각 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 . 이는 수동으로 정의된 쿠키에도 적용됩니다. 이러한 쿠키는 업데이트될 때 디스플레이에서 제거됩니다. 또한 쿠키 이름은 고유해야 합니다. 동일한 이름으로 두 번째 쿠키가 정의되면 첫 번째 쿠키가 대체됩니다.
매개변수 ¶
[참고: IPv6 주소로 테스트할 웹사이트가 있는 경우 HC4CookieHandler (IPv6 호환)를 선택하세요.]
" domain "은 서버의 호스트 이름입니다( http:// 제외). 포트는 현재 무시됩니다.
HTTP 요청 기본값 ¶
이 요소를 사용하면 HTTP 요청 컨트롤러가 사용하는 기본값을 설정할 수 있습니다. 예를 들어, 25개의 HTTP 요청 컨트롤러가 있는 테스트 계획을 만들고 모든 요청이 동일한 서버로 전송되는 경우 " 서버 이름 또는 IP " 필드가 채워진 단일 HTTP 요청 기본값 요소를 추가할 수 있습니다. 그런 다음 , 25개의 HTTP 요청 컨트롤러를 추가할 때 " 서버 이름 또는 IP " 필드를 비워 둡니다. 컨트롤러는 HTTP 요청 기본값 요소에서 이 필드 값을 상속합니다.
매개변수 ¶
HTTP 헤더 관리자 ¶
헤더 관리자를 사용하면 HTTP 요청 헤더를 추가하거나 재정의할 수 있습니다.
JMeter는 이제 여러 헤더 관리자를 지원합니다 . 헤더 항목이 병합되어 샘플러에 대한 목록을 형성합니다. 병합할 항목이 기존 헤더 이름과 일치하면 이전 항목을 대체합니다. 이를 통해 기본 헤더 세트를 설정하고 특정 샘플러에 조정을 적용할 수 있습니다. 헤더의 빈 값은 기존 헤더를 제거하지 않고 해당 값을 대체할 뿐입니다.
매개변수 ¶
이 예제를 다운로드 하십시오. 이 예에서는 JMeter가 기본 " User-Agent " 요청 헤더를 재정의하고 특정 Internet Explorer 에이전트 문자열을 대신 사용하도록 지시하는 테스트 계획을 만들었습니다. (그림 12 및 13 참조).
JDBC 연결 구성 ¶
매개변수 ¶
정말로 공유 풀링을 사용하고 싶다면(왜?), 스레드가 서로를 기다리지 않도록 최대 개수를 스레드 수와 동일하게 설정하십시오.
유효성 검사 쿼리 목록은 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을 선택
사전 구성된 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
다른 데이터베이스와 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]
키 저장소 구성 ¶
키 저장소 구성 요소를 사용하면 키 저장소가 로드되는 방법과 사용할 키를 구성할 수 있습니다. 이 구성 요소는 일반적으로 응답 시간에 키 저장소 초기화를 고려하지 않으려는 HTTPS 시나리오에서 사용됩니다.
이 요소를 사용하려면 먼저 테스트하려는 클라이언트 인증서로 Java 키 저장소를 설정해야 합니다.
- Java keytool 유틸리티 또는 PKI를 통해 인증서 생성
- PKI로 생성한 경우 JKS에서 허용하는 형식으로 변환하여 Java Key Store에서 키를 가져옵니다.
- 그런 다음 두 JVM 속성을 통해 키 저장소 파일을 참조하거나 system.properties 에 추가합니다 .
- -Djavax.net.ssl.keyStore=path_to_keystore
- -Djavax.net.ssl.keyStorePassword=password_of_keystore
PKCS11을 저장소의 소스로 사용하려면 javax.net.ssl.keyStoreType 을 PKCS11 로, javax.net.ssl.keyStore 를 NONE 으로 설정해야 합니다 .
매개변수 ¶
- https.use.cached.ssl.context=false 는 jmeter.properties 또는 user.properties에 설정 되어 있습니다 .
- HTTP 요청에 HTTPClient 4 구현을 사용합니다.
로그인 구성 요소 ¶
로그인 구성 요소를 사용하면 설정의 일부로 사용자 이름과 비밀번호를 사용하는 샘플러에서 사용자 이름과 비밀번호 설정을 추가하거나 무시할 수 있습니다.
매개변수 ¶
TCP 샘플러 구성 ¶
TCP 샘플러 구성은 TCP 샘플러에 대한 기본 데이터를 제공합니다.
매개변수 ¶
사용자 정의 변수 ¶
사용자 정의 변수 요소를 사용하면 테스트 계획 에서와 같이 초기 변수 세트 를 정의할 수 있습니다 .
UDV는 호출될 때마다 다른 결과를 생성하는 함수와 함께 사용하면 안 됩니다. 첫 번째 함수 호출의 결과만 변수에 저장됩니다. 그러나 UDV는 __P() 와 같은 함수와 함께 사용할 수 있습니다 . 예를 들면 다음과 같습니다.
호스트 ${__P(호스트, 로컬 호스트)}
JMeter 속성 " host " 의 값을 갖도록 " HOST " 변수를 정의하고 정의되지 않은 경우 기본값은 " localhost "입니다.
테스트 실행 중 변수를 정의하려면 사용자 매개변수 를 참조하십시오 . UDV는 계획에 나타나는 순서대로 위에서 아래로 처리됩니다.
단순화를 위해 UDV는 스레드 그룹의 시작 부분에만(또는 테스트 계획 자체 아래에) 배치하는 것이 좋습니다.
테스트 계획과 모든 UDV가 처리되면 결과 변수 집합이 각 스레드에 복사되어 초기 변수 집합을 제공합니다.
사용자 매개변수 전처리기 또는 정규식 추출기와 같은 런타임 요소가 UDV 변수 중 하나와 동일한 이름을 가진 변수를 정의하는 경우 이는 초기 값을 대체하고 스레드의 다른 모든 테스트 요소는 업데이트된 값을 보게 됩니다. 값.
매개변수 ¶
랜덤 변수 ¶
임의 변수 구성 요소는 임의의 숫자 문자열을 생성하고 나중에 사용할 수 있도록 변수에 저장하는 데 사용됩니다. __Random() 함수 와 함께 사용자 정의 변수 를 사용하는 것보다 간단 합니다.
출력 변수는 난수 생성기를 사용하여 구성되고 결과 숫자는 형식 문자열을 사용하여 형식이 지정됩니다. 숫자는 minimum+Random.nextInt(maximum-minimum+1) 공식을 사용하여 계산됩니다 . Random.nextInt() 에는 양의 정수가 필요합니다. 이것은 최대-최소값 (즉, 범위)이 2147483647 보다 작아야 함을 의미합니다 . 그러나 최소값 과 최대 값은 범위가 정상인 한 긴 값 이 될 수 있습니다 .
매개변수 ¶
카운터 ¶
사용자가 스레드 그룹의 어디에서나 참조할 수 있는 카운터를 만들 수 있습니다. 카운터 구성을 통해 사용자는 시작점, 최대값 및 증분을 구성할 수 있습니다. 카운터는 처음부터 최대까지 반복한 다음 처음부터 다시 시작하여 테스트가 끝날 때까지 계속합니다.
카운터는 값을 저장하기 위해 long을 사용하므로 범위는 -2^63 ~ 2^63-1 입니다.
매개변수 ¶
단순 구성 요소 ¶
단순 구성 요소를 사용하면 샘플러에서 임의의 값을 추가하거나 재정의할 수 있습니다. 값의 이름과 값 자체를 선택할 수 있습니다. 일부 모험적인 사용자는 이 요소의 용도를 찾을 수 있지만 여기서는 주로 개발자를 위한 기본 GUI로 새 JMeter 구성 요소를 개발하는 동안 사용할 수 있습니다.
매개변수 ¶
MongoDB 소스 구성(지원 중단됨) ¶
그런 다음 이 코드를 사용하여 MongoDBHolder 요소를 통해 Beanshell 또는 JSR223 테스트 요소의 com.mongodb.DB 개체에 액세스할 수 있습니다.
수입 com.mongodb.DB; org.apache.jmeter.protocol.mongodb.config.MongoDBHolder 가져오기; DB db = MongoDBHolder.getDBFromSource("MongoDB 소스 속성 값", "속성 데이터베이스 이름의 값"); …
매개변수 ¶
재시도를 계속할 수 있는 최대 시간이 있으며 기본적으로 15초입니다.
이는 작업을 차단하여 서버가 일시적으로 다운될 때 일부 예외가 throw되는 것을 방지하는 데 유용할 수 있습니다.
새 기본 노드로의 전환을 원활하게 하는 것도 유용할 수 있습니다(다시 시도 시간 내에 새 기본 노드가 선택되도록).
- 복제본 세트의 경우 드라이버는 새 노드로 즉시 장애 조치하는 대신 해당 시간 동안 이전 기본 노드에 연결을 시도합니다.
- 이것은 응용 프로그램에서 처리해야 하는 소켓의 읽기/쓰기 작업에서 예외가 throw되는 것을 방지하지 않습니다.
새 연결을 설정할 때만 사용됩니다. Socket.connect(java.net.SocketAddress, int)
기본값은 0 이며 시간 초과가 없음을 의미합니다.
기본값은 0 이며 autoConnectRetry 가 켜져 있는 경우 기본값 15초를 사용함을 의미합니다 .
기본값은 120,000 입니다.
기본값은 0 이며 시간 초과가 없음을 의미합니다.
기본값은 false 입니다.
모든 추가 스레드는 즉시 예외를 받습니다.
예를 들어 connectionsPerHost 가 10 이고 threadAllowedToBlockForConnectionMultiplier 가 5 이면 최대 50개의 스레드가 연결을 기다릴 수 있습니다.
기본값은 5 입니다.
가 지정 되면 이 설정은 무시됩니다. 기본값은 false 입니다.
볼트 연결 구성 ¶
매개변수 ¶
18.5 주장 ¶
어설션은 샘플러에 대한 추가 검사를 수행하는 데 사용되며 동일한 범위의 모든 샘플러 후에 처리 됩니다. Assertion이 특정 샘플러에만 적용되도록 하려면 샘플러의 자식으로 추가하십시오.
어설션은 기본 샘플, 하위 샘플 또는 둘 다에 적용할 수 있습니다. 기본값은 어설션을 기본 샘플에만 적용하는 것입니다. Assertion이 이 옵션을 지원하면 GUI에 다음과 같은 항목이 표시됩니다.
또는 다음서브 샘플러가 실패하고 메인 샘플이 성공하면 메인 샘플은 실패 상태로 설정되고 주장 결과가 추가됩니다. JMeter 변수 옵션을 사용하면 메인 샘플과 관련이 있는 것으로 가정하며, 모든 실패는 메인 샘플에만 적용됩니다.
응답 주장 ¶
응답 어설션 제어판을 사용하면 요청 또는 응답의 다양한 필드와 비교할 패턴 문자열을 추가할 수 있습니다. 패턴 문자열은 다음과 같습니다.
- 포함 , 일치 : Perl5 스타일 정규식
- Equals , Substring : 일반 텍스트, 대소문자 구분
패턴 일치 문자의 요약은 ORO Perl5 정규식에서 찾을 수 있습니다.
문자열이 전체 응답 과 일치 할 것으로 예상되는지 또는 응답에 패턴 만 포함 할 것으로 예상되는지 여부를 선택할 수도 있습니다 . 추가 유연성을 위해 모든 컨트롤러에 여러 어설션을 연결할 수 있습니다.
패턴 문자열은 둘러싸는 구분 기호를 포함하지 않아야 합니다. 즉 /Price: \d+/ 가 아닌 Price: \d + 를 사용 합니다.
기본적으로 패턴은 여러 줄 모드에 있습니다. 즉, " . " 메타 문자가 줄 바꿈과 일치하지 않습니다. 여러 줄 모드에서 " ^ " 및 " $ "는 전체 문자열의 시작과 끝이 아니라 문자열 내의 모든 줄의 시작 또는 끝과 일치합니다. \s 는 개행과 일치합니다 . 경우도 중요합니다. 이러한 설정을 재정의하려면 확장된 정규식 구문을 사용할 수 있습니다. 예를 들어:
- (?나)
- 대소문자 무시
- (?에스)
- 대상을 한 줄로 취급합니다. 즉 " . "는 개행과 일치 합니다.
- (?이다)
- 위의 둘 다
- (?i)사과(?-i) 파이
- " AppLE Pie " 는 일치 하지만 " AppLE pIe " 는 일치하지 않습니다.
- (?s)애플.+?파이
- 다음 줄에 있을 수 있는 Apple 다음에 Pie 와 일치 합니다.
- 사과(?s).+?파이
- 위와 같지만 처음에 (?s) 를 사용하는 것이 더 명확할 것 입니다.
매개변수 ¶
- 메인 샘플만 - 메인 샘플에만 적용
- 하위 샘플만 - 하위 샘플에만 적용됩니다.
- 기본 샘플 및 하위 샘플 - 둘 다에 적용됩니다.
- 사용할 JMeter 변수 이름 - 어설션은 명명된 변수의 내용에 적용됩니다.
- 텍스트 응답 - HTTP 헤더를 제외한 서버의 응답 텍스트, 즉 본문입니다.
- 요청 데이터 - HTTP 헤더를 제외한 서버로 보낸 요청 텍스트, 즉 본문입니다.
- 응답 코드 - 예: 200
- 응답 메시지 - 예: 확인
- Set-Cookie 헤더를 포함한 응답 헤더(있는 경우)
- 헤더 요청
- 샘플링된 URL
- 문서(텍스트) - Apache Tika를 통해 다양한 유형의 문서에서 텍스트를 추출합니다( 보기 결과 트리 문서 보기 섹션 참조).
샘플의 전체 성공은 어설션의 결과와 기존 응답 상태를 결합하여 결정됩니다. Ignore Status (상태 무시) 확인란을 선택 하면 어설션을 평가하기 전에 응답 상태가 강제로 성공 상태가 됩니다.
상태가 4xx 및 5xx 범위 인 HTTP 응답 은 일반적으로 실패한 것으로 간주됩니다. " 상태 무시 " 확인란을 사용하여 추가 검사를 수행하기 전에 성공적인 상태를 설정할 수 있습니다. 이것은 이전 어설션 실패를 지우는 효과가 있으므로 이것이 첫 번째 어설션에만 설정되어 있는지 확인하십시오.- 포함 - 텍스트에 정규식 패턴이 포함된 경우 true
- 일치 - 전체 텍스트가 정규식 패턴과 일치하는 경우 true
- 같음 - 전체 텍스트가 패턴 문자열과 같으면 참(대소문자 구분)
- 하위 문자열 - 텍스트에 패턴 문자열이 포함된 경우 true(대소문자 구분)
패턴은 Perl5 스타일의 정규 표현식이지만 괄호가 없습니다.
기간 주장 ¶
Duration Assertion은 각 응답이 주어진 시간 내에 수신되었는지 테스트합니다. 주어진 시간(밀리초)보다 오래 걸리는 응답(사용자가 지정)은 실패한 응답으로 표시됩니다.
크기 주장 ¶
Size Assertion은 각 응답에 올바른 수의 바이트가 포함되어 있는지 테스트합니다. 크기가 주어진 바이트 수와 같거나, 크거나, 작거나, 같지 않음을 지정할 수 있습니다.
매개변수 ¶
- 기본 샘플만 - 어설션은 기본 샘플에만 적용됩니다.
- 하위 샘플만 - 어설션은 하위 샘플에만 적용됩니다.
- 기본 샘플 및 하위 샘플 - 어설션이 둘 다에 적용됩니다.
- 사용할 JMeter 변수 이름 - 어설션은 명명된 변수의 내용에 적용됩니다.
XML 어설션 ¶
XML Assertion은 응답 데이터가 형식적으로 올바른 XML 문서로 구성되어 있는지 테스트합니다. DTD 또는 스키마를 기반으로 하는 XML의 유효성을 검사하거나 추가 유효성 검사를 수행하지 않습니다.
BeanShell 어설션 ¶
BeanShell 주장은 사용자가 BeanShell 스크립트를 사용하여 주장 확인을 수행할 수 있도록 합니다.
BeanShell 사용에 대한 자세한 내용은 BeanShell 웹사이트를 참조하십시오.
테스트 스크립트의 각 스레드에서 어설션이 독립적으로 발생할 때마다 다른 인터프리터가 사용되지만 후속 호출에는 동일한 인터프리터가 사용됩니다. 이는 변수가 어설션에 대한 호출 간에 지속됨을 의미합니다.
모든 어설션은 샘플러와 동일한 스레드에서 호출됩니다.
" beanshell.assertion.init " 속성 이 정의되면 소스 파일의 이름으로 인터프리터에 전달됩니다. 이것은 공통 메소드 및 변수를 정의하는 데 사용할 수 있습니다. bin 디렉토리 에 샘플 초기화 파일이 있습니다 : BeanShellAssertion.bshrc
테스트 요소는 ThreadListener 및 TestListener 메서드를 지원합니다. 이들은 초기화 파일에 정의되어야 합니다. 예제 정의 는 BeanShellListeners.bshrc 파일을 참조하십시오 .
매개변수 ¶
- 매개변수 - 매개변수를 단일 변수로 포함하는 문자열
- bsh.args - 매개변수를 포함하는 문자열 배열, 공백으로 분할
시도할 수 있는 샘플 스크립트 가 있습니다.
스크립트를 호출하기 전에 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(문자열)
HTML 주장 ¶
HTML Assertion을 사용하면 JTidy를 사용하여 응답 데이터의 HTML 구문을 확인할 수 있습니다.
매개변수 ¶
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>와 일치
매개변수 ¶
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>와 일치
매개변수 ¶
JSR223 어설션 ¶
JSR223 Assertion을 사용하면 JSR223 스크립트 코드를 사용하여 이전 샘플의 상태를 확인할 수 있습니다.
매개변수 ¶
- 매개변수 - 매개변수를 단일 변수로 포함하는 문자열
- args - 매개변수를 포함하는 문자열 배열, 공백으로 분할
다음 변수는 스크립트에서 사용하도록 설정됩니다.
- 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을 확인하십시오.
주장 비교 ¶
매개변수 ¶
SMIME 어설션 ¶
- bcmail-xxx.jar (바운시캐슬 SMIME/CMS)
- bcprov-xxx.jar (BouncyCastle 공급자)
메일 판독기 샘플러 를 사용하는 경우 " MIME(원시)를 사용하여 메시지 저장 "을 선택했는지 확인하십시오 . 그렇지 않으면 어설션이 메시지를 올바르게 처리할 수 없습니다.
매개변수 ¶
JSON 어설션 ¶
이 구성 요소를 사용하면 JSON 문서의 유효성 검사를 수행할 수 있습니다. 먼저 JSON을 구문 분석하고 데이터가 JSON이 아닌 경우 실패합니다. 둘째, Jayway JsonPath 1.2.0 의 구문을 사용하여 지정된 경로를 검색합니다 . 경로를 찾지 못하면 실패합니다. 셋째, 문서에서 JSON 경로가 발견되고 예상 값에 대한 유효성 검사가 요청되면 유효성 검사를 수행합니다. null 값 의 경우 GUI에 특수 확인란이 있습니다. 경로가 배열 개체를 반환하면 반복되고 예상 값이 발견되면 어설션이 성공합니다. 빈 배열을 확인하려면 [] 를 사용하십시오.끈. 또한 patch가 사전 객체를 반환하면 비교 전에 문자열로 변환됩니다.
매개변수 ¶
JSON JMESPath 어설션 ¶
이 구성 요소를 사용하면 JMESPath
를 사용하여 JSON 문서 콘텐츠에 대해 어설션을 수행할 수 있습니다 . 먼저 JSON을 구문 분석하고 데이터가 JSON이 아닌 경우 실패합니다.
둘째, JMESPath 구문을 사용하여 지정된 경로를 검색합니다.
경로를 찾지 못하면 실패합니다.
셋째, 문서에서 JMES 경로가 발견되고 예상 값에 대한 유효성 검사가 요청되면 이 추가 검사를 수행합니다. null 여부를 확인하려면 null 예상 확인란을 사용합니다.
JMESPath 표현식이 컴파일되지 않고 오류가 발생하므로 경로는 null일 수 없습니다. 비어 있거나 null 응답이 예상되는 경우에도 유효한 JMESPath 표현식을 입력해야 합니다.
매개변수 ¶
18.6 타이머 ¶
를 설정하여 임의 타이머로 계산된 절전 지연에 곱셈 계수를 적용할 수 있습니다. 여기서 float number는 10진수 양수입니다. JMeter는 이 요소에 계산된 수면 지연을 곱합니다. 이 기능은 다음에서 사용할 수 있습니다.
타이머는 샘플러와 함께만 처리됩니다. 샘플러와 동일한 범위에 있지 않은 타이머는 전혀 처리되지 않습니다.
단일 샘플러에 타이머를 적용하려면 타이머를 샘플러의 자식 요소로 추가합니다. 타이머는 샘플러가 실행되기 전에 적용됩니다. 샘플러 다음에 타이머를 적용하려면 다음 샘플러에 타이머를 추가하거나 Flow Control Action Sampler의 자식으로 추가하십시오.
가우스 랜덤 타이머 ¶
이 타이머는 대부분의 시간 간격이 특정 값 근처에서 발생하는 임의의 시간 동안 각 스레드 요청을 일시 중지합니다. 총 지연은 가우스 분포 값(평균 0.0 및 표준 편차 1.0 )에 지정한 편차 값과 오프셋 값을 곱한 값의 합입니다. 그것을 설명하는 또 다른 방법은 Gaussian 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 Period 와 Delay 를 모두 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초 등이 되었습니다.
매개변수 ¶
타이머 동기화 ¶
SyncTimer의 목적은 X개의 스레드가 차단될 때까지 스레드를 차단한 다음 모두 한 번에 해제하는 것입니다. 따라서 SyncTimer는 테스트 계획의 다양한 지점에서 대규모 인스턴트 로드를 생성할 수 있습니다.
매개변수 ¶
BeanShell 타이머 ¶
BeanShell 타이머를 사용하여 지연을 생성할 수 있습니다.
BeanShell 사용에 대한 자세한 내용은 BeanShell 웹사이트를 참조하십시오.
테스트 요소는 ThreadListener 및 TestListener 메서드를 지원합니다. 이들은 초기화 파일에 정의되어야 합니다. 예제 정의 는 BeanShellListeners.bshrc 파일을 참조하십시오 .
매개변수 ¶
- 매개변수 - 매개변수를 단일 변수로 포함하는 문자열
- bsh.args - 매개변수를 포함하는 문자열 배열, 공백으로 분할
스크립트를 호출하기 전에 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 - 매개변수를 포함하는 문자열 배열, 공백으로 분할
스크립트를 호출하기 전에 스크립트 인터프리터에서 일부 변수가 설정됩니다.
- 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을 확인하십시오.
포아송 랜덤 타이머 ¶
이 타이머는 대부분의 시간 간격이 특정 값 근처에서 발생하는 임의의 시간 동안 각 스레드 요청을 일시 중지합니다. 총 지연은 푸아송 분포 값과 오프셋 값의 합입니다.
참고: 포아송 도착을 모델링하려면 대신 정확한 처리량 타이머 를 사용하는 것이 좋습니다.
매개변수 ¶
18.7 전처리기 ¶
전처리기는 해당 범위에서 샘플러를 수정하는 데 사용됩니다.
HTML 링크 파서 ¶
이 수정자는 서버에서 HTML 응답을 구문 분석하고 링크와 양식을 추출합니다. 이 수정자를 통과하는 URL 테스트 샘플은 바로 이전 응답에서 추출한 링크나 양식이 "일치"하는지 확인하기 위해 검사됩니다. 그런 다음 URL 테스트 샘플의 값을 일치하는 링크 또는 양식의 적절한 값으로 바꿉니다. Perl 유형 정규식은 일치 항목을 찾는 데 사용됩니다.
간단한 예를 고려하십시오. JMeter가 사이트를 "스파이더"하고 서버에서 반환된 HTML에서 구문 분석된 링크 다음에 링크를 누르기를 원한다고 가정해 보겠습니다(실제로 가장 유용한 작업은 아니지만 좋은 예 역할을 함). . Simple Controller 를 만들고 "HTML Link Parser"를 추가합니다. 그런 다음 HTTP 요청을 만들고 도메인을 " .* "로 설정하고 경로도 마찬가지로 설정합니다. 이렇게 하면 테스트 샘플이 반환된 페이지에 있는 링크와 일치하게 됩니다. 스파이더링을 특정 도메인으로 제한하려면 도메인 값을 원하는 값으로 변경하십시오. 그런 다음 해당 도메인에 대한 링크만 따라갑니다.
더 유용한 예: 웹 투표 응용 프로그램에서 사용자가 선택할 수 있는 라디오 버튼으로 여러 투표 옵션이 있는 페이지가 있을 수 있습니다. 투표 옵션의 값이 매우 동적이라고 가정해 봅시다. 아마도 사용자가 생성했을 것입니다. JMeter가 폴링을 테스트하도록 하려면 선택한 하드코딩된 값으로 테스트 샘플을 생성하거나 HTML Link Parser가 양식을 구문 분석하도록 하고 임의의 폴링 옵션을 URL 테스트 샘플에 삽입할 수 있습니다. 이렇게 하려면 웹 테스트 컨트롤러의 URL 옵션을 구성할 때 방법으로 " POST "를 선택해야 한다는 점을 제외하고 위의 예를 따르십시오. domain , path 및 추가 양식 매개변수 에 대해 하드 코딩된 값을 입력합니다 . 그런 다음 실제 라디오 버튼 매개변수에 이름을 입력합니다(예를 들어 'poll_choice "), 그런 다음 해당 매개변수의 값에 대해 " .* ". 수정자가 이 URL 테스트 샘플을 검사할 때 설문조사 형식이 "일치"한다는 것을 알게 됩니다(그리고 다음과 같은 경우 다른 형식과 일치해서는 안 됩니다. URL 테스트 샘플의 다른 모든 측면을 지정했습니다.) 그러면 양식 매개변수가 양식의 일치하는 매개변수로 바뀝니다. 정규식 " .* "는 무엇이든 일치하므로 수정자에는 아마도 목록이 있을 것입니다. 라디오 버튼 중에서 선택할 수 있습니다. 무작위로 선택하고 URL 테스트 샘플의 값을 대체합니다. 테스트를 통해 매번 새로운 무작위 값이 선택됩니다.
HTTP URL 재작성 수정자 ¶
이 수정자는 HTML 링크 파서보다 사용하기 쉽고 더 효율적인 특정 목적이 있다는 점을 제외하고는 HTML 링크 파서와 유사하게 작동합니다. URL 재작성을 사용하여 쿠키 대신 세션 ID를 저장하는 웹 애플리케이션의 경우 이 요소는 HTTP 쿠키 관리자 와 마찬가지로 ThreadGroup 수준에서 첨부될 수 있습니다 . 세션 id 매개변수의 이름을 지정하기만 하면 페이지에서 이를 찾아 해당 ThreadGroup의 모든 요청에 인수를 추가합니다.
또는 이 수정자를 선택 요청에 첨부할 수 있으며 요청만 수정합니다. 영리한 사용자는 이 수정자를 사용하여 HTML Link Parser 를 피하는 값을 얻을 수 있다는 사실도 알게 될 것 입니다.
매개변수 ¶
사용자 매개변수 ¶
사용자가 개별 스레드에 특정한 사용자 변수 값을 지정할 수 있습니다.
사용자 변수는 테스트 계획에서도 지정할 수 있지만 개별 스레드에 한정되지는 않습니다. 이 패널을 사용하면 모든 사용자 변수에 대한 일련의 값을 지정할 수 있습니다. 각 스레드에 대해 변수에는 시리즈의 값 중 하나가 순서대로 할당됩니다. 값보다 스레드가 더 많으면 값이 다시 사용됩니다. 예를 들어, 이것은 각 스레드에서 사용할 고유한 사용자 ID를 할당하는 데 사용할 수 있습니다. 사용자 변수는 JMeter 구성 요소의 모든 필드에서 참조할 수 있습니다.
변수는 패널 하단의 변수 추가 버튼을 클릭하고 ' 이름: ' 열에 변수 이름을 입력하여 지정합니다. 시리즈에 새 값을 추가하려면 ' 사용자 추가 ' 버튼을 클릭하고 새로 추가된 열에 원하는 값을 입력합니다.
${variable} 함수 구문 을 사용하여 동일한 스레드 그룹의 모든 테스트 구성 요소에서 값에 액세스할 수 있습니다 .
많은 수의 매개변수에 더 적합한 CSV 데이터 세트 구성 요소 도 참조하십시오.
BeanShell 전처리기 ¶
BeanShell PreProcessor를 사용하면 샘플을 채취하기 전에 임의의 코드를 적용할 수 있습니다.
BeanShell 사용에 대한 자세한 내용은 BeanShell 웹사이트를 참조하십시오.
테스트 요소는 ThreadListener 및 TestListener 메서드를 지원합니다. 이들은 초기화 파일에 정의되어야 합니다. 예제 정의 는 BeanShellListeners.bshrc 파일을 참조하십시오 .
매개변수 ¶
- 매개변수 - 매개변수를 단일 변수로 포함하는 문자열
- bsh.args - 매개변수를 포함하는 문자열 배열, 공백으로 분할
스크립트를 호출하기 전에 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 스크립트 코드를 적용할 수 있도록 합니다.
매개변수 ¶
- 매개변수 - 매개변수를 단일 변수로 포함하는 문자열
- args - 매개변수를 포함하는 문자열 배열, 공백으로 분할
다음 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 사용자 매개변수를 사용하는 샘플러의 매개변수에 대해서만 교체가 발생합니다.
매개변수 ¶
3개의 입력 매개변수가 있는 양식을 반환하는 요청이 있고 그 중 2개의 값을 추출하여 다음 요청에 삽입하려고 한다고 가정합니다.
- 첫 번째 HTTP 요청에 대한 포스트 프로세서 정규식 생성
- refName - 정규식 표현식의 이름 설정( listParams )
-
정규식 - 입력 이름 및 입력 값 속성을 추출하는 표현식
예: input name="([^"]+?)" value="([^"]+?)" - 템플릿 - 비어 있음
- match nr - -1 (가능한 모든 일치를 반복하기 위해)
- 두 번째 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 포스트 프로세서 ¶
이름에서 알 수 있듯이 포스트 프로세서는 샘플러 다음에 적용됩니다. 동일한 범위의 모든 샘플러에 적용 되므로 포스트 프로세서가 특정 샘플러에만 적용되도록 하려면 샘플러의 자식으로 추가하십시오.
포스트 프로세서는 어설션 전에 실행되므로 어설션 결과에 액세스할 수 없으며 샘플 상태가 어설션 결과를 반영하지 않습니다. 어설션 결과에 액세스해야 하는 경우 대신 리스너를 사용해 보십시오. 또한 JMeterThread.last_sample_ok 변수 는 모든 어설션이 실행된 후에 " true " 또는 " false " 로 설정됩니다 .
정규식 추출기 ¶
사용자가 Perl 유형 정규식을 사용하여 서버 응답에서 값을 추출할 수 있습니다. 후처리기로서 이 요소는 해당 범위의 각 샘플 요청 후에 실행되어 정규식을 적용하고 요청된 값을 추출하고 템플릿 문자열을 생성하고 결과를 지정된 변수 이름에 저장합니다.
매개변수 ¶
- 메인 샘플만 - 메인 샘플에만 적용
- 하위 샘플만 - 하위 샘플에만 적용됩니다.
- 기본 샘플 및 하위 샘플 - 둘 다에 적용됩니다.
- 사용할 JMeter 변수 이름 - 추출은 명명된 변수의 내용에 적용됩니다.
- 본문 - 응답의 본문, 예를 들어 웹 페이지의 내용(헤더 제외)
-
본문(이스케이프 처리되지 않음) - 모든 Html 이스케이프 코드가 대체된 응답 본문입니다. Html 이스케이프는 컨텍스트에 관계없이 처리되므로 일부 잘못된 대체가 만들어질 수 있습니다.
이 옵션은 성능에 큰 영향을 미치므로 절대적으로 필요한 경우에만 사용하고 그 영향을 인식하십시오.
-
문서로서의 본문 - Apache Tika를 통해 다양한 유형의 문서에서 텍스트를 추출합니다( 보기 결과 트리 문서 보기 섹션 참조).
Body as a Document 옵션은 성능에 영향을 줄 수 있으므로 테스트에 적합한지 확인하십시오.
- 요청 헤더 - HTTP가 아닌 샘플에는 없을 수 있음
- 응답 헤더 - HTTP가 아닌 샘플에는 없을 수 있습니다.
- URL
- 응답 코드 - 예: 200
- 응답 메시지 - 예: 확인
- JMeter가 무작위로 일치 항목을 선택해야 함을 나타내려면 0 값을 사용하십시오.
- 양수 N은 n 번째 일치 항목을 선택한다는 의미입니다.
- 음수는 ForEach 컨트롤러 와 함께 사용됩니다( 아래 참조).
그러나 동일한 변수를 설정하는 테스트 요소가 여러 개 있는 경우 표현식이 일치하지 않으면 변수를 변경하지 않고 그대로 둘 수 있습니다. 이 경우 디버깅이 완료되면 기본값을 제거하십시오.
일치 번호가 음수가 아닌 숫자로 설정되고 일치가 발생하면 변수는 다음과 같이 설정됩니다.
- 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 표현식을 적용하고, 요청된 노드를 추출하고, 노드를 텍스트 또는 속성 값으로 추출하고, 결과를 주어진 변수 이름에 저장하면서 해당 범위의 각 샘플 요청 후에 실행됩니다.
매개변수 ¶
- 메인 샘플만 - 메인 샘플에만 적용
- 하위 샘플만 - 하위 샘플에만 적용됩니다.
- 기본 샘플 및 하위 샘플 - 둘 다에 적용됩니다.
- 사용할 JMeter 변수 이름 - 추출은 명명된 변수의 내용에 적용됩니다.
- E[foo] - " foo " 속성 을 가진 E 요소
- 조상 자식 - 조상에서 내려온 자식 요소, 예를 들어 .body p 는 " body " 클래스가 있는 블록 아래에서 p 요소를 찾습니다 .
- :lt(n) - 형제 인덱스(즉, 부모에 대한 DOM 트리에서의 위치)가 n 보다 작은 요소를 찾습니다 . 예: td:lt(3)
- :contains(text) - 주어진 텍스트 를 포함하는 요소를 찾습니다 . 검색은 대소문자를 구분하지 않습니다. 예: p:contains(jsoup)
- …
에 해당하는 Element#attr(name) 함수입니다.
비어 있으면 속성에 값이 설정되지 않은 경우 JSoup에 대한 Element#text() 함수와 동일합니다.
- JMeter가 무작위로 일치 항목을 선택해야 함을 나타내려면 0 값을 사용하십시오.
- 양수 N 은 n 번째 일치 항목 을 선택한다는 의미 입니다.
- 음수는 ForEach 컨트롤러 와 함께 사용됩니다( 아래 참조).
그러나 동일한 변수를 설정하는 테스트 요소가 여러 개 있는 경우 표현식이 일치하지 않으면 변수를 변경하지 않고 그대로 둘 수 있습니다. 이 경우 디버깅이 완료되면 기본값을 제거하십시오.
일치 번호가 음수가 아닌 숫자로 설정되고 일치가 발생하면 변수는 다음과 같이 설정됩니다.
- refName - 템플릿의 값
일치하는 항목이 없으면 refName 변수가 기본값으로 설정됩니다(없는 경우 제외).
일치 번호가 음수로 설정되면 샘플러 데이터에서 가능한 모든 일치 항목이 처리됩니다. 변수는 다음과 같이 설정됩니다.
- refName_matchNr - 발견된 일치 항목의 수. 0 이 될 수 있습니다
- refName_n , 여기서 n = 1 , 2 , 3 등 - 템플릿에 의해 생성된 문자열
- refName - 항상 기본값으로 설정
이 경우 refName 변수는 항상 기본값으로 설정됩니다.
XPath2 추출기 ¶
매개변수 ¶
- 메인 샘플만 - 메인 샘플에만 적용
- 하위 샘플만 - 하위 샘플에만 적용됩니다.
- 기본 샘플 및 하위 샘플 - 둘 다에 적용됩니다.
- 사용할 JMeter 변수 이름 - 추출은 명명된 변수의 내용에 적용됩니다.
예를 들어 //title 은 " Apache JMeter "가 아닌 " <title>Apache JMeter</title> " 를 반환 합니다. 이 경우 //title/text() 는 " Apache JMeter " 를 반환 합니다.
- 0 : 임의(기본값)를 의미
- -1 은 모든 결과를 추출한다는 의미이며, 이름은 <변수 이름> _N (여기서 N 은 1에서 결과 수)로 지정됩니다.
- X : X 번째 결과를 추출하는 것을 의미합니다 . 이 X 번째 가 일치 항목 수보다 크면 아무 것도 반환되지 않습니다. 기본값이 사용됩니다
ForEach Controller 에서 사용할 수 있도록 위의 XPath Extractor와 정확히 동일하게 작동합니다.
XPath2 Extractor는 개선된 구문 및 첫 번째 버전보다 훨씬 더 많은 기능과 같은 몇 가지 흥미로운 도구를 제공합니다.
다음은 몇 가지 예입니다.
- abs(/책/페이지[2])
- 책에서 페이지의 두 번째 절대값을 추출 합니다.
- 평균(/도서관/도서/페이지)
- 도서관의 모든 책에서 평균 페이지 수를 추출합니다.
- 비교(/책[1]/페이지[2],/책[2]/페이지[2])
- 첫 번째 책의 두 번째 페이지가 두 번째 책의 두 번째 페이지와 같으면 정수 값 이 0 이고 그렇지 않으면 -1을 반환합니다.
이러한 기능에 대한 자세한 내용을 보려면 xPath2 기능 을 확인하십시오.
XPath 추출기 ¶
매개변수 ¶
- 메인 샘플만 - 메인 샘플에만 적용
- 하위 샘플만 - 하위 샘플에만 적용됩니다.
- 기본 샘플 및 하위 샘플 - 둘 다에 적용됩니다.
- 사용할 JMeter 변수 이름 - 추출은 명명된 변수의 내용에 적용됩니다.
- HTML 응답을 위해 " Use Tidy "를 체크해야 합니다. 이러한 응답은 Tidy를 사용하여 유효한 XHTML(XML 호환 HTML)로 변환됩니다.
- " Use Tidy "는 XHTML 또는 XML 응답(예: RSS)에 대해 선택을 취소해야 합니다.
예를 들어 //title 은 " Apache JMeter "가 아닌 " <title>Apache JMeter</title> " 를 반환 합니다. 이 경우 //title/text() 는 " Apache JMeter " 를 반환 합니다.
- 0 : 랜덤을 의미
- -1 은 모든 결과 추출(기본값)을 의미하며, 이름은 <변수 이름> _N 으로 지정됩니다 (여기서 N 은 1에서 결과 수로 이동).
- X : X 번째 결과를 추출하는 것을 의미합니다 . 이 X 번째 가 일치 항목 수보다 크면 아무 것도 반환되지 않습니다. 기본값이 사용됩니다
ForEach Controller 에서 사용할 수 있도록 반환 시 다음 변수가 설정됩니다.
- refName - 첫 번째(또는 유일한) 일치로 설정합니다. 일치하지 않으면 기본값으로 설정
- refName_matchNr - 일치 수로 설정( 0 일 수 있음 )
- refName_n - n = 1 , 2 , 3 등. 첫 번째 , 두 번째 , 세 번째 일치 등 으로 설정합니다.
XPath는 주로 XSLT 변환을 대상으로 하는 쿼리 언어입니다. 그러나 구조화된 데이터에 대한 일반 쿼리 언어로도 유용합니다. 자세한 내용은 XPath 참조 또는 XPath 사양 을 참조하십시오. 다음은 몇 가지 예입니다.
- /html/head/제목
- HTML 응답에서 제목 요소 추출
- /책/페이지[2]
- 책에서 두 번째 페이지를 추출 합니다.
- /책/페이지
- 책의 모든 페이지를 추출
- //form[@name='countryForm']//select[@name='country']/option[text()='체코 공화국'])/@value
- name 속성이 ' countryForm ' 인 폼 내에서 name 속성이 ' country ' 인 select 요소 내에서 텍스트 ' Czech Republic ' 과 일치하는 옵션 요소의 값 속성을 추출합니다 .
- 모든 요소 및 속성 이름은 소문자로 변환됩니다.
- Tidy는 부적절하게 중첩된 요소를 수정하려고 시도합니다. 예를 들어 - 원래(잘못된) ul/font/li 가 올바른 ul/li/font 가 됩니다.
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 추출기 ¶
매개변수 ¶
- 메인 샘플만 - 메인 샘플에만 적용
- 하위 샘플만 - 하위 샘플에만 적용됩니다.
- 기본 샘플 및 하위 샘플 - 둘 다에 적용됩니다.
- 사용할 JMeter 변수 이름 - 추출은 명명된 변수의 내용에 적용됩니다.
- 0 : 랜덤을 의미
- -1 은 모든 결과 추출(기본값)을 의미하며, 이름은 <변수 이름> _N 으로 지정됩니다 (여기서 N 은 1에서 결과 수로 이동).
- X : X 번째 결과를 추출하는 것을 의미합니다 . 이 X 번째 가 일치 항목 수보다 크면 아무 것도 반환되지 않습니다. 기본값이 사용됩니다
JMESPath는 JSON용 쿼리 언어입니다. 완전한 사양으로 ABNF 문법에 설명되어 있습니다. 이렇게 하면 언어 구문이 정확하게 정의됩니다. 자세한 내용은 JMESPath 참조 를 참조하세요. 다음은 JMESPath 예제 의 몇 가지 예 입니다.
결과 상태 작업 처리기 ¶
매개변수 ¶
- 계속 - 오류를 무시하고 테스트를 계속합니다.
- 다음 스레드 루프 시작 - 현재 반복에서 오류가 발생한 샘플러를 따라 샘플러를 실행하지 않고 다음 반복에서 루프를 다시 시작합니다.
- 스레드 중지 - 현재 스레드 종료
- 테스트 중지 - 현재 샘플이 끝나면 전체 테스트가 중지됩니다.
- 지금 테스트 중지 - 전체 테스트가 갑자기 중지됩니다. 가능한 경우 모든 현재 샘플러가 중단됩니다.
BeanShell 포스트 프로세서 ¶
BeanShell PreProcessor를 사용하면 샘플을 채취한 후 임의의 코드를 적용할 수 있습니다.
BeanShell 포스트 프로세서는 더 이상 길이가 0인 결과 데이터가 있는 샘플을 무시하지 않습니다.
BeanShell 사용에 대한 자세한 내용은 BeanShell 웹사이트를 참조하십시오.
테스트 요소는 ThreadListener 및 TestListener 메서드를 지원합니다. 이들은 초기화 파일에 정의되어야 합니다. 예제 정의 는 BeanShellListeners.bshrc 파일을 참조하십시오 .
매개변수 ¶
- 매개변수 - 매개변수를 단일 변수로 포함하는 문자열
- bsh.args - 매개변수를 포함하는 문자열 배열, 공백으로 분할
다음 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 스크립트 코드를 적용할 수 있도록 합니다.
매개변수 ¶
- 매개변수 - 매개변수를 단일 변수로 포함하는 문자열
- args - 매개변수를 포함하는 문자열 배열, 공백으로 분할
스크립트를 호출하기 전에 일부 변수가 설정됩니다. 이것은 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 데이터베이스에서 삭제하기 위해 저장 프로시저를 호출합니다.
JSON 추출기 ¶
JSON PostProcessor를 사용하면 JSON-PATH 구문을 사용하여 JSON 응답에서 데이터를 추출할 수 있습니다. 이 포스트 프로세서는 정규식 추출기와 매우 유사합니다. HTTP 샘플러 또는 응답이 있는 다른 샘플러의 자식으로 배치해야 합니다. 매우 쉬운 방법으로 텍스트 콘텐츠를 추출할 수 있습니다( JSON 경로 구문 참조) .
매개변수 ¶
- 0 : 랜덤을 의미(기본값)
- -1 은 모든 결과를 추출한다는 의미이며, 이름은 <변수 이름> _N (여기서 N 은 1에서 결과 수)로 지정됩니다.
- X : X 번째 결과를 추출하는 것을 의미합니다 . 이 X 번째 가 일치 항목 수보다 크면 아무 것도 반환되지 않습니다. 기본값이 사용됩니다
경계 추출기 ¶
사용자가 왼쪽 및 오른쪽 경계를 사용하여 서버 응답에서 값을 추출할 수 있습니다. 후처리기로서 이 요소는 해당 범위의 각 샘플 요청 후에 실행되어 경계를 테스트하고 요청된 값을 추출하고 템플릿 문자열을 생성하고 결과를 지정된 변수 이름에 저장합니다.
매개변수 ¶
- 메인 샘플만 - 메인 샘플에만 적용
- 하위 샘플만 - 하위 샘플에만 적용됩니다.
- 기본 샘플 및 하위 샘플 - 둘 다에 적용됩니다.
- 사용할 JMeter 변수 이름 - 어설션은 명명된 변수의 내용에 적용됩니다.
- 본문 - 응답의 본문, 예를 들어 웹 페이지의 내용(헤더 제외)
-
본문(이스케이프 처리되지 않음) - 모든 Html 이스케이프 코드가 대체된 응답 본문입니다. Html 이스케이프는 컨텍스트에 관계없이 처리되므로 일부 잘못된 대체가 만들어질 수 있습니다.
이 옵션은 성능에 큰 영향을 미치므로 절대적으로 필요한 경우에만 사용하고 그 영향을 인식하십시오.
-
문서로서의 본문 - Apache Tika를 통해 다양한 유형의 문서에서 텍스트를 추출합니다( 보기 결과 트리 문서 보기 섹션 참조).
Body as a Document 옵션은 성능에 영향을 줄 수 있으므로 테스트에 적합한지 확인하십시오.
- 요청 헤더 - HTTP가 아닌 샘플에는 없을 수 있음
- 응답 헤더 - HTTP가 아닌 샘플에는 없을 수 있습니다.
- URL
- 응답 코드 - 예: 200
- 응답 메시지 - 예: 확인
- 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 변수는 항상 기본값으로 설정되며 연결된 그룹 변수는 설정되지 않습니다.
18.9 기타 기능 ¶
테스트 계획 ¶
테스트 계획은 테스트에 대한 전체 설정이 지정되는 곳입니다.
서버 이름과 같이 테스트 전체에서 반복되는 값에 대해 정적 변수를 정의할 수 있습니다. 예를 들어 SERVER 변수는 www.example.com 으로 정의할 수 있고 나머지 테스트 계획은 이를 ${SERVER} 로 참조할 수 있습니다. 이렇게 하면 나중에 이름을 쉽게 변경할 수 있습니다.
동일한 변수 이름이 하나 이상의 사용자 정의 변수 구성 요소에서 재사용되는 경우 값은 테스트 계획의 마지막 정의로 설정됩니다(위에서 아래로 읽기). 이러한 변수는 테스트 실행 간에 변경될 수 있지만 테스트 실행 중에 동일하게 유지되는 항목에 사용해야 합니다.
Functional Testing을 선택하면 JMeter가 추가 샘플 정보(응답 데이터 및 샘플러 데이터)를 모든 결과 파일에 저장하도록 지시합니다. 이것은 테스트를 실행하는 데 필요한 리소스를 증가시키고 JMeter 성능에 부정적인 영향을 줄 수 있습니다. 특정 샘플러에만 더 많은 데이터가 필요한 경우 리스너를 추가하고 필요에 따라 필드를 구성합니다.
또한 JMeter가 스레드 그룹 을 병렬이 아닌 직렬 로 실행하도록 지시하는 옵션이 있습니다 .
기본 스레드 종료 후 tearDown 스레드 그룹 실행: 선택하면 기본 스레드가 정상적으로 종료된 후 tearDown 그룹(있는 경우)이 실행됩니다. 테스트가 강제로 중지되면 tearDown 스레드가 실행되지 않습니다.
테스트 계획은 이제 특정 테스트 계획에 클래스 경로 설정을 추가하는 쉬운 방법을 제공합니다. 이 기능은 추가적입니다. 즉, 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
매개변수 ¶
- 계속 - 오류를 무시하고 테스트를 계속합니다.
- 다음 스레드 루프 시작 - 오류를 무시하고 다음 루프를 시작하고 테스트를 계속하십시오.
- 스레드 중지 - 현재 스레드 종료
- 테스트 중지 - 현재 샘플이 끝나면 전체 테스트가 중지됩니다.
- 지금 테스트 중지 - 전체 테스트가 갑자기 중지됩니다. 가능한 경우 모든 현재 샘플러가 중단됩니다.
선택하지 않으면 테스트가 시작될 때 모든 스레드가 생성됩니다(그런 다음 적절한 비율의 램프업 시간 동안 일시 중지됨). 이것은 원래 기본값이며 대부분의 테스트에서 스레드가 활성 상태인 테스트에 적합합니다.
SSL 관리자 ¶
SSL 관리자는 PKI(공개 키 인프라)를 사용하는 응용 프로그램을 테스트할 수 있도록 클라이언트 인증서를 선택하는 방법입니다. 적절한 시스템 속성을 설정하지 않은 경우에만 필요합니다.
JKS(Java Key Store) 형식 키 저장소를 사용하거나 클라이언트 인증서에 대해 PKCS12(공개 키 인증서 표준 #12) 파일을 사용할 수 있습니다. JSSE 라이브러리에는 키에 최소 6자의 암호가 있어야 하는 기능이 있습니다(적어도 JDK와 함께 제공되는 keytool 유틸리티의 경우).
클라이언트 인증서를 선택하려면 메뉴 표시줄에서 .p12 ' 여야 합니다. 다른 모든 파일은 평균 JKS 키 저장소처럼 취급됩니다. JSSE가 올바르게 설치된 경우 암호를 입력하라는 메시지가 표시됩니다. 이 시점에서 입력하는 문자는 텍스트 상자에 숨겨져 있지 않으므로 어깨 너머로 보고 있는 사람이 없는지 확인하세요. 현재 구현에서는 키 저장소의 비밀번호가 인증하려는 클라이언트의 개인 키에 대한 비밀번호이기도 하다고 가정합니다.
기본적으로 PKCS12 파일을 찾는 파일 찾기가 표시됩니다. SSL 관리자가 PKCS12 파일로 인식 하려면 PKCS12 파일의 확장자가 '또는 적절한 시스템 속성을 설정할 수 있습니다 . 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 및 HTTPS 요청에 대해 프록시를 사용하도록 브라우저를 설정해야 합니다.
세션을 기록할 때 개인 브라우징 모드를 사용하는 것이 가장 좋습니다. 이렇게 하면 브라우저가 저장된 쿠키 없이 시작되고 특정 변경 사항이 저장되지 않도록 해야 합니다. 예를 들어, 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 인증서가 생성됩니다(필요한 경우) .
필요한 경우 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 ")
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 파일을 클릭 하고 엽니다.
매개변수 ¶
예: *.example.com,*.subdomain.example.com
와일드카드 도메인은 한 수준에만 적용됩니다. 즉, abc.subdomain.example.com은 * .subdomain.example.com 과 일치 하지만 *.example.com 은 일치하지 않습니다.
- 샘플러를 그룹화하지 마십시오 . 기록된 모든 샘플러를 그룹화하지 않고 순차적으로 저장합니다.
- 그룹 사이에 구분 기호 추가 - " -------------- " 라는 컨트롤러를 추가하여 그룹 사이를 시각적으로 구분합니다. 그렇지 않으면 샘플러가 모두 순차적으로 저장됩니다.
- 각 그룹을 새 컨트롤러에 넣습니다. 각 그룹에 대해 새 단순 컨트롤러 를 만들고 해당 그룹에 대한 모든 샘플러를 그 안에 저장합니다.
- 각 그룹의 첫 번째 샘플러만 저장 합니다 . 각 그룹의 첫 번째 요청만 기록됩니다. " Follow Redirects " 및 " Retrieve All Embedded Resources ... " 플래그는 해당 샘플러에서 켜집니다.
- 각 그룹을 새 트랜잭션 컨트롤러에 넣습니다. 각 그룹에 대해 새 트랜잭션 컨트롤러 를 만들고 해당 그룹에 대한 모든 샘플러를 그 안에 저장합니다.
녹음 및 리디렉션
기록하는 동안 브라우저는 리디렉션 응답을 따라 추가 요청을 생성합니다. 프록시는 원래 요청과 리디렉션된 요청을 모두 기록합니다(구성된 제외 항목에 따름). 생성된 샘플에는 기본적으로 " 리디렉션 따르기 "가 선택되어 있습니다. 일반적으로 더 좋기 때문입니다.
이제 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 은 패턴 과 일치하지 않아야 하며 그렇지 않으면 기록되지 않습니다. 포함과 제외의 조합을 사용하여 관심 있는 항목을 기록하고 관심이 없는 항목은 건너뛸 수 있어야 합니다.
따라서 " \.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는 선택한 대상 컨트롤러에 녹음된 샘플을 배치합니다. 기본 옵션 " 녹음 컨트롤러 사용 "을 선택 하면 테스트 개체 트리에서 찾은 첫 번째 녹음 컨트롤러에 저장됩니다(그래서 녹음을 시작하기 전에 녹음 컨트롤러를 추가해야 함).
프록시가 샘플을 기록하지 않는 것 같으면 브라우저가 실제로 프록시를 사용하고 있지 않기 때문일 수 있습니다. 이 경우인지 확인하려면 프록시를 중지해 보십시오. 브라우저가 여전히 페이지를 다운로드하는 경우 프록시를 통해 요청을 보내지 않은 것입니다. 브라우저 옵션을 다시 확인하십시오. 동일한 호스트에서 실행되는 서버에서 기록을 시도하는 경우 브라우저가 " 로컬 주소에 대해 프록시 서버 우회 "로 설정되어 있지 않은지 확인하십시오 (이 예는 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 호환 정규식으로 컴파일됩니다 . 그런 식으로 각 일치는 단어 경계에서 시작하고 끝납니다.
정규식을 경계 일치자로 묶지 않으려면 정규식을 괄호로 묶어야 합니다(예: ('.*?') 는 You can call me 'name' 의 'name' 과 일치 합니다.
전체 문자열만 일치시키려면 (^ 및 $) 로 묶으십시오( 예: (^thus$) ) . 일반적으로 추가된 경계 문자로 인해 ^ 및 $ 가 일치하지 않으므로 괄호가 필요합니다.
문자열 시작 부분에서만 /images 를 일치시키려면 (^/images) 값을 사용하십시오 . Jakarta ORO는 너비가 0인 미리보기도 지원하므로 /images/… 와 일치시킬 수 있지만 (^/images(?=/)) 를 사용하여 출력에서 후행 / 를 유지할 수 있습니다.
겹치는 일치자를 찾으십시오. 예를 들어 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 을 사용 합니다.
매개변수 ¶
매개변수 ¶
headerA: valueA|headerB: valueB 는 headerA 를 valueA 로 설정 하고 headerB 를 valueB 로 설정 합니다 .
다음 쿼리 매개변수를 사용할 수도 있습니다.
매개변수 ¶
디버그 샘플러 ¶
디버그 샘플러는 모든 JMeter 변수 및/또는 속성 값을 포함하는 샘플을 생성합니다.
값은 결과 트리 리스너 응답 데이터 보기 창 에서 볼 수 있습니다 .
매개변수 ¶
디버그 포스트 프로세서 ¶
Debug PostProcessor는 이전 샘플러 속성, JMeter 변수, 속성 및/또는 시스템 속성의 세부 정보를 사용하여 하위 샘플을 만듭니다.
값은 결과 트리 리스너 응답 데이터 보기 창 에서 볼 수 있습니다 .
매개변수 ¶
테스트 조각 ¶
테스트 조각은 포함 컨트롤러 및 모듈 컨트롤러 와 함께 사용됩니다 .
스레드 그룹 설정 ¶
사전 테스트 작업을 수행하는 데 사용할 수 있는 특수한 유형의 ThreadGroup입니다. 이러한 스레드의 동작은 일반 스레드 그룹 요소와 정확히 같습니다. 차이점은 이러한 유형의 스레드는 테스트가 일반 스레드 그룹의 실행으로 진행되기 전에 실행된다는 것입니다.
티어다운 스레드 그룹 ¶
테스트 후 작업을 수행하는 데 사용할 수 있는 특수한 유형의 ThreadGroup입니다. 이러한 스레드의 동작은 일반 스레드 그룹 요소와 정확히 같습니다. 차이점은 이러한 유형의 스레드는 테스트가 일반 스레드 그룹 실행을 완료한 후에 실행된다는 것입니다.