loadrunner transactions
Perl 인터뷰 질문 및 답변 pdf
VuGen 스크립트의 기본 개선 사항 소개 :
우리는 탐구했다 LoadRunner의 상관 관계 이전 튜토리얼에서 자세히 설명합니다. LoadRunner 교육 자습서 완료 .
마지막 두 자습서에서는 VuGen 스크립트 (상관 및 매개 변수화)에서 데이터를 처리하는 작업을 수행했습니다.
이 LoadRunner 자습서에서는 스크립트에 필요한 기타 기본 개선 사항 (아래에 나열 됨)을 볼 수 있습니다.
- 업무 – 사용자 작업의 속도 및 응답 시간을 측정합니다.
- 텍스트 및 이미지 확인 – 반환 된 응답이 올바른지 확인합니다.
- 코멘트
- 랑데뷰 포인트 – Vuser가 동시에 작업을 수행하도록합니다.
=> LoadRunner 자습서의 전체 시리즈를 보려면 여기를 클릭하십시오.
학습 내용 :
VuGen 스크립트의 트랜잭션
단순히 성능 스크립트를 재생하면 애플리케이션에 부하 만 걸리지 만 아무것도 측정하지 않습니다. 성능 스크립트의 최종 목표는로드를 주입하고 애플리케이션에 대한 사용자 작업의 속도와 응답 시간을 측정하는 것입니다.
예를 들어 ,100 명의 사용자가 애플리케이션에있을 때 제품 검색에 걸린 시간, 15 분 동안 생성되는 보고서 수 등 이를 측정하려면 VuGen 스크립트에 트랜잭션을 삽입해야합니다 (테스트 후 결과에서 이러한 트랜잭션의 속도와 응답 시간을 볼 수 있음).
'트랜잭션은 애플리케이션에 대한 사용자 작업 (또는 사용자 작업 그룹)의 종단 간 측정입니다.'
거래는 두 가지 방법으로 삽입 할 수 있습니다.
- 녹음 중
- 기록 후 (스크립트에 트랜잭션 함수를 수동으로 삽입)
'웹 투어'애플리케이션에서 '로그인'사용자 작업에 대한 트랜잭션을 삽입 해 보겠습니다.
첫 번째 자습서에서 사용자 작업을 기록하는 방법을 보았습니다. 녹화 중 로그인 페이지에서 '사용자 이름'과 '비밀번호'를 입력 한 후 '로그인'버튼을 클릭하기 직전에 플로팅 녹화 바의 '트랜잭션 시작 삽입'아이콘을 클릭합니다.
VuGen은 트랜잭션 이름을 묻는 메시지를 표시합니다. 의미있는 이름을 입력하십시오. 여기서는 '로그인'을 제공했지만 다음과 같은 규칙 (거래 번호, 시나리오 이름, 사용자 작업 등)을 따르는 것이 좋습니다. 01_WebTours_Launch 02_WebTours_Login (등).
이제 로그인 버튼.
홈페이지 (메인 페이지)에 도달하면 플로팅 레코딩 바의 'Insert End Transaction'아이콘을 클릭합니다.
종료 할 거래를 선택합니다 (여기에서 '로그인'거래).
기록을 중지하고 생성 된 스크립트를 확인합니다. 트랜잭션 시작 및 트랜잭션 종료 기능이 스크립트 (노란색으로 강조 표시됨)에 삽입되고 '로그인'사용자 작업에 해당하는 모든 요청이 이러한 기능 사이에 포함되어 있음을 알 수 있습니다.
lr_start_transaction('Login'); web_submit_data('login.pl', 'Action= http://127.0.0.1:1080/cgi-bin/login.pl ', 'Method= POST ', 'TargetFrame=', 'RecContentType= text/html ', 'Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in= home ', 'Snapshot= t3.inf ', 'Mode= HTML ', ITEMDATA , 'Name= userSession ', 'Value= 123530.624949372zDftVAzpfcAiDDDDDiVctpzDQVcf ', ENDITEM , 'Name= username ', 'Value= jojo ', ENDITEM , 'Name= password ', 'Value= bean ', ENDITEM , 'Name= JSFormSubmit ', 'Value= off ', ENDITEM , 'Name= login.x ', 'Value= 69 ', ENDITEM , 'Name= login.y ', 'Value= 8 ', ENDITEM , LAST ); lr_end_transaction('Login', LR_AUTO );
'트랜잭션 시작'및 '트랜잭션 종료'함수의 구문은 매우 간단합니다. 둘 다 첫 번째 인수로 트랜잭션 이름이 있습니다. 'end transaction'기능에는 'LR_AUTO'라는 속성이 하나 더 있습니다. 이것은 VuGen에게 트랜잭션을 자동으로 통과 또는 실패하도록 지시합니다 (우리가 통과 또는 실패 조건을 명시 적으로 지정하는 대신).
로드 러너가 트랜잭션 내에서 요청을 실행할 때 오류가 발생하면 트랜잭션이 실패하고 그렇지 않으면 트랜잭션을 전달합니다.
VuGen 스크립트의 텍스트 및 이미지 검사
텍스트 검사는 요청에 대해 반환 된 응답이 올바른지 여부를 확인하는 데 사용됩니다. 'Correlation'튜토리얼에서 때때로 VuGen이 오류를 표시하지 않지만 반환 된 응답이 올바르지 않을 수 있음을 확인했습니다. 따라서 응답이 올바른지 확인하기 위해 텍스트 검사를 사용합니다.
예를 들어 웹 투어 애플리케이션에 로그인하면 홈페이지로 이동합니다. 로그인 할 때 올바른 응답 (홈페이지)을 받고 있는지 스크립트에서 확인하겠습니다.
이를 위해서는 응답 (여기 홈페이지)에서 응답이 올바른지 여부를 말할 수있는 텍스트를 식별해야합니다. ‘환영합니다’는 그러한 텍스트 중 하나입니다.
텍스트 확인을 위해‘ web_reg_find’ 요청 직전에 기능합니다.
이 함수의 구문은 다음과 같습니다.
web_reg_find(“Text=”,”SaveCount=”,”Fail=”,LAST);
여기에 세 가지 속성이 있습니다 (전체 속성 목록을 보려면 VuGen 도움말 참조).
‘텍스트’-검색 할 텍스트를 지정하는 데 사용됩니다.
‘SaveCount’– 지정한 텍스트의 발생 횟수를 지정한 매개 변수에 저장합니다.
‘Fail’–‘Found’및‘NotFound’두 값 중 하나를 사용하고 그에 따라 스크립트를 실패합니다.
따라서 web_reg_find (“Text = Welcome”,”SaveCount = WelcomeCount”,”Fail = NotFound”, LAST) 함수는 응답에서 'Welcome'텍스트를 검색하고 발생 횟수를 'WelcomeCount'매개 변수에 저장합니다 (및 텍스트를 찾을 수없는 경우 스크립트가 실패 함).
스크립트는 다음과 같습니다.
web_reg_find('Text= Welcome ','SaveCount= WelcomeCount ','Fail= NotFound ', LAST ); web_submit_data('login.pl', 'Action= http://127.0.0.1:1080/cgi-bin/login.pl ', 'Method= POST ', 'TargetFrame= body ', 'RecContentType= text/html ', 'Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in= home ', 'Snapshot= t2.inf ', 'Mode= HTML ', ITEMDATA , 'Name= userSession ', 'Value= 123531.149939247zDftVDDpfcfDiVctpiAVVf ', ENDITEM , 'Name= username ', 'Value= jojo ', ENDITEM , 'Name= password ', 'Value= bean ', ENDITEM , 'Name= JSFormSubmit ', 'Value= off ', ENDITEM , 'Name= login.x ', 'Value= 66 ', ENDITEM , 'Name= login.y ', 'Value= 12 ', ENDITEM , LAST );
이제 스크립트를 재생하면 VuGen이 응답에서 지정한 텍스트를 찾지 못했기 때문에 로그인 요청에 대한 오류가 발생합니다 (릴레이 로그 참조). 이는 '런타임 뷰어'에 표시된대로 올바른 홈페이지를 얻지 못했기 때문입니다.
이제 스크립트를 수정 (userSession 상호 연결)하고 스크립트를 다시 재생 해 보겠습니다.
web_reg_find('Text=Welcome','SaveCount=WelcomeCount','Fail=NotFound', LAST ); web_submit_data('login.pl', 'Action=http://127.0.0.1:1080/cgi-bin/login.pl', 'Method=POST', 'TargetFrame=body', 'RecContentType=text/html', 'Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in=home', 'Snapshot=t2.inf', 'Mode=HTML', ITEMDATA , 'Name=userSession', 'Value={corUserSession}', ENDITEM , 'Name=username', 'Value=jojo', ENDITEM , 'Name=password', 'Value=bean', ENDITEM , 'Name=JSFormSubmit', 'Value=off', ENDITEM , 'Name=login.x', 'Value=66', ENDITEM , 'Name=login.y', 'Value=12', ENDITEM , LAST );
이번에는 재생 로그에 오류가 표시되지 않지만 텍스트 확인이 성공했다는 메시지가 표시됩니다. 그래서 이번에는 정확한 응답을 얻었습니다 ( '런타임 뷰어'에 의해 확증 되었기 때문입니다).
텍스트 검사를 트랜잭션과 결합하고 텍스트 검사가 성공하면 VuGen이 트랜잭션을 통과하고 텍스트 검사가 실패하면 트랜잭션을 실패하게 만들 수 있습니다.
이것은 아래와 같습니다.
lr_start_transaction('Login'); web_reg_find('Text=Welcome','SaveCount=WelcomeCount',LAST); web_submit_data('login.pl', 'Action=http://127.0.0.1:1080/cgi-bin/login.pl', 'Method=POST', 'TargetFrame=body', 'RecContentType=text/html', 'Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in=home', 'Snapshot=t2.inf', 'Mode=HTML', ITEMDATA, 'Name=userSession', 'Value={corUserSession}', ENDITEM, 'Name=username', 'Value=jojo', ENDITEM, 'Name=password', 'Value=bean', ENDITEM, 'Name=JSFormSubmit', 'Value=off', ENDITEM, 'Name=login.x', 'Value=66', ENDITEM, 'Name=login.y', 'Value=12', ENDITEM, LAST); if(atoi(lr_eval_string('{WelcomeCount}'))>0) { lr_end_transaction('Login',LR_PASS); } else { lr_end_transaction('Login',LR_FAIL); }
여기서는 'SaveCount'속성과 함께 'if 문'을 사용했습니다. 'WelcomeCount'매개 변수 (텍스트 발생 횟수를 저장함)는 트랜잭션을 통과 / 실패하는 조건으로 사용됩니다. 트랜잭션 함수의‘LR_PASS’및‘LR_FAIL’속성은 트랜잭션을 명시 적으로 통과 및 실패 (각각)하는 데 사용됩니다.
노트 : 여기서 두 가지 새로운 기능을 사용했습니다. ‘아토이’ 과 ‘lr_eval_string’ . 이 기능에 대해서는 나중에 설명하겠습니다.
'web_reg_find'함수 속성 조합에 대한 추가 정보 :
# 1)‘텍스트’속성 만 사용하는 경우 -
예: web_reg_find (“Text = Welcome”, LAST) –
VuGen은 텍스트를 검색하고 검색에 실패하면 스크립트에 실패합니다.
# 2)‘Text’및‘SaveCount’속성 만 사용하는 경우 –
예: web_reg_find (“Text = Welcome”,”SaveCount = WelcomeCount”, LAST) – VuGen은 텍스트를 검색하고 발생 횟수 (0 인 경우에도)를 지정된 매개 변수에 저장합니다 (검색에 실패해도 스크립트가 실패하지 않음). ).
# 3)‘텍스트’및‘실패’속성 만 사용하는 경우 –
예: web_reg_find (“Text = Welcome”,”Fail = NotFound”, LAST) – VuGen은 텍스트를 검색하고 텍스트가 발견되거나 발견되지 않으면 스크립트에 실패합니다.
플로팅 기록 막대의 '텍스트 검사 삽입'아이콘을 사용하여 기록 중에 텍스트 검사를 삽입 할 수도 있습니다. 이것은 같은 것을 삽입합니다 ‘web_reg_find’ 기능을 스크립트에 추가합니다.
그러나 주로 속성을 더 잘 제어 할 수 있으므로이 함수를 수동으로 삽입하는 것이 좋습니다.
텍스트 확인을 명확하게 이해 했으니 이제 이미지 확인으로 이동하겠습니다.
이미지 검사는 응답에 지정된 이미지가 있는지 확인하는 데 사용됩니다. ‘ web_image_check ' 기능은 이미지 확인에 사용됩니다. 이 함수는 요청 뒤에 넣어야합니다 (이미지를 기대하는 응답에서).
이 기능의 예 :
web_image_check(“Image”,”Src=/WebTours/images/flights.gif”,LAST)
첫 번째 속성은 의미있는 이름이고 두 번째 속성 (‘Src ')은 이미지 이름 / 링크입니다 (전체 속성 목록을 보려면 VuGen 도움말 참조).
VuGen 스크립트의 주석
VuGen 스크립트의 주석은 기록 중에 입력 할 수 있으며 스크립트를 기록한 후에도 수동으로 입력 할 수 있습니다.
녹음하는 동안 '댓글 삽입' 떠 다니는 녹음 막대의 아이콘.
댓글을 입력합니다 (여기에 '로그인'이라고 말하세요).
녹음 후 아래와 같이 스크립트에서 주석을 볼 수 있습니다.
/* Login */ web_submit_data('login.pl', 'Action=http://127.0.0.1:1080/cgi-bin/login.pl', 'Method=POST', 'TargetFrame=body', 'RecContentType=text/html', 'Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in=home', 'Snapshot=t6.inf', 'Mode=HTML',
VuGen에서는 아래와 같이 줄 앞에‘//’를 붙여서 한 줄에 주석을 달 수 있습니다.
// web_add_cookie('SRCHD=AF=IESS3N; DOMAIN=www.bing.com'); web_add_cookie('SRCHUID=V=2&GUID=89730C3AA700412BAB917005DE9F5F47&dmnchg=1; DOMAIN=www.bing.com'); web_add_cookie('SRCHUSR=DOB=20180312; DOMAIN=www.bing.com');
그리고 시작에‘/ *’, 끝에‘* /’를 넣어 여러 줄을 연결할 수 있습니다 (아래 그림 참조).
/* web_add_cookie('SRCHD=AF=IESS3N; DOMAIN=www.bing.com'); web_add_cookie('SRCHUID=V=2&GUID=89730C3AA700412BAB917005DE9F5F47&dmnchg=1; DOMAIN=www.bing.com'); web_add_cookie('SRCHUSR=DOB=20180312; DOMAIN=www.bing.com'); */
노트 : 위에 표시된 예에서 쿠키 기능 ( web_add_cookie ). 이 튜토리얼 시리즈의 뒷부분에서 쿠키 기능에 대해 설명합니다.
기록하는 동안 각 단계에서 주석을 삽입하는 것이 좋습니다. 스크립트의 요청을 애플리케이션의 사용자 작업과 연결하는 데 도움이되기 때문입니다.
VuGen 스크립트의 랑데뷰 포인트
더 많은 사용자가 애플리케이션에서 동시에 작업 (예 : 결과 확인)을 수행하는 시나리오가 있고 성능 테스트에서 동일한 작업을 시뮬레이션해야하는 경우 'Rendezvous 포인트'를 사용할 수 있습니다.
'Rendezvous 포인트'는로드 러너 (여러 사용자로 테스트하는 동안)가 모든 Vuser (스크립트를 실행하는)가 해당 단계에 올 때까지 스크립트의 지정된 단계에서 대기하도록 지시하는 VuGen 스크립트의 단일하고 간단한 기능입니다. 후속 요청이 동시에 실행될 수 있습니다.
Rendezvous 함수의 구문은 다음과 같습니다.
lr_rendezvous(“MeaningfulName”);
이 기능은 녹음 중에 삽입 할 수 있으며 스크립트를 녹음 한 후에도 수동으로 삽입 할 수 있습니다.
'웹 투어'애플리케이션의 결제 단계에 동시로드를 적용한다고 가정 해 보겠습니다. 해당 단계에서 녹음하는 동안 (결제 세부 정보를 제출하기 전) 플로팅 녹음 막대에서 '랑데뷰 삽입'아이콘을 클릭합니다.
그리고 랑데부 포인트 이름 (의미있는 이름)을 입력합니다.
녹음 후 다음과 같은 스크립트에서 랑데뷰 기능을 볼 수 있습니다.
lr_rendezvous('Payment'); web_submit_data('reservations.pl_3', 'Action= http://127.0.0.1:1080/cgi-bin/reservations.pl ', 'Method= POST ', 'TargetFrame=', 'RecContentType= text/html ', 'Referer= http://127.0.0.1:1080/cgi-bin/reservations.pl ', 'Snapshot= t13.inf ', 'Mode= HTML ', ITEMDATA , 'Name= firstName ', 'Value= Jojo ', ENDITEM , 'Name= lastName ', 'Value= Bean ', ENDITEM , 'Name= address1 ', 'Value= 1st Lane , Down Street', ENDITEM , 'Name= address2 ', 'Value= 567123 ', ENDITEM , 'Name= pass1 ', 'Value= Jojo Bean ', ENDITEM , 'Name= creditCard ', 'Value= 123456789101 ', ENDITEM , 'Name= expDate ', 'Value= 0520 ', ENDITEM , 'Name= oldCCOption ', 'Value=', ENDITEM , 'Name= numPassengers ', 'Value= 1 ', ENDITEM , 'Name= seatType ', 'Value= Coach ', ENDITEM , 'Name= seatPref ', 'Value= None ', ENDITEM , 'Name= outboundFlight ', 'Value= 020 ;338;05/03/2018', ENDITEM , 'Name= advanceDiscount ', 'Value= 0 ', ENDITEM , 'Name= returnFlight ', 'Value=', ENDITEM , 'Name= JSFormSubmit ', 'Value= off ', ENDITEM , 'Name= .cgifields ', 'Value= saveCC ', ENDITEM , 'Name= buyFlights.x ', 'Value= 63 ', ENDITEM , 'Name= buyFlights.y ', 'Value= 12 ', ENDITEM , LAST );
이제 Controller에서 여러 사용자로이 스크립트를 실행할 때 스크립트는 Vusers에 의해 독립적으로 실행되지만 Vusers는 모든 (또는 Rendezvous 정책에 정의 된 Vuser의 일부 비율)이이 단계에 도달 할 때까지이 '결제'단계에서 기다립니다. 이 단계를 동시에.
컨트롤러 자습서에서 랑데부 정책 (옵션)에 대해 자세히 살펴 보겠습니다.
결론
지금까지이 튜토리얼의 이전 튜토리얼과 트랜잭션, 텍스트 / 이미지 확인, 주석 및 Rendezvous 포인트에서 상관 관계 및 매개 변수화에 대해 논의했으며, 가장 중요한 스크립트 향상 방법도 다루었습니다.
다음 자습서에서는이를 처리하는 방법과 함께 몇 가지 스크립팅 문제를 더 볼 것입니다.
=> LoadRunner 튜토리얼의 전체 시리즈를 보려면 여기를 방문하십시오.
추천 도서
- HP LoadRunner 자습서를 사용한 부하 테스트
- Micro Focus LoadRunner 소개-LoadRunner를 사용한 부하 테스트 자습서 # 1
- 상관 관계-LoadRunner를 사용한 부하 테스트
- 초보자를위한 LoadRunner 자습서 (무료 8 일 심화 과정)
- 테스트 결과 분석 및 보고서-LoadRunner를 사용한 부하 테스트
- LoadRunner VuGen 스크립팅을 사용한 웹 서비스 성능 테스트
- LoadRunner와 Performance Center의 차이점
- LoadRunner VuGen 스크립트 파일 및 런타임 설정을 설정하는 방법