loadrunner transactions
c ++ char * na int
Wprowadzenie do podstawowych ulepszeń skryptu VuGen:
Odkryliśmy Korelacja w LoadRunner szczegółowo w naszym poprzednim samouczku w tym Ukończ samouczki szkoleniowe LoadRunner .
W ostatnich dwóch samouczkach pracowaliśmy nad obsługą danych w skrypcie VuGen (korelacja i parametryzacja).
W tym samouczku LoadRunner zobaczymy inne podstawowe ulepszenia (wymienione poniżej), które są wymagane dla naszego skryptu:
- Transakcje - Aby zmierzyć szybkość i czas odpowiedzi działań użytkownika.
- Sprawdzanie tekstu i obrazu - Aby upewnić się, że zwrócona odpowiedź jest poprawna.
- Komentarze
- Punkty spotkań - Aby Vusers wykonywał zadanie jednocześnie.
=> Kliknij tutaj, aby uzyskać pełną serię samouczków LoadRunner
Czego się nauczysz:
- Transakcje w skrypcie VuGen
- Sprawdzanie tekstu i obrazu w skrypcie VuGen
- Komentarze w skrypcie VuGen
- Punkt spotkania w skrypcie VuGen
- Wniosek
- rekomendowane lektury
Transakcje w skrypcie VuGen
Samo odtworzenie skryptów wydajnościowych tylko obciąży aplikację, ale niczego nie mierzy. Ostatecznym celem każdego skryptu wydajności jest wstrzyknięcie obciążenia oraz pomiar szybkości i czasu odpowiedzi działań użytkownika w aplikacji.
Na przykład ,ile czasu zajęło wyszukiwanie produktu, gdy w aplikacji jest 100 użytkowników, ile raportów jest generowanych w ciągu powiedzmy 15 minut itd. Aby je zmierzyć, musimy wstawić transakcje w skrypcie VuGen (po teście możemy zobaczyć w wynikach szybkość i czas odpowiedzi tych transakcji).
„Transakcja jest końcowym pomiarem działania użytkownika (lub grupy działań użytkownika) w aplikacji”.
Transakcje można wstawiać na dwa sposoby:
- Podczas nagrywania
- Po nagraniu (gdzie ręcznie wstawiamy funkcje transakcyjne w skrypcie)
Wstawmy transakcję dla działania użytkownika „Zaloguj się” w naszej aplikacji „Wycieczki internetowe”.
W naszym pierwszym samouczku widzieliśmy, jak rejestrować działania użytkownika. Podczas nagrywania, po wprowadzeniu „Nazwy użytkownika” i „Hasła” na stronie logowania, tuż przed kliknięciem przycisku „Zaloguj”, kliknij ikonę „Wstaw rozpoczęcie transakcji” na ruchomym pasku nagrywania.
VuGen pyta o nazwę transakcji. Wpisz dowolną znaczącą nazwę. Podaliśmy tutaj „Login”, ale dobrą praktyką jest przestrzeganie takiej konwencji (numer transakcji, nazwa scenariusza, działanie użytkownika itp.): 01_WebTours_Launch 02_WebTours_Login (i tak dalej).
Teraz kliknij Przycisk logowania.
Gdy dotrzemy do strony głównej (głównej), kliknij ikonę „Wstaw koniec transakcji” na ruchomym pasku nagrywania.
Wybierz transakcję, którą chcemy zakończyć (transakcja „Zaloguj się” tutaj).
Zatrzymaj nagrywanie i zobacz wygenerowany skrypt. Widzimy, że funkcje rozpoczęcia i zakończenia transakcji są wstawiane do skryptu (zaznaczone na żółto), a wszystkie żądania odpowiadające akcji użytkownika „Zaloguj się” są zawarte mię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 „początek transakcji” i „koniec transakcji” jest dość prosta. Obie mają nazwę transakcji jako pierwszy argument. Funkcja „koniec transakcji” ma jeszcze jeden atrybut - „LR_AUTO”, który nakazuje VuGen automatyczne zaliczenie lub niepowodzenie transakcji (zamiast bezpośredniego określenia warunku pozytywnego lub negatywnego wyniku).
Jeśli program ładujący napotka jakiekolwiek błędy w wykonywaniu żądań w ramach transakcji, transakcja kończy się niepowodzeniem, w przeciwnym razie transakcja przechodzi pomyślnie.
Sprawdzanie tekstu i obrazu w skrypcie VuGen
Sprawdzanie tekstu służy do sprawdzania, czy odpowiedź zwrócona na żądanie jest poprawna, czy nie. W samouczku „Korelacja” widzieliśmy, że czasami VuGen może nie wyświetlać żadnego błędu, ale zwrócona odpowiedź może nie być poprawna. Aby upewnić się, że odpowiedź jest poprawna, używamy sprawdzania tekstu.
Na przykład, kiedy logujemy się do internetowej aplikacji Tours, przechodzimy do strony głównej. Sprawdźmy w skrypcie, czy po zalogowaniu otrzymujemy poprawną odpowiedź (strona główna), czy nie.
Aby to zrobić, musimy zidentyfikować tekst w odpowiedzi (tutaj strona główna), który może powiedzieć, czy odpowiedź jest poprawna, czy nie. Jednym z takich tekstów jest „Witamy”.
Do sprawdzania tekstu używamy „ web_reg_find ” działa tuż przed żądaniem.
Składnia tej funkcji to:
web_reg_find(“Text=”,”SaveCount=”,”Fail=”,LAST);
Tutaj mamy trzy atrybuty (zapoznaj się z pomocą VuGen, aby uzyskać pełną listę atrybutów):
„Tekst” - służy do określenia tekstu do wyszukania.
„SaveCount” - zapisuje liczbę wystąpień określonego tekstu w parametrze, który określamy.
„Niepowodzenie” - przyjmuje jedną z dwóch wartości - „Znaleziono” i „Nie znaleziono” i odpowiednio nie działa skrypt.
Dlatego funkcja web_reg_find („Text = Welcome”, „SaveCount = WelcomeCount”, „Fail = NotFound”, LAST) wyszukuje tekst „Welcome” w odpowiedzi i zapisuje liczbę wystąpień w parametrze „WelcomeCount” (i skrypt nie powiedzie się, jeśli tekst nie zostanie znaleziony).
Skrypt wygląda następująco:
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 ponownie odtworzymy skrypt, otrzymamy błąd dla żądania logowania (patrz w dzienniku przekaźników), ponieważ VuGen nie znalazł w odpowiedzi tekstu, który podaliśmy. Dzieje się tak, ponieważ nie otrzymaliśmy prawidłowej strony głównej (jak pokazano w „przeglądarce wykonawczej”).
Teraz poprawmy nasz skrypt (skorelujmy sesję userSession) i powtórzmy 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 się powiodło. Tak więc tym razem otrzymaliśmy poprawną odpowiedź (co potwierdza „przeglądarka środowiska uruchomieniowego”).
Możemy łączyć czeki tekstowe z transakcjami i sprawić, że VuGen przejdzie transakcję, jeśli sprawdzenie tekstu się powiedzie, i zakończy się niepowodzeniem, jeśli sprawdzenie tekstu się nie powiedzie.
Jest to pokazane poniżej:
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” (który zapisuje liczbę wystąpień tekstu) jest używany jako warunek pomyślnej / niepomyślnej transakcji. Atrybuty „LR_PASS” i „LR_FAIL” funkcji transakcyjnych są używane do jawnego (odpowiednio) przejścia i niepowodzenia transakcji.
Uwaga: Użyliśmy tutaj dwóch nowych funkcji - „Atoi” i „Lr_eval_string” . O tych funkcjach porozmawiamy później.
Więcej informacji na temat kombinacji atrybutów funkcji „web_reg_find”:
# 1) Jeśli używany jest tylko atrybut „Tekst” -
Przykład: web_reg_find ('Text = Welcome', LAST) -
VuGen wyszukuje tekst i nie powiedzie się skrypt, jeśli wyszukiwanie zakończy się niepowodzeniem.
# 2) Jeśli używane są tylko atrybuty „Text” i „SaveCount” -
Przykład: web_reg_find ('Text = Welcome', 'SaveCount = WelcomeCount', LAST) - VuGen wyszukuje tekst i zapisuje liczbę wystąpień (nawet jeśli wynosi zero) do określonego parametru (nie zawiedzie skryptu, jeśli wyszukiwanie zakończy się niepowodzeniem ).
# 3) Jeśli używane są tylko atrybuty „Tekst” i „Niepowodzenie” -
Przykład: web_reg_find („Text = Welcome”, „Fail = NotFound”, LAST) - VuGen wyszukuje tekst i nie wykonuje skryptu, jeśli tekst zostanie znaleziony / nie zostanie znaleziony.
Kontrolki tekstu można również wstawiać podczas nagrywania za pomocą ikony „Wstaw sprawdzanie tekstu” na ruchomym pasku nagrywania. Spowoduje to wstawienie tego samego „Web_reg_find” funkcji w skrypcie.
Ale lepiej jest wstawić tę funkcję ręcznie, ponieważ będziemy mieli lepszą kontrolę głównie nad atrybutami.
Wyraźnie zrozumieliśmy sprawdzanie tekstu, przejdźmy teraz do sprawdzania obrazu.
Sprawdzanie obrazu służy do sprawdzania obecności określonego obrazu w odpowiedzi. „ web_image_check ” Funkcja służy do sprawdzania obrazu. Funkcję tę należy umieścić po zapytaniu (w odpowiedzi oczekujemy obrazu).
Przykład tej funkcji:
web_image_check(“Image”,”Src=/WebTours/images/flights.gif”,LAST)
Gdzie pierwszy atrybut to dowolna opisowa nazwa, a drugi atrybut („Src”) to nazwa / link do obrazu (zapoznaj się z pomocą VuGen, aby uzyskać pełną listę atrybutów).
Komentarze w skrypcie VuGen
Komentarze w skrypcie VuGen można wprowadzać podczas nagrywania, a także ręcznie po nagraniu skryptu.
Podczas nagrywania kliknij „Wstaw komentarz” ikona na ruchomym pasku nagrywania.
Wpisz komentarz (powiedz „Zaloguj się” tutaj).
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 pojedynczą linię można skomentować, po prostu wstawiając „//” przed linią, 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');
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 w dalszej części 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.
Punkt spotkania w skrypcie VuGen
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 przeprowadzić taką samą symulację w naszym teście wydajności, możemy użyć „punktu Rendezvous”.
`` Punkt Rendezvous '' to pojedyncza i prosta funkcja w skrypcie VuGen, która instruuje moduł uruchamiania ładowania (podczas testu z wieloma użytkownikami), aby czekał w określonym kroku w skrypcie, aż wszystkie Vusery (wykonujące skrypt) dojdą do tego kroku, więc to kolejne żądanie może być wykonywane jednocześnie.
Składnia funkcji Rendezvous to:
lr_rendezvous(“MeaningfulName”);
Funkcję tę można wstawić podczas nagrywania, a także ręcznie po nagraniu skryptu.
Załóżmy, że chcemy jednocześnie obciążyć etap płatności w naszej aplikacji „Wycieczki internetowe”. Podczas nagrywania na tym etapie (przed przesłaniem szczegółów płatności) kliknij ikonę „Wstaw rozmowę” na ruchomym pasku nagrywania.
Wprowadź nazwę punktu spotkania (dowolną opisową nazwę).
Po nagraniu możemy zobaczyć funkcję rendezvous 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 zostanie wykonany niezależnie przez Vuserów, ale Vusers będzie czekał na tym kroku „Płatności”, aż wszystkie (lub pewien procent Vuserów zdefiniowanych w zasadach Rendezvous) osiągną ten krok, po którym wykonują ten krok jednocześnie.
Więcej informacji na temat zasad (opcji) spotkań zobaczymy w samouczku dotyczącym kontrolera.
Wniosek
Do tej pory omawialiśmy korelację i parametryzację w poprzednich samouczkach i transakcjach, sprawdzaniu tekstu / obrazu, komentarzach i punktach Rendezvous w tym samouczku, omówiliśmy również najważniejsze metody ulepszania skryptów.
W naszym następnym samouczku zobaczymy więcej wyzwań związanych ze skryptami wraz ze sposobami ich rozwiązywania.
=> Odwiedź tutaj, aby zapoznać się z pełną serią samouczków LoadRunner
POPRZEDNIA samouczek | NEXT Tutorial
rekomendowane lektury
- Testowanie obciążenia za pomocą samouczków HP LoadRunner
- Wprowadzenie do Micro Focus LoadRunner - Testowanie obciążenia za pomocą samouczka LoadRunner nr 1
- Korelacja - Testowanie obciążenia za pomocą LoadRunner
- Samouczek LoadRunner dla początkujących (bezpłatny 8-dniowy szczegółowy kurs)
- Analiza wyników testów i raporty - Testowanie obciążenia za pomocą LoadRunner
- Testowanie wydajności usług sieci Web przy użyciu skryptów LoadRunner VuGen
- Różnica między LoadRunner a Performance Center
- Jak skonfigurować pliki skryptów LoadRunner VuGen i ustawienia środowiska wykonawczego