LoadRunner에서 web_reg_save_param을 사용한 상관관계 예시

⚡ 스마트 요약

LoadRunner의 상관관계 분석은 세션 ID와 같은 동적 서버 값을 캡처하여 이후 요청에 다시 반영함으로써, 기록된 VuGen 스크립트가 오래된 데이터로 인해 실패하는 대신 성공적으로 재생되도록 합니다.

  • 🔘 정의: 상관관계는 서버 응답을 해당 응답에 의존하는 모든 후속 요청과 연결합니다.
  • ☑️ 징후: 스크립트가 서버에서 더 이상 인식하지 못하는 녹화된 세션 ID를 반환하면 재생이 실패합니다.
  • 자동 : VuGen의 규칙과 자동 감지 기능은 두 개의 리플레이를 비교하지만, 전체 사례 중 극히 일부만 다룹니다.
  • 🧪 수동 : web_reg_save_param 함수는 왼쪽 경계와 오른쪽 경계 사이에 있는 값을 저장합니다.
  • 🛠️ 배치 : 등록 기능은 응답으로 값을 전달하는 단계보다 위에 위치해야 합니다.
  • 📊 지불: 상관 관계가 있는 스크립트는 새로운 데이터로 다시 실행되며 크기가 훨씬 더 작습니다.

LoadRunner에서 web_reg_save_param과의 상관관계

상관관계란 무엇입니까?

상관관계는 이름에서 알 수 있듯이 두 변수 또는 개체 간의 관계를 정의하는 메커니즘입니다. 사전에서는 상관관계를 "두 개 이상의 변수 간의 통계적 관계로서, 한 변수의 값에 체계적인 변화가 있을 때 다른 변수에도 체계적인 변화가 나타나는 것"이라고 정의합니다.

브랜드 노트: 이 도구는 HP 제품으로 출시되었습니다. Micro Focus LoadRunner, 현재 OpenText 전문 성능 엔지니어링아래의 모든 상관 함수는 변경되지 않았으며, 공급업체는 스크립트 생성기의 이름을 명시합니다. VuGen.

상관관계가 필요한 이유는 무엇입니까?

다음 시나리오를 통해 상관관계를 이해해 봅시다.

스크립트를 녹음한다고 가정해 보세요. LoadRunner.

녹화 중 클라이언트-서버 통신은 다음과 같이 진행되며, 아래 다이어그램은 이를 요약한 것입니다.

  1. 레코드(Record) 과정에서 클라이언트는 서버에 세션 시작 요청을 보냅니다.
  2. 서버는 요청을 수신하고 새 세션 ID ABC를 할당합니다.
  3. 클라이언트는 세션 ID ABC를 스크립트에 저장합니다.
  4. 클라이언트가 ID가 ABC인 사용자로 세션을 시작하고 서버에 녹화를 허용해 달라는 요청을 보냅니다.
  5. 서버는 ID ABC를 인식하고 클라이언트가 스크립트를 기록하도록 허용합니다.

LoadRunner 스크립트 녹화 중 클라이언트-서버 세션 ID 교환

이제 다음 단계 이후에 나타나는 재생 중 클라이언트-서버 통신을 살펴보겠습니다.

  1. 재생 중에 클라이언트는 서버에 세션을 시작하라는 요청을 보냅니다.
  2. 서버는 요청을 수신하고 새 세션 ID XYZ를 할당합니다.
  3. 클라이언트가 이전에 기록된 세션 ID ABC로 세션을 시작하고 서버에 기록 허용 요청을 보냅니다.
  4. 서버는 할당된 ID XYZ를 예상하고 세션이 실패하므로 ID ABC를 식별할 수 없습니다.

상관관계가 없을 때 재생 중 세션 ID 불일치 발생

