Тестване на производителността
Тестване на производителността е процес на софтуерно тестване, използван за тестване на скоростта, времето за реакция, стабилността, надеждността, мащабируемостта и използването на ресурси на софтуерно приложение при конкретно натоварване. Основната цел на тестването на производителността е да се идентифицират и премахнат тесните места в производителността в софтуерното приложение. Това е подмножество на инженерната ефективност и известно още като „Тестване на ефективността“.
Фокусът на Performance Testing е проверка на софтуерна програма
- Скорост - Определя дали приложението реагира бързо
- Мащабируемост - Определя максималното натоварване на потребителя, което софтуерното приложение може да обработи.
- Стабилност - Определя дали приложението е стабилно при различни натоварвания
В този урок ще научите -
- Какво е тестване на производителността?
- Защо да тествате ефективността?
- Видове тестване на ефективността
- Често срещани проблеми с производителността
- Процес на тестване на производителността
- Метрики за тестване на производителността: Наблюдавани параметри
- Примерни случаи на тест за ефективност
- Инструменти за тестване на производителността
- ЧЗВ
Защо да тествате ефективността?
Функциите и функционалността, поддържани от софтуерна система, не са единствената грижа. Ефективността на софтуерното приложение като времето за реакция, надеждността, използването на ресурсите и мащабируемостта имат значение. Целта на тестването на производителността не е да се открият грешки, а да се премахнат тесните места в работата.
Тестването на ефективността се извършва, за да се предостави на заинтересованите страни информация за тяхното приложение по отношение на скоростта, стабилността и мащабируемостта. По-важното е, че тестването на ефективността разкрива какво трябва да се подобри, преди продуктът да излезе на пазара. Без тестване на производителността софтуерът вероятно ще страда от проблеми като: бавна работа, докато няколко потребители го използват едновременно, несъответствия в различните операционни системи и лоша използваемост.
Тестването на производителността ще определи дали техният софтуер отговаря на изискванията за скорост, мащабируемост и стабилност при очаквани работни натоварвания. Приложенията, изпратени на пазара с лоши показатели за производителност поради несъществуващи или лоши тестове на производителността, вероятно ще спечелят лоша репутация и не отговарят на очакваните цели за продажби.
Също така критично важните приложения като програми за космическо изстрелване или животоспасяващо медицинско оборудване трябва да бъдат тествани за ефективност, за да се гарантира, че работят дълго време без отклонения.
Според Dunn & Bradstreet 59% от компаниите от Fortune 500 изпитват около 1,6 часа престой всяка седмица. Като се има предвид, че средната компания от Fortune 500 с минимум 10 000 служители плаща 56 долара на час, частта от разходите за престой за такава организация би била 896 000 щатски долара седмично, което означава повече от 46 милиона долара годишно.
Очаква се само 5-минутен престой на Google.com (19 август-13) да струва на търсещия гигант цели 545 000 долара.
Смята се, че компаниите са загубили продажби на стойност $ 1100 в секунда поради скорошно прекъсване на Amazon Web Service.
Следователно тестването на производителността е важно.
Видове тестване на ефективността
- Тестване на натоварване - проверява способността на приложението да изпълнява при очаквани потребителски натоварвания. Целта е да се идентифицират тесните места в производителността, преди софтуерното приложение да стартира.
- Стрес тестване - включва тестване на приложение при екстремни натоварвания, за да се види как се справя с голям трафик или обработка на данни. Целта е да се определи точката на прекъсване на приложението.
- Изпитване за издръжливост - извършва се, за да се гарантира, че софтуерът може да се справи с очакваното натоварване за дълъг период от време.
- Spike testing - тества реакцията на софтуера на внезапни големи скокове в товара, генериран от потребителите.
- Обемно изпитване - Под обемно тестване голям не. на. Данните се попълват в база данни и се следи цялостното поведение на софтуерната система. Целта е да се провери производителността на софтуерното приложение при различни обеми на базата данни.
- Тестване на скалируемост - Целта на тестването на мащабируемост е да се определи ефективността на софтуерното приложение при "мащабиране", за да се подкрепи увеличаване на натоварването на потребителя. Помага за планиране на добавяне на капацитет към вашата софтуерна система.
Често срещани проблеми с производителността
Повечето проблеми с производителността се въртят около скоростта, времето за реакция, времето за зареждане и лошата мащабируемост. Скоростта често е един от най-важните атрибути на приложението. Бавно работещото приложение ще загуби потенциални потребители. Тестването на производителността се извършва, за да се гарантира, че приложението работи достатъчно бързо, за да запази вниманието и интереса на потребителя. Разгледайте следния списък с често срещани проблеми с производителността и забележете как скоростта е често срещан фактор при много от тях:
- Дълго време за зареждане - Времето за зареждане обикновено е първоначалното време, необходимо на приложението да стартира. Това обикновено трябва да бъде сведено до минимум. Въпреки че някои приложения са невъзможни за зареждане за по-малко от минута, времето за зареждане трябва да бъде ограничено до няколко секунди, ако е възможно.
- Лошо време за реакция - Времето за реакция е времето, от което потребителят въвежда данни в приложението, докато приложението изведе отговор на този вход. Като цяло това трябва да е много бързо. Отново, ако потребителят трябва да чака твърде дълго, той губи интерес.
- Лоша мащабируемост - Софтуерният продукт страда от лоша мащабируемост, когато не може да се справи с очаквания брой потребители или когато не побира достатъчно широк кръг потребители. Трябва да се направи тестване на натоварването, за да сте сигурни, че приложението може да се справи с очаквания брой потребители.
- Тесни места - Тесните места са препятствия в системата, които влошават цялостната производителност на системата. Тесните места са, когато грешки в кодирането или хардуерни проблеми причиняват намаляване на производителността при определени натоварвания. Тесните места често са причинени от една дефектна част от кода. Ключът към отстраняването на проблем със затруднения е да се намери частта от кода, която причинява забавянето, и да се опитате да го поправите там. Тесните места обикновено се поправят или чрез поправяне на лошо работещи процеси, или чрез добавяне на допълнителен хардуер. Някои често срещани тесни места за изпълнение са
- Използване на процесора
- Използване на паметта
- Използване на мрежата
- Ограничения на операционната система
- Използване на диска
Процес на тестване на производителността
Методологията, приета за тестване на ефективността, може да варира в широки граници, но целта на тестовете за ефективност остава същата. Това може да помогне да се докаже, че вашата софтуерна система отговаря на определени предварително определени критерии за ефективност. Или може да помогне за сравняване на производителността на две софтуерни системи. Той може също да помогне за идентифициране на части от вашата софтуерна система, които влошават нейната производителност.
По-долу е даден общ процес за това как да се извърши тестване на производителността
- Идентифицирайте вашата среда за тестване - Знайте вашата физическа среда за тестване, производствена среда и какви инструменти за тестване са на разположение. Разберете подробности за хардуера, софтуера и мрежовите конфигурации, използвани по време на тестването, преди да започнете процеса на тестване. Това ще помогне на тестерите да създадат по-ефективни тестове. Това също ще помогне да се идентифицират възможните предизвикателства, с които тестерите могат да се сблъскат по време на процедурите за тестване на производителността.
- Идентифицирайте критериите за приемане на ефективността - Това включва цели и ограничения за пропускателната способност, времето за реакция и разпределението на ресурсите. Също така е необходимо да се идентифицират критериите за успех на проекта извън тези цели и ограничения. Тестерите трябва да бъдат оправомощени да определят критерии за изпълнение и цели, тъй като често спецификациите на проекта няма да включват достатъчно голямо разнообразие от критерии за ефективност. Понякога може изобщо да няма. Когато е възможно намирането на подобно приложение за сравнение е добър начин за поставяне на цели за изпълнение.
- Тестове за планиране и проектиране на ефективността - Определете как е вероятно използването да варира сред крайните потребители и идентифицирайте ключови сценарии за тестване за всички възможни случаи на употреба. Необходимо е да се симулират различни крайни потребители, да се планират данни от теста за ефективност и да се очертаят какви показатели ще бъдат събрани.
- Конфигуриране на тестовата среда - Подгответе тестовата среда преди изпълнение. Освен това подредете инструменти и други ресурси.
- Внедрете тестовия дизайн - Създайте тестове за ефективност според вашия тестов дизайн.
- Изпълнете тестовете - Изпълнете и наблюдавайте тестовете.
- Анализирайте, настройвайте и тествайте отново - Консолидирайте, анализирайте и споделяйте резултатите от теста. След това фино настройте и тествайте отново, за да видите дали има подобрение или спад в производителността. Тъй като подобренията обикновено стават по-малки с всяко повторно тестване, спрете, когато тесните места са причинени от процесора. Тогава може да имате предвид възможността за увеличаване на мощността на процесора.
Метрики за тестване на производителността: Наблюдавани параметри
Основните параметри, наблюдавани по време на тестване на производителността, включват:
- Използване на процесора - период от време, който процесорът прекарва в изпълнение на недействащи нишки.
- Използване на паметта - количество физическа памет, достъпна за процеси на компютър.
- Време на диска - времето, в което дискът е зает с изпълнение на заявка за четене или запис.
- Честотна лента - показва битовете в секунда, използвани от мрежовия интерфейс.
- Частни байтове - брой байтове, които процесът е разпределил и които не могат да се споделят между други процеси. Те се използват за измерване на изтичане на памет и използване.
- Ангажирана памет - количество използвана виртуална памет.
- Страници в паметта / секунда - брой страници, записани на диска или прочетени от него, за да се отстранят грешките на твърдата страница. Твърдите грешки на страницата са, когато код, който не е от текущия работен набор, се извиква от другаде и се извлича от диск.
- Страници в секунда / секунда - общата скорост, при която страниците с грешки се обработват от процесора. Това отново се случва, когато процесът изисква код извън работния си набор.
- Прекъсванията на процесора в секунда - е средното. брой хардуерни прекъсвания, които процесорът получава и обработва всяка секунда.
- Дължина на опашката на диска - е средната. не. на заявките за четене и запис на опашка за избрания диск по време на пробен интервал.
- Дължина на мрежовата изходна опашка - дължина на опашката на изходния пакет в пакети. Всичко повече от две означава, че трябва да се спре закъснението и пречките.
- Общо байтове на мрежата в секунда - скорост, която байтовете се изпращат и получават на интерфейса, включително символи за рамкиране.
- Време за отговор - време от момента, в който потребителят въведе заявка до получаването на първия символ на отговора.
- Пропускателна способност - скорост, в която компютър или мрежа получава заявки в секунда.
- Количество обединяване на връзки - броят на потребителските заявки, които се изпълняват от обединени връзки. Колкото повече заявки са изпълнени от връзки в пула, толкова по-добра ще бъде производителността.
- Максимално активни сесии - максималният брой сесии, които могат да бъдат активни наведнъж.
- Съотношения на попадения - Това е свързано с броя на SQL изрази, които се обработват от кеширани данни, вместо от скъпи I / O операции. Това е добро място за решаване на проблеми със затруднения.
- Посещения в секунда - не. посещения на уеб сървър по време на всяка секунда от теста за натоварване.
- Сегмент за връщане - количеството данни, които могат да се върнат във всеки момент от времето.
- Заключване на бази данни - заключването на таблици и бази данни трябва да се следи и внимателно да се настройва.
- Най- високи изчаквания - наблюдават се, за да се определи колко времена на изчакване могат да се намалят, когато се работи с това колко бързо се извличат данните от паметта
- Брой нишки - Състоянието на приложението може да бъде измерено с не. от нишки, които се изпълняват и в момента са активни.
- Събиране на боклук - Това е свързано с връщането на неизползваната памет обратно в системата. Събирането на боклука трябва да се следи за ефективност.
Примерни случаи на тест за ефективност
- Уверете се, че времето за отговор не е повече от 4 секунди, когато 1000 потребители едновременно посещават уебсайта.
- Проверете дали времето за реакция на приложението под товар е в приемлив диапазон, когато мрежовата свързаност е бавна
- Проверете максималния брой потребители, с които приложението може да се справи, преди да се срине.
- Проверете времето за изпълнение на базата данни, когато 500 записа се четат / записват едновременно.
- Проверете използването на процесора и паметта на приложението и сървъра на базата данни при условия на пиково натоварване
- Проверете времето за реакция на приложението при условия на ниско, нормално, умерено и голямо натоварване.
По време на действителното изпълнение на теста за изпълнение, неясни термини като приемлив обхват, голямо натоварване и т.н. се заменят с конкретни числа. Инженерите за ефективност задават тези цифри според бизнес изискванията и техническия пейзаж на приложението.
Инструменти за тестване на производителността
На пазара има голямо разнообразие от инструменти за тестване на производителността. Инструментът, който ще изберете за тестване, ще зависи от много фактори като видове поддържан протокол, разходи за лиценз, хардуерни изисквания, поддръжка на платформа и т.н. По-долу е даден списък с популярно използваните инструменти за тестване.
- LoadNinja - прави революция в начина, по който зареждаме теста. Този инструмент за тестване на натоварване в облак дава възможност на екипите да записват и незабавно да възпроизвеждат цялостни тестове за натоварване, без сложна динамична корелация и да изпълняват тези тестове за натоварване в реални браузъри в мащаб. Екипите са в състояние да увеличат обхвата на теста. & намалете времето за тестване на товара с над 60%.
- NeoLoad - е платформата за тестване на производителността, предназначена за DevOps, която безпроблемно се интегрира в съществуващата ви тръба за непрекъсната доставка. С NeoLoad екипите тестват 10 пъти по-бързо, отколкото с традиционните инструменти, за да отговорят на новото ниво на изисквания през целия жизнен цикъл на разработване на софтуер Agile - от компоненти до пълни системни тестове за натоварване.
- HP LoadRunner - е най-популярните инструменти за тестване на производителността на пазара днес. Този инструмент е способен да симулира стотици хиляди потребители, поставяйки приложения под реални натоварвания, за да определи тяхното поведение при очаквани натоварвания. Loadrunner разполага с виртуален потребителски генератор, който симулира действията на живи човешки потребители.
- Jmeter - един от водещите инструменти, използвани за тестване на натоварване на уеб и сървъри за приложения.
ЧЗВ
Кои приложения трябва да тестваме?
Тестването на производителността винаги се извършва само за системи, базирани на клиент-сървър. Това означава, че всяко приложение, което не е базирана на клиент-сървър архитектура, не трябва да изисква тестване на производителността.
Например, Microsoft Calculator не е нито клиент-сървър, нито работи с множество потребители; следователно не е кандидат за тестване на ефективността.
Каква е разликата между Тестване на ефективността и Инженеринг на ефективността
Важно е да се разбере разликата между тестване на ефективността и инженеринг на ефективността. По-долу се споделя разбиране:
Тестване на производителността е дисциплина, занимаваща се с тестване и отчитане на текущата производителност на софтуерно приложение при различни параметри.
Инженерингът на ефективността е процес, чрез който софтуерът се тества и настройва с намерението да реализира необходимата производителност. Този процес има за цел да оптимизира най-важната характеристика на изпълнението на приложението, т.е. потребителското изживяване.
В исторически план тестването и настройката са били ясно отделни и често конкуриращи се сфери. През последните няколко години обаче няколко джоба на тестери и разработчици си сътрудничиха независимо, за да създадат екипи за настройка. Тъй като тези екипи са постигнали значителен успех, концепцията за свързване на тестване на производителността с настройка на производителността се е утвърдила и сега го наричаме инженеринг на ефективността.
Заключение
В софтуерното инженерство е необходимо тестване на производителността преди пускането на пазара на софтуерен продукт. Той осигурява удовлетвореност на клиентите и защитава инвестицията на инвеститора срещу провал на продукта. Разходите за тестване на производителността обикновено са повече от компенсирани с подобрена удовлетвореност на клиентите, лоялност и задържане.