로드러너 트랜잭션,텍스트 및 이미지 검사,주석 및 랑데부 포인트

부겐 스크립트의 기본 개선 사항 소개:

이 전체 로드러너 교육 자습서의 이전 자습서에서 로드러너의 상관 관계를 자세히 살펴보았습니다.

마지막 두 자습서에서는 부겐 스크립트(상관 관계 및 매개 변수화)에서 데이터를 처리하는 작업을 수행했습니다.

이 로드 러너 자습서에서는 스크립트에 필요한 다른 기본 개선 사항(아래 나열)을 볼 수 있습니다:

  1. 트랜잭션–사용자 작업의 속도 및 응답 시간을 측정합니다.
  2. 텍스트 및 이미지 검사-반환된 응답이 올바른지 확인합니다.
  3. 랑데부 포인트–사용자가 동시에 작업을 수행하도록합니다.

=> 로드 러너 자습서의 전체 시리즈를 보려면 여기를 클릭하십시오

트랜잭션,텍스트 및 이미지 검사,주석 및 랑데부 포인트트랜잭션,텍스트 및 이미지 검사,주석 및 랑데부 포인트

부겐 스크립트의 트랜잭션

성능 스크립트의 단순한 재생은 응용 프로그램에 부하를 넣어하지만 아무것도 측정하지 않습니다. 성능 스크립트의 최종 목표는 부하를 주입하고 응용 프로그램에서 사용자 작업의 속도 및 응답 시간을 측정하는 것입니다.

예를 들어,100 명의 사용자가 응용 프로그램에있을 때 제품 검색에 걸린 시간,15 분 등의 시간에 생성 된 보고서 수 등이 있습니다. 이를 측정하려면 부겐 스크립트에 트랜잭션을 삽입해야합니다(테스트 후 결과에서 이러한 트랜잭션의 속도와 응답 시간을 볼 수 있음).

‘트랜잭션은 응용 프로그램에서 사용자 작업(또는 사용자 작업 그룹)의 종단 간 측정입니다.’

트랜잭션은 두 가지 방법으로 삽입할 수 있습니다:

  1. 녹화 중
  2. 녹화 후(스크립트에 트랜잭션 함수를 수동으로 삽입)

우리가 우리의’웹 투어’응용 프로그램에서’로그인’사용자 작업에 대한 트랜잭션을 삽입 할 수 있습니다.

첫 번째 자습서에서는 사용자 작업을 기록하는 방법을 살펴보았습니다. 녹음하는 동안 로그인 페이지에서’사용자 이름’및’비밀번호’를 입력 한 후’로그인’버튼을 클릭하기 전에 부동 녹음 표시 줄에서’트랜잭션 시작 삽입’아이콘을 클릭하십시오.

1.기록 중

부겐 트랜잭션 이름을 묻는 메시지가 표시됩니다. 의미있는 이름을 입력하십시오. 여기에’로그인’을 부여했지만 이와 같은 규칙(트랜잭션 번호,시나리오 이름,사용자 작업 등)을 따르는 것이 좋습니다.이 경우,당신은 당신의 웹 사이트에 로그인 할 수 있습니다.

2.부겐 트랜잭션 이름에 대한 프롬프트

이제 로그인 버튼을 클릭합니다.

3.이제 로그인 버튼을 클릭

우리는 홈페이지(메인 페이지)에 도달하면,부동 기록 표시 줄에’삽입 종료 거래’아이콘을 클릭합니다.

4.플로팅 레코딩 바에서'종료 트랜잭션 삽입'아이콘을 클릭합니다.

종료할 트랜잭션을 선택합니다(여기서’로그인’트랜잭션).

5.

종료하려는’로그인’트랜잭션은 녹음을 중지하고 생성 된 스크립트를 참조하십시오. 트랜잭션 시작 및 트랜잭션 종료 기능이 스크립트(노란색으로 강조 표시)에 삽입되고’로그인’사용자 작업에 해당하는 모든 요청이 이러한 기능 사이에 포함된다는 것을 알 수 있습니다.

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);

‘트랜잭션 시작’및’트랜잭션 종료’기능의 구문은 매우 간단합니다. 둘 다 첫 번째 인수로 트랜잭션 이름을 갖습니다. ‘트랜잭션 종료’함수에는 하나 이상의 속성이 있습니다.이 속성은 트랜잭션을 자동으로 통과 또는 실패하도록 지시합니다(통과 또는 실패에 대한 조건을 명시 적으로 지정하는 대신).