실행 시간에 전송되는 동적 값을 캡처하고 파싱하여 서버로 반환할 수 있는 솔루션이 필요합니다. 아래 다이어그램은 이러한 솔루션을 사용했을 때의 클라이언트-서버 통신 방식을 보여줍니다.

  1. 재생 중에 클라이언트는 서버에 세션을 시작하라는 요청을 보냅니다.
  2. 서버는 요청을 수신하고 새 세션 ID ZZZ를 할당합니다.
  3. 클라이언트는 요청에서 이 새 세션 ID ZZZ를 구문 분석합니다.
  4. 클라이언트가 ID ZZZ로 세션을 시작하라는 요청을 보냅니다.
  5. 서버는 ID ZZZ를 인식하고 클라이언트가 스크립트를 재생할 수 있도록 허용합니다.

새로운 세션 ID를 캡처하여 서버로 반환하는 상관 관계

이것은 단지 상관 관계.

아래 짧은 영상은 녹화 및 재생 시 발생하는 동일한 문제를 해결하는 과정을 보여줍니다.

여기에서 확인하세요 비디오에 접근할 수 없는 경우

VuGen의 경우 상관관계는 응답과 이전 요청 간의 결합 관계를 의미합니다.

서버로부터 이전에 수신한 응답(예: 세션 ID 또는 서버에서 가져온 날짜 및 시간)을 기반으로 요청이 이루어지는 경우가 여러 가지 있습니다. 이러한 값은 애플리케이션을 실행하거나 스크립트를 기록할 때마다 다릅니다. 따라서 스크립트 실행이 서버 반환 값에 의존하는 경우, 서버 응답을 "포착"하여 서버가 예상하는 요청에 첨부할 수 있는 메커니즘을 찾아야 합니다. LoadRunner에서는 이를 일반적으로 "상관관계(Correlation)"라고 합니다.

간단히 말해서 Correlation을 사용한 솔루션은 다음과 같습니다.

  1. 단계에서 출력 값 캡처
  2. 위에서 캡처한 값을 사용하여 모든 후속 단계에 대한 입력으로 사용

VuGen/LoadRunner에서는 상관관계를 두 가지 범주로 분류합니다.

  • 자동 상관관계
  • 수동 상관관계

자동 상관관계

LoadRunner는 자동으로 상관 관계를 쉽게 수행할 수 있는 메커니즘을 제공합니다.

VuGen은 서버 응답의 다양한 값을 내부적으로 비교하기 위해 녹화된 스크립트를 최소 두 번 실행해야 합니다.

자동 상관 관계는 3가지 범주로 분류될 수 있습니다.

  • 상관관계 자동 감지
  • 규칙 기반 상관관계
  • 모든 진술의 상관관계
규칙 이름 언제 사용 하는가?
상관관계 자동 감지 LoadRunner에서 지원하는 애플리케이션 서버의 동적 데이터를 감지하고 상관관계를 분석합니다.
규칙 기반 컨텍스트가 알려진 지원되지 않는 애플리케이션 서버로 작업할 때 사용됩니다.
모두 상관 모든 동적 데이터를 블라인드 방식으로 상호 연결하는 데 도움이 됩니다.

자동 상관관계는 단순해 보이지만 오류가 발생하기 쉬우며 작동하는 경우는 5% 미만입니다. 항상 수동 상관 관계를 사용하는 것이 좋습니다.

녹화 시 자동 상관 관계를 설정하려면 스크립트 녹화 후 녹화 시간 설정에서 아래 설정을 수행하세요.

아래 메뉴에서 [녹화] => [녹화 옵션]을 클릭하거나 Ctrl + F7을 누르세요.

VuGen 녹화 메뉴에서 녹화 옵션 항목이 선택된 상태입니다.

아래 창이 열립니다:

VuGen 녹화 옵션 창에는 녹화 구성 노드 목록이 표시됩니다.

상관 관계 => 구성을 클릭하면 아래 창이 열립니다.

상관 관계 구성 창에는 ASPNET과 같은 애플리케이션 규칙 세트가 나열됩니다.

