Parametryzacja, funkcje, transakcje w LoadRunner
Nagrany skrypt moลผe symulowaฤ wirtualnego uลผytkownika; jednakลผe samo nagranie moลผe nie wystarczyฤ do odtworzenia โprawdziwego zachowania uลผytkownikaโ.
Kiedy skrypt jest rejestrowany, obejmuje on pojedynczy i prosty przebieg przedmiotowego wniosku. Natomiast prawdziwy uลผytkownik moลผe wykonaฤ wiele iteracji dowolnego procesu przed wylogowaniem. Opรณลบnienie pomiฤdzy klikniฤciami przyciskรณw (czas namysลu) bฤdzie siฤ rรณลผniฤ w zaleลผnoลci od osoby. Istnieje prawdopodobieลstwo, ลผe niektรณrzy prawdziwi uลผytkownicy uzyskujฤ dostฤp do Twojej aplikacji przez DSL, a inni przez poลฤ czenie telefoniczne. Aby zatem uzyskaฤ realne wraลผenie uลผytkownika koลcowego, musimy ulepszyฤ nasze skrypty, aby byลy dokลadnie dopasowane lub przynajmniej bardzo zbliลผone zachowaniem do rzeczywistych uลผytkownikรณw.
Powyลผsze jest najwaลผniejszym czynnikiem, ktรณry naleลผy wziฤ ฤ pod uwagฤ podczas przeprowadzania โTest wydajnoลciโ, ale w skrypcie VU kryje siฤ coล wiฤcej. W jaki sposรณb zmierzysz dokลadnฤ iloลฤ czasu potrzebnฤ uลผytkownikowi V, gdy SUL przechodzi test wydajnoลci? Skฤ d wiesz, czy VUser przeszedล lub nie w pewnym momencie? Jaka jest przyczyna awarii, czy zawiodล jakiล proces zaplecza lub zasoby serwera byลy ograniczone?
Musimy ulepszyฤ nasz skrypt, aby pomรณgล odpowiedzieฤ na wszystkie powyลผsze pytania.
Korzystanie z transakcji
Transakcje to mechanizmy mierzฤ ce czas odpowiedzi serwera na dowolnฤ operacjฤ. Mรณwiฤ c proลciej, uลผycie โTransakcjiโ pomaga zmierzyฤ czas potrzebny systemowi na konkretne ลผฤ danie. Moลผe to byฤ coล tak maลego jak klikniฤcie przycisku lub wywoลanie AJAX po utracie fokusu z pola tekstowego.
Stosowanie transakcji jest proste. Po prostu napisz jednฤ liniฤ kodu przed wysลaniem ลผฤ dania do serwera i zamknij transakcjฤ po zakoลczeniu ลผฤ dania. LoadRunner wymaga jedynie ciฤ gu znakรณw jako nazwy transakcji.
Aby otworzyฤ transakcjฤ, uลผyj tej linii kodu:
lr_start_transaction(โTransaction Nameโ);
Aby zamknฤ ฤ transakcjฤ, uลผyj tej linii kodu:
lr_end_transaction(โTransaction Nameโ, <status>);
The informuje LoadRunner, czy ta konkretna transakcja zakoลczyลa siฤ sukcesem, czy niepowodzeniem. Moลผliwe parametry to:
- LR_AUTO
- LR_PASS
- LR_FAIL
Przykลad:
lr_end_transaction(โMรณj_loginโ, LR_AUTO);
lr_end_transaction(โ001_Nazwa_panelu otwarciaโ, LR_PASS);
lr_end_transaction(โNazwa transakcji_przepลywu_biznesuโ, LR_FAIL);
Punkty do zapamiฤtania:
- Nie zapominaj, ลผe pracujesz w jฤzyku โCโ, w ktรณrym rozrรณลผniana jest wielkoลฤ liter.
- Znak kropki (.) nie jest dozwolony w nazwie transakcji, chociaลผ moลผna uลผywaฤ spacji i podkreลleล.
- Jeลli dobrze rozgaลฤziลeล swรณj kod i dodaลeล punkty kontrolne, aby zweryfikowaฤ odpowiedลบ z serwera, moลผesz uลผyฤ niestandardowej obsลugi bลฤdรณw, takiej jak LR_PASS lub LR_FAIL. W przeciwnym razie moลผesz uลผyฤ LR_AUTO, a LoadRunner automatycznie obsลuลผy bลฤ d serwera (HTTP 500, 400 itd.)
- Podczas stosowania transakcji upewnij siฤ, ลผe nie ma czas_myลlenia oลwiadczenie bฤdzie umieszczone w ลrodkowej czฤลci, w przeciwnym razie transakcja zawsze bฤdzie obejmowaฤ ten okres.
- Poniewaลผ LoadRunner wymaga staลego ciฤ gu znakรณw jako nazwy transakcji, czฤstym problemem podczas stosowania transakcji jest niedopasowanie ciฤ gu. Jeลli przy otwieraniu i zamykaniu transakcji podasz innฤ nazwฤ, popeลnisz co najmniej 2 bลฤdy. Poniewaลผ otwarta transakcja nigdy nie zostaลa zamkniฤta, LoadRunner zwrรณci bลฤ d. Poza tym transakcja, ktรณrฤ prรณbujesz zamknฤ ฤ, nigdy nie zostaลa otwarta, co spowodowaลo bลฤ d.
- Czy potrafisz uลผyฤ swojej inteligencji i odpowiedzieฤ sobie, ktรณry z powyลผszych bลฤdรณw zostanie zgลoszony jako pierwszy? Aby potwierdziฤ swojฤ odpowiedลบ, dlaczego nie popeลniฤ wลasnego bลฤdu? Jeลli odpowiedziaลeล poprawnie, jesteล naโฆ track. Jeลli odpowiedziaลeล ลบle, musisz siฤ skupiฤ.
- Poniewaลผ LoadRunner automatycznie dba o synchronizacjฤ ลผฤ daล i odpowiedzi, nie musisz martwiฤ siฤ o odpowiedลบ podczas stosowania transakcji.
Zrozumienie czasu myลlenia, punktรณw spotkania i komentarzy
Punkty spotkaล
Rendezvous Points oznaczajฤ โmiejsca spotkaลโ. To tylko jedna linia instrukcji, ktรณra mรณwi LoadRunnerowi, aby wprowadziล wspรณลbieลผnoลฤ. Wstawiasz punkty spotkania do skryptรณw VUser, aby emulowaฤ duลผe obciฤ ลผenie uลผytkownikรณw na serwerze.
Punkty spotkania instruujฤ VUser, aby podczas wykonywania testu poczekaล, aลผ wielu VUser dotrze do okreลlonego punktu, aby mogli jednoczeลnie wykonaฤ zadanie. Na przykลad, aby emulowaฤ szczytowe obciฤ ลผenie serwera banku, moลผesz wstawiฤ punkt spotkania instruujฤ cy 100 uลผytkownikรณw V, aby w tym samym czasie wpลacili gotรณwkฤ na swoje konta. Moลผna to ลatwo osiฤ gnฤ ฤ za pomocฤ spotkania.
Jeลli punkty spotkania nie zostanฤ umieszczone prawidลowo, VUser bฤdzie miaล dostฤp do rรณลผnych czฤลci aplikacji โ nawet w przypadku tego samego skryptu. Dzieje siฤ tak, poniewaลผ kaลผdy uลผytkownik VUser ma inny czas reakcji i dlatego niewielu uลผytkownikรณw pozostaje w tyle.
Skลadnia: lr_rendesvous (โNazwa logicznaโ);
Najlepsze Praktyki:
- Poprzedลบ miejsce spotkania prefiksem โrdv_โ, aby zapewniฤ lepszฤ czytelnoลฤ kodu; np. โrdv_Loginโ
- Usuล wszelkie natychmiastowe stwierdzenia dotyczฤ ce czasu do namysลu
- Stosowanie punktรณw spotkania w widoku skryptu (po nagraniu)
Komentarze
Dodaj komentarze, aby opisaฤ dziaลanie, fragment kodu lub liniฤ kodu. Komentarze pomagajฤ uczyniฤ kod zrozumiaลym dla kaลผdego, kto bฤdzie siฤ do niego odwoลywaล w przyszลoลci. Dostarczajฤ informacji o konkretnej operacji i oddzielajฤ dwie sekcje w celu rozrรณลผnienia.
Moลผesz dodawaฤ komentarze
- Podczas nagrywania (przy uลผyciu narzฤdzia)
- Po nagraniu (bezpoลrednio zapisaniu kodu)
Najlepsza praktyka: Zaznacz wszelkie komentarze na gรณrze kaลผdego pliku skryptu
Wstawianie funkcji poprzez menu
Chociaลผ moลผesz bezpoลrednio pisaฤ proste linie kodu, moลผesz potrzebowaฤ wskazรณwki, aby przypomnieฤ sobie funkcjฤ. Moลผesz rรณwnieลผ uลผyฤ Steps Toolbox (znanego jako Insert Function przed wersjฤ 12), aby znaleลบฤ i wstawiฤ dowolnฤ funkcjฤ bezpoลrednio do swojego skryptu.
Pasek narzฤdzi Kroki znajdziesz w menu Widok > Skrzynka narzฤdziowa Kroki.
Otworzy siฤ boczne okno, spรณjrz na migawkฤ:
Co to jest parametryzacja?
A parametr w VUGen jest kontenerem zawierajฤ cym zarejestrowanฤ wartoลฤ, ktรณra jest zastฤpowana dla rรณลผnych uลผytkownikรณw.
Podczas wykonywania skryptu (w VUGen lub Controllerze) wartoลฤ ze ลบrรณdลa zewnฤtrznego (np. .txt, XML lub baza danych) zastฤpuje poprzedniฤ wartoลฤ parametru.
Parametryzacja jest przydatna na przykลad przy wysyลaniu dynamicznych (lub unikalnych) wartoลci do serwera; proces biznesowy powinien wykonywaฤ 10 iteracji, ale za kaลผdym razem wybieraฤ unikalnฤ nazwฤ uลผytkownika.
Pomaga takลผe w stymulowaniu rzeczywistych zachowaล systemu podmiotowego. Spรณjrz na poniลผszy przykลad:
Przykลady problemรณw:
Proces biznesowy dziaลa tylko dla bieลผฤ cej daty pochodzฤ cej z serwera, dlatego nie moลผna go przekazaฤ jako ลผฤ dania zakodowanego na staลe.
Czasami aplikacja kliencka przekazuje do serwera unikalny identyfikator (np. session_id), aby proces mรณgล byฤ kontynuowany (nawet dla pojedynczego uลผytkownika) โ w takim przypadku pomaga parametryzacja.
Czฤsto aplikacja kliencka przechowuje pamiฤฤ podrฤcznฤ danych wysyลanych do i z serwera. W rezultacie serwer nie otrzymuje rzeczywistego zachowania uลผytkownika (w przypadku, gdy serwer uruchamia inny algorytm w zaleลผnoลci od kryteriรณw wyszukiwania). Chociaลผ skrypt VUser zostanie pomyลlnie wykonany, wygenerowane statystyki wydajnoลci nie bฤdฤ miarodajne. Uลผywanie rรณลผnych danych poprzez parametryzacjฤ pomaga emulowaฤ dziaลania po stronie serwera (procedury itp.) i ฤwiczy system.
Data zakodowana na staลe w VUser podczas nagrywania moลผe nie byฤ juลผ waลผna po jej przekroczeniu. Parametryzacja daty umoลผliwia pomyลlne wykonanie VUser poprzez zastฤ pienie zakodowanej na staลe daty. Takie pola lub ลผฤ dania sฤ wลaลciwymi kandydatami do parametryzacji.
Kliknij w tym miejscu jeลli film nie jest dostฤpny
Ustawienia czasu pracy i ich wpลyw na symulacjฤ VU
Ustawienia czasu wykonywania sฤ tak samo waลผne, jak Twรณj skrypt VUGen. Dziฤki rรณลผnym konfiguracjom moลผna uzyskaฤ rรณลผne projekty testรณw. Dlatego teลผ moลผesz uzyskaฤ niepowtarzalne wyniki, jeลli ustawienia czasu wykonywania nie bฤdฤ spรณjne. Omรณwmy kaลผdy atrybut jeden po drugim.
Uruchom logikฤ
Run Logic okreลla, ile razy zostanฤ wykonane wszystkie akcje, z wyjฤ tkiem vuser_init i vuser_end.
Byฤ moลผe to wyjaลnia, dlaczego LoadRunner sugeruje keeping caลy kod logowania w vuser_init i czฤลฤ wylogowywania w vuser_end, oba na wyลฤ cznoลฤ.
Jeลli utworzyลeล wiele akcji, powiedzmy, zaloguj siฤ, otwรณrz ekran, oblicz czynsz, przeลlij ลrodki, sprawdลบ saldo i wyloguj siฤ, wรณwczas dla kaลผdego uลผytkownika VUser bฤdzie miaล miejsce poniลผszy scenariusz:
Wszyscy uลผytkownicy V bฤdฤ siฤ logowaฤ, uruchamiaฤ ekran otwarty, obliczaฤ czynsz, przesyลaฤ ลrodki, sprawdzaฤ saldo โ a nastฤpnie โ ponownie otwieraฤ ekran, obliczaฤ czynszeโฆ i tak dalej โ powtarzajฤ c 10 razy โ a nastฤpnie wylogowujฤ c siฤ (raz).
Jest to potฤลผne ustawienie, ktรณre pozwala zachowywaฤ siฤ bardziej jak prawdziwy uลผytkownik. Pamiฤtaj, ลผe prawdziwy uลผytkownik nie loguje siฤ i nie wylogowuje za kaลผdym razem โ zazwyczaj powtarza te same kroki.
Ile razy klikasz โSkrzynka odbiorczaโ podczas sprawdzania poczty przed wylogowaniem?
stymulacja
To jest waลผne. Przewaลผnie ludzie nie sฤ w stanie zrozumieฤ rรณลผnicy pomiฤdzy tempem a czasem myลlenia. Jedyna rรณลผnica jest taka, โtempo odnosi siฤ do opรณลบnienia miฤdzy iteracjamiโ, podczas gdy czas myลlenia to opรณลบnienie miฤdzy dowolnymi 2 krokami.
Zalecane ustawienie zaleลผy od projektu testu. Jeลli jednak szukasz agresywnego obciฤ ลผenia, rozwaลผ opcjฤ โZaraz po zakoลczeniu poprzedniej iteracjiโ
Zaloguj
Dziennik (w powszechnym rozumieniu) jest ksiฤgฤ rachunkowฤ ping wszystkich zdarzeล podczas dziaลania LoadRunnera. Moลผesz wลฤ czyฤ rejestrowanie, aby wiedzieฤ, co dzieje siฤ miฤdzy aplikacjฤ a serwerem.
LoadRunner zapewnia potฤลผny mechanizm rejestrowania, ktรณry sam w sobie jest solidny i skalowalny. Pozwala zachowaฤ tylko โDziennik standardowyโ lub szczegรณลowy, konfigurowalny dziennik rozszerzony lub caลkowicie go wyลฤ czyฤ.
Standardowy dziennik ma charakter informacyjny i jest ลatwo zrozumiaลy. Zawiera odpowiedniฤ iloลฤ wiedzy, ktรณra bฤdzie ogรณlnie potrzebna do rozwiฤ zywania problemรณw ze skryptami VUser.
W przypadku dziennika rozszerzonego wszystkie informacje dziennika standardowego stanowiฤ podzbiรณr. Dodatkowo moลผesz zastosowaฤ podstawienie parametrรณw. To mรณwi komponentowi LoadRunner, aby zawieraล peลne informacje o wszystkich parametrach (z parametryzacji), w tym o ลผฤ daniach, a takลผe dane odpowiedzi.
Jeลli uwzglฤdnisz โDane zwrรณcone przez serwerโ, dziennik bฤdzie dลugi. Bฤdzie to obejmowaฤ caลy kod HTML, znaczniki, zasoby i informacje inne niลผ zasoby zawarte bezpoลrednio w dzienniku. Opcja jest dobra tylko wtedy, gdy potrzebujesz powaลผnego rozwiฤ zywania problemรณw. Zwykle powoduje to, ลผe plik dziennika ma bardzo duลผy rozmiar i jest trudny do zrozumienia.
Jak zapewne juลผ zgadลeล, jeลli wybierzesz opcjฤ โAdvanceโ Traceโ, Twรณj plik dziennika bฤdzie ogromny. Musisz sprรณbowaฤ. Zauwaลผysz, ลผe czas potrzebny VUGenowi rรณwnieลผ znacznie siฤ wydลuลผyล, choฤ nie bฤdzie to miaลo wpลywu na czas reakcji transakcji raportowany przez VUGen. Sฤ to jednak bardzo zaawansowane informacje i mogฤ byฤ przydatne, jeลli rozumiesz danฤ aplikacjฤ, komunikacjฤ klient-serwer miฤdzy aplikacjฤ a sprzฤtem, a takลผe szczegรณลy na poziomie protokoลu. Zazwyczaj te informacje sฤ martwe z natury, poniewaลผ wymagajฤ ogromnego wysiลku, aby je zrozumieฤ i rozwiฤ zaฤ.
Porady:
- Bez wzglฤdu na to, ile czasu zajmuje VUGen po wลฤ czeniu dziennika, nie ma to wpลywu na czas odpowiedzi transakcji. HP nazywa to zjawisko โnajnowoczeลniejszฤ technologiฤ โ.
- Wyลฤ cz dziennik, jeลli nie jest wymagany.
- Wyลฤ cz dziennik, gdy skoลczysz ze skryptami. Doลฤ czenie skryptรณw z wลฤ czonym logowaniem spowoduje wolniejsze dziaลanie kontrolera i zgลaszanie dokuczliwych komunikatรณw.
- Wyลฤ czenie dziennika zwiฤkszy pojemnoลฤ maksymalnej liczby uลผytkownikรณw, ktรณrych moลผesz symulowaฤ za pomocฤ LoadRunner.
- Rozwaลผ uลผycie opcji โWyลlij wiadomoลฤ tylko w przypadku wystฤ pienia bลฤduโ โ wyciszy to niepotrzebne wiadomoลci informacyjne i zgลosi tylko wiadomoลci zwiฤ zane z bลฤdami.
Pomyลl razy
Czas myลlenia to po prostu opรณลบnienie miฤdzy dwoma krokami.
Think Time pomaga odtworzyฤ zachowanie uลผytkownika, poniewaลผ ลผaden prawdziwy uลผytkownik nie moลผe korzystaฤ z ลผadnej aplikacji takiej jak maszyna (VUGen). VUGen automatycznie generuje czas do namysลu. Nadal masz peลnฤ kontrolฤ nad usuwaniem, mnoลผeniem lub zmienianiem czasu trwania czasu myลlenia.
Aby na przykลad zrozumieฤ wiฤcej, uลผytkownik moลผe otworzyฤ ekran (jest to odpowiedลบ, po ktรณrej nastฤpuje ลผฤ danie), a nastฤpnie podaฤ nazwฤ uลผytkownika i hasลo przed naciลniฤciem Enter. Kolejna interakcja aplikacji z serwerem nastฤ pi po klikniฤciu przycisku โZaloguj siฤโ. Czas potrzebny uลผytkownikowi na wpisanie nazwy uลผytkownika i hasลa to Czas myลlenia w LoadRunner.
Jeลli chcesz symulowaฤ agresywne obciฤ ลผenie aplikacji, rozwaลผ caลkowite wyลฤ czenie czasu myลlenia.
Aby jednak zasymulowaฤ rzeczywiste zachowanie, moลผesz ustawiฤ โCzas losowego myลlenia uลผytkownikaโ i ustawiฤ wartoลci procentowe wedลug potrzeb.
Rozwaลผ uลผycie opcji Ogranicz czas namysลu do uzasadnionego okresu. Zwykle 30 sekund jest wystarczajฤ co dobre.
Symulacja prฤdkoลci
Symulacja prฤdkoลci odnosi siฤ po prostu do przepustowoลci kaลผdego komputera klienckiego.
Poniewaลผ symulujemy tysiฤ ce uลผytkownikรณw VUser za pomocฤ LoadRunner, zdumiewajฤ ce jest, jak proste staลo siฤ LoadRunner w kontrolowaniu symulacji przepustowoลci/prฤdkoลci sieci.
Jeลli jesteล klientem uzyskujฤ cym dostฤp do aplikacji z szybkoลciฤ 128 Kb/s, moลผesz stฤ d niฤ sterowaฤ. Bฤdziesz mรณgล symulowaฤ โprawdziwe zachowanieโ, co powinno pomรณc w uzyskaniu odpowiednich statystyk wydajnoลci.
Najlepszฤ rekomendacjฤ jest ustawienie Uลผyj maksymalnej przepustowoลci. Pomoลผe to pominฤ ฤ wszelkie wฤ skie gardลa w wydajnoลci zwiฤ zane z sieciฤ i skupiฤ siฤ w pierwszej kolejnoลci na wszelkich potencjalnych problemach w aplikacji. Zawsze moลผesz uruchomiฤ test wiele razy, aby zobaczyฤ rรณลผne zachowania w rรณลผnych okolicznoลciach.
Emulacja przeglฤ darki
Doลwiadczenie uลผytkownika nie zaleลผy od przeglฤ darki, z ktรณrej korzysta uลผytkownik koลcowy. Oczywiลcie wykracza to poza zakres miar wydajnoลci. Moลผesz jednak wybraฤ przeglฤ darkฤ, ktรณrฤ chcesz emulowaฤ.
Czy potrafisz sobie odpowiedzieฤ, kiedy dokลadnie bฤdzie dla Ciebie istotne, aby w tej konfiguracji wybraฤ odpowiedniฤ przeglฤ darkฤ?
Skorzystasz z tej konfiguracji, jeลli przedmiotem aplikacji jest aplikacja internetowa, ktรณra zwraca rรณลผne odpowiedzi dla rรณลผnych przeglฤ darek. Na przykลad moลผesz zobaczyฤ rรณลผne obrazy i zawartoลฤ dla IE i Firefox itd.
Innym waลผnym ustawieniem jest Simulate browser cache. Jeลli chcesz oceniฤ czas reakcji, gdy cache jest wลฤ czony, zaznacz to pole. Jeลli szukasz najgorszej sytuacji, to oczywiลcie nie jest to brane pod uwagฤ.
Pobieranie zasobรณw innych niลผ HTML umoลผliwi LoadRunnerowi pobranie dowolnego CSS, JS i innych multimediรณw. Naleลผy to sprawdziฤ. Jeลli jednak chcesz wyeliminowaฤ to z projektu testu wydajnoลci, moลผesz odznaczyฤ to pole.
lufka
Najlepiej caลkowicie wyeliminowaฤ serwer proxy ze swojego ลrodowisko testowe โ spowoduje to, ลผe wyniki testu bฤdฤ niewiarygodne. Moลผesz jednak spotkaฤ siฤ z sytuacjami, w ktรณrych jest to nieuniknione. W takiej sytuacji LoadRunner uลatwia ustawienia proxy.
Bฤdziesz pracowaฤ (lub powinieneล pracowaฤ) z ustawieniem Brak serwera proxy. Moลผna go uzyskaฤ w domyลlnej przeglฤ darce. Nie zapomnij jednak sprawdziฤ, ktรณra przeglฤ darka jest ustawiona jako domyลlna i jaka jest konfiguracja proxy dla domyลlnej przeglฤ darki.
Jeลli korzystasz z serwera proxy i wymaga on uwierzytelnienia (lub skryptu), moลผesz kliknฤ ฤ przycisk Uwierzytelnij, co spowoduje wyลwietlenie nowego okna. Patrz poniลผszy zrzut ekranu.
Uลผyj tego ekranu, aby podaฤ nazwฤ uลผytkownika i hasลo w celu uwierzytelnienia na serwerze proxy. Kliknij OK, aby zamknฤ ฤ ekran.
Gratulacje. Konfiguracja skryptu VUGen zostaลa zakoลczona. Nie zapomnij skonfigurowaฤ go dla wszystkich skryptรณw VUser.











