Урок за тестване на производителността

Тестване на товара

Какво е тестване на ефективността?

Тестване на производителността е процес на тестване на софтуер, използван за тестване на скоростта, времето за реакция, стабилността, надеждността, скалируемостта и използването на ресурси на софтуерно приложение при конкретно натоварване. Основната цел на тестването на производителността е да идентифицира и елиминира тесните места в производителността на софтуерното приложение. Това е подмножество от инженеринг на производителността и е известно също като „Тестване на производителност“.

Фокусът на тестването на производителността е проверка на софтуерна програма

  • Скорост – Определя дали приложението реагира бързо
  • скалируемост – Определя максималното потребителско натоварване, което софтуерното приложение може да понесе.
  • Стабилност – Определя дали приложението е стабилно при различни натоварвания

Защо тестване на ефективността?

Характеристиките и функционалността, поддържани от софтуерна система, не са единствената грижа. Производителността на софтуерното приложение, като неговото време за реакция, надеждност, използване на ресурси и мащабируемост, имат значение. Целта на тестването на производителността не е да открива грешки, а да елиминира тесните места в производителността.

Тестването на производителността се прави, за да предостави на заинтересованите страни информация за тяхното приложение по отношение на скорост, стабилност и мащабируемост. По-важното е, че тестването на ефективността разкрива какво трябва да се подобри, преди продуктът да излезе на пазара. Без тестване на производителността софтуерът вероятно ще страда от проблеми като: бавна работа, докато няколко потребители го използват едновременно, несъответствия в различните операционни системи и лоша използваемост.

Тестване на производителността

Тестването на производителността ще определи дали техният софтуер отговаря на изискванията за скорост, мащабируемост и стабилност при очаквани натоварвания. Приложенията, изпратени на пазара с лоши показатели за производителност поради несъществуващо или лошо тестване на производителността, вероятно ще спечелят лоша репутация и ще пропуснат да постигнат очакваните цели за продажби.

Така че, критични за мисията приложения като програми за изстрелване в космоса или животоспасяващо медицинско оборудване трябва да бъдат тествани за ефективност, за да се гарантира, че работят за дълъг период без отклонения.

Според Dunn & Bradstreet, 59% от компаниите от Fortune 500 изпитват приблизително 1.6 часа престой всяка седмица. Като се има предвид, че средната компания от Fortune 500 с минимум 10,000 56 служители плаща 896,000 долара на час, частта от разходите за труд за престой за такава организация ще бъде 46 XNUMX долара седмично, което означава повече от XNUMX милиона долара годишно.

Само a 5 минути престой на Google.com (19-авг.-13 г.) се очаква да струва на гиганта за търсене колкото $ 545,000.

Изчислено е, че компаниите са загубили стойност на продажбите $ 1100 в секунда поради скорошен Amazon Прекъсване на уеб услугата.

Следователно тестването на ефективността е важно. За да ви помогнем с този процес, вижте този списък с инструменти за тестване на ефективността.

Видове тестване на ефективността

Има основно шест типа тестване на производителността в софтуерното тестване, които са обяснени по-долу.
  • Тестване на натоварването – проверява способността на приложението да работи при очаквани потребителски натоварвания. Целта е да се идентифицират тесните места в производителността, преди софтуерното приложение да започне да работи.
  • Стрес тестове - включва тестване на приложение при екстремни натоварвания, за да видите как се справя с висок трафик или обработка на данни. Целта е да се идентифицира точката на прекъсване на приложението.
  • Тест за издръжливост – се прави, за да се гарантира, че софтуерът може да се справи с очакваното натоварване за дълъг период от време.
  • Спайк тестване – тества реакцията на софтуера към внезапни големи пикове в натоварването, генерирано от потребителите.
  • Обемно тестване – При обемно тестване голям бр. на. Данните се попълват в база данни и се наблюдава цялостното поведение на софтуерната система. Целта е да се провери производителността на софтуерното приложение при различни обеми на база данни.
  • Тестване на скалируемост – Целта на тестването за мащабируемост е да се определи ефективността на софтуерното приложение при „увеличаване на мащаба“, за да поддържа увеличаване на потребителското натоварване. Помага за планиране на добавяне на капацитет към вашата софтуерна система.