여기서는 해당 애플리케이션에서 사용되는 모든 애플리케이션(ASPNET) 등에 대해 선택됨으로 표시해야 합니다. 오른쪽에서는 _VIEWSTATE와 같이 상관 관계에 대한 가능한 후보를 검색하는 규칙을 볼 수 있습니다. 새 규칙 버튼을 클릭하여 더 많은 애플리케이션이나 사용자 정의 규칙을 추가할 수도 있습니다.

RULES(규칙)를 클릭해도 다음과 같이 표시됩니다.

상관관계 규칙 창에서 규칙 검색 옵션을 사용할 수 있습니다.

자동 상관관계 기능을 사용하려면 '규칙 검색' 옵션이 선택되어 있어야 합니다. '발견된 값 자동 상관관계'를 클릭하면 상관관계 후보가 발견되더라도 VuGen에서 선택 옵션을 제시하지 않고 바로 상관관계를 생성합니다.

우리는 나중에 상관관계에 사용되는 API를 이해할 것입니다. 그러나 텍스트 비교 대신 HTML 비교를 사용하는 것이 좋습니다.

규칙을 선택한 후 확인(OK) 버튼을 클릭해 창을 닫습니다.

여기에 표시된 툴바 버튼을 클릭하세요. VuGen 툴바 버튼은 녹화된 스크립트를 재생성하는 데 사용됩니다. 메뉴에서 해당 옵션을 선택하면 VuGen이 새 구성으로 스크립트를 다시 생성합니다(녹화 과정 없이). VuGen은 상관 관계 처리에 필요한 코드를 자동으로 추가합니다. 이 예제는 수동 상관 관계 섹션에서 더 자세히 살펴보겠습니다.

수동으로 상관 관계를 수행하거나 자동 상관 관계를 사용하는 경우 코드 조각에는 정확히 동일한 구문과 기능이 포함됩니다.

스크립트를 자동 연관시키는 단계:

  1. 스크립트 녹음
  2. 재생 스크립트
  3. 상관관계가 있는 값을 식별합니다.
  4. 값을 선택하고 자동 상관 버튼을 클릭하세요.
  5. 다시 실행하여 스크립트를 확인하십시오. 성공적인 실행은 성공적인 상관 관계를 의미합니다.

Tip:

  • 상관관계는 다양한 값으로 스크립트를 실행하는 데 도움이 됩니다.
  • 상관 관계는 또한 스크립트의 크기를 줄입니다.

수동 상관관계

수동 상관 관계는 끊임없이 변화하는 값을 처리하기 위해 스크립트에 직접 코드를 작성하는 것입니다. 아래 단계로 나눌 수 있습니다.

  1. 캡처할 가치 결정
  2. 캡처할 값의 오른쪽 및 왼쪽 텍스트 경계 찾기(WEB)
  3. 사용해야 하는 텍스트 경계 항목 찾기
  4. 캡처할 값이 있는 페이지를 요청하는 코드 조각 위에 web_reg_save_param 함수를 스크립트에 추가합니다.
  5. 매개변수 이름, 왼쪽 경계, 오른쪽 경계 및 발생 항목을 함수에 추가합니다.
  6. 동적 값이 발생할 때마다 스크립트에서 매개변수화
  7. 올바른 실행 확인
web_reg_save_param (" OracleAppJSESSIONID3",
	"LB/IC=JSESSIONID=",
	"RB/IC=;",
	"Ord=l",
	"Search=headers",
	"RelFrameId=l",
	LAST);

web_reg_save_param("Siebel_Analytic_ViewState2",
	"LB/IC=ViewState\" value=\"",
	"RB/IC=\"",
	"Ord=1",
	"Search=Body",
	"RelFrameId=l",
	LAST);

Code 참고 사항 : 두 발췌문 모두 게시된 그대로 나타납니다. 서수를 살펴보세요. 오드=l RelFrameId=l 소문자 L을 사용하세요. VuGen은 숫자 1을 예상합니다.

