LV RU EN
Veiktspējas mērīšanas ASP.NET aplikācijām izmantojot Tsung
2017/05/16   Valts Silaputniņš

ASP.NET aplikāciju formas izmanto VIEWSTATE, lai pareizi strādātu postback funkcionalitāte. Veicot veiktspējas mērījumus, kur veicama formu aizpilde ir nepieciešams šo mainīgo vērtības saglabāt un nodot tālāk POST pieprasījumos . Šis tas gadījums, kad ar vienkāršiem veiktspējas rīkiem te maz ko var iesākt. Internetā šī uzdevuma risināšana, izmantojot Tsung, ir vāji apskatīta. Turpinājumā apskatām vienkāršotu gadījumu - forma kurā uzstāda vārdu un uzvārdu un nospiež pogu Meklēt.


Standarta galviņa:
Uzstādam lokālo serveri kā klientu:
Un www.test_digitec.lv kā testu mērķi:
Slodzes uzstādījumi:
  • 5 minūšu garš tests
  • Sekundē tiek ģenerēti 90 jauni lietotāji
  • Ja serveris laicīgi neapstrādā pieprasījumus - tie krāsies rindā.
Uzstādam User-Agent header un CSV failu parts.csv kā avotu vārdiem un uzvārdiem pēc kuriem meklēt.
Definējam sesiju - darbību secību ko veic katrs simulētais lietotājs:
Iteratīvi lasam no uzstādītā CSV faila vārdu un uzvārdu, uzstādam tos kā sesijas mainīgos. Praksē tas nozīmē, ka katrs pieprasījums lasīs no CSV faila pa vienai rindiņai.
Ielādējam formu kas atrodas /Search.aspx un no viņas uzstādam jaunus sesijas mainīgos __VIEWSTATE, __VIEWSTATEGENERATOR un __EVENTVALIDATION.
Lai mainīgie __VIEWSTATE un __EVENTVALIDATION būtu lietojami tos nākas apstrādāt izmantojot Erlang funkcijas. binary_to_list pārvērš bināros datus par sarakstu sastāvošu no veseliem skaitļiem. Tad izmantojot edoc_lib:escape_uri veicam escaping. Rezultātus saglabājam kā jaunus mainīgos __VIEWSTATE_E un __EVENTVALIDATION_E.
Simulējot reālu lietotāju ieturam pauzi 2 līdz 15 sekundes garu.
Veicam POST pieprasījumu nosūtot visus iegūtos mainīgos. Izmantotais formāts ir x-www-form-urlencoded. Formējam saturu atbilstoši specifikācijai. Lai piekļūtu mainīgo saturam tiek izmantota forma %%_MAINIGANOSAUKUMS%% t.i. __VIEWSTATE_E gadījuma rakstam %%___VIEWSTATE_E%%. "Nošpikot" nepieciešamos laukus un formātu var izmantojot piemēram Chrome developer tools.


Nospiest lai parādītu pilnu izejas kodu.