기술나눔

전처리기의 정규식 사용자 매개변수에 대한 간략한 논의

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

전처리기의 정규식 사용자 매개변수에 대한 간략한 논의

정규식 사용자 매개변수(RegEx UserParameter)는 사용자가 정규식을 기반으로 한 응답 데이터에서 값을 추출하여 적용하고, 이 값을 후속 매개변수로 매개변수로 전달할 수 있도록 하는 전처리기(Pre-Processor)입니다.HTTP 요청 또는 필요한 다른 장소. 이 기능은 동적 콘텐츠, 세션 ID, 토큰 등을 처리하는 데 매우 유연하며 자동화된 테스트 스크립트를 구현하기 위한 핵심 구성 요소입니다.

사용되는 장면

  1. 동적 매개변수 처리: 대상 시스템이 각 요청에서 서로 다른 동적 매개변수(예: 세션 ID, 타임스탬프 등)를 생성하는 경우 후속 매개변수를 추출하고 이러한 매개변수를 사용하여 후속 요청을 계속해야 합니다.
  2. 테스트 데이터 개인화: 후속 프로필 쿼리 요청에 대한 로그인 응답에서 사용자 ID를 추출하는 등 응답 콘텐츠를 기반으로 후속 요청의 매개변수를 개인화합니다.
  3. 데이터 반복: 응답에 여러 일치 집합이 포함된 경우 추출을 반복하여 여러 요청에 적용하도록 프로세서를 구성할 수 있으며, 이는 테스트 목록 또는 검색 결과 페이지에 적합합니다.

구성 단계

  1. 정규식 사용자 매개변수를 추가합니다.
    ○ JMeter의 워크벤치 또는 테스트 계획에서 매개변수화해야 하는 HTTP 요청 또는 기타 샘플러를 선택합니다.
    ○ 마우스 오른쪽 버튼을 클릭하고 "추가" > "전처리기" > "정규식 사용자 매개변수"를 선택합니다.
  2. 구성 매개변수:
    ○ 정규식 참조 이름: 정규식 추출기의 변수 이름은 정규식과 일치해야 합니다.
    ○ 매개변수 이름 regexp 그룹 번호: 다음 예에 자세히 설명된 매개변수 이름의 그룹 번호입니다.
    ○ 매개변수 값 정규식 그룹 번호: 다음 예에 자세히 설명된 매개변수 이름 그룹의 해당 값입니다.