VUser 비교를 통해 수동 상관 관계를 수행할 수 있습니다. VUser 비교 상관 관계 방법의 단계는 다음과 같이 나눌 수 있습니다.

  1. 상관 관계가 필요한 동적 값 식별
  2. Dynamic 값을 포함하는 서버 응답을 찾으십시오.
  3. 매개변수에서 동적 값 캡처
  4. 발생하는 모든 동적 값을 매개변수로 바꿉니다.
  5. 변경 사항 확인

web_reg_save_param 함수 이해하기

VuGen은 후보군 간의 상관관계를 분석하기 위한 다양한 기능 또는 API를 제공합니다. 여기에는 다음이 포함됩니다.

  • web_reg_save_param
  • web_reg_save_param_ex
  • web_reg_save_param_regexp
  • web_reg_save_param_xpath

버전 참고: 현재 VuGen 릴리스는 다음과 같은 문제를 다룹니다. web_reg_save_param_ex 원래 기능의 후계자로서, web_reg_save_param_regexp 경계 자체가 변경될 때의 선택과 같습니다. 원래 예시는 여전히 실행됩니다.

여기서는 간단한 소개만 제공하지만, 함수와 매개변수에 대한 자세한 이해를 위해서는 VuGen을 열고 함수를 입력하거나(또는 Steps Toolbox를 사용) 함수 위에 커서를 놓고 F1 키를 누르세요. 그러면 함수에 익숙해질 수 있을 것입니다. VuGen 도움말 그리고 습관으로 만드세요. 업계에서 일하다 보면 그런 상황을 많이 겪게 될 겁니다.

이제 기능의 세부 정보를 살펴보겠습니다.

web_reg_save_param(매개변수 이름, 왼쪽 경계, 오른쪽 경계)

속성 목록

아래 표는 함수가 허용하는 모든 속성, 필수 여부 및 제어 기능을 정리한 것입니다.

속성 필수 사항입니까? 그것이하는 일
개 심자 Optional HTML_TO_URL HTML로 인코딩된 데이터를 변환합니다. URLHTML로 인코딩된 데이터 형식입니다. HTML_TO_TEXT 함수는 HTML로 인코딩된 데이터를 일반 텍스트 형식으로 변환합니다.
리디렉션 무시 선택 사항이며 기본값은 "리디렉션 무시=아니요"입니다. '예'로 설정하고 서버 응답이 리디렉션 정보(HTTP 상태 코드 300-303, 307)인 경우, 해당 응답은 검색되지 않습니다. GET 요청은 리디렉션된 위치로 이동하고, 거기서 받은 응답에 대해 검색이 실행됩니다.
LB 필수 매개변수 또는 동적 데이터의 왼쪽 경계입니다. LB 값을 지정하지 않으면 데이터의 시작 부분부터 모든 문자가 경계로 사용됩니다. 경계 매개변수는 대소문자를 구분합니다. 검색 텍스트를 더욱 세밀하게 사용자 지정하려면 하나 이상의 텍스트 플래그를 사용하십시오.
찾을 수 없음 선택 사항이며 기본값은 "오류"입니다. 경계를 찾지 못하여 빈 문자열이 생성되는 경우를 처리합니다. "찾을 수 없음=오류"는 오류를 발생시킵니다. "찾을 수 없음=경고"(이전 버전에서는 "찾을 수 없음=빈 문자열")는 매개변수 개수를 0으로 설정하고 계속 진행합니다. 이는 스크립트 실행을 중단하지 않고 문자열을 찾았는지 확인하려는 경우에 적합합니다. "오류 발생 시 계속" 옵션을 활성화하면 "오류"가 발생하더라도 스크립트는 계속 진행되지만, 확장 로그에 오류가 기록됩니다.
ORD 선택 사항이며 기본값은 1입니다. 일치하는 항목의 순서 위치 또는 인스턴스를 나타냅니다. "모두"를 지정하면 매개변수 값이 배열에 저장됩니다. 하위 호환성을 위해 ORD 대신 Instance를 사용할 수 있지만, 더 이상 권장되지 않습니다.
RB 필수 매개변수 또는 동적 데이터의 오른쪽 경계입니다. RB 값을 지정하지 않으면 데이터 끝까지의 모든 문자가 경계로 사용됩니다. 경계 매개변수는 대소문자를 구분합니다. 검색 텍스트를 더욱 세밀하게 사용자 지정하려면 하나 이상의 텍스트 플래그를 사용하십시오.
RelFrameID Optional 요청된 HTML 페이지의 계층 수준 URL가능한 값은 ALL 또는 숫자입니다. RelFrameID는 GUI 레벨 스크립트에서 지원되지 않습니다.
세이브렌 선택 사항이며 기본값은 -1입니다. 찾은 값의 부분 문자열 중 지정된 오프셋부터의 길이를 매개변수에 저장합니다. 기본값은 문자열의 끝에 저장하는 것입니다.
오프셋 저장 선택 사항이며 기본값은 0입니다. 찾은 값의 부분 문자열에 대한 오프셋 값을 매개변수에 저장합니다. 오프셋 값은 음수가 아니어야 합니다.
검색 선택 사항이며 기본값은 ALL입니다. 검색 범위 - 구분된 데이터를 검색할 위치입니다. 가능한 값은 Headers(헤더만 검색), Body(헤더를 제외한 본문 데이터만 검색), No resource(모든 헤더와 리소스를 제외한 HTML 본문만 검색), 또는 ALL(본문, 헤더 및 리소스 모두 검색)입니다.