Често срещани проблеми с производителността

Повечето проблеми с производителността се въртят около скоростта, времето за реакция, времето за зареждане и лошата мащабируемост. Скоростта често е един от най-важните атрибути на приложението. Бавно работещото приложение ще загуби потенциални потребители. Тестването на производителността гарантира, че приложението работи достатъчно бързо, за да задържи вниманието и интереса на потребителя. Разгледайте следния списък с често срещани проблеми с производителността и забележете как скоростта е често срещан фактор в много от тях:

  • Дълго време за зареждане – Времето за зареждане обикновено е първоначалното време, необходимо за стартиране на приложението. Това обикновено трябва да бъде сведено до минимум. Докато някои приложения не могат да се заредят за по-малко от минута, времето за зареждане трябва да бъде под няколко секунди, ако е възможно.
  • Лошо време за реакция – Времето за реакция е времето, необходимо от момента, в който потребителят въведе данни в приложението, докато приложението изведе отговор на това въвеждане. Като цяло това трябва да е много бързо. Отново, ако потребителят трябва да чака твърде дълго, той губи интерес.
  • Лоша скалируемост – Един софтуерен продукт страда от лоша мащабируемост, когато не може да се справи с очаквания брой потребители или когато не побира достатъчно широк кръг от потребители. Тестване на товара трябва да се направи, за да сте сигурни, че приложението може да се справи с очаквания брой потребители.
  • Тесни места – Тесните места са пречки в системата, които влошават цялостната производителност на системата. Тесни места са, когато грешки в кодирането или хардуерни проблеми причиняват намаляване на пропускателната способност при определени натоварвания. Тесните места често се причиняват от един дефектен раздел от кода. Ключът към коригирането на проблем с тесни места е намирането на частта от кода, причиняваща забавянето, и опитът да се поправи там. Тесните места обикновено се коригират или чрез коригиране на лошо работещи процеси, или чрез добавяне на допълнителен хардуер. някои често срещани тесни места в производителността сте
    • Използване на процесора
    • Използване на паметта
    • Използване на мрежата
    • Operating Системни ограничения
    • Използване на диск

Как да направите тестване на производителността

Методологията, възприета за тестване на ефективността, може да варира в широки граници, но целта за тестовете на ефективността остава същата. Може да ви помогне да демонстрирате, че вашата софтуерна система отговаря на определени предварително определени критерии за ефективност. Или може да помогне за сравняване на производителността на две софтуерни системи. Може също така да помогне за идентифициране на части от вашата софтуерна система, които влошават нейната производителност.

По-долу е даден общ процес за извършване на тестване на производителността

Процес на тестване на производителността
Процес на тестване на производителността

Стъпка 1) Идентифицирайте вашата тестова среда

Запознайте се с физическата среда за тестване, производствената среда и наличните инструменти за тестване. Разберете подробности за хардуерните, софтуерните и мрежовите конфигурации, използвани по време на тестването, преди да започнете процеса на тестване. Това ще помогне на тестерите да създават по-ефективни тестове. Това също ще помогне да се идентифицират възможните предизвикателства, които тестерите могат да срещнат по време на процедурите за тестване на ефективността.

Стъпка 2) Определете критериите за приемане на ефективността

Това включва цели и ограничения за пропускателна способност, времена за реакция и разпределение на ресурсите. Необходимо е също така да се идентифицират критерии за успех на проекта извън тези цели и ограничения. Тестерите трябва да бъдат упълномощени да определят критерии за ефективност и цели, тъй като често спецификациите на проекта няма да включват достатъчно голямо разнообразие от показатели за ефективност. Понякога може да няма изобщо. Когато е възможно, намирането на подобно приложение за сравнение е добър начин за поставяне на цели за ефективност.

