Какво е STRESS тестване в софтуерното тестване?

⚡ Умно обобщение

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

  • 🔘 Определение: Стрес тестовете измерват устойчивостта и обработката на грешки при натоварване, далеч по-голямо от това, което производственият трафик някога е осигурявал.
  • ☑️ Обективен: Тестът локализира точната точка на повреда и проверява възможността за възстановяване, след като натоварването се върне към нормалното.
  • Обхват: Разпределените, приложните, транзакционните, системните и изследователските варианти наблягат на различен слой от системата.
  • 🧪 Процес: Планиране, написване на сценарий, изпълнение, анализ, след това настройване – обикновено в рамките на три или четири пълни цикъла, преди да бъдат постигнати критериите.
  • 🛠️ Инструментална: LoadRunner, Apache JMeter, СтресТестер и NeoЗареждане на генериране на едновременни виртуални потребители и заснемане на данни за отговорите.
  • 📊 Метрика: Пропускателната способност, страниците в секунда, времето за достигане, времето до първия байт и неуспешните връзки количествено определят резултата.

Стрес тестване в софтуерното тестване

Какво е стрес тестване?

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

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

In Софтуерно инженерствоСтрес тестовете често са изброени редом с Тест за издръжливост, но двете се различават: Стрес тестът прилага необичайно високо натоварване в кратък импулс, за да се намери точката на счупване, докато тестът за издръжливост (накисване) задържа умерено натоварване в продължение на часове, за да се разкрие постепенното влошаване.

Екранната снимка по-долу показва голям блок данни, който се копира от уеб страница.

Копиране на много голям блок данни от уеб страница, за да се натовари десктоп приложение

Тестваното приложение е натоварено, когато 5 GB данни бъдат копирани от уебсайта и поставени в Notepad. Notepad вече е под напрежение и връща съобщение за грешка „Не отговаря“, точно както е показано на следващата екранна снимка.

Бележник, показващ съобщение за грешка „Не отговаря“, след като в него са поставени 5 GB данни

Същият принцип се мащабира директно към сървърни системи.

Необходимост от стрес тестване

Разгледайте следните примери в реално време, където използването на стрес тестове става очевидно:

  • По време на фестивала, онлайн магазинping сайтът може да отбележи скок в трафика или когато обяви разпродажба.
  • Когато блог се споменава във водещ вестник, той преживява внезапен скок в трафика.

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

Стрес тестовете са изключително ценни и поради следните причини:

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

В следващия раздел е посочено какво трябва да докаже един успешен стрес тест.

Цели на стрес тестовете

Целта на стрес тестването е да се анализира поведението на системата след повреда. За да бъде стрес тестването успешно, системата трябва да показва подходящо съобщение за грешка, докато е в екстремни условия.

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

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

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

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

Графика, сравняваща профила на постоянно натоварване при тестване на натоварване с профила на нарастващо натоварване при тестване на натоварване

Тестване на товара Стресиране
Тестване на товара тества поведението на системата при нормални условия на натоварване; симулира действителното очаквано натоварване. Стрес тестовете тестват поведението на системата при екстремни условия и се провеждат, докато системата не се повреди.
Тестването под натоварване не нарушава системата. Стрес тестовете умишлено се опитват да разрушат системата, като я претоварват с данни или ѝ лишават от ресурси.

Свързаните профили включват Спайк тестване (внезапен кратък взрив), Тестване на обема (големи данни, а не много потребители) и Тестване на скалируемост (простор за растеж).

Видове стрес тестове

Следват видовете стрес тестове, обяснени един по един.

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

В разпределените клиент-сървър системи, тестването се извършва на всички клиенти от сървъра. Ролята на стрес сървъра е да разпространява набор от стрес тестове до всички стрес клиенти и да... track състоянието на всеки клиент. След като клиент се свърже със сървъра, сървърът добавя името на клиента и започва да изпраща данни за тестване. Фигурата по-долу показва как стрес сървърът достига до някои клиенти, но не до други.

Разпределено стрес тестване, при което стрес сървърът достига до Клиент1 и Клиент2, но губи връзка с Клиент3 и Клиент4

Междувременно клиентските машини изпращат сигнал или „пулс“, потвърждаващ, че все още са свързани със сървъра. Ако сървърът не получава никакъв сигнал от клиентска машина, тази машина трябва да бъде допълнително проверена за отстраняване на грешки. На фигурата сървърът може да се свърже с 2 клиента (Клиент1 и Клиент2), но не може да изпраща или получава сигнал от Клиент 3 и Клиент 4.

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

Стрес тестване на приложенията

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

Транзакционно стрес тестване

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

Системно стрес тестване

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

