Нефункционалното тестване се отнася до софтуерно тестване, което се извършва с цел тестване на нефункционалните аспекти на софтуерното приложение.
Съществуват много различни видове нефункционално тестване, а някои видове тестване на софтуер могат да се считат едновременно за функционално и нефункционално тестване.
Нефункционалното тестване е необходимо, тъй като оценява основни потребителски критерии като производителност и използваемост и проверява дали софтуерът работи според очакванията извън основната си функционалност.
В тази статия разглеждаме определението и характеристиките на нефункционалното тестване, както и видовете нефункционално тестване, подходите към нефункционалното тестване и инструментите за тестване, които могат да ви помогнат да оптимизирате и подобрите собствените си процеси на нефункционално тестване.
Какво представлява нефункционалното тестване?
Нефункционалното тестване е всеки вид тестване на софтуер, при което се тестват нефункционалните аспекти на софтуерната разработка.
Примерите за нефункционално тестване включват тестване, предназначено за оценка на капацитета, производителността, използваемостта, възстановяването и преносимостта.
Проверката на качеството и състоянието на всеки от тези нефункционални критерии е също толкова важна, колкото и проверката на функциите на даден софтуер, но тези параметри не се проверяват при стандартното функционално тестване.
По същество нефункционалното тестване означава да се тества „как“ работят функциите на софтуера, а не да се тества „дали“ те работят.
1. Кога се нуждаете от нефункционално тестване?
Нефункционалното тестване се извършва по време на фазата на тестване на системата при тестването на софтуера, след като са проведени тестването на модула и интеграционното тестване.
По време на тестването на системата тестерите извършват както функционално, така и нефункционално тестване, като започват с функционално тестване.
След като тестващите установят, че софтуерът функционира според очакванията, те извършват нефункционално тестване, за да оценят дали той отговаря и на нефункционалните параметри.
Обикновено е необходимо да се извърши функционално тестване преди нефункционално тестване, тъй като е невъзможно да се тества надеждността или производителността на функции, които изобщо не работят. Нефункционалното тестване е един от последните етапи на тестването на софтуера преди тестването за приемане от потребителя и окончателното пускане на продукта.
2. Кога нямате нужда от нефункционално тестване
Винаги е важно да се тестват нефункционалните аспекти на софтуера, освен ако те вече не са били тествани и не е установено, че са подходящи.
Дори и да сте извършвали нефункционално тестване на софтуера преди, може да се наложи да тествате нефункционалните параметри отново, например ако в софтуера са добавени нови функции или са направени промени в кода, които могат да повлияят на производителността и надеждността.
Цели на нефункционалното тестване
Целите на нефункционалното тестване са да се провери дали продуктът отговаря на очакванията на потребителите и да се оптимизира продуктът преди пускането му на пазара.
Тя може също така да помогне на разработчиците и тестерите да разберат по-добре софтуера и да използват тези знания при бъдещи оптимизации.
1. Контрол на качеството
Нефункционалното тестване има за цел да провери факторите, които влияят върху използваемостта, надеждността, поддръжката, преносимостта и ефективността на продукта.
Тестването на тези елементи гарантира, че продуктът, който се пуска на пазара, е с достатъчно високо качество и отговаря на очакванията на потребителите по отношение на производителността, времето за зареждане и капацитета на потребителите.
2. Управление на риска
Нефункционалното тестване също така намалява риска и разходите, свързани с пускането на даден продукт на пазара, като увеличава максимално шансовете на екипа да пусне задоволителен продукт.
Чрез проверката на нефункционалните параметри на софтуерната конструкция е възможно да се намалят разходите за пускане на продукта, тъй като се намалява необходимостта от по-нататъшна разработка и промени в софтуера.
3. Оптимизация
Нефункционалното тестване помага на тестващите и разработчиците да оптимизират изграждането на софтуера и да оптимизират производителността по време на инсталиране, настройка, изпълнение и използване.
Можете също така да използвате нефункционалното тестване, за да оптимизирате начина, по който управлявате и наблюдавате изграждането на софтуера.
4. Събиране на данни
Нефункционалното тестване позволява на тестерите да събират и изготвят измервания и показатели, които могат да се използват от екипите по тестване за вътрешни изследвания и развитие.
Можете да използвате данните, събрани от нефункционалното тестване, за да разберете как работи вашият продукт и как можете да го оптимизирате по-ефективно за потребителите.
5. Повишаване на знанията
Нефункционалното тестване подобрява и разширява познанията на екипа по тестване за поведението на продукта и технологиите, които той използва.
Това не само помага на екипите за тестване да разберат по-добре софтуера, върху който работят, но и може да предостави полезни знания, които да помогнат на тестерите да разберат по-добре бъдещите компилации.
Кой участва в нефункционалното тестване?
Нефункционалното тестване обикновено се извършва от тестери в средата за осигуряване на качеството, но понякога разработчиците могат да извършват нефункционално тестване по време на разработката.
Тестването на системата почти винаги се извършва от тестери и това е фазата на тестване, в която се извършва по-голямата част от нефункционалното тестване.
Ако нефункционалните тестове се провалят, тестерите връщат софтуера на разработчиците, за да коригират грешките в работата, преди да тестват отново.
Предимства на нефункционалното тестване
Извършването на нефункционално тестване носи много ползи, а нефункционалното тестване е съществен етап от тестването на системата.
Без нефункционално тестване екипите за тестване не биха могли да проверят дали софтуерът действително отговаря на изискванията на клиента или дали отговаря на изискванията, заложени в плана за разработване на софтуер.
1. Подобряване на производителността на софтуера
Нефункционалното тестване може да помогне на тестващите и разработчиците да подобрят цялостната производителност на софтуерните приложения. Нефункционалните тестове идентифицират областите, в които производителността на софтуера е недостатъчна, например по отношение на скоростта на зареждане или капацитета на обработка, и подтикват софтуерните екипи да направят промени, за да отстранят тези дефекти.
Това гарантира, че софтуерните екипи пускат софтуера за публично ползване само когато е готов и когато производителността му е достатъчно добра.
2. Поддържане на сигурността на софтуера
Нефункционалното тестване включва тестване на сигурността, което е от решаващо значение за гарантиране на сигурността на софтуера и предпазването му от външни заплахи и атаки.
Тестването на сигурността дава възможност на тестващите и разработчиците да проверят дали софтуерът защитава адекватно поверителните данни и дали има достатъчна сигурност, за да се предпази от съвременни кибератаки.
3. Повишаване на удобството за потребителя на софтуера
Нефункционалното тестване е най-добрият начин да направите софтуера си по-удобен за потребителите, особено чрез провеждане на тестване на ползваемостта, което оценява колко лесно е за потребителите да се научат да използват и да работят с вашия софтуер.
Удобството за потребителя е много важно, тъй като то определя доколко потребителите са доволни от вашия софтуер и гарантира, че потребителите могат да се възползват напълно от всичко, което предлага вашият софтуер.
4. Уверете се, че софтуерът отговаря на нуждите на потребителите
Гарантирането, че софтуерът отговаря на нуждите на потребителите, трябва да бъде един от основните приоритети на всички екипи за разработване и тестване на софтуер. Освен че очакват софтуерът да бъде функционален, потребителите очакват той да работи добре, да работи гладко и да защитава поверителни данни.
Нефункционалното тестване е един от единствените начини да се гарантира, че вашият софтуер отговаря на тези изисквания.
Предизвикателствата на нефункционалното тестване
Съществуват някои недостатъци при провеждането на нефункционално тестване. Въпреки че нефункционалното тестване е от съществено значение по време на фазата на тестване на системата при тестването на софтуера, процесът на нефункционално тестване може да представлява предизвикателство за софтуерните екипи, които не разполагат с достатъчно ресурси и инструменти.
1. Повтаряне
Нефункционалното тестване при тестването на софтуера трябва да се извършва всеки път, когато софтуерът се актуализира от разработчиците, или всеки път, когато се променя кодът. Това означава, че нефункционалното тестване може да бъде много повтарящо се, което не само отнема време, но и изморява тестващите.
Уморените тестери, които изпълняват много повтарящи се задачи, също са по-склонни да се разсейват и да правят грешки.
2. Разходи
Тъй като нефункционалното тестване е толкова повтарящо се, то може да бъде и доста скъпо, особено за екипите за тестване, които разчитат на ръчно нефункционално тестване.
Софтуерните екипи трябва да отделят време и бюджет за чести нефункционални тестове, а разработчиците на софтуер ще трябва да плащат допълнително за тези допълнителни тестове.
Какво тестваме при нефункционалното тестване?
Нефункционалното тестване може да се използва за тестване на много различни нефункционални параметри, всеки от които влияе върху качеството и използваемостта на системата. Всеки от тези параметри се проверява по време на тестването на системата по критерии, определени в плана за тестване.
1. Сигурност
Тестването на сигурността е вид нефункционално тестване, което измерва доколко добре системата е защитена от външни заплахи и атаки. Те включват умишлени нарушения на сигурността, както и изтичане на данни и други често срещани нарушения.
Тестването на сигурността е важен етап от нефункционалното тестване, тъй като осигурява на крайните потребители и клиентите увереност, че техните данни са защитени.
2. Надеждност
Тестващите използват нефункционалното тестване, за да оценят надеждността на софтуера и да гарантират, че софтуерът може непрекъснато да изпълнява определените си функции без грешки.
Функционалното тестване гарантира, че софтуерът изпълнява ключовите си функции, но само нефункционалното тестване всъщност проверява надеждността и повторяемостта на тези резултати.
3. Оцеляване
Възможността за оцеляване описва начина, по който софтуерната система реагира в случай на неизправност, а тестването на възможността за оцеляване гарантира, че ако възникнат грешки и неизправности, системата може да се възстанови.
Тестването на устойчивостта може да провери дали софтуерът е в състояние да запазва данни, за да се сведе до минимум загубата на данни в случай на внезапна повреда, например.
4. Наличност
Достъпността на софтуера се отнася до степента, в която потребителят може да разчита на системата по време на нейното функциониране. Това се нарича стабилност и се проверява чрез тестване на стабилността.
Тестването на стабилността има известно сходство с тестването на надеждността, тъй като проверява дали системата може да работи постоянно според очакваните стандарти.
5. Ползваемост
Тестването на ползваемостта е друг важен вид нефункционално тестване при тестването на софтуер. Този вид тестване оценява доколко потребителят може да научи, да работи и да използва софтуерната система, като следва инструкциите, предоставени на екрана, и други основни ръководства.
Тестването на ползваемостта е важно, защото ако софтуерът не е много удобен за използване, повечето потребители просто ще го изоставят или ще изберат да използват нещо друго.
6. Мащабируемост
Тестването на мащабируемостта проверява до каква степен софтуерното приложение може да разшири капацитета си за обработка, за да отговори на нарастващото търсене.
Например, ако софтуерът е проектиран да се използва едновременно от няколко потребители в една мрежа, как работи, когато десет потребители влязат в системата едновременно? По-големият брой потребители влияе ли значително на производителността или времето за зареждане?
7. Оперативна съвместимост
Тестването за оперативна съвместимост е вид нефункционално тестване, което проверява доколко добре дадена софтуерна система взаимодейства с други софтуерни системи.
Това е особено важно, когато софтуерът е проектиран като част от пакет от продукти, които се интегрират един с друг.
8. Ефективност
Ефективността при тестването на софтуер се отнася до степента, в която софтуерната система може да се справи с капацитета, количеството и времето за реакция.
Например тестерите могат да оценят колко потребители могат да влязат в системата едновременно, колко време е необходимо за извличане на данни от базата данни или колко бързо софтуерът може да изпълнява основни задачи.
9. Гъвкавост
Гъвкавостта измерва степента, в която дадена софтуерна система може да работи с различни видове хардуер и периферни устройства.
Например колко оперативна памет е необходима на софтуера или дали той изисква определен брой процесори. Колкото по-ниски са изискванията към софтуерното приложение, толкова по-гъвкав е софтуерът.
10. Преносимост
Тестването на преносимостта се използва, за да се провери доколко гъвкаво софтуерът може да бъде прехвърлен от настоящата хардуерна или софтуерна среда и доколко лесно е това да се направи.
Преносимостта е важна, защото влияе върху това колко лесно крайните потребители могат да управляват софтуера и да го преместват между различни системи.
11. Възможност за повторна употреба
Тестването на многократната използваемост е вид нефункционално тестване, което проверява дали части от софтуерната система могат да бъдат преобразувани за повторна употреба в друго приложение.
Въпреки че тестването на повторната използваемост обикновено не засяга клиентите и крайните потребители, то е добро отражение на това доколко ефективно разработчиците създават компоненти, които могат да бъдат използвани повторно в бъдеще.
Характеристики на нефункционалните тестове
Разбирането на това какво представляват нефункционалните тестове включва разбиране на характеристиките на нефункционалните тестове. Тези характеристики определят нефункционалното тестване при тестването на софтуер.
1. Измерими
Нефункционалното тестване винаги е количествено и измеримо, което означава, че тестерите не използват субективни фрази като „хубаво“ или „добро“, а използват цифри и факти, за да опишат резултатите от нефункционалното тестване.
Например, вместо да се описва времето за зареждане като „бързо“ или „бавно“, нефункционалното тестване трябва да доведе до конкретни цифри, показващи броя на зарежданията.
2. Специфичен
Когато се извършва нефункционално тестване, целта на тестовете трябва да бъде специфична за спецификациите на дизайна на софтуера.
Например, ако в плана на софтуерния проект се посочва броят на потребителите, които трябва да могат да влязат в системата наведнъж, това трябва да се приоритизира при нефункционалното тестване.
3. Неизвестен
Макар че нефункционалното тестване може да бъде специално разработено за измерване на атрибути, заложени в плановете на проекта, в много случаи тези атрибути няма да бъдат определени предварително.
В този случай тестерите трябва просто да извършат нефункционално тестване, за да оценят софтуера въз основа на всеки параметър и по-късно да сравнят тези резултати с очакванията.
Жизнен цикъл на нефункционалните тестове
Тъй като нефункционалното тестване не се отнася до конкретна фаза от жизнения цикъл на софтуерното тестване, а просто до вид тестване, което обикновено се извършва по време на фазата на системното тестване на софтуера, жизненият цикъл на нефункционалното тестване може да варира значително между отделните проекти.
Като цяло то следва жизнен цикъл, сходен с този на другите видове тестване на софтуер, който започва с анализ на изискванията на проекта и завършва с изпълнение на тестовете и изпълнение на цикъла.
1. Анализ на софтуерните изисквания
Първият етап от жизнения цикъл на нефункционалното тестване е анализът на изискванията към софтуера. Софтуерните екипи работят по определени критерии при създаването и тестването на приложения и тези критерии трябва да определят вида на тестовете, които трябва да се извършат.
2. Планиране на тестовете
Следващият етап от жизнения цикъл е планирането на тестовете. По време на етапа на планиране на тестовете ръководителят на отдела за осигуряване на качеството съставя подробен план за тестване, в който подробно се описва какво ще бъде тествано, кой ще извърши тестването и какви подходи, методи и инструменти за тестване ще бъдат използвани.
Планът за тестване трябва да включва всички необходими детайли, от които тестерите се нуждаят, за да създадат и изпълнят тестови случаи.
3. Създаване на тестови случаи
Създаването на тестови случаи е следващият етап от нефункционалното тестване. Този етап включва разработване на нефункционални тестови случаи, които тестерите ще изпълняват на по-късен етап, за да тестват нефункционалните изисквания на системата.
Случаите за тестване описват какво ще се тества, как ще се тества и какъв е очакваният резултат от теста.
4. Настройка на тестовата среда
Следващият етап от жизнения цикъл на нефункционалното тестване е създаването на тестовата среда преди началото на тестването.
Средата за тестване е мястото, където се извършват всички тестове, и в нея се намират ресурсите и инструментите, които ще използвате за изпълнение на нефункционалните тестове.
Екипът по тестване подготвя тестовата среда преди изпълнението на теста.
5. Изпълнение на теста
Изпълнението на теста е следващата фаза от жизнения цикъл на нефункционалното тестване. Тя включва изпълнение на създадените преди това тестови случаи за тестване на различни аспекти на софтуерните приложения, включително сигурност, време за зареждане, капацитет и преносимост.
Екипът за тестване изпълнява всеки случай поотделно и проверява резултата от всеки тест спрямо очаквания резултат.
6. Повтаряне на цикъла
Последният етап от жизнения цикъл на нефункционалното тестване е изпълнение на цикъла и повторение. След като изпълнят всички тестови случаи, тестерите проверяват кои тестове са преминали успешно и кои не.
Неуспешните тестове обикновено показват, че има дефект, който трябва да бъде отстранен от разработчиците. След като разработчиците поправят или редактират кода, цикълът на тестване на софтуера се повтаря отново, докато не бъдат открити дефекти.
Изчистване на някои неясноти:
Нефункционално тестване срещу функционално тестване
Функционалното и нефункционалното тестване са два различни, но еднакво важни вида софтуерно тестване, които заедно се използват, за да се оцени дали софтуерното приложение отговаря на изискванията на потребителите, както е посочено в краткото описание на проекта.
Въпреки че и двете са необходими видове тестване, които позволяват на софтуерните екипи да идентифицират дефекти в софтуерните разработки, функционалното и нефункционалното тестване са напълно различни едно от друго.
1. Каква е разликата между функционално и нефункционално тестване?
Разликата между функционалното и нефункционалното тестване е в това какво се тества. Функционалното тестване тества функциите на приложението и проверява дали те работят според очакванията. Нефункционалното тестване проверява други аспекти на приложението, които влияят върху удовлетвореността на потребителите и качеството на приложението.
Функционалното и нефункционалното тестване се извършват в различни фази на тестване на софтуер, но и двата вида тестване обикновено се извършват по време на фазата на тестване на системата.
Както функционалното, така и нефункционалното тестване могат да ни помогнат да разберем колко добре работи едно приложение и дали то изпълнява работата си адекватно.
Например, ако тествате мобилно приложение, което позволява на потребителите да запазват списъци със задачи и списъци за пазаруване, функционалното тестване може да тества функции като създаване на нов списък, запазване на списък и извършване на редакции на съществуващи списъци.
При нефункционалното тестване може да се оцени колко добре работи приложението на различни мобилни устройства, колко бързо се зареждат списъците и доколко се влияе на производителността на приложението, когато други приложения работят във фонов режим.
2. Заключение: нефункционално тестване срещу функционално тестване
Както функционалното, така и нефункционалното тестване са важни видове софтуерно тестване, които могат да помогнат на тестерите и екипите по осигуряване на качеството да оценят дали дадено приложение отговаря на текущите изисквания.
Докато функционалното тестване проверява функциите на софтуера, нефункционалното тестване проверява други аспекти, които могат да повлияят на производителността, ефективността и сигурността.
Тестването на единици, интеграционното тестване и тестването на API са форми на функционално тестване. На всеки от тези етапи от тестването на софтуера тестерите оценяват доколко добре работят функциите и характеристиките поотделно или заедно и идентифицират грешки и дефекти, които пречат на функциите да работят според очакванията.
Тестване на сигурността, тестване на ползваемостта, тестване на преносимостта и тестване на натоварването са все форми на нефункционално тестване, които позволяват на тестващите да оценят доколко добре приложението изпълнява функциите си и отговаря на нуждите на потребителите.
Видове нефункционално тестване
Съществуват много различни видове нефункционално тестване, като всяко от тях проверява различен нефункционален аспект на производителността или ефективността на софтуерното приложение.
Всеки от тези видове тестове проверява различни параметри, а някои тестове могат да проверяват едни и същи параметри по различни начини.
1. Тестове за ефективност
Тестовете за производителност са вид нефункционални тестове, които проверяват доколко добре работят различните компоненти на софтуера. Вместо да се тества функционалността им, което е целта на функционалното тестване, при тестовете за производителност може да се тества времето за реакция, тесните места и точките на отказ. Тестването на производителността помага на тестващите да гарантират, че софтуерът е с високо качество и че е бърз, стабилен и надежден.
2. Стрес тестове
Стрес тестването е вид нефункционално тестване, при което се проверява доколко добре работи софтуерът, когато е подложен на необичайно натоварване. Това може да означава тестване на работата на софтуера, когато някой се опитва да използва много различни функции едновременно или когато работи с много други приложения по едно и също време.
Стрес тестването има за цел да определи границата, при която софтуерът спира да работи правилно, и какво се случва, когато системата е подложена на стрес. Тя позволява на тестващите да разберат дали системата може да се възстанови сама и дали уведомява потребителите с подходящи съобщения за грешки.
3. Тестове за натоварване
Тестването за натоварване е вид тестване, което оценява доколко добре се държи софтуерът както при нормални условия, така и при по-големи натоварвания. Той се използва за определяне на това колко много софтуер може да обработва едновременно, без това да се отрази негативно на производителността.
Тестването на натоварването може да се използва за проверка на работата на приложенията, когато много потребители ги използват едновременно или когато потребителите се опитват да изтеглят много данни едновременно.
Тестването на натоварването е важно, ако искате да проверите дали софтуерът ви е мащабируем.
4. Тестове за сигурност
Тестовете за сигурност оценяват софтуерните приложения и търсят уязвимости в сигурността на софтуера. Те включват потенциални рискове за сигурността, които биха могли да доведат до загуба на данни или нарушения, разкриващи поверителни данни.
Тестването на сигурността е важно, защото гарантира, че продуктът е адекватно защитен от хакерски атаки, пробиви в данните и други външни заплахи за сигурността.
Някои примери за тестове за сигурност, които тестерите могат да извършват, включват одити за сигурност, етично хакерство, тестове за проникване, сканиране на сигурността и оценки на състоянието.
5. Тестове за обновяване и инсталиране
Тестването за обновяване и инсталиране е вид нефункционално тестване на софтуер, което проверява доколко добре работи софтуерът на различни машини.
Целта на този вид тестване е да се увери, че новите потребители могат лесно да инсталират софтуера на своите машини, а съществуващите потребители могат да го обновяват при пускането на нови актуализации.
Тестовете за обновяване и инсталиране са важни, защото крайните потребители трябва да могат лесно да инсталират вашия продукт, при условие че работят с машина, която е съвместима с него.
6. Тестове за обем
Тестването на обеми е вид тестване, което съществува, за да се провери какво се случва, когато към базата данни се добавят големи обеми данни наведнъж. По този начин се установява дали приложението може да обработва големи обеми данни и какво се случва със системата, ако не може.
Тестването на обема е известно още като „flood testing“ и може да се използва за оценка на загубата на данни и съобщенията за грешки, които се появяват при добавяне на значителни количества данни към системата.
Тестването на обеми е единственият начин да се гарантира, че софтуерът може да обработва обемите от данни, които потребителите очакват от него.
7. Тестове за възстановяване
Тестовете за възстановяване включват принуждаване на софтуерната система да се откаже, за да се провери доколко добре се възстановява след срив.
Тестването на възстановяването може да помогне на тестващите да разберат как софтуерът възстановява данни и предотвратява загуби, ако хардуерът е изключен от мрежата по време на употреба, ако софтуерът е изключен от мрежата по време на прехвърляне на данни или ако неочаквано рестартирате системата.
Този вид тестване е важен, тъй като при подобни инциденти системите без подходящи протоколи за възстановяване могат да претърпят сериозни загуби на данни.
Какво ви е необходимо, за да започнете нефункционално тестване
Преди да започнете нефункционално тестване, трябва да се уверите, че сте подготвили средата за тестване и сте събрали необходимите инструменти и данни.
1. План за изпитване
Преди да започнете нефункционално тестване, уверете се, че имате готов план за тестване, който е подписан от съответните лица.
Планът ви за тестване трябва да включва всички важни подробности за това какво ще тествате и как. В него трябва да се обясни кога ще се използва ръчно и кога автоматизирано тестване, както и да се очертаят ролите и отговорностите на всички участници в процеса на тестване.
2. Тестови случаи
Преди да можете да изпълнявате нефункционални тестове, трябва да създадете тестови случаи. Всеки тестови случай описва конкретно нещо, което ще тествате, обяснява как ще го тествате и описва очаквания резултат от теста.
Например, ако извършвате тестване на натоварването, примерен тестови случай може да бъде тестване на поведението на софтуера, когато десет потребители използват един и същ модул едновременно.
3. Функционална проверка
Не можете да извършвате нефункционално тестване на софтуерни компоненти, ако те не са функционални.
Например, ако искате да тествате колко потребители могат да влязат в софтуера едновременно, първо е важно да проверите дали отделните потребители могат да влязат в софтуера.
Преди да започнете нефункционално тестване, се уверете, че всички функционални тестове са преминали успешно и че софтуерът ви функционира така, както очаквате.
Обикновено това означава, че вече са извършени тестовете за проверка на надеждността, тестовете на модулите, интеграцията и функционалното тестване на системата.
4. Инструменти за тестване
Преди да започнете нефункционалното тестване, съберете всички инструменти за тестване, които искате да използвате за провеждане на тестовете.
Независимо дали използвате инструменти за автоматизация за частично автоматизирате някои от тестовете си или инструменти за документиране, които да ви помогнат да управлявате и съхранявате докладите от тестовете за по-късна употреба, уверете се, че инструментите, които искате да използвате, са налични и готови за употреба и че всички в екипа за тестване знаят как да използват правилно всеки инструмент.
5. Среда за тестване
Създайте средата за тестване, преди да започнете нефункционалното тестване. Възможно е вече да разполагате с подходяща среда за тестване, особено ако можете да използвате една и съща среда за тестване на нефункционални системи и за тестване на функционални системи.
Идеалната среда за тестване ви позволява да тествате всеки елемент, от който се нуждаете, на правилните устройства.
Например, ако тествате работата с обема на звука на смартфон устройствата, по-добре е да тествате това на истинско смартфон устройство, отколкото да се опитвате да емулирате мобилна среда на настолен компютър.
Процесът на нефункционално тестване
Тестването на нефункционалните аспекти на даден софтуер е многоетапен процес, който включва подготовка на тестовата среда, създаване на тестови случаи, събиране на тестови данни и изпълнение на нефункционални тестове.
Възможно е процесът на тестване да се раздели на малки части, за да се улесни проследяването му от начинаещите в нефункционалното тестване.
1. Проверки на готовността за нефункционално тестване
Преди да започнете нефункционално тестване, е важно да проверите дали сте готови за тази фаза на тестване.
Това може да означава да се оценят критериите за излизане от последния етап на тестване, за да се гарантира, че софтуерът го е преминал, и да се гарантира, че софтуерът е преминал всички функционални тестове, изисквани преди провеждането на нефункционалното тестване.
Някои екипи могат да създадат входни критерии за нефункционално тестване, които включват всички условия, които трябва да бъдат изпълнени, преди да започне нефункционалното тестване.
2. Създаване на план за тестване
Може би вече сте извършили тази стъпка по-рано, ако извършвате нефункционално тестване като част от тестването на системата и следвате плана си за тестване на системата. Планът за тестване описва всички тестове, които трябва да извършите, и начина, по който възнамерявате да ги извършите.
Без ясен план за тестване е лесно да се изгуби представа за обхвата и целите на извършваните тестове.
3. Създаване на тестови случаи
Следващият етап на нефункционалното тестване е създаването на тестови случаи, предназначени за тестване на всеки нефункционален параметър на софтуера.
Всеки тестови случай трябва да има идентификатор на тестовия случай, име на тестовия случай, описание и подробности за очаквания резултат от теста, както и предварително определени критерии за преминаване или отпадане. Това помага на тестващите да разберат как да провеждат всеки тест и какви резултати да търсят.
4. Събиране на тестови данни
Преди да можете да изпълните всеки тестови случай, трябва да съберете тестовите данни, които ще използвате за всеки тестови случай.
Това обикновено означава събиране на код и данни от различни модули и компоненти, които съставляват функциите и областите, които ще тествате. Ако искате да увеличите покритието на тестовете, трябва да разполагате с много тестови данни, с които да работите.
5. Подготовка на тестовата среда
Следващият етап на нефункционалното тестване е подготовката на тестовата среда. Тестовата среда е сървър за тестване, който ще използвате за провеждане на тестове на софтуер от различни видове.
Тя ви позволява да създавате идентични условия за тестване на софтуера и да настройвате софтуера с различни конфигурации за тестване на конфигурацията, тестване на сигурността и други видове нефункционално тестване.
6. Извършване на нефункционални тестове
След като тестовата среда е готова, е време да се изпълнят нефункционалните тестове. Може да решите да изпълнявате тестовете в зависимост от вида им, например да започнете с тестове за производителност, преди да преминете към тестове за сигурност и други видове нефункционални тестове.
След като извършите всеки тест, запишете резултатите в протокола от теста. Ако автоматизирате тестването, инструментът ви за автоматизация ще има стандартизиран начин за ясно и недвусмислено отчитане на резултатите.
7. Докладване на резултатите от изпитванията
След като изпълните всеки тестови случай, съберете резултатите от нефункционалните тестове в един отчет.
Този доклад трябва да съдържа ясна информация за резултатите от всеки тест и недвусмислено да посочва дали всеки тест е преминал успешно или не.
Спазвайте стандартизирана структура на доклада от теста, за да сте сигурни, че е включена цялата информация, която трябва да предадете.
8. Отстраняване на дефекти
След като получите резултатите от тестовете, върнете софтуера на разработчиците, ако тестовете са неуспешни или ако сте установили нефункционални грешки, които трябва да бъдат отстранени.
Например, ако софтуерът не може да се справи с подходящ брой потребители едновременно или ако производителността се забавя твърде много, когато се изпълняват няколко програми едновременно, тези проблеми вероятно ще трябва да бъдат отстранени в кода, за да се гарантира, че потребителите са доволни от продукта.
9. Повтаряне на цикъла на тестване
След като разработчиците отстранят всички дефекти, открити в рамките на първоначалната фаза на нефункционално тестване, цикълът на тестване може да започне отново.
Разработчиците ще тестват направените от тях промени и ще предадат новата сглобка обратно на тестерите по осигуряване на качеството, които след това ще извършат пълния набор от тестове, като започнат с тестване на дим, тестване на единици, интеграционно тестване и накрая системно тестване.
Цикълът на тестване се повтаря, докато в нито един момент не се появят грешки или дефекти, след което конструкцията може да премине към последния етап на тестване: тестване за приемане от потребителя.
Тестови случаи за нефункционално тестване
Случаите за тестване са важен аспект от всяко тестване на софтуер и когато извършвате функционално и нефункционално тестване, използвате случаи за тестване, за да определите какво ще тествате и как ще го тествате.
Всеки тестови случай може да се разглежда като мини-тест и всеки тестови случай ще има свои собствени дефинирани изходи и резултати.
1. Какво представляват тестовите случаи за нефункционално тестване?
Тестовият случай е набор от действия, извършвани върху софтуерна конструкция, за да се провери дали тя отговаря на условията, определени в плана за софтуера. Всеки тестови казус ефективно указва на тестващите какво и как да тестват и е предназначен за тестване на конкретна функция или нефункционална характеристика на софтуерното приложение.
Случаите на нефункционални тестове могат да включват тестване на това какво се случва, когато някой се опита да получи достъп до защитени данни в системата, или тестване на това колко бързо се зарежда софтуерът при стартиране.
2. Как да проектираме нефункционални тестови случаи?
Когато проектирате тестови случаи за нефункционално тестване, е важно да следвате стандартните практики за тестови случаи, като същевременно имате предвид целите на вашите нефункционални тестове.
Следвайте стъпките по-долу, за да напишете тестови случаи за нефункционално тестване, които ясно описват какво трябва да направят вашите тестери, за да извършат всеки тест.
1. Определете областта, която искате да покриете
За всеки тестови случай помислете коя област от софтуера ще бъде обхваната от този тестови случай.
Например, ако пишете тестови случаи за тестване на инсталация и обновяване, може да включите тестови случаи, които оценяват колко лесно е приложението да се инсталира на различни устройства и колко време отнема обновяването на софтуера с помощта на нова кръпка.
2. Създаване на уникален идентификатор на тестовия случай
Всеки тестови случай трябва да има уникален идентификатор на тестовия случай. Това улеснява намирането на описанието на тестовия случай и резултатите от него и премахва всякакво объркване относно това за кой тестов случай се отнасяте, ако два тестови случая имат сходни имена или описания.
3. Назовете и опишете всеки тест
Въпреки че идентификаторът на тестовия случай идентифицира теста, ще трябва да предоставите и име и описание за всеки написан от вас тестов случай.
Това трябва да бъде просто име, което обобщава това, което тествате, докато описанието е едно изречение, което го развива малко по-подробно.
Описанието трябва да е достатъчно ясно, за да знаят тестващите какво и как да тестват, както и всички конкретни условия, които трябва да бъдат изпълнени при теста.
4. Посочете очаквания резултат
За всеки тестови случай опишете резултата, който трябва да се получи, ако софтуерът работи според очакванията.
При нефункционални тестове, като например тестване на производителността и тестване на натоварването, в много случаи това може да означава, че софтуерът просто продължава да работи нормално, без да се забавя, забавя или срива.
В други случаи това може да означава, че се появяват определени съобщения за грешки, за да се уведоми потребителят за проблема и да се препоръча решение.
5. Препоръчване на техники за тестване
За всеки случай на тестване препоръчайте вида на техниките за тестване и инструментите за нефункционално тестване, които според вас тестерът трябва да използва по време на тестването.
При нефункционалното тестване тестерите могат да използват много различни подходи за различните видове тестване.
Например тестовете за натоварване и стрес тестовете може да изискват автоматизация, тъй като е непрактично да се симулира ръчно изключително тежък трафик, докато други видове тестове може да са по-лесни за извършване без специфични инструменти или технологии.
6. Получаване на експертна оценка на всеки тестов случай
Преди да подпишете всеки тестови случай, поискайте той да бъде рецензиран от човек, с когото работите. Това може да бъде друг тестер или ръководител на QA.
Партньорската проверка на тестовите случаи гарантира, че те са достатъчно ясни, за да бъдат следвани от трета страна, и не съдържат двусмислици или грешки, които биха могли да доведат до неправилно тестване.
3. Примери за нефункционални тестови случаи
Ако пишете тестови случаи за нефункционално тестване, те могат да изглеждат като примерите за нефункционално тестване по-долу.
Пример за тестване на мащабируемостта
Идентификатор на тестовия случай: 6671
Име на тестовия случай: Тест за влизане на множество потребители
Описание: Емулирайте над 20 потребители, които влизат в софтуера по едно и също време, като използвате инструменти за автоматизация.
Очаквани резултати: Софтуерът трябва да работи нормално за всеки потребител, като позволява на всеки потребител да влезе успешно за по-малко от 5 секунди.
Пример за изпитване на съвместимост
Идентификатор на тестовия случай: 5214
Име на тестовия случай: Зареждане на приложението в браузъра Opera
Описание: Заредете приложението в уеб браузъра Opera.
Очаквани резултати: Приложението се зарежда нормално в уеб браузъра Opera със стандартна разделителна способност и оформление на дисплея.
Ръчни или автоматизирани нефункционални тестове?
Когато избирате между различни техники за нефункционално тестване, трябва да решите дали искате да провеждате ръчни или автоматизирани нефункционални тестове.
Ръчните тестове се изпълняват от тестери, което означава, че обикновено отнемат повече време, но също така предлагат възможности за проучвателно тестване.
Автоматизираните нефункционални тестове са по-бързи и в някои отношения по-надеждни, но изискват и повече ресурси или инструменти. Автоматизацията и хиперавтоматизацията стават все по-популярни в областта на тестването, особено когато става въпрос за нефункционално тестване.
Ръчно нефункционално тестване: Предимства, предизвикателства и процеси
Ръчното нефункционално тестване се извършва само от тестери, които тестват всеки отделен нефункционален елемент самостоятелно.
При провеждане на ръчни нефункционални тестове тестерите трябва да съберат информация за софтуера, да създадат отделни тестови случаи, които съответстват на плана за тестване, и да изпълнят тези тестови случаи ръчно.
Това отнема значително време, но също така означава, че тестерите по ОК имат свободата да определят какво и как да се тества.
1. Някои от предимствата на ръчното тестване включват:
● Ръчното тестване може да е по-евтино от автоматизираното, тъй като не изисква специфични технологии или технически познания.
● Ръчното тестване позволява на тестващите да предложат човешки поглед и субективност за това как функционира софтуерът и дали той функционира задоволително.
● Ръчното тестване може да се използва за провеждане на тестване на системата в сценарии, в които е невъзможно да се автоматизира.
● Ръчното тестване позволява на тестващите да оценят визуалните аспекти на системата, като например графичния интерфейс и други фактори, които могат да повлияят на ползваемостта.
● Ръчното тестване предлага на тестващите по-широка перспектива за системата като цяло и за това как различните модули и компоненти работят заедно.
Ръчното тестване обаче има и недостатъци.
2. Някои от предизвикателствата при ръчното тестване включват:
● Някои видове нефункционално тестване, включително тестване на натоварването и тестване на производителността, е непрактично да се извършват ръчно.
● Ръчното тестване отнема значително повече време, отколкото автоматизираното нефункционално тестване
● Ръчните тестери могат да се разсеят, да загубят фокус и да допуснат грешки, особено когато изпълняват много повтарящи се задачи за тестване.
Автоматизирано нефункционално тестване: Ползи, предизвикателства и процеси
Автоматизираното нефункционално тестване се извършва с помощта на автоматизирани скриптове и инструменти за тестване. Когато се използват методи за автоматизирано тестване, тестерите могат да провеждат тестове във фонов режим, докато се занимават с други задачи, след като автоматизираните тестове са били стартирани.
1. Някои от предимствата на автоматизирането на нефункционалните тестове са:
1. Спестете време и ресурси, като намалите времето, което отделяте за продължителни и трудоемки задачи.
2. Автоматизацията дава възможност за увеличаване на обхвата на тестовете чрез обхващане на по-широк кръг от компоненти и функции
3. По-възможно е автоматизираните тестове да се провеждат често, тъй като отнемат по-малко време.
4. Автоматизираното тестване е идеално за отнемащи време задачи за тестване като тестване на натоварването, тестване на обема и стрес тестване, които е много трудно да се проведат ръчно.
5. При автоматизираното тестване има по-малък шанс за възникване на грешки
Въпреки това автоматизираното тестване има и някои недостатъци, което означава, че то не винаги е правилният подход за всички видове нефункционално тестване.
2. Някои от предизвикателствата на автоматизираното нефункционално тестване включват:
1. Създаването на автоматизирано тестване е по-скъпо от ръчното тестване
2. Създаването на автоматизация на тестовете може да отнеме време и технически ресурси
3. Автоматизацията на тестовете не дава възможност за проучвателно тестване
4. Автоматизирането на тестовете все още изисква време за създаване на тестови случаи
Заключение: Ръчно или автоматизирано
нефункционално тестване?
При повечето видове тестване на софтуер обикновено най-добрите резултати се постигат чрез комбиниране на ръчно и автоматизирано тестване. Това позволява на екипите за тестване да се възползват от ефективността, надеждността и точността на автоматизираното тестване, като същевременно извършват проучвателно тестване, което позволява на тестерите да оценяват софтуера от по-субективна гледна точка.
При нефункционалното тестване и ръчното, и автоматизираното тестване са практически необходими за повечето екипи по тестване.
Ръчното тестване се използва най-добре за изпълнение на нефункционални задачи, като например тестване на използваемостта, докато автоматизираното тестване най-често се използва за извършване на тестове, които биха отнели твърде много време и биха били трудни за ръчно провеждане, като например стрес тестване или тестване на обема.
Нефункционалното тестване е една от най-очевидните области за използване на техники за автоматизация на тестването, тъй като това е количествен, измерим вид тестване, което не изисква субективни резултати.
Както и при другите видове тестване, нефункционалното тестване обикновено се извършва чрез комбинация от ръчно и автоматизирано тестване.
Автоматизираното тестване обаче е практически необходимо за много видове нефункционално тестване, а параметрите и показателите на нефункционалното тестване означават, че автоматизацията е по-подходяща за този вид тестване, отколкото за функционалното тестване.
Най-добри практики за нефункционално тестване
Когато за първи път предприемате нефункционално тестване, следването на най-добрите практики за тестване може да ви помогне да стандартизирате процеса на тестване и да оптимизирате ефикасността на тестовете.
Най-добрите практики служат като насоки за екипите за тестване на софтуер, които искат да подобрят процесите на тестване и да се съобразят с индустриалните стандарти.
1. Използване на инструменти за автоматизация
При нефункционалното тестване е по-важно, отколкото при другите видове тестване, да се използват инструменти за автоматизация за автоматизиране на определени видове тестване, по-специално тестване на обема, стрес тестване и тестване на натоварването.
При тези видове тестове обикновено се проверява колко добре работи софтуерът при силен натиск от страна на потребителите, данните и трафика, което може да е много трудно да се имитира ръчно.
Автоматизирането на тези видове нефункционални тестове ще бъде не само по-ефективно, но и по-точно и ще позволи на тестващите лесно да възпроизвеждат по-високи натоварвания и стрес.
2. Партньорска проверка на цялата документация
Освен че можете да помолите колегите си да прегледат създадените от вас тестови случаи, помолете колегите си от екипа по тестване да прегледат докладите за грешки, тестовите доклади, плановете за тестване и други форми на официална документация, създадени по време на процеса на тестване.
Така се намалява рискът от малки грешки, които могат да доведат до сериозни забавяния в процеса на тестване и разработка.
3. Определяне на измерими изисквания
Когато определяте изискванията към софтуера си преди началото на нефункционалното тестване, уверете се, че всяко изискване е обективно и измеримо.
Това улеснява тестващите да установят дали софтуерът отговаря на тези изисквания по време на тестването и не оставя място за интерпретация.
Какво се счита за „бързо“ или „ефективно“? Използвайте числа и количествени стойности, за да определите какво търсите.
4. Внимателно обмислете показателите за тестване
Преди да решите кои показатели ще използвате за измерване на производителността на вашия софтуер, помислете какво ще искат потребителите на софтуера и кои показатели всъщност съответстват на плана и изискванията за софтуера.
Повечето софтуери трябва да са бързи и надеждни, но какви други показатели могат да търсят вашите потребители? Има ли специфични за софтуера показатели, които трябва да вземете предвид по време на процеса на тестване?
Видове резултати от нефункционален тест
Когато извършвате нефункционално тестване, ще получите различни видове резултати от извършените тестове.
Обикновено те са доста различни от резултатите от функционалните тестове, които често са по-ясни, тъй като функционалните тестове просто проверяват дали дадена функция работи както трябва или не.
Подобно на функционалното тестване, тестерите трябва да зададат ясни очаквания за всеки тестови случай, които да улеснят определянето на това дали всеки тест е успешен или не.
1. Абсолютни числа
Когато извършвате тестване на производителността, стрес тестване и други видове нефункционално тестване, резултатите, които може да разглеждате най-често, са скорости и други абсолютни числа.
Тестването на производителността проверява колко бързо системата може да изпълнява определени задачи и това се измерва в секунди или милисекунди.
Ако извършвате тестове за натоварване, можете да прецените колко данни може да обработи софтуерът едновременно, без да се срине или забави.
2. Изпращане на съобщения за грешки
Нефункционалното тестване също така проверява как работи системата при възникване на грешки, като например грешки в сигурността, грешки при валидиране и грешки в конфигурацията.
Важно е системите да показват точни и ясни съобщения за грешки, когато се появят такива, така че потребителите да могат да предприемат стъпки за отстраняване на проблема и да продължат да използват софтуера.
По време на тестовете за сигурност трябва да се появяват и съобщения за грешки, когато системата не позволява на потребителите да нарушат вградените в софтуера функции за сигурност.
3. Катастрофи
Сривът е признак за повреда на системата и обикновено показва, че системата не е в състояние да работи на нивото, на което я тествате, и може да означава, че тестът е преминал успешно.
В някои случаи системата може да се срине и въпреки това да премине успешно тестовия случай, по който работите, например ако системата издържи на необходимото напрежение или трафик, преди да се срине.
Когато извършват нефункционални тестове, тестващите трябва да очакват системата да се срива редовно, особено когато я натоварват до краен предел за стрес тестове и други тестове за производителност.
Примери за нефункционални тестове
Примерите за нефункционални тестове са подобни на примерите по-горе за нефункционални тестови случаи.
Можете да разгледате примери за нефункционални тестове, за да разберете по-добре какво представлява нефункционалното тестване и какво се проверява с него в рамките на едно софтуерно приложение.
1. Пример за тестване на производителността
Ако работите по мобилно приложение, което свързва потребителите с онлайн база данни, е важно голям брой потребители да имат достъп и да изтеглят данни от тази база данни едновременно.
Това е и ключова част от тестването на мащабируемостта, особено ако искате да увеличите броя на потребителите на приложението в бъдеще.
След това ще тествате как реагира системата, когато например 1000 потребители се опитат да получат достъп до една и съща база данни едновременно, и ще зададете изисквания за това колко бързо трябва да се зарежда приложението при това условие.
2. Изпитване за съвместимост
Ако тествате ново приложение за управление на документи, трябва да проверите дали то работи на всички устройства, за които е предназначено.
Това означава да проверите дали можете да инсталирате и зареждате приложението на всички най-нови версии на Windows, Mac и други операционни системи (като Linux), с които искате софтуерът да бъде съвместим.
3. Тестване на сигурността
Когато извършвате тестване на сигурността, ще тествате някои от начините, по които хората могат да се опитат да получат достъп до поверителни данни или да нарушат защитите на софтуера, за да проверите дали системата се държи така, както очаквате в тези ситуации.
Например може да влезете като потребител и да се опитате да получите достъп до файлове, за които нямате разрешение за достъп, за да се уверите, че системата няма да ви позволи да получите достъп до тези файлове.
Видове открити грешки и бъгове
чрез нефункционално тестване
Нефункционалното тестване може да разкрие много грешки и дефекти, които не са толкова лесни за откриване, колкото тези, идентифицирани при функционалното тестване. Това е така, тъй като нефункционалното тестване често изисква от тестващите да проверяват различни конфигурации, настройки и комбинации от условия, за да оценят колко добре работи системата при множество различни настройки.
1. Дефекти в изпълнението
Дефектите в производителността възникват, когато системата функционира, но не толкова бързо или ефективно, колкото очаквате.
Например може да установите, че системата не се зарежда достатъчно бързо при определени условия или дори се срива, ако твърде много потребители влязат в системата по едно и също време.
Дефектите в производителността не пречат напълно на хората да използват вашия софтуер, но могат да направят софтуера ви по-малко удобен и по-малко вероятно да изпълни изискванията на потребителите.
2. Дефекти в сигурността
Дефектите в сигурността са тези дефекти, които засягат сигурността на вашата софтуерна система и съхраняваните в нея данни.
Дефекти в сигурността могат да възникнат, ако например потребителите имат достъп до поверителни данни, до които не би трябвало да имат достъп, ако някои части на приложението не са защитени правилно с парола или ако криптирането е неуспешно.
Това може да доведе до пробиви в сигурността, които могат да окажат сериозно въздействие върху репутацията на издателя на софтуер.
3. Функционални дефекти
Въпреки че нефункционалното тестване не е предназначено за тестване на функциите на софтуерното приложение, в някои случаи нефункционалното тестване може да идентифицира функционални дефекти в софтуера.
Например целта на тестването на надеждността не е да се провери дали приложението функционира, а да се провери дали приложението функционира надеждно при многократни опити.
Това може да разкрие, че някои функции не функционират правилно, когато дадено действие се повтаря, и те могат да бъдат класифицирани като функционални грешки.
Общи показатели за нефункционално тестване
Показателите за нефункционално тестване описват онези показатели, чрез които се измерват производителността и ефективността на системата.
Различните видове нефункционално тестване разчитат на различни показатели и можете да изберете да използвате различни показатели в зависимост от крайните цели на проекта.
1. Време
Показателите за време измерват колко време е необходимо за изпълнение на определени задачи или колко време потребителите трябва да чакат, за да се заредят функциите.
Някои примери за времеви показатели са броят на транзакциите или изтеглянията, които дадено приложение може да извърши в рамките на даден период от време, времето за реакция на различни функции и времето, необходимо на приложението да завърши определена операция.
При различните видове тестове резултатите се измерват в секунди или като представяне на броя операции в секунда.
2. Пространство
Пространството е друг важен показател при нефункционалното тестване. Метриките за пространството могат да проверяват колко място в процесора изисква системата или колко място на твърдия диск заема софтуерът, след като е напълно инсталиран.
Някои примери за измерване на пространството включват кеш памет, основна памет и спомагателна памет.
Софтуер, който изисква голямо пространство за безпроблемна работа, може да е подходящ за по-малък брой клиенти.
3. Ползваемост
Някои показатели при нефункционалното тестване отчитат използваемостта на системата, например колко време е необходимо за обучение на потребителите за правилно използване на системата, колко възможности за избор трябва да имат потребителите, за да изпълнят ключови функции, или колко кликвания с мишката са необходими за извършване на определени задачи.
Нефункционалните тестове могат да измерят количествено всеки от тези показатели, като по-ниските стойности обикновено означават по-високо ниво на използваемост.
4. Надеждност
Друг важен показател при нефункционалното тестване е надеждността. Надеждността отразява вероятността системата да се държи по един и същи начин отново и отново или да функционира както трябва за дълъг период от време.
Някои примери за показатели, които се използват за измерване на надеждността, включват средно време до отказ, честота на отказите, наличност и вероятност за престой.
Всяка от тези метрики помага на тестващите да проверят дали системата може да работи дълго време, без да се появят откази или сривове.
5. Устойчивост
Устойчивостта е мярка за това колко добре системата се справя с откази и колко добре може да се възстанови в случай на отказ.
Някои примери за показатели, които измерват устойчивостта, включват времето, необходимо на системата да се възстанови след повреда, процента на инцидентите, които водят до катастрофална повреда, и вероятността файловете с данни да бъдат повредени след повреда на системата.
Това са важни показатели, тъй като потребителите очакват, че понякога системите могат да се повредят, без да се загубят всички данни или да се повредят файловете.
6. Преносимост
Показателите за преносимост измерват доколко лесно софтуерът може да бъде прехвърлен към различни системи или преместен на ново място в мрежата.
Някои примери за показатели, които измерват преносимостта, включват процента на непреносимия код и броя на системите, на които софтуерът може да работи.
В идеалния случай софтуерът, който може да работи на много различни системи, е по-преносим и следователно по-удобен за използване в условия, които могат да изискват често прехвърляне или преместване.
Стратегии за провеждане на нефункционални тестове
Когато започвате нефункционално тестване, е важно да подходите към този етап от тестването с определена стратегия. Ръководителите на QA и мениджърите по тестване на софтуер трябва да обмислят рисковете от тестването, ресурсите, с които разполагат, и целта на тестването, преди да започнат нефункционалното тестване.
Разработването на стратегия може да ви помогне да оптимизирате нефункционалните си тестове от самото начало.
1. Разпределяне на ролите и отговорностите
Преди да започнете нефункционалното тестване, разпределете ролите и отговорностите на ключовите членове на екипа за тестване. Това улеснява управлението на работното натоварване на нефункционалното тестване и гарантира, че опитни тестери отговарят за поддържането на качеството и ефективността на провежданите тестове.
Уверете се, че хората, които сте избрали да заемат тези длъжности, имат необходимите знания и опит, за да изпълняват задачите, които очаквате от тях, особено ако тези задачи изискват технически умения.
2. Събиране на подходящи инструменти за тестване
Съберете всички технологии и инструменти, които искате да използвате за провеждане на нефункционално тестване. Уверете се, че целият ви екип знае как да ги използва ефективно, и проведете обучение за попълване на пропуските в уменията, когато е необходимо.
Уверяването, че всички знаят кои инструменти за тестване да използват и как да ги използват, преди да започне нефункционалното тестване, намалява риска от необходимост от спиране на тестването или повторение на тестовете поради недостатъчни познания.
3. Определяне на приоритети при тестването
Преди да започнете нефункционалното тестване, съставете списък на всички аспекти на системата, които трябва да тествате, и ги подредете по важност и спешност.
Можете да приоритизирате нефункционалното тестване въз основа на нивото на риска, свързан с всеки аспект на системата, който тествате.
Например може да се проведе основно тестване на сигурността, тъй като адекватната сигурност се счита за изключително важна в съвременния софтуер. Колкото по-рано идентифицирате високорисковите дефекти, толкова по-ниско е потенциалното въздействие на тези дефекти върху други аспекти на системата.
7 най-добри инструмента за нефункционално тестване
Инструментите за нефункционално тестване могат да рационализират процеса на тестване, да улеснят и направят по-рентабилно автоматизирането на тестването и да помогнат на ръководителите на отдела за осигуряване на качеството да управляват процеса на тестване и документиране.
В интернет има много безплатни инструменти за нефункционално тестване, както и някои инструменти, за които можете да плащате месечна такса за надграждане.
1. Безплатно издание на ZAPTEST
ZAPTEST е популярен инструмент за тестване на софтуер, който позволява на потребителите да извършват бързо и лесно функционални и нефункционални софтуерни тестове. Можете да използвате ZAPTEST за автоматизиране на софтуерни тестове и да използвате технологията RPA за имитиране на различни функции и условия при нефункционални тестове.
Безплатното издание на ZAPTEST е просто съкратена версия на корпоративното издание, която предлага много от същите функционалности в по-малък мащаб. Можете да потърсите помощ във форума на ZAPTEST и да провеждате тестове за производителност с неограничен брой виртуални потребители.
2. Appium
Appium е безплатен инструмент за тестване на софтуер, който е най-подходящ за тестване на мобилни приложения в различни платформи, включително устройства с iOS и Android. Appium предлага на потребителите голяма гъвкавост, за да разработят свои собствени рамки и стратегии за тестване, като същевременно се възползват от възможностите за автоматизация, които Appium предлага.
3. Loadium
Loadium е инструмент за нефункционално тестване, който се използва най-добре за провеждане на тестване на производителността и тестване на натоварването – два вида нефункционално тестване, които са много по-лесни за провеждане с помощта на инструменти за автоматизация.
Loadium позволява на потребителите да провеждат широкомащабни тестове за натоварване и предлага персонализирани решения, така че да можете да адаптирате тестовете си към целите на вашия софтуер.
Можете да изпробвате Loadium безплатно или да платите, за да изтеглите пълната версия на приложението.
4. Obkio
Obkio е инструмент за тестване на софтуер, който помага на ръководителите на QA и мениджърите на тестове да приоритизират и категоризират проблемите в зависимост от това колко сериозни са те. Obkio може да открива проблеми преди потребителите, предлага на потребителите интелигентни известия и може да помогне да се открие къде е проблемът.
Obkio не е само за нефункционално тестване, а е изключително полезен безплатен инструмент за тестване, който може да се използва на всички етапи от жизнения цикъл на тестването.
5. SonarQube
SonarQube е инструмент за тестване на сигурността с отворен код, който може автоматично да анализира кода, за да открива грешки и уязвимости. Написана на Java, SonarQube може да се използва за анализ на код на над двадесет различни езика за програмиране, а изчистеният интерфейс на системата улеснява откриването на проблеми, които могат да причинят уязвимости в сигурността в бъдеще.
6. Tsung
Tsung е друг инструмент за нефункционално тестване, който е идеален, ако искате да автоматизирате тестовете за натоварване и стрес, но не се справяте с безплатната версия на Loadium.
Tsung е инструмент с отворен код, който позволява на потребителите да провеждат тестове за натоварване с голям обем на множество протоколи и сървъри, включително HTTP и SOAP.
Tsung е напълно безплатен и може да помогне на тестващите да се уверят, че софтуерът, върху който работят, предлага високи нива на производителност при различни предизвикателни условия.
7. Sikuli
Sikuli е друго приложение, което използва автоматизация на роботизирани процеси за автоматизиране на процеса на тестване. Приложението може да автоматизира всичко, което се вижда на екрана. Можете да използвате Sikuli за тестване на приложения, които не са базирани на уеб, и за бързо възпроизвеждане на грешки.
Контролен списък, съвети и трикове за нефункционално тестване
Преди да започнете нефункционално тестване, проверете дали разполагате с всичко необходимо за провеждане на задълбочени нефункционални тестове в подготвена среда.
Следвайте контролния списък по-долу за съвети и трикове, преди да започнете нефункционално тестване.
1. Работа по график
Независимо дали го включвате в плана си за тестване, или създавате отделен документ за него, структурирайте тестовете на софтуера си около график за тестване.
Ако откриете повече грешки и дефекти, отколкото очаквате, може понякога да се отклоните от графика, но наличието на график в началото може да помогне на тестерите да се ориентират и да ги мотивира да работят ефективно, особено при провеждането на отнемащи време ръчни тестове.
2. Определете екипа за тестване
Делегирането на отговорности и възлагането на официални роли и титли на членовете на тестовия екип може да помогне за гладкото протичане на процеса на тестване.
Ясно съобщавайте ролите и отговорностите в екипа си преди началото на тестването и възлагайте на различни тестери отговорността за различни аспекти на нефункционалното тестване, така че всеки да носи отговорност за собствените си задачи.
3. Избор на инструменти и технологии преди тестване
Ако решите да работите с определени инструменти и технологии едва след като започнете нефункционалното тестване, това може да забави процеса на тестване и да предизвика объркване сред тестерите.
Вместо това направете предварително проучване и решете дали има инструменти, които искате да използвате, преди да започнете тестването. Това улеснява включването на тези инструменти в плана за тестване и обучението на тестерите да ги използват преди началото на тестването.
4. Винаги получавайте официален подпис за тестовете и документацията
Тестването е процес на осигуряване на качеството и най-добрият начин да увеличите стойността на тестовете, които извършвате, е да извършвате основно осигуряване на качеството на тестовете, които планирате и изпълнявате.
Въведете прости протоколи, които изискват от тестерите да поискат от ръководителите и мениджърите по осигуряване на качеството да прегледат и подпишат тестовите планове и тестовите доклади, преди да преминат към следващия етап.
Това значително увеличава шанса грешките при тестването да бъдат открити и отстранени на ранен етап.
7 грешки и капани, които трябва да избягвате при прилагането на нефункционални тестове
Ако сте начинаещи в нефункционалното тестване, може лесно да допуснете някои често срещани грешки, в които често попадат тестери и специалисти по осигуряване на качеството.
Нефункционалното тестване е сложна работа, която включва разглеждане на софтуерния продукт от всички ъгли и гледни точки.
По-долу е представен списък на някои от най-често срещаните капани, които тестващите правят при извършване на нефункционално тестване.
1. Не планиране
Ако сте начинаещи в областта на нефункционалното тестване, може да си мислите, че можете просто да се впуснете в етапа на тестване, без да създавате предварително подробен план за тестване.
Някои екипи за тестване могат да съставят непълни документи за тестване или повърхностни резюмета на плана за тестване, които не очертават адекватно действията, които тестерите трябва да предприемат по време на нефункционалното тестване.
2. Неправилно управление на тестовете
Проблеми могат да възникнат, ако тестовете се управляват неправилно на всеки етап от процеса на тестване. Неадекватното управление може да означава, че тестерите не разполагат с необходимите ресурси за цялостно тестване или че на тестерите не се предоставя достатъчно време за тестване на всеки аспект на сглобяването.
Ръководителите на тестове трябва да могат да се учат от допуснатите грешки и да разработват по-ефективни планове за тестване занапред.
3. Лоша комуникация
Лошата комуникация може да доведе до много проблеми по време на процеса на тестване, особено в рамките на нефункционалното тестване.
Това може да означава лоша комуникация в рамките на екипа за тестване или лоша комуникация между тестери, разработчици и заинтересовани страни.
Това често се случва, когато тестерите не поддържат адекватно тестовите документи или не комуникират редовно с други отдели по време на процеса на тестване.
4. Пренебрегване на разработчиците
Тестерите и разработчиците обикновено работят съвсем отделно един от друг, но екипите за тестване, които работят в тясно сътрудничество с разработчиците, могат да се възползват от допълнителните знания за това как работи софтуерът и как различните модули си взаимодействат един с друг.
Включването на разработчиците в процеса на тестване или изискването на обратна връзка от тях в ключови моменти може да помогне на екипите по тестване да съставят по-ефективни и задълбочени планове за тестване.
5. Цел на изпитването
Много тестери все още вярват, че целта на тестването е да се провери дали софтуерът работи или да се демонстрира на заинтересованите страни и инвеститорите, че софтуерът работи.
Вместо това тестерите трябва да подхождат към тестването с нагласата, че целта на тестването е да се търсят дефекти.
Тестерите, които не откриват дефекти, могат да бъдат доволни, че софтуерът, който тестват, не съдържа грешки, само ако са убедени, че са потърсили дефекти навсякъде, където те могат да бъдат открити.
6. Ръчни и автоматизирани грешки
Важно е да отделите време, за да прецените дали ръчното или автоматизираното тестване е по-подходящо за всеки вид тестване, което извършвате.
Методите за автоматизирано тестване са изключително подходящи за почти всички форми на нефункционално тестване и екипите за тестване, които са свикнали с функционалното тестване, могат да направят грешката да приемат, че могат да тестват нефункционалните функции ръчно също толкова лесно.
7. Използване на неправилни инструменти за тестване
Лесно е да се изберат неправилни инструменти и технологии за тестване, преди да се започне нефункционално тестване, особено ако екипите за тестване са свикнали да извършват ръчно тестване и не са свикнали да използват инструменти за тестване.
Предварително проучете методите за нефункционално тестване, които искате да използвате, и изберете софтуерни инструменти и инструменти за автоматизация, които отговарят на специфичните изисквания на вашия проект.
Заключение
Нефункционалното тестване е важна стъпка в процеса на тестване, която позволява на тестващите да проверят колко добре работи системата и до каква степен отговаря на нефункционалните изисквания, като например време за зареждане, капацитет и защита на сигурността.
Съществуват много различни начини за провеждане на нефункционално тестване, но съвременните инструменти за автоматизация улесняват увеличаването на обхвата и точността на тестовете, без да се нарушава качеството на резултатите.
Често задавани въпроси и ресурси
Ако искате да научите повече за нефункционалното тестване, в интернет има много често задавани въпроси и ресурси.
Разгледайте любимите ни онлайн ресурси за нефункционално тестване по-долу или прочетете отговорите на някои от най-често задаваните въпроси за нефункционалното тестване.
1. Най-добрите курсове за нефункционално тестване
Има много онлайн курсове, които могат да ви помогнат да разширите познанията си за методите и подходите за нефункционално тестване.
Някои от тези курсове са безплатни, а други могат да предлагат сертификат или квалификация срещу заплащане. Ако искате да преминете акредитиран курс, можете да попитате работодателя си дали ще ви спонсорира и ще поеме разходите за обучение.
Някои от най-добрите курсове по нефункционално тестване включват:
- TSG: Нефункционално обучение 2-дневен курс
- Udemy: Пълният 2023 Софтуерно тестване Bootcamp
- Edx: Сертификат за професионално тестване на софтуер
- Образователни: Автоматизация на тестовете за производителност 101
2. Кои са 5-те най-важни въпроса за интервю за нефункционално тестване?
Ако се подготвяте за интервю за работа в областта на тестването на софтуер, интервюиращият може да ви зададе въпроси за нефункционалното тестване, за да се увери, че разбирате как работи този важен етап от тестването на софтуер. Подгответе се за интервюто, като предварително подготвите ефективни отговори на често срещани въпроси.
● По какъв начин подходите и методите, които използвате при нефункционалното тестване, се различават от тези, които използвате при функционалното тестване?
● По какво се различава нефункционалното тестване от функционалното тестване?
● Какви различни видове нефункционално тестване съществуват?
● Как определяте приоритетите на функционалните тестове и тестовите случаи?
● На кой етап от тестването на софтуера обикновено се извършва функционално тестване?
3. Най-добрите уроци по нефункционално тестване в YouTube
Ако предпочитате да учите чрез гледане на видеоклипове, може да намерите уроците в YouTube за нефункционално тестване за полезен начин да научите повече за този вид тестване на софтуер.
По-долу са представени някои от най-добрите уроци по тестване на софтуер, достъпни в YouTube днес.
Какво е нефункционално тестване на софтуер? Учебник по тестване на софтуер
Помощ за тестване на софтуер: Нефункционално тестване
Нефункционално тестване при тестването на софтуер
Посещение на W3Schools
Функционално и нефункционално тестване
4. Как да поддържаме нефункционални тестове
Правилното поддържане на тестовете гарантира, че тестовете на софтуера могат да се повтарят, без да се нарушава качеството на резултатите от тестовете.
Чрез поддържането на нефункционални тестове можете да гарантирате, че тестването на всеки етап от процеса на разработка е адекватно и че тестовете ви винаги се актуализират в съответствие с постоянно променящия се код.
Можете да поддържате нефункционални тестове, като следвате нашите съвети по-долу.
● Ясна комуникация в екипа за тестване при създаване на тестови случаи и писане на документация
● Винаги следвайте най-добрите практики за проектиране на тестове
● Преоценка на протоколите за изпитване на различни етапи от процеса на изпитване
● Актуализирайте промените в теста си в процеса на работа
Обмисляне на бъдещи проекти при извършване на промени в текущите тестове
5. Нефункционалното тестване „черна кутия“ ли е или „бяла кутия“?
Нефункционалното тестване е вид тестване на „черна кутия“, което означава, че тестващите не се интересуват от вътрешната работа на системата, а само от нейните външни резултати.
Това контрастира с тестването на „бялата кутия“, при което се тества начинът, по който системата работи вътрешно. Примерите за тестване в бялата кутия включват тестване на единици и интеграционно тестване.
Тестването на функционални и нефункционални изисквания са примери за тестване на черна кутия. Това означава, че за да извършват тестване на черна кутия, тестерите не се нуждаят от напреднали технически умения или познания по компютърно програмиране, нито от това да научат как да внедряват системите, които тестват.