프로세서 JMeter: 전처리기 및 후처리기

⚡ 스마트 요약

프로세서 JMeter PreProcessor는 실행 전후에 Sampler 요청을 수정합니다. PreProcessor는 요청 데이터를 준비하고, PostProcessor는 실행 후 데이터를 수정합니다.tracts 값은 테스트 흐름을 제어하고 상관 관계, 동적 매개변수화 및 안정적인 성능 테스트 동작을 가능하게 합니다.

  • ⚙️ 핵심 정의: 프로세서는 요청 전 또는 응답 후에 실행되어 자체 범위 내에서 샘플러를 수정합니다.
  • 🔍 전처리 담당자 역할: 전처리기는 변수를 설정하고 다시 작성합니다. URL샘플러가 실행되기 전에 HTML 링크를 구문 분석하고 사용자 매개변수를 적용합니다.
  • 📤 포스트프로세서 역할: PostProcessors는 응답을 읽습니다. 예:trac동적 값을 변수에 저장하고 실행 중인 테스트를 계속할지 여부를 결정합니다.
  • 🧩 Extrac토르 선택: 정규 표현식, 경계 조건, JSON, CSS/jQuery 및 XPath 예시trac각 토르는 서로 다른 응답 형식에 적합합니다.
  • 🛑 흐름 제어 : 결과 상태 작업 처리기는 샘플러가 실패할 경우 하나의 스레드 또는 전체 테스트를 중지합니다.
  • 🧪 실제 적용 사례: 여섯 단계로 구성된 이 계획은 잘못된 경로에서 서버 오류가 발생하면 자동으로 중지됩니다.

프로세서 JMeter

프로세서 Apache JMeter 이는 범위 내의 샘플러를 수정하는 테스트 계획 요소입니다. 요청이 전송되기 직전 또는 그 이전에 자동으로 실행됩니다. JMeter 또는 응답이 도착한 직후에 발생하므로, 이는 동적 데이터를 처리하는 주요 메커니즘이 됩니다. 성능 검사.

프로세서에는 2가지 유형이 있습니다.

  1. 전처리기
  2. 후처리기

범위는 프로세서의 도달 범위를 결정합니다. 프로세서를 바로 아래에 배치하면... 테스트 계획 스레드 그룹은 하위의 모든 샘플러에 적용되는 반면, 단일 샘플러 내부에 중첩된 프로세서는 해당 요청에만 영향을 미칩니다. 이 규칙을 이해하면 이 페이지의 문제 해결 섹션에서 다루는 구성 오류를 방지할 수 있습니다.

전처리기

전처리기가 어떤 작업을 실행합니다. 전에 샘플러 요청을 하고 있습니다.

간단한 예를 생각해보십시오. 당신이 원한다고 가정 해 봅시다 JMeter 테스트 중인 웹사이트를 통해 "스파이더"로 이동하려면, 해석하다 링크(페이지의 모든 링크 확인) 및 return HTML. HTTP 요청을 생성하기 전에 컨트롤러에 "HTML 링크 파서"와 같은 일부 작업을 추가합니다.

전처리기

위 다이어그램은 컨트롤러와 나가는 요청 사이에 전처리기가 위치함을 보여줍니다. 전처리기는 가장 먼저 실행되므로 요청 데이터를 구성하는 데 적합한 위치입니다. 타임스탬프를 생성하고, CSV 열에서 값을 읽고, 세션 식별자를 다시 작성하는 등의 작업을 수행합니다. URL또는 각 가상 사용자에게 서로 다른 자격 증명을 할당하는 방법도 있습니다.

후처리기

후처리자는 샘플러 요청을 한 후 일부 작업을 실행합니다.

간단한 예를 생각해보십시오. JMeter 테스트 중인 웹 서버(등)에 HTTP 요청을 보냅니다. www.google.com) 응답을 받습니다. 당신이 원하는 JMeter 서버 응답이 오류인 경우 테스트를 중지합니다. 다음과 같이 후처리기를 사용하여 위 작업을 수행할 수 있습니다.

후처리기

