Jak używać JMeter do testowania obciążenia aplikacji internetowych ASP.net implementujących stan wyświetlania

Jestem programistą .net bez wcześniejszego doświadczenia w testowaniu JMeter / Stress. Próbuję załadować test strony ASP.net, którą stworzyłem za pomocą JMeter. Powodem użycia JMeter jest to, że jest to narzędzie open source o dużej sławie i wiarygodności.
Odniosłem się doten link aby zadbać o stan witryny, który jest typową cechą ASP.net. Jednak moje wymagania nie są tak proste, jak tam wspomniano. Próbuję załadować test mojej witryny, wysyłając identyfikator użytkownika i hasło do strony logowania, a następnie przetestować inne strony, które mogą być przeglądane tylko wtedy, gdy logowanie się powiedzie.

Kroki, które podejmuję, aby to osiągnąć, są wymienione poniżej.

Utwórz serwer proxy HTTP, wybierając opcję WorkBench> Dodaj> Nie testowane elementy.Zmiana ustawień sieciowych w Firefoksie na port zdefiniowany w Http Proxy Server.TworzącThread Group wybierając Plan testowy> Dodaj> Wątki (Użytkownicy)> Grupa wątków.TworzenieHTTP Request Defaults wybierając opcję Grupa wątków> Dodaj> Element konfiguracji> Domyślne żądania HTTP.(a) Wprowadzanie adresu IP dla mojego zdalnego serwera wServer Name or IP:
(b) Wprowadzanie ścieżki do mojej strony logowania jako/MyWebApplication/login.aspxStwórzUser Defined Variables wybierając opcję Grupa wątków> Dodaj> Element konfiguracji> Zmienne zdefiniowane przez użytkownika.

Moja strona login.aspx jest bardzo prosta, pobiera identyfikator użytkownika i hasło z dwóch pól tekstowych i dopasowuje je w bazie danych, a jeśli się powiedzie, przekierowuje je na stronę LoginSuccess.aspx.
Mój login.aspx ma tylko trzy kontrolki serwera, dwaasp:TextBox za otrzymanie loginu i hasła oraz jednegoasp:Button za sprawdzenie ich w db.
Ich idtxtLogin, txtPassword, btnLogin odpowiednio.

W zmiennych definiowanych przez użytkownika (utworzonych w kroku 6) dodałem admin i 123admin, które są prawdziwymi loginami w db, sprawdzanymi na stronie login.aspx, a po powodzeniu przekierowują na stronę LoginSuccess.aspx.

Zmienne zdefiniowane przez użytkownika:

Name:          Value    Description
login          admin    
password       123admin 

Dodaję dwa narzędzia do wyrażeń regularnych, wybierając opcję Grupa wątków> Dodaj> Procesory pocztowe> Ekstraktor wyrażeń regularnych.

Zmieniłem nazwę pierwszego ekstraktora wyrażeń regularnych naView State Extractor i dodając do nich następujące dane:

Reference Name: viewstate
Regular Expression: name="__VIEWSTATE" id="__VIEWSTATE" value="(.+?)"
Template:Odniosłem się do
Match No.(0 for Random): 1
Default Value: ERROR

Podobnie zmieniłem nazwę drugiego ekstraktora wyrażeń regularnych naEvent Validation Extractor i dodając do nich następujące dane:

Reference Name: eventValidation
Regular Expression: name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="(.+?)"
Template:Odniosłem się do
Match No.(0 for Random): 1
Default Value: ERROR

W kroku 5 dodałem następujące dane

Send Parameters With the Request:
    Name:             - Value
    txtLogin          - $(login)
    txtPassword       - $(password)
    __VIEWSTATE       - $(viewState)
    __EVENTVALIDATION - $(eventValidation)

Teraz dodałem HTTP Cookie Manager, wybierając opcję Thread Group> Add> Config Element> HTTP Cookie Manager.

Teraz dodałem Recording Controller, wybierając opcję Thread Group> Add> Logic Controller> Recording Controller.

Uruchomiłem HTTP Proxy Server, a następnie używając firefox wpisałem pełny adres URL do mojej strony login.aspx, wpisałem admin i 123admin w dwóch polach tekstowych i nacisnąłem przycisk Login i zostałem przekierowany pomyślnie na LoginSuccess.aspx. Zatrzymałem serwer HTTP Proxy i zamknąłem przeglądarkę Firefox.

Teraz zapisałem plan testów (zawierający zapisane kroki, tylko 2 kroki tutaj, 1 dla login.aspx i inny dla LoginSuccess.aspx) i uruchomiłem test i wyświetlono wynik testu w widoku drzewa wyników, który zwraca 500 błędów serwer.

Nie jestem w stanie określić, którego składnika tu brakuje, dzięki czemu nie mogę z powodzeniem używać JMeter. Zmieniłem tylko te wartości, które są tutaj wymienione, a dla wszystkiego, czego tutaj nie napisałem, wartości są domyślneNo of thread:.

questionAnswers(4)

yourAnswerToTheQuestion