로드 러너가 트랜잭션 내에서 요청을 실행할 때 오류가 발생하면 트랜잭션이 실패하고 그렇지 않으면 트랜잭션을 전달합니다.

텍스트 및 이미지 검사

텍스트 검사는 요청에 대해 반환된 응답이 올바른지 여부를 확인하는 데 사용됩니다. ‘상관 관계’자습서에서는 때때로 부겐이 오류를 표시하지 않을 수 있지만 반환 된 응답이 올바르지 않을 수 있음을 확인했습니다. 그래서,응답이 올바른지 확인하기 위해,우리는 텍스트 검사를 사용합니다.

예를 들어 웹 투어 응용 프로그램에 로그인하면 홈 페이지로 이동합니다. 우리가 로그인 할 때 우리가 올바른 응답(홈페이지)또는하지를 받고 있는지 스크립트에서 확인하자.

이를 위해,우리는 응답이 올바른지 여부를 말할 수있는 응답(여기 홈페이지)에 텍스트를 식별해야합니다. ‘환영’은 그러한 텍스트 중 하나입니다.

6.텍스트 및 이미지 검사

텍스트 검사의 경우 요청 직전에’웹 찾기’기능을 사용합니다.

이 함수의 구문은 다음과 같습니다:

web_reg_find("Text=","SaveCount=","Fail=",LAST);

여기에 세 가지 속성이 있습니다(전체 속성 목록을 얻으려면 부겐 도움말 참조):

‘텍스트’-검색 할 텍스트를 지정하는 데 사용됩니다.

‘저장 횟수’-지정한 텍스트의 발생 수를 지정한 매개 변수에 저장합니다.

‘실패’-‘발견됨’과’발견되지 않음’의 두 값 중 하나를 사용하고 그에 따라 스크립트를 실패합니다.

이 함수는 응답에서 텍스트’환영’을 검색하고 매개 변수’환영’에 발생 수를 저장합니다(텍스트가 발견되지 않으면 스크립트가 실패합니다).

스크립트는 다음과 같습니다:

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);

이제 스크립트를 재생하면 로그인 요청에 대한 오류가 발생합니다(릴레이 로그 참조). 이는 올바른 홈 페이지를 얻지 못했기 때문입니다(‘런타임 뷰어’와 같이).

7.스크립트를 재생하면 로그인 요청

에 대한 오류가 발생합니다 이제 스크립트를 수정하고(사용자 세션의 상관 관계)스크립트를 다시 재생합시다.

 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);

이번에는 재생 로그에 오류가 표시되지 않지만 텍스트 확인이 성공했다는 메시지가 표시됩니다. 그래서 우리는 이번에 올바른 응답을 얻었습니다(‘런타임 뷰어’에 의해 확증 됨).

8.스크립트를 수정하고(사용자 세션의 상관 관계)스크립트를 다시 재생하십시오.

텍스트 검사를 트랜잭션과 결합하여 텍스트 검사가 성공하면 트랜잭션을 전달하고 텍스트 검사가 실패하면 트랜잭션에 실패 할 수 있습니다.

아래와 같습니다:

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);}

여기에’저장 횟수’속성과 함께’만약 문’을 사용했습니다. 이 매개 변수는 텍스트 발생 수를 저장하며 트랜잭션을 통과/실패하는 조건으로 사용됩니다. 트랜잭션 함수의 속성은 트랜잭션을 명시적으로 전달하고 실패(각각)하는 데 사용됩니다.

참고:여기서 두 가지 새로운 기능을 사용했습니다. 우리는 나중에 이러한 기능에 대해 이야기 할 것입니다.

‘웹 검색’함수 속성의 조합에 대한 추가 정보:

#1) ‘텍스트’속성만 사용되는 경우-

예: 검색이 실패하면 스크립트가 실패합니다.

#2)’텍스트’및’저장 횟수’속성만 사용되는 경우–

예:텍스트를 검색하고 발생 횟수(0 이더라도)를 지정된 매개 변수에 저장합니다(검색에 실패한 경우 스크립트에 실패하지 않음).

#3)’텍스트’및’실패’속성 만 사용되는 경우–

예: 텍스트를 찾을 수 없거나 찾을 수없는 경우 스크립트를 실패합니다.

