Korelacja w LoadRunner z przykładem Web_Reg_Save_Param
Co to jest korelacja?
Korelacja, jak sama nazwa wskazuje, jest mechanizmem definiowania relacji pomiędzy dwiema zmiennymi lub bytami. Słownik definiuje ją jako „relację statystyczną pomiędzy dwiema lub większą liczbą zmiennych, taką, że systematyczne zmiany w drugiej towarzyszą systematycznym zmianom wartości jednej zmiennej”.
Dlaczego potrzebujemy korelacji?
Zrozumiemy korelację w następującym scenariuszu.
Rozważmy, że nagrywasz skrypt za pomocą LoadRunner.
Komunikacja klient-serwer
- Podczas nagrywania klient wysyła do serwera żądanie rozpoczęcia sesji
- Serwer odbiera żądanie i przydziela nowy identyfikator sesji ABC
- Klient przechowuje w skrypcie identyfikator sesji ABC.
- Klient rozpoczyna sesję z identyfikatorem ABC i wysyła żądanie do serwera, aby umożliwić mu nagrywanie
- Serwer rozpoznaje identyfikator ABC i umożliwia klientowi nagranie skryptu
- Przyjrzyjmy się teraz komunikacji klient-serwer podczas odtwarzania
- Podczas odtwarzania klient wysyła do serwera żądanie rozpoczęcia sesji
- Serwer odbiera żądanie i przydziela nowy identyfikator sesji XYZ
- Klient rozpoczyna sesję z wcześniej zarejestrowanym identyfikatorem sesji ABC i wysyła żądanie do serwera, aby umożliwić mu nagranie
- Serwer nie jest w stanie zidentyfikować identyfikatora ABC, ponieważ oczekiwał przydzielonego przez siebie identyfikatora XYZ i sesja kończy się niepowodzeniem.
Potrzebujemy rozwiązania, które przechwyci wartość dynamiczną wysłaną w czasie wykonywania i zwróci tę wartość z powrotem do serwera. Oto jak będzie wyglądać komunikacja klient-serwer z tym rozwiązaniem
- Podczas odtwarzania klient wysyła do serwera żądanie rozpoczęcia sesji
- Serwer odbiera żądanie i przydziela nowy identyfikator sesji ZZZ
- Klient analizuje nowy identyfikator sesji ZZZ z żądania.
- Klient wysyła żądanie rozpoczęcia sesji o identyfikatorze ZZZ
- Serwer rozpoznaje identyfikator ZZZ i umożliwia klientowi odtworzenie skryptu
To nic innego korelacja.
Kliknij tutaj jeśli film nie jest dostępny
W przypadku VUGen korelacja jest wiążącym związkiem pomiędzy odpowiedzią a dowolnym poprzedzającym żądaniem.
Istnieją różne sytuacje, gdy żądanie opiera się na wcześniej otrzymanej odpowiedzi z serwera, takiej jak identyfikator sesji, data/godzina serwera pobrana z serwera. Wartości te są inne przy każdym uruchomieniu aplikacji lub zapisaniu skryptu. Oczywiście, jeśli wykonanie skryptu zależy od wartości zwróconej przez serwer, oznacza to, że należy znaleźć mechanizm, dzięki któremu można „złapać” odpowiedź serwera i dołączyć do żądań, których serwer oczekuje. W programie LoadRunner nazywa się to zwykle korelacją.
Krótko mówiąc, rozwiązaniem przy użyciu korelacji jest:
- Przechwyć wartość wyjściową z kroku
- Użyj powyższej przechwyconej wartości, aby służyć jako dane wejściowe we wszystkich kolejnych krokach
Korelacja jest podzielona na 2 kategorie w VUGen/LoadRunner:
- Automatyczna korelacja
- Korelacja ręczna
Automatyczna korelacja
LoadRunner zapewnia mechanizm umożliwiający łatwe i automatyczne wykonywanie korelacji.
VUGen będzie wymagał uruchomienia nagranego skryptu co najmniej dwa razy, aby mógł wewnętrznie porównać różne wartości w odpowiedzi serwera.
Korelację automatyczną można podzielić na 3 kategorie:
- Automatyczne wykrywanie korelacji
- Korelacja oparta na regułach
- Korelowanie wszystkich stwierdzeń
Nazwa reguły | Kiedy użyć |
---|---|
Automatyczne wykrywanie korelacji | Wykrywaj i koreluj dane dynamiczne dla serwerów aplikacji obsługiwanych przez HP LoadRunner |
Oparte na regułach | Używane podczas pracy z nieobsługiwanym serwerem aplikacji, którego kontekst jest znany. |
Powiąż wszystko | Pomaga korelować wszystkie dane dynamiczne w sposób ślepy. |
Chociaż automatyczna korelacja wydaje się prostsza, może być podatna na błędy i działa w nie więcej niż 5% przypadków. Zawsze zaleca się stosowanie korelacji ręcznej.
Aby skonfigurować automatyczną korelację w czasie nagrywania, po nagraniu skryptu wykonaj poniższą konfigurację w Ustawieniach czasu nagrywania.
Kliknij Nagraj => Opcje nagrywania (lub kliknij Ctrl +F7),
Otworzy się poniższe okno:
Kliknij na Korelacja =>Konfiguracja – otworzy się poniższe okno.
Tutaj musisz oznaczyć jako sprawdzone względem wszystkich aplikacji (ASPNET) itp., które są używane w aplikacji tematycznej. Po prawej stronie możesz zobaczyć reguły, które wykryją potencjalnych kandydatów do korelacji, np. _VIEWSTATE. Możesz także dodać więcej aplikacji lub reguł niestandardowych, klikając przycisk Nowa reguła.
Możesz także kliknąć ZASADY, zobaczysz jak poniżej:
Aby automatyczna korelacja działała, musisz upewnić się, że skanowanie reguł jest zaznaczone jako zaznaczone. Jeśli klikniesz opcję automatycznego korelowania znalezionych wartości, VUGen nie wyświetli monitu o wybór po znalezieniu kandydata na korelację, zamiast tego po prostu je skoreluje.
Później zrozumiemy API używane do korelacji. Jednak zaleca się używanie porównania HTML zamiast porównania tekstu.
Po wybraniu reguł kliknij przycisk OK, aby zamknąć okna.
Kliknij na z menu, a VUGen zregeneruje skrypt (bez konieczności nagrywania) z nowymi konfiguracjami. VUGen automatycznie doda wymagany fragment kodu do obsługi korelacji. Przyjrzymy się próbce bardziej szczegółowo w Korelacji ręcznej.
Pamiętaj, że jeśli wykonasz korelację ręcznie lub użyjesz korelacji automatycznej, fragment kodu będzie zawierał dokładnie tę samą składnię i funkcję.
Kroki, aby automatycznie skorelować skrypt:
- Nagraj scenariusz
- Odtwórz skrypt
- Zidentyfikuj wartości, które mają być skorelowane
- Wybierz wartości i kliknij przycisk automatycznej korelacji
- Sprawdź skrypt, uruchamiając go ponownie. Pomyślny przebieg oznacza pomyślną korelację.
Wskazówka:
- Korelacja pomaga uruchomić skrypt z różnymi wartościami
- Korelacja zmniejsza również rozmiar skryptu
Korelacja ręczna
Korelacja ręczna polega na pisaniu kodu bezpośrednio w skrypcie w celu uwzględnienia stale zmieniających się wartości. Możemy podzielić to na poniższe kroki:
- Określ wartość do przechwycenia
- Znajdź prawą i lewą granicę tekstu wartości do przechwycenia (WEB)
- Znajdź, które wystąpienie granic tekstu powinno zostać użyte
- Dodaj funkcję web_reg_save_param do skryptu, nad fragmentem kodu żądającym strony z wartością do przechwycenia
- Dodaj nazwę parametru, lewą i prawą granicę oraz wystąpienie do funkcji
- Sparametryzuj wartość dynamiczną w skrypcie za każdym razem, gdy wystąpi
- Sprawdź poprawność wykonania
web_reg_save_param (" OracleAppJSESSIONID3", "LB/IC=JSESSIONID=", "RB/IC=;", "Ord=l", "Search=headers", "RelFrameId=l", LAST); web_reg_save_param("Siebel_Analytic_ViewState2", "LB/IC=ViewState\" value=\"", "RB/IC=\"", "Ord=1", "Search=Body", "RelFrameId=l", LAST);
Ręczną korelację można wykonać za pomocą porównania VUser. Kroki metody korelacji VUser Comparison można podzielić jak poniżej:
- Zidentyfikuj wartości dynamiczne, które należy skorelować
- Znajdź odpowiedź serwerów zawierającą wartość dynamiczną
- Przechwyć wartość dynamiczną w parametrze
- Zastąp każde wystąpienie wartości dynamicznej parametrem
- Sprawdź zmiany
Zrozumienie funkcji Web_reg_save_param
VUGen zapewnia wiele funkcji lub interfejsów API do korelowania kandydatów, w tym:
- web_reg_save_param
- web_reg_save_param_ex
- web_reg_save_param_regexp
- web_reg_save_param_xpath
Podczas gdy tutaj znajduje się krótkie wprowadzenie, aby uzyskać szczegółowe zrozumienie funkcji i ich parametrów, otwórz VUGen, napisz funkcję (lub użyj Steps Toolbox), przesuń kursor na funkcję i kliknij F1 – zapoznaj się z pomocą VUGen i wyrób sobie nawyk. Będziesz musiał się z tym dużo zmagać, pracując w branży.
Oto szczegóły funkcji:
web_reg_save_param(Nazwa parametru, lewa granica, prawa granica)
Lista atrybutów
Konwertować: Możliwe wartości to:
HTML_TO_URL: konwertuj dane zakodowane w formacie HTML do formatu danych zakodowanego w adresie URL
HTML_TO_TEXT: konwertuj dane zakodowane w formacie HTML do formatu zwykłego tekstu; ten atrybut jest opcjonalny.
Ignoruj przekierowania: Jeśli określono opcję „Ignoruj przekierowania=Tak”, a odpowiedzią serwera jest informacja o przekierowaniu (kod stanu HTTP 300-303, 307), odpowiedź nie będzie przeszukiwana. Zamiast tego, po otrzymaniu odpowiedzi o przekierowaniu, żądanie GET jest wysyłane do przekierowanej lokalizacji i przeprowadzane jest wyszukiwanie odpowiedzi z tej lokalizacji.
Ten atrybut jest opcjonalny. Wartość domyślna to „Ignoruj przekierowania=Nie”.
FUNT: Lewa granica parametru lub danych dynamicznych. Jeśli nie określisz wartości LB, jako granicę zostaną użyte wszystkie znaki z początku danych. W parametrach brzegowych rozróżniana jest wielkość liter. Aby jeszcze bardziej dostosować wyszukiwany tekst, użyj co najmniej jednej flagi tekstowej. Ten atrybut jest wymagany. Zobacz sekcję Argumenty graniczne.
NIE ZNALEZIONO: Opcja obsługi, gdy nie zostanie znaleziona granica i generowany jest pusty ciąg znaków.
Wartość domyślna „Not found=error” powoduje zgłoszenie błędu w przypadku nie znalezienia granicy.
„Nie znaleziono = ostrzeżenie” („Nie znaleziono = puste” we wcześniejszych wersjach) nie powoduje błędu. Jeśli granica nie zostanie znaleziona, ustawia liczbę parametrów na 0 i kontynuuje wykonywanie skryptu. Opcja „ostrzeżenie” jest idealna, jeśli chcesz sprawdzić, czy ciąg został znaleziony, ale nie chcesz, aby skrypt się nie powiódł.
Note: Jeśli dla skryptu włączona jest opcja Kontynuuj po błędzie, to nawet jeśli NOTFOUND jest ustawione na „error”, skrypt będzie kontynuowany, gdy nie zostanie znaleziona granica, ale w rozszerzonym pliku dziennika zostanie zapisany komunikat o błędzie.
Ten atrybut jest również opcjonalny.
ORD: Wskazuje pozycję porządkową lub wystąpienie dopasowania. Domyślna instancja to 1. Jeśli określisz „Wszystkie”, wartości parametrów zostaną zapisane w tablicy. Ten atrybut jest opcjonalny.
Uwaga: użycie Instancji zamiast ORD jest obsługiwane w celu zapewnienia kompatybilności wstecznej, ale jest przestarzałe.
RB: Prawa granica parametru lub danych dynamicznych. Jeśli nie określisz wartości RB, wszystkie znaki aż do końca danych zostaną użyte jako granica. W parametrach brzegowych rozróżniana jest wielkość liter. Aby jeszcze bardziej dostosować wyszukiwany tekst, użyj co najmniej jednej flagi tekstowej. Ten atrybut jest wymagany. Zobacz sekcję Argumenty graniczne.
RelFrameID: poziom hierarchii strony HTML względem żądanego adresu URL. Możliwe wartości to ALL lub liczba. Kliknij Atrybut RelFrameID, aby uzyskać szczegółowy opis. Ten atrybut jest opcjonalny.
Uwaga: RelFrameID nie jest obsługiwany w skryptach na poziomie GUI.
Zapisz Len: Długość podciągu znalezionej wartości, od określonego przesunięcia, do zapisania w parametrze. Ten atrybut jest opcjonalny. Wartość domyślna to -1, co oznacza zapisanie na końcu ciągu.
ZapiszPrzesunięcie: Przesunięcie podciągu znalezionej wartości do zapisania w parametrze. Wartość przesunięcia musi być nieujemna. Wartość domyślna to 0. Ten atrybut jest opcjonalny.
Szukanie: Zakres wyszukiwania – gdzie szukać rozdzielonych danych. Możliwe wartości to Headers (przeszukaj tylko nagłówki), Treść (przeszukaj tylko treść, a nie nagłówki), Brak zasobu (przeszukaj tylko treść HTML, z wyłączeniem wszystkich nagłówków i zasobów) lub WSZYSTKO (treść wyszukiwania, nagłówki i zasoby). Wartość domyślna to WSZYSTKIE. Ten atrybut jest opcjonalny, ale ogólnie preferowany.