두 번째 다이어그램에서 볼 수 있듯이, 포스트 프로세서는 샘플러가 완료된 후 응답을 읽습니다. 이는 상관 관계에 대한 일반적인 답변이기도 합니다. 서버가 실행할 때마다 변경되는 토큰, 세션 ID 또는 주문 번호를 반환하는 경우, 포스트 프로세서는 해당 값을 캡처합니다. JMeter 변수로 저장하여 다음 샘플러가 재사용할 수 있도록 합니다.

전처리기의 종류 JMeter

Apache JMeter 이 제품에는 간편한 전처리 도구 세트가 함께 제공됩니다. 각 전처리 도구는 샘플러를 서로 다른 방식으로 준비하므로, 적절한 요소를 선택하면 테스트 계획을 읽기 쉽고 유지 관리하기 편리하게 유지할 수 있습니다.

  • 샘플 타임아웃: 요청에 대한 최대 지속 시간을 정의합니다. 설정된 값보다 오래 실행되는 샘플러는 실패로 표시됩니다.
  • 사용자 매개 변수 : 가상 사용자별로 변수에 특정 값을 할당하여 각 스레드가 자체 데이터 세트를 전송하도록 합니다.
  • HTML 링크 파서: 테스트 대상 페이지를 크롤링하여 발견한 링크를 분석하고, 이를 다음 HTTP 요청에 포함시킵니다.
  • HTTP URL 수정자 재작성: 세션 식별자를 삽입합니다. URL 다음과 같은 애플리케이션의 경우 trac쿠키 없이 k 세션을 진행합니다.
  • 정규 표현식 사용자 매개변수: 이전 응답에서 정규 표현식으로 추출한 값을 사용하여 요청 매개변수를 채웁니다.
  • JDBC 전처리 프로그램: 샘플러 실행 전에 SQL 문을 실행하는데, 이는 데이터베이스 레코드를 초기값으로 입력하거나 재설정하는 데 유용합니다.
  • JSR223 전처리 프로그램: 실행 Groovy or Java 사용자 지정 준비 로직을 위한 스크립트입니다. 기존 BeanShell PreProcessor를 대체하며 부하 시 성능이 크게 향상되었습니다.

💡 팁: JSR223 전처리기를 사용하는 것이 좋습니다. Groovy BeanShell을 통한 언어 처리. Groovy 스크립트는 컴파일되어 캐시되므로 수천 개의 스레드가 병렬로 실행될 때 CPU 사용량이 훨씬 적습니다.

포스트프로세서의 종류 JMeter

포스트프로세서는 두 그룹으로 나뉩니다. 예:trac샘플러는 응답에서 값을 추출하는 객체(tor)와 샘플러 결과에 반응하는 핸들러로 구성됩니다. 아래 표는 각 요소를 가장 적합한 응답 형식에 매핑합니다.

포스트프로세서 최고의 적합 대상 전형적인 사용
정규 표현식 예시trac바위 산 텍스트 답변 HTML 및 일반 텍스트에서 토큰 또는 ID 추출
경계 Extrac바위 산 텍스트 답변 정규 표현식 전체를 사용하는 대신 왼쪽 및 오른쪽 경계를 사용하여 값을 캡처합니다.
JSON 예시trac바위 산 JSON 응답 REST 페이로드에서 필드를 읽는 중 API 테스트
CSS/jQuery 예시trac바위 산 HTML 응답 CSS 선택자를 사용하여 요소 선택하기
XPath Extrac바위 산 XML 및 XHTML 응답 구조화된 문서 트리 탐색하기
JDBC 포스트프로세서 데이터베이스 결과 요청 후 행 검증 또는 정리
JSR223 포스트프로세서 답변 사용자 지정 스크립트를 이용한 구문 분석 및 검증
결과 상태 작업 핸들러 답변 중지ping 샘플러가 실패하면 해당 스레드 또는 전체 테스트가 중단됩니다.

경계선 Extrac토르가 도착했습니다 JMeter 4.0 버전에서 가장 빠르게 작성할 수 있는 옵션 중 하나이며, 값의 바로 왼쪽과 오른쪽에 있는 텍스트만 요구하기 때문입니다. 정규 표현식 예시trac응답마다 주변 마크업이 다를 경우 Tor가 여전히 더 유연한 선택입니다.