Стъпка 3) Тестове за изпълнение на план и дизайн

Определете как е вероятно употребата да варира сред крайните потребители и идентифицирайте ключови сценарии, които да тествате за всички възможни случаи на употреба. Необходимо е да се симулират различни крайни потребители, да се планират данни от тестове за ефективност и да се очертаят какви показатели ще бъдат събрани.

Стъпка 4) Конфигуриране на тестовата среда

Подгответе тестовата среда преди изпълнение. Освен това подредете инструменти и други ресурси.

Стъпка 5) Внедрете тестов дизайн

Създайте тестовете за ефективност според вашия тестов дизайн.

Стъпка 6) Изпълнете тестовете

Изпълнете и наблюдавайте тестовете.

Стъпка 7) Анализирайте, настройте и тествайте повторно

Консолидирайте, анализирайте и споделяйте резултатите от тестовете. След това направете фина настройка и тествайте отново, за да видите дали има подобрение или намаляване на производителността. Тъй като подобренията обикновено намаляват с всеки повторен тест, спрете, когато проблемът е причинен от процесора. Тогава може да имате възможност да обмислите увеличаване на мощността на процесора.

Показатели за тестване на ефективността: Наблюдавани параметри

Основните параметри, наблюдавани по време на тестване на производителността, включват:

показатели за тестване на ефективността

  • Използване на процесора – количество време, което процесорът прекарва в изпълнение на неактивни нишки.
  • Използване на паметта – обем физическа памет, достъпна за процесите на компютъра.
  • Дисково време – колко време дискът е зает с изпълнение на заявка за четене или запис.
  • Честотна лента - показва битовете в секунда, използвани от мрежов интерфейс.
  • Частни байтове – брой байтове, които процесът е разпределил и които не могат да бъдат споделени между други процеси. Те се използват за измерване на изтичане на памет и използване.
  • Обвързана памет – количество използвана виртуална памет.
  • Страници с памет/секунда – брой страници, записани или прочетени от диска, за да се разрешат твърди грешки в страницата. Твърдите грешки на страницата са, когато кодът, който не е от текущия работен набор, се извиква от другаде и се извлича от диск.
  • Грешки в страницата/секунда – общата скорост, с която страниците с грешки се обработват от процесора. Това отново се случва, когато даден процес изисква код извън неговия работен набор.
  • Прекъсвания на процесора за секунда – е ср. брой хардуерни прекъсвания, които процесорът получава и обработва всяка секунда.
  • Дължина на опашката на диска – е ср. не заявки за четене и запис, поставени на опашка за избрания диск по време на примерен интервал.
  • Дължина на опашката за мрежов изход – дължина на опашката на изходните пакети в пакети. Всичко повече от две означава забавяне и препятствията трябва да бъдат спрени.
  • Мрежови байтове общо за секунда – определя кои байтове се изпращат и получават на интерфейса, включително рамкиращи знаци.
  • Време за реакция - времето от момента, в който потребителят въведе заявка до получаването на първия знак от отговора.
  • Пропускателна способност – оценете компютър или мрежа получава заявки в секунда.
  • Размер на обединяването на връзките – броя потребителски заявки, които са изпълнени от групирани връзки. Колкото повече заявки бъдат изпълнени от връзки в пула, толкова по-добра ще бъде производителността.
  • Максимален брой активни сесии – максималния брой сесии, които могат да бъдат активни наведнъж.
  • Коефициенти на попадение – Това е свързано с броя на SQL изрази, които се обработват от кеширани данни вместо скъпи I/O операции. Това е добро място да започнете за решаване на проблеми със затруднения.
  • Посещения в секунда – не посещения на уеб сървър по време на всяка секунда от тест за натоварване.
  • Сегмент за връщане назад – количеството данни, което може да се върне назад във всеки един момент.
  • Заключвания на бази данни – заключването на таблици и бази данни трябва да бъде наблюдавано и внимателно настроено.
  • Топ чакания – се наблюдават, за да се определи какво време за изчакване може да се намали, когато се работи с това колко бързо данните се извличат от паметта
  • Броят на нишките – Здравето на приложенията може да се измери чрез бр. от нишки, които се изпълняват и са активни в момента.
  • Събиране на боклук – Това е свързано с връщането на неизползваната памет обратно в системата. Събиране на боклук трябва да се следи за ефективност.