스크립트가 제대로 재생되면 추가하세요. 매개변수화, 트랜잭션 및 런타임 설정다음에서 실행하세요. 제어 장치그리고 결과를 읽어보세요 분석 더 넓은 범위의 일부로서 성능 시험 부하 테스트.

자주 묻는 질문

확장 로그인으로 두 번 실행하고 응답을 비교하세요. 서버가 실행할 때마다 새로 발행하는 값(세션 ID, 토큰, 타임스탬프 등)은 모두 후보가 될 수 있습니다.

web_reg_save_param은 고정된 왼쪽 및 오른쪽 경계 사이를 일치시킵니다. web_reg_save_param_regexp 정규 표현식과 일치하므로 경계 자체가 변경되더라도 처리할 수 있습니다.

네. 머신러닝은 두 개의 리플레이 응답을 비교하고 변경된 필드를 순위별로 분류하여 수동 검토보다 훨씬 빠르게 처리할 수 있습니다. 순위는 최종 후보 목록으로 간주하고, 최종 확인은 사람이 최종적으로 수행합니다.

GitHub 부조종사 주석에서 함수 호출과 인수를 초안합니다. 서버 응답을 볼 수 없으므로 제안하는 모든 경계는 실제 트래픽을 통해 검증해야 합니다.

이는 등록 기능입니다. VuGen이 수신하는 다음 응답에 대해 검색을 등록합니다. 요청 뒤에 배치되므로 스캔할 항목이 남지 않아 매개변수는 비어 있게 됩니다.

경계가 일치하지 않습니다. 일반적인 원인은 대소문자 불일치, 다른 페이지에만 나타나는 경계 또는 값이 헤더에 있는데 본문을 검색하는 경우입니다.

아니요. 파라미터화는 데이터 파일에서 스크립트로 입력 데이터를 전달하는 기능입니다. 상관관계는 서버가 런타임에 생성하는 값을 캡처하여 다시 전달하는 기능입니다. 대부분의 스크립트는 이 두 가지 모두 필요합니다.

네, 오히려 그런 경우가 더 많습니다. 베어러 토큰, CSRF 필드, JSON 식별자는 세션마다 변경되므로 HTML 폼이 없더라도 REST API나 단일 페이지 트래픽에는 문제가 될 만한 요소가 많습니다.

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