SpringBoot를 사용하여 다음 인터페이스 코드를 작성합니다.

 @PostMapping(value = "/login",produces = "application/json;charset=UTF-8")
    public String authenticate(@RequestBody JSONObject request) {

        String validUsername = "admin";
        String validPassword = "password";
        String response = "{"total":2,"data":[{"id":123,"name":"John Doe","email":"[email protected]","phone":"123-456-7890","address":{"street":"123 Main St","city":"New York","state":"NY","zip":"10001"},"interests":["sports","music","travel"]},{"id":456,"name":"Jane Smith","email":"[email protected]","phone":"987-654-3210","address":{"street":"456 Elm St","city":"Los Angeles","state":"CA","zip":"90001"},"interests":["reading","cooking","hiking"]}]}";


        if (request.getString("username").equals(validUsername) && request.getString("password").equals(validPassword)) {
            return response;
        } else {
            return response;
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

그런 다음 다음 스크립트를 작성합니다.
여기에 이미지 설명을 삽입하세요.
스레드 그룹: 기본값 유지
HTTP 요청 1: 프로토콜 http, 서버 이름 또는 IP127.0.0.1, 포트 번호 8091, 메소드 POST, 경로/로그인, 콘텐츠 인코딩 utf-8, 메시지 본문 데이터

{
    "username": "admin",
    "password": "password"
    }
  • 1
  • 2
  • 3
  • 4

정규식 추출器:设置的参数为引用名称var,正则表达式"id"😦.?),"이름":"(.?)", "email"(샘플 코드의 내용에서 알 수 있음), id와 이름을 추출하는 것이 목적이며 일치하는 숫자는 -1로 설정되고 기본값은 NotFound입니다.
이 시점에서 먼저 HTTP 요청 2와 정규식 사용자 매개변수를 비활성화한 다음 스크립트를 실행하고 결과 트리의 디버그 샘플러를 볼 수 있습니다. 응답 데이터의 응답 본문에서 다음 결과를 볼 수 있습니다.

JMeter변수:
JMeterThread.last_sample_ok=거짓
JMeterThread.pack=org.apache.jmeter.threads.샘플패키지@4fa1cf1
시작.HMS=165132
시작.MS=1720515092259
시작.YMD=20240709
테스트 시작.MS=1720578466746
_jm__threadgroup__idx=0
_제이미터.U_T
=스레드 그룹 1-1
var=찾을 수 없음
var_1=
변수_1_g=2
var_1_g0="id":123, "name": "John Doe", "email"
var_1_g1=123
var_1_g2=존 도
var_2=
변수_2_g=2
var_2_g0="id":456, "name": "제인 스미스", "이메일"
var_2_g1=456
var_2_g2=제인 스미스
변수_매치번호=2

위 내용에서 해당 정규식에 의해 추출된 var 변수의 값을 확인할 수 있습니다. 이때 정규식 사용자 매개변수 전처리기의 적용을 계속해서 검증하고 다른 구성요소 매개변수를 계속 설정할 수 있습니다.
HTTP 요청 2: 프로토콜 http, 서버 이름 또는 IP127.0.0.1, 포트 번호 8091, POST 메서드, 경로/로그인, 콘텐츠 인코딩 utf-8, 매개변수에 두 개의 매개변수를 추가하고 각각 이름 123, 456을 입력합니다. 지금은 사용하지 마세요. 구체적인 의미에 관계없이 먼저 시도해 보겠습니다.
정규식 사용자 매개변수: 정규식 참조 이름은 var로 설정되고, 여기서 매개변수 이름은 위 정규식의 매개변수 이름과 일치해야 하며, 매개변수 이름 regexp 그룹 번호는 1로 설정되고, 매개변수 값 regex 그룹 번호가 설정됩니다. 2, 왜 이렇게 설정하나요? 이렇게 이해하면 됩니다. HTTP 요청 2에서 123과 456을 설정한 것이 아닌가요? 매개변수 이름 regexp 그룹 번호를 1로 설정한 것은 매개변수를 입력할 때 var_1_g1과 var_2_g1의 매개변수를 취하는 것으로 이해될 수 있습니다. HTTP 요청 2에서 매개변수가 여기 매개변수와 일치하면 매개변수와 데이터 사이의 관계에 대응하여 매개변수 값 정규식 그룹 번호가 2로 설정될 수 있는 길을 열어줍니다. ​​정규식 그룹 번호가 2로 설정되어 얻은 것 매개변수는 var_1_g2 및 var_2_g2가 됩니다.
다음 단계는 결과를 확인하는 것입니다. 결과 트리에서 HTTP 요청 2의 요청 본문에 대한 게시 데이터 데이터를 확인하는 것입니다. 전반적으로 요청이 실패했지만 필요한 것만 확인하면 됩니다. 확인 결과는 중요하지 않습니다.

POST http://127.0.0.1:8091/login
포스트 데이터:
123=존+도&456=제인+스미스
[쿠키 없음]

위의 POST 데이터를 보면 해당 데이터가 요청에 반영된 것을 확인할 수 있습니다.

지침

● 범위: 정규식 사용자 매개변수는 다음 HTTP 요청 또는 샘플러에만 적용됩니다. 전역적으로 적용해야 하는 경우 변수와 함께 "정규식 추출기"를 사용하는 것이 좋습니다.
● 디버깅: "결과 트리 보기" 리스너를 사용하여 정규식 일치를 확인하여 올바른 데이터 추출을 보장합니다.

요약하다

정규식 사용자 매개변수는 동적 데이터 처리를 단순화하고 테스트 스크립트의 유연성과 자동화를 향상시키는 JMeter의 강력한 기능입니다. 이 기능을 올바르게 구성하고 활용하면 복잡한 시스템의 성능 테스트 요구 사항에 효과적으로 대처할 수 있습니다.