Пример за тестови случаи за тестване на производителността

  • Тестов случай 01: Уверете се, че времето за реакция не е повече от 4 секунди, когато 1000 потребители имат достъп до уебсайта едновременно.
  • Тестов случай 02: Проверете дали времето за реакция на приложението под натоварване е в приемлив диапазон, когато мрежовата връзка е бавна
  • Тестов случай 03: Проверете максималния брой потребители, които приложението може да обработи, преди да се срине.
  • Тестов случай 04: Проверете времето за изпълнение на базата данни, когато 500 записа се четат/записват едновременно.
  • Тестов случай 05: Проверете използването на процесора и паметта на приложението и сървъра на базата данни при условия на пиково натоварване
  • Тестов случай 06: Проверете времето за реакция на приложението при условия на ниско, нормално, умерено и тежко натоварване.

По време на действителното изпълнение на теста за производителност неясни термини като приемлив обхват, голямо натоварване и т.н. се заменят с конкретни числа. Инженерите по производителността определят тези числа според бизнес изискванията и техническата среда на приложението.

Инструменти за тестване на ефективността

На пазара има голямо разнообразие от инструменти за тестване на ефективността. Инструментът, който изберете за тестване, ще зависи от много фактори, като типове на поддържания протокол, цена на лиценза, хардуерни изисквания, поддръжка на платформа и т.н. По-долу е даден списък с популярни инструменти за тестване.

  • HP LoadRunner - е най-популярният инструмент за тестване на ефективността на пазара днес. Този инструмент е в състояние да симулира стотици хиляди потребители, поставяйки приложения под реални натоварвания, за да определи тяхното поведение при очаквани натоварвания. Loadrunner разполага с генератор на виртуални потребители, който симулира действията на живи човешки потребители.
  • JMeter – един от водещите инструменти, използвани за тестване на натоварване на уеб сървъри и сървъри за приложения.

Често задавани

Тестването на производителността винаги се извършва само за системи клиент-сървър. Това означава, че всяко приложение, което не е базирана на клиент-сървър архитектура, не трябва да изисква тестване на производителността.

Например, Microsoft Калкулаторът не е нито клиент-сървър базиран, нито работи с множество потребители; следователно не е кандидат за тестване на производителността.

Тест за представяне

Важно е да се разбере разликата между тестване на производителността и инженеринг на производителността. По-долу е споделено разбиране:

Тестване на производителността е дисциплина, занимаваща се с тестване и докладване текущата производителност на софтуерно приложение при различни параметри.

Инженеринг на производителността е процесът, чрез който софтуерът се тества и настройва с намерението да се постигне необходимата производителност. Този процес има за цел да оптимизира най-важната характеристика на производителността на приложението, т.е. потребителското изживяване.

В исторически план тестването и настройката са били отделни и често конкуриращи се области. През последните няколко години обаче няколко групи тестери и разработчици си сътрудничиха независимо, за да създадат екипи за настройка. Тъй като тези екипи постигнаха значителен успех, концепцията за свързване на тестване на производителността с настройка на производителността се утвърди и сега я наричаме инженеринг на производителността.

Заключение

In Софтуерно инженерство, Тестването на производителността е необходимо преди пускане на пазара на софтуерен продукт. Той гарантира удовлетвореността на клиентите и защитава инвестицията на инвеститора срещу повреда на продукта. Разходите за тестване на производителността обикновено се компенсират с подобрена удовлетвореност, лоялност и задържане на клиентите.