전처리기와 후처리기의 차이점

두 요소는 동일한 범위 규칙을 공유하지만, 정반대의 문제를 해결합니다. 아래 비교표는 예제를 살펴보기 전에 두 요소의 차이점을 요약한 것입니다.

매개 변수 전처리기 포스트프로세서
실행 시간 샘플러가 요청을 보내기 전에 실행됩니다. 샘플러가 응답을 받은 후 실행됩니다.
주요 목적 요청 데이터를 준비하고 수정합니다. 응답 데이터를 읽고 그에 따라 반응합니다.
일반적인 요소 사용자 매개변수, HTML 링크 파서, JSR223 전처리기 정규 표현식 예시trac토르, JSON Extractor, 결과 상태 작업 처리기
흐름에 미치는 영향 테스트를 중지할 수는 없고, 요청 형태만 변경할 수 있습니다. 스레드를 중지하거나 전체 테스트 실행을 중지할 수 있습니다.
공통의 목표 매개변수화 상관관계 및 오류 처리

실제로 이 둘은 한 쌍으로 작동합니다. PostProcessor는 로그인 응답에서 세션 토큰을 캡처하고, 다음 요청의 PreProcessor는 호출이 전송되기 전에 해당 토큰을 삽입합니다. 다음 예제는 이 패턴의 PostProcessor 부분을 보여줍니다.

포스트 프로세서 예

이 튜토리얼에서는 포스트 프로세서를 사용하는 방법에 대한 단계별 지침을 보여줍니다. JMeter. 간단한 테스트 스크립트부터 시작해 보겠습니다.

  1. JMeter 테스트 중인 웹 서버에 HTTP 요청을 보냅니다. www.google.com.
  2. JMeter 응답을 받습니다 Google 서버.
  3. 서버 응답이 다음과 같은 경우 과실, JMeter 결제 게이트웨이, 중지 시험.
  4. 서버 응답인 경우 OK (오류 없음), JMeter 결제 게이트웨이, 계속 시험.

여기는 로드맵 이 예의 내용은 다음과 같습니다.

포스트 프로세서 예

전제 조건:

We 재사용 기사의 1단계와 2단계 JMeter 성능 시험. 면 JMeter 아직 설치되지 않았습니다. 다음을 따르세요. JMeter 설치 설명서 먼저.

1단계) 스레드 그룹 추가

마우스 오른쪽 클릭 테스트 계획 새 스레드 그룹을 추가하십시오. 추가 -> 스레드(사용자) -> 스레드 그룹

그러나 스레드 그룹 제어판에서 다음과 같이 스레드 속성을 입력하십시오.

스레드 그룹 추가

이 설정을 사용하면 JMeter 만들 10 사용자 요청 http://www.google.com 10 시간.

2단계) 추가 JMeter 요소

  • HTTP 요청 기본값 추가
  • HTTP 요청 추가

우리는 아직도 만든다 JMeter 요청 보내기 http://www.google.com 에 Google 서버.

3단계) ​​포스트 프로세서 요소 추가

마우스 오른쪽 버튼으로 클릭 스레드 그룹 -> 추가 -> 포스트 프로세서 -> 결과 상태 작업 핸들러

결과 상태 작업 핸들러 사용자 요청이 실패한 경우 사용자가 스레드 또는 전체 테스트를 중지할 수 있습니다.

포스트 프로세서 요소 추가

결과 상태 작업 핸들 창에서 다음을 선택합니다. 지금 테스트 중지. 이 선택은 다음과 같은 경우 테스트를 중지합니다. JMeter 서버 응답에서 오류를 가져옵니다.

포스트 프로세서 요소 추가

4단계) HTTP 요청 구성

HTTP 요청 패널을 엽니다. 입력하다 "알파벳" 경로 필드로 이동합니다.

HTTP 요청 구성