텍스트 검사는 플로팅 레코딩 바의’텍스트 검사 삽입’아이콘을 사용하여 레코딩 중에 삽입할 수도 있습니다. 이 스크립트에 동일한’웹 찾기’기능을 삽입합니다.

9.'텍스트 삽입 확인'아이콘

하지만 주로 속성을 더 잘 제어 할 수 있으므로이 기능을 수동으로 삽입하는 것이 좋습니다.

텍스트 확인을 명확하게 이해 했으므로 이제 이미지 확인으로 이동하겠습니다.

이미지 검사는 응답에서 지정된 이미지의 존재를 확인하는 데 사용됩니다. ‘이미지 확인’기능은 이미지 확인에 사용됩니다. 이 함수는 요청 후(이미지를 기대하는 응답에서)배치해야합니다.

이 함수의 예:

web_image_check("Image","Src=/WebTours/images/flights.gif",LAST)

첫 번째 속성은 의미 있는 이름이고 두 번째 속성은 이미지 이름/링크입니다.

부겐 스크립트의 주석

부겐 스크립트의 주석은 녹화 중에 그리고 스크립트가 기록된 후 수동으로 입력할 수 있습니다.

녹화 중에 플로팅 녹화 막대의’주석 삽입’아이콘을 클릭합니다.

10.'주석 삽입'아이콘

주석을 입력하십시오(여기에’로그인’이라고 함).

11.주석 입력

녹음 후 아래 그림과 같이 스크립트에서 주석을 볼 수 있습니다.

/* 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",

부겐에서는 아래 그림과 같이 줄 앞에’//’를 넣어 한 줄을 주석 처리 할 수 있습니다:

// 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"); */

참고:위에 표시된 예제에서 쿠키 함수를 주석 처리했습니다. 이 튜토리얼 시리즈의 뒷부분에서 쿠키 기능에 대해 이야기하겠습니다.

녹화 중 각 단계에서 주석을 삽입하는 것이 좋습니다.

부겐 스크립트의 랑데부 포인트

많은 수의 사용자가 응용 프로그램에서 동시에 작업을 수행하는 시나리오(예:결과 확인)가 있고 성능 테스트에서 동일한 작업을 시뮬레이션해야하는 경우’랑데부 포인트’를 사용할 수 있습니다.

‘랑데부 포인트’는 부겐 스크립트에서 로드 러너(여러 사용자를 대상으로 한 테스트 중)가 스크립트의 지정된 단계에서 모든 사용자(스크립트 실행)가 해당 단계에 도달 할 때까지 대기하도록 지시하여 후속 요청을 동시에 실행할 수있는 단일 간단한 함수입니다.

랑데부 함수의 구문은 다음과 같습니다:

lr_rendezvous("MeaningfulName"); 

이 기능은 기록 중에 삽입 할 수 있으며 스크립트가 기록 된 후에도 수동으로 삽입 할 수 있습니다.

‘웹 투어’응용 프로그램에서 결제 단계에 동시 로드를 적용하려고 한다고 가정합니다. (지불 세부 사항을 제출하기 전에)그 단계에서 기록하는 동안,부동 녹음 표시 줄에’랑데부 삽입’아이콘을 클릭합니다.

12.결제 세부 정보

랑데부 지점 이름(의미있는 이름)을 입력합니다.

13.기록 후 랑데부 지점 이름

을 입력,우리는이 같은 스크립트에서 랑데부 기능을 볼 수 있습니다.

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);

이제 컨트롤러에서 여러 사용자와 함께이 스크립트를 실행하면 스크립트는 사용자가 독립적으로 실행되지만 모든 사용자(또는 랑데부 정책에 정의 된 사용자 중 일부 비율)가이 단계에 도달 할 때까지이’지불’단계에서 대기 한 후 동시에이 단계를 수행합니다.

컨트롤러 자습서의 랑데부 정책(옵션)에 대해 자세히 알아보겠습니다.

결론

지금까지 우리는이 튜토리얼에서 이전 자습서 및 트랜잭션,텍스트/이미지 검사,의견과 랑데부 점에서 상관 관계 및 매개 변수화를 논의했다,우리는 또한 가장 중요한 스크립트 향상 방법을 포함했다.

다음 자습서에서는 이러한 문제를 처리하는 방법과 함께 스크립팅 문제를 좀 더 살펴보겠습니다.

=> 로드 러너 자습서의 전체 시리즈를 보려면 여기를 방문하십시오

이전 자습서|다음 자습서

Leave a Reply