Проучвателно стрес тестване

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

  • Голям брой потребители са влезли едновременно.
  • Скенер за вируси, стартиращ едновременно на всички машини.
  • База данни, която преминава в офлайн режим, докато се осъществява достъп до нея от уебсайт.
  • Голям обем данни, които се въвеждат едновременно в базата данни.

Независимо кой вариант се прилага, последователността на изпълнение остава същата.

Как се прави стрес тест?

Процесът на стрес тестване може да се извърши в 5 основни стъпки:

  • Стъпка 1) Планиране на стрес теста: Тук събирате системните данни, анализирате системата и определяте целите на стрес теста.
  • Стъпка 2) Създайте скриптове за автоматизация: В тази фаза създавате скриптове за автоматизация на стрес тестовете и генерирате тестовите данни за стрес сценариите.
  • Стъпка 3) Изпълнение на скрипт: На този етап изпълнявате скриптовете за автоматизация на стрес тестовете и съхранявате резултатите от стрес тестовете.
  • Стъпка 4) Анализ на резултатите: На този етап анализирате резултатите от стрес теста и идентифицирате пречките.
  • Стъпка 5) Настройка и оптимизация: На този етап, вие фино настройвате системата, променяте конфигурациите и оптимизирате кода с цел постигане на желания бенчмарк.

Накрая, изпълнявате целия цикъл отново, за да определите дали промените са довели до желаните резултати. Например, не е необичайно да са необходими 3 до 4 цикъла на процеса на стрес тестване, преди да бъдат постигнати целите за производителност, така че скриптовете обикновено се поддържат заедно с регресия нататък.

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

Четирите инструмента по-долу покриват повечето нужди, от корпоративни пакети до безплатна опция с отворен код.

LoadRunner

LoadRunner е широко използван инструмент за тестване на натоварване, който сега се продава от OpenText в Professional, Enterprise и Cloud издания след преминаване от HP към Micro Focus OpenTextРезултатите от тестовете за натоварване, получени от LoadRunner, се третират като бенчмарк.

JMeter

Apache JMeter е инструмент за тестване с отворен код. Той е чист Java приложение за стрес и производителност тестове и е предназначено да обхване типове тестове като натоварване, функционални и стрес тестове. Текущите версии 5.6.x на Apache JMeter изисква Java 8 или по-късно, с Java 17 препоръчителни.

Стрес тестер

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

NeoНатоварване

NeoНатоварване, сега част от Tricentis портфолио, е популярен инструмент за тестване на уеб и Мобилни приложенияМоже да симулира хиляди потребители, за да оцени производителността на приложенията под натоварване и да анализира времената за реакция. Също така поддържа интегрирани в облака тестове за производителност, натоварване и стрес, и се мащабира добре.

Повече опции са изброени в ръководството за инструменти за тестване на ефективността; който и да е избран, резултатът му означава нещо само спрямо показателите по-долу.

Метрики за стрес тестване

Метриките помагат за оценка на производителността на системата и обикновено се изучават в края на стрес теста. Често използваните показатели са групирани в три семейства.

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

  • Страници в секунда: Измерва колко страници са заявени в секунда.
  • Пропускателна: Основна метрика — размер на данните за отговор в секунда.
  • кръгове: Броят пъти, в които са били планирани тестови сценарии, спрямо броя пъти, в които клиентът ги е изпълнил.

Отговор на приложението

  • Време на удара: Средно време за извличане на изображение или страница.
  • Време до първия байт: Времето, необходимо за връщане на първия байт данни или информация.
  • Време на страницата: Време, необходимо за извличане на цялата информация на страницата.

Повреди

  • Неуспешни връзки: Брой неуспешни връзки, отказани от клиента (слаб сигнал).
  • Неуспешни рундове: Брой неуспешни рундове.
  • Неуспешни попадения: Брой неуспешни опити на системата (счупени връзки или невидими изображения).

В заключителния раздел са изброени ситуациите, които най-често оправдават провеждането на стрес тест.

Примери за стрес тестове

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

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

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

Въпроси и Отговори

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

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

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

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

Моделите за машинно обучение анализират телеметрията на производството, за да изградят реалистични профили на пиков трафик, да маркират аномални криви на времето за реакция, които фиксиран праг би пропуснал, и да съпоставят показателите за ресурси, за да посочат пречките. Няколко търговски платформи вече генерират сценарии на натоварване от наблюдавани модели на употреба.

Да. Чернови на Copilot JMeter тестови планове, k6 или Gatling скриптове, генератори на параметризирани данни и стъпки на CI конвейер от команден ред на разбираем език. Третирайте резултата като първа чернова: времената за обмисляне, темпото и твърденията все още се нуждаят от тестер, който да ги валидира.

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

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

Обобщете тази публикация с: