transakcje LoadRunner, sprawdzanie tekstu i obrazu, komentarze i punkty spotkania

Wprowadzenie do podstawowych ulepszeń skryptu VuGen:

szczegółowo zbadaliśmy korelację w LoadRunner w naszym poprzednim samouczku w tym kompletnym samouczku szkoleniowym LoadRunner.

w dwóch ostatnich tutorialach pracowaliśmy nad obsługą danych w skrypcie Vugena (korelacja i parametryzacja).

w tym samouczku Loadrunnera zobaczymy inne podstawowe ulepszenia (wymienione poniżej), które są wymagane dla naszego skryptu:

  1. transakcje – do pomiaru szybkości i czasu reakcji działań użytkownika.
  2. sprawdzanie tekstu i obrazu – aby upewnić się, że zwrócona odpowiedź jest poprawna.
  3. punkty spotkania-aby Vusers wykonywali zadanie jednocześnie.

=> Kliknij tutaj, aby uzyskać pełną serię samouczków LoadRunner

transakcje, sprawdzanie tekstu i obrazu, komentarze i punkty spotkania transakcje, sprawdzanie tekstu i obrazu, komentarze i punkty spotkania

transakcje w skrypcie VuGen

samo odtworzenie skryptów wydajności tylko obciąży aplikację, ale nie mierzy niczego. Celem końcowym każdego skryptu wydajności jest wstrzyknięcie obciążenia oraz pomiar szybkości i czasu reakcji działań użytkownika w aplikacji.

na przykład, ile czasu zajęło wyszukiwanie produktu, Gdy 100 użytkowników jest w aplikacji, ile raportów jest generowanych w czasie powiedzmy 15 minut i tak dalej. Aby je zmierzyć, musimy wstawić transakcje do skryptu Vugena (po teście widzimy szybkość i czas reakcji tych transakcji w wynikach).

‘transakcja to końcowy pomiar akcji użytkownika (lub grupy akcji użytkownika) w aplikacji’.

transakcje można wstawiać na dwa sposoby:

  1. podczas nagrywania
  2. po nagrywaniu (gdzie ręcznie wstawiamy funkcje transakcyjne w skrypcie)

wstawmy transakcję dla akcji użytkownika “Login” w naszej aplikacji “Web Tours”.

w naszym pierwszym samouczku zobaczyliśmy, jak nagrywać akcje użytkowników. Podczas nagrywania, po wprowadzeniu “nazwy użytkownika” i “hasła” na stronie logowania, tuż przed kliknięciem przycisku “Zaloguj się”, kliknij ikonę “Wstaw rozpocznij transakcję” na pływającym pasku nagrywania.

1.Podczas nagrywania

VuGen pyta o nazwę transakcji. Wprowadź dowolną znaczącą nazwę. Podaliśmy tutaj ‘Login’, ale dobrą praktyką jest przestrzeganie takiej konwencji(numer transakcji, Nazwa scenariusza, akcja użytkownika itp.): 01_WebTours_Launch 02_WebTours_Login (i tak dalej).

2.VuGen pyta o nazwę transakcji

teraz kliknij przycisk logowania.

3.Teraz kliknij przycisk logowania

po dotarciu do strony głównej (Strona główna), kliknij ikonę “Wstaw transakcję końcową” na pływającym pasku nagrywania.

4.kliknij ikonę

wybierz transakcję, którą chcemy zakończyć (transakcja’ Login ‘ tutaj).

5. Transakcja 'Login', którą chcemy zakończyć

Zatrzymaj nagrywanie i zobacz wygenerowany skrypt. Widzimy, że funkcje rozpoczęcia i zakończenia transakcji są wstawione do skryptu (podświetlone na Żółto) i wszystkie żądania odpowiadające akcji użytkownika ‘Login’ są zamknięte pomiędzy tymi funkcjami.

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

składnia funkcji “rozpoczęcie transakcji” i “koniec transakcji” jest dość prosta. Oba mają nazwę transakcji jako pierwszy argument. Funkcja ‘end transaction’ posiada jeszcze jeden atrybut – ‘LR_AUTO’, który instruuje Vugena, aby przeszedł lub Fail transakcję automatycznie (zamiast jawnie określać warunek dla pass or fail).

jeśli Load runner napotka jakiekolwiek błędy podczas wykonywania żądań w ramach transakcji, to zawiedzie transakcję, w przeciwnym razie przejdzie transakcję.

sprawdzanie tekstu i obrazu w skrypcie VuGen

sprawdzanie tekstu służy do sprawdzenia, czy odpowiedź zwrócona dla żądania jest poprawna, czy nie. W samouczku “korelacja” zauważyliśmy, że czasami VuGen może nie wykazywać żadnego błędu, ale zwracana odpowiedź może nie być prawidłowa. Tak więc, aby upewnić się, że odpowiedź jest poprawna, używamy sprawdzania tekstu.

na przykład, gdy logujemy się do aplikacji Web Tours, przechodzimy do strony głównej. Sprawdźmy w skrypcie, czy otrzymujemy poprawną odpowiedź (homepage), czy też nie po zalogowaniu.

aby to zrobić, musimy zidentyfikować jakiś tekst w odpowiedzi (Strona główna tutaj), który może powiedzieć, czy odpowiedź jest poprawna, czy nie. “Welcome” to jeden z takich tekstów.

6.Sprawdzanie tekstu i obrazu

do sprawdzania tekstu używamy funkcji ‘web_reg_find’ tuż przed żądaniem.

składnia tej funkcji jest:

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

tutaj mamy trzy atrybuty (patrz vugen help, aby uzyskać pełną listę atrybutów):

‘Text’- używany do określenia, który tekst ma być wyszukiwany.

‘SaveCount’ – zapisuje ilość wystąpień podanego tekstu do parametru, który podajemy.

‘Fail’ – pobiera jedną z dwóch wartości- ‘ Found ‘I’ NotFound ‘ i odpowiednio nie wykonuje skryptu.

funkcja web_reg_find(“Text=Welcome”,”SaveCount=WelcomeCount”,”Fail=NotFound”, LAST) wyszukuje tekst ‘Welcome’ w odpowiedzi i zapisuje liczbę wystąpień do parametru ‘WelcomeCount’ (i nie powiedzie się skryptowi, jeśli tekst nie zostanie znaleziony).

skrypt wygląda tak:

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

teraz, jeśli odtworzymy skrypt, otrzymamy błąd dla żądania logowania (patrz w dzienniku przekaźników), ponieważ VuGen nie znalazł tekstu, który podaliśmy, w odpowiedzi. Dzieje się tak dlatego, że nie otrzymaliśmy poprawnej strony głównej (jak pokazano w ‘przeglądarce czasu pracy’).

7.jeśli odtworzymy skrypt, otrzymamy błąd dla żądania logowania

teraz poprawmy nasz skrypt (skorelujmy userSession) i ponownie odtworzymy skrypt.

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

tym razem nie widzimy żadnego błędu w dzienniku powtórek, ale widzimy komunikat, że nasze sprawdzenie tekstu powiodło się. Tym razem otrzymaliśmy więc poprawną odpowiedź (co potwierdza ‘przeglądarka runtime’).

8.popraw nasz skrypt (skoreluj userSession) i powtórz skrypt ponownie.

możemy łączyć kontrole tekstowe z transakcjami i sprawić, że vugen przejdzie transakcję, jeśli sprawdzenie tekstowe powiedzie się i nie powiedzie się transakcja, jeśli sprawdzenie tekstowe nie powiedzie się.

:

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

użyliśmy tutaj instrukcji ‘ if ‘z atrybutem ‘SaveCount’. Parametr ‘ WelcomeCount ‘(zapisujący liczbę wystąpień tekstu) jest używany jako warunek do przekazania/niepowodzenia transakcji. Atrybuty’ LR_PASS ‘i’ lr_fail ‘ funkcji transakcyjnych są używane do jawnego przekazania i niepowodzenia (odpowiednio) transakcji.

Uwaga: użyliśmy tu dwóch nowych funkcji – ‘atoi’ i ‘lr_eval_string’. O tych funkcjach porozmawiamy później.

kilka informacji na temat kombinacji atrybutów funkcji ‘web_reg_find’ :

#1) Jeśli używany jest tylko atrybut ‘Text’-

przykład: web_reg_find (“Text=Welcome”, LAST) –

VuGen wyszukuje tekst i nie wykonuje skryptu, jeśli Wyszukiwanie się nie powiedzie.

#2) Jeżeli są użyte tylko atrybuty ‘Text’ i ‘SaveCount’ –

przykład: web_reg_find(“Text=Welcome”,”SaveCount=WelcomeCount”, LAST) – VuGen wyszukuje tekst i zapisuje ilość wystąpień (nawet jeżeli jest zerowa) do podanego parametru (nie zawiedzie skryptu, jeżeli wyszukiwanie nie powiedzie się).

#3) jeśli używane są tylko atrybuty ‘ Text ‘I’ Fail ‘ –

przykład: web_reg_find (“Text=Welcome”, “Fail=NotFound”, LAST) – VuGen wyszukuje tekst i nie wykonuje skryptu, jeśli tekst zostanie znaleziony/nie został znaleziony.

sprawdzanie tekstu można również wstawiać podczas nagrywania za pomocą ikony “Wstaw sprawdzanie tekstu” na pływającym pasku nagrywania. Spowoduje to wstawienie tej samej funkcji ‘web_reg_find’ do skryptu.

9.Ikona 'Insert text check'

ale lepiej jest wstawić tę funkcję ręcznie, ponieważ będziemy mieli lepszą kontrolę głównie nad atrybutami.

wyraźnie zrozumieliśmy sprawdzanie tekstu, teraz przejdźmy do sprawdzania obrazu.

sprawdzanie obrazu służy do weryfikacji obecności określonego obrazu w odpowiedzi. funkcja ‘web_image_check’służy do sprawdzania obrazu. Funkcję tę należy umieścić po żądaniu (w odpowiedzi na które oczekujemy obrazu).

przykład tej funkcji:

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

gdzie pierwszym atrybutem jest dowolna znacząca nazwa, a drugim atrybutem (“Src”) jest nazwa obrazu/link (patrz Pomoc VuGen, aby uzyskać pełną listę atrybutów).

komentarze w skrypcie VuGen

komentarze w skrypcie VuGen mogą być wprowadzane podczas nagrywania, a także ręcznie po nagraniu skryptu.

podczas nagrywania kliknij ikonę “Wstaw Komentarz” na pływającym pasku nagrywania.

10.Ikona 'Wstaw Komentarz'

wprowadź komentarz (powiedz tutaj ‘Zaloguj się’).

11.Wpisz komentarz

po nagraniu możemy zobaczyć komentarze w skrypcie, jak pokazano poniżej.

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

w VuGen pojedynczy wiersz można skomentować, po prostu umieszczając “/ / ” przed wierszem, jak pokazano poniżej:

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

i wiele linii można połączyć, umieszczając “/ * “na początku i” * / ” na końcu (jak pokazano poniżej)

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

Uwaga: w powyższych przykładach skomentowaliśmy funkcje plików cookie (web_add_cookie). O funkcjach plików cookie porozmawiamy później w tej serii samouczków.

dobrą praktyką jest wstawianie komentarzy na każdym kroku podczas nagrywania, ponieważ pomoże nam to powiązać żądania w skrypcie z działaniami użytkownika w aplikacji.

Rendezvous Point w skrypcie Vugena

jeśli mamy scenariusz, w którym większa liczba użytkowników wykonuje akcję jednocześnie w aplikacji (np. sprawdzanie wyników) i jeśli musimy symulować to samo w naszym teście wydajności, możemy użyć “Rendezvous point”.

‘Rendezvous point’ to pojedyncza i prosta funkcja w skrypcie Vugena, która instruuje Load runnera (podczas testu z wieloma użytkownikami), aby czekał na określonym kroku skryptu, aż wszyscy użytkownicy (wykonujący skrypt) dojdą do tego kroku, aby kolejne żądanie mogło być wykonane jednocześnie.

składnia funkcji Rendezvous to:

lr_rendezvous("MeaningfulName"); 

funkcja ta może być wstawiona podczas nagrywania, a także ręcznie po nagraniu skryptu.

Załóżmy, że chcemy umieścić jednoczesne obciążenie kroku płatności w naszej aplikacji ‘Web Tours’. Podczas nagrywania na tym etapie (przed przesłaniem szczegółów płatności) kliknij ikonę “Wstaw spotkanie” na pływającym pasku nagrywania.

12.szczegóły płatności

i wprowadź nazwę punktu spotkania (dowolną znaczącą nazwę).

13.wpisz nazwę punktu spotkania

po nagraniu możemy zobaczyć funkcję spotkania w skrypcie w ten sposób.

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

teraz, gdy uruchomimy ten skrypt z wieloma użytkownikami w kontrolerze, skrypt będzie wykonywany przez Vuserów niezależnie, ale Vuserzy będą czekać na tym kroku ‘płatności’, aż wszyscy (lub pewien procent Vuserów zdefiniowanych w Rendezvous policy) osiągną ten krok, po czym wykonają ten krok jednocześnie.

więcej informacji o zasadach spotkania (opcjach) zobaczymy w samouczku kontrolera.

wniosek

do tej pory omawialiśmy korelację i parametryzację w poprzednich samouczkach i transakcjach, sprawdzaniu tekstu/obrazu, komentarzach i punktach spotkania w tym samouczku omówiliśmy również najważniejsze metody ulepszania skryptów.

w naszym następnym samouczku zobaczymy więcej wyzwań skryptowych wraz ze sposobami radzenia sobie z nimi.

=> odwiedź tutaj pełną serię samouczków LoadRunner

poprzedni samouczek / następny samouczek

Leave a Reply