들어가면 "알파벳" 길로, JMeter ~을 만들 것입니다. URL 요청하다 Google 서버: http://www.google.com/abc. 이것은 URL 존재하지 않습니다 Google 서버입니다. 잘못 URL 요청합니다 Google 서버에서 오류가 반환됩니다.

5단계) 결과 보기 트리 추가

마우스 오른쪽 버튼으로 클릭 스레드 그룹 -> 추가 -> 경청자 -> 결과 트리 보기

보기 결과 트리 추가

6단계) 테스트 실행

결과 트리 보기를 선택하고 메뉴 바에서 실행 버튼을 누릅니다. 당신은 볼 것이다 오류 의 응답 Google 서버와 테스트가 중지됩니다. ~없이 100개의 스레드를 완료합니다.

테스트 실행

이제 4단계로 돌아가서 HTTP 요청 창을 열고 "달력"를 창에 표시합니다. 그것은 만든다 JMeter 만들 URL 의뢰 https://calendar.google.com/calendar/u/0/r 부터 Google 서버입니다. 이것은 수정 URL 요청합니다 Google 서버는 오류 없이 정상(OK)을 반환합니다.

테스트 실행

결과 트리 보기를 선택하고 메뉴 바에서 실행 버튼을 누릅니다. 당신은 볼 것이다 OK 의 응답 Google 서버와 테스트는 100개의 스레드가 모두 완료될 때까지 계속됩니다.

테스트 실행

추가 역설 결과 상태 액션 핸들러와 함께 사용하면 검사가 더 엄격해집니다. 왜냐하면 어설션으로 인해 HTTP 200을 반환했지만 잘못된 콘텐츠를 전달한 샘플러가 실패할 수 있기 때문입니다.

문제해결

위 시나리오를 실행하는 동안 문제가 발생하면 다음을 수행하십시오.

  1. 프록시를 통해 인터넷에 연결되어 있는지 확인하세요. 그렇다면 프록시를 제거하십시오.
  2. Jmeter의 새 인스턴스를 엽니다.
  3. 열기 ProcessorTestPlan.jmx Jmeter에서
  4. Double-스레드 그룹 클릭 -> 결과 트리 보기
  5. 테스트 실행

포스트 프로세서가 아무런 동작도 하지 않는 것처럼 보이면 먼저 위치를 확인하십시오. 대상 샘플러의 범위 밖에 배치된 포스트 프로세서는 절대 실행되지 않으며, 이는 ex가 비어 있는 가장 흔한 원인입니다.tracted 변수. 관련 요소(예: ...) 컨트롤러 분산 테스트 동일한 범위 논리를 따르세요.

자주 묻는 질문

전처리기는 요청을 보내기 전에 요청 내용을 변경합니다. 타이머는 정의된 시간 간격 동안 스레드를 일시 중지할 뿐입니다. 둘 다 샘플러보다 먼저 실행되지만, 타이머는 요청 데이터를 수정하지 않습니다.

전tractor는 값을 저장합니다. JMeter 사용자가 정의한 변수 이름입니다. 동일한 스레드 내의 이후 샘플러는 경로, 헤더 또는 요청 본문에서 ${variableName} 구문을 사용하여 해당 변수를 참조합니다.

네. 현재 여러 AI 비서들이 녹음된 응답을 읽고 상관관계 분석을 위한 정규 표현식이나 경계 쌍을 제안합니다. 하지만 AI는 어떤 값이 실제로 동적 값인지 알 수 없기 때문에 제안 내용에 대한 검토가 여전히 필요합니다.

네. AI 비서는 원시 응답을 이전 응답과 비교합니다.tractor 표현을 지적하고 esca의 불일치를 확인합니다.ping, 그루ping또는 범위. 로드 실행에서 수정 사항을 신뢰하기 전에 결과 트리 보기에서 수정 사항을 확인하십시오.

프로세서는 해당 범위 내에서 샘플러가 실행될 때마다 한 번씩 실행됩니다. 10개의 스레드를 사용하면...ping 5번 실행하면 해당 샘플러에 연결된 프로세서가 50번 실행되고 각 스레드는 자체 변수 값을 유지합니다.

이 게시물을 요약하면 다음과 같습니다.