Тестването на натоварването (load testing) е форма на нефункционално тестване, което се извършва, за да се разбере поведението на дадено приложение при натоварване на конкретен потребител. Тестът за натоварване се извършва чрез симулиране на потребителското натоварване в реално време върху тестваното приложение и това определя как реагира приложението, когато множество потребители се свържат със сървъра едновременно и разкрива времето за реакция на приложението, използването на процесора и паметта, използването на мрежата и честотната лента.
Защо тестваме натоварването?
Тестването на натоварването е от жизненоважно значение, например преди онлайн магазинът да започне да работи по голяма сезонна рекламна кампания, в противен случай ще бъдат пропилени време, пари и ресурси, ако системата не може да се справи с допълнителното търсене, поставено върху нея в моменти на екстремно, пиково използване.
Сайт за онлайн пазаруване обявява, че ще направи онлайн мегаразпродажба по време на предстоящия празничен сезон и предлага огромни отстъпки за потребителите, които планират да закупят през това време на сделката. Те харчат много пари за рекламиране на тази новина и очакват огромната им клиентска база да дойде и да купи през този прозорец. Клиентите отбелязват тази дата в календара си и чакат с нетърпение деня. Големият ден настъпва. Но сайтът пада и разочароващо, всички обнадеждени купувачи получават съобщението: „HTTP грешка 503 – услугата е недостъпна“, когато се опитват да влязат в сайта.
Търговецът губи огромна сума пари и бизнес поради тази техническа грешка. Става ясно, че приложението не е достатъчно добро, за да приеме по-големия от обичайния брой потребители, които се опитват да влязат в уебсайта им по време на разпродажбата. Сървърът не издържа на натоварването и се срива.
Тестване на натоварването в повече подробности
Тестът за натоварване определя доколко вашият сървър отговаря на получените заявки. Той ще разкрие как сървърът се държи при различни потребителски натоварвания. Например, как ще реагира вашият сървър, когато натоварването е 100 хиляди потребители? Какво ще кажете за 200, 300 хиляди и така нататък? Тестването на натоварването е основно изследване на поведението на сървъра при различни натоварвания. Поведението на сървъра може да се подобри или да стане по-малко ефективно при различни сценарии като следните:
– Нови промени в кода
– Нови хардуерни промени/надстройки
– Новодобавени функции към приложението и др.
– Промени в околната среда
– Параметри за тестване на натоварване
Различни параметри трябва да се наблюдават, докато се тества натоварването на приложение.Те са:
Време за реакция
Това показва колко бързо сървърът отговаря на получена заявка. Например, ако сте щракнали върху бутон за влизане, влизате ли бързо? Или сте били помолени да изчакате известно време, преди действително да влезете? Колкото по-малко е времето за реакция, толкова по-добра е производителността. Единицата, използвана за измерване на времето за реакция, е секунди.
Пропускателна способност
Това определя колко заявки могат да бъдат обработени наведнъж. Колкото по-голяма е производителността, толкова по-добра е производителността. Мерната единица тук е байтове в секунда.
Използване на процесора/паметта/мрежата/диска
Това ще бъде изразено като процентна стойност, показваща колко добре CPU/Памет/Мрежа/Диск се използват за различни натоварвания. Колкото по-малка е процентната стойност, толкова по-добро е използването.
Натоварване на потребителя
Това е броят на едновременните потребители, които приложението може да издържи. Колкото по-голям е едновременният брой без резки откази, толкова по-ефективно е приложението.
Модели за тестване на натоварване
Могат да се използват различни модели на натоварване за тестване на сценарии за потребителски достъп в реално време. По-долу са основните модели:
Равномерно натоварване
В този дизайн потребителското натоварване ще бъде стабилно разпределено за даденото време на теста. Например, ако тестът е планиран за 60 минути, потребителското натоварване ще остане постоянно през целия тест.
Увеличаване на натоварването (увеличаване на натоварването)
В този дизайн потребителското натоварване ще се увеличава на зададени интервали. Например, ако провеждате тест за 60 минути с интервал на нарастване от 15 минути, потребителското натоварване ще се увеличава на всеки четвърт час. Така че, ако натоварването на потребителите е 100, натоварването може да се увеличава с 25 потребители на всеки 15 минути.
Намаляване на натоварването (стъпково натоварване):
Това е точно обратното на дизайна на нарастване. Натоварването на потребителите ще бъде намалено на определени интервали от време.
Процес на тестване на натоварване
В процеса на тестване на натоварването първата стъпка е да се направи запис на транзакциите. Транзакцията е набор от действия в определен период от време или сценарий. Съвременните инструменти за тестване на натоварване позволяват запис на транзакции чрез използване на опции за запис и възпроизвеждане. След като се подготви скрипт за транзакция, те могат да бъдат персонализирани чрез добавяне на определени подобрения. Някои често срещани подобрения са:
Мислете за времето
Времето за мислене е продължителността, която потребителят в реално време отнема между действията. Това приблизително време може да бъде посочено в скрипта.
Корелация
Понякога ще трябва да свържете някои данни със записания скрипт. Например, ако се опитвате да заредите тестови някои транзакции за потребителска сесия, записаният идентификатор на сесия може да не работи по време на възпроизвеждането, тъй като може вече да не е валиден. Така че ще трябва да заснемете новия идентификатор на сесията от регистрационните файлове, за да накарате възпроизвеждането да работи.
Итерации
Тази стойност се отнася до броя пъти, когато трябва да изпълните транзакция. Ако итерацията е зададена като 10 за 100 потребители, транзакциите ще се изпълняват 10 пъти за всеки от 100-те потребители.
Настройки на времето за изпълнение
Трябва да зададете целевия браузър, тип мрежа (Lan, широколентова и т.н.) и т.н., преди да започнете теста за натоварване.
Параметризиране на данните
Ако искате да заредите тестов сценарий за влизане и да го тествате за 100 потребители със 100 различни идентификационни данни за влизане, това трябва да бъде предоставено като набор от данни, който е част от подобрения скрипт.
Фази на изпълнение на теста
Изпълнението на теста има две фази – преди и след. Те са:
Предварителна фаза на изпълнение
Тестовата среда трябва да прилича много на производствената среда
Машините за генериране на товар ще трябва да са готови
Загрейте сървъра с малко натоварване за кратко време
Проверете и потвърдете IP spoofing/прокси настройките
Настройте настройки за генериране на отчети за събиране и анализиране на резултатите
Фаза след изпълнение
Запазване на резултатите от теста
Експортиране на резултати и графики
Запазване на тестови данни и регистрационни файлове
Анализиране на броячи на производителност
Повече от ясна става причината защо е необходим точно този тип тестване и защо бизнесът, а и нито един QA не трябва да забравя за него.