Home Blog Business Качество на софтуера и автоматизирано тестване — силна инженерна ниша в София
Качество на софтуера и автоматизирано тестване — силна инженерна ниша в София

Качество на софтуера и автоматизирано тестване — силна инженерна ниша в София

Съществува съществена разлика между софтуерното тестване и качеството на софтуерния продукт. За да бъде разбрана тази разлика, е необходимо първо да се разгледа по-пълната дефиниция за софтуер. Според Institute of Electrical and Electronics Engineers (IEEE) понятието „софтуер“ включва няколко основни компонента: компютърна програма, процедури, документация и данни, необходими за работата на компютърната система.

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

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

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

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

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

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

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

В процеса на тестване се използват различни видове тестове, групирани в т.нар. тестови нива. Според ISTQB четирите основни нива на тестване са компонентно тестване, интеграционно тестване, системно тестване и приемно тестване.

Компонентното тестване, известно още като unit testing, има за цел да открива дефекти и да верифицира функционалността на отделни софтуерни компоненти, като модули, програми, обекти, класове и други елементи, които могат да бъдат тествани самостоятелно. Този вид тестване може да се извършва отделно от цялата система, в зависимост от спецификата на проекта. Обикновено то се осъществява с достъп до кода, както и чрез използване на специфични unit testing framework-и или debugging инструменти. Най-често в процеса участва програмистът, който е написал съответния код. Дефектите при компонентното тестване обикновено се коригират своевременно, като невинаги се записват в отделна база данни за дефекти.

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

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

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

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

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

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

Add comment

Sign up to receive the latest updates and news

Информация за IT / ICT фирми регистрирани в София и /или извършващи дейност в столицата.

Контакти

12 "General Gourko", 4 fl., 1000 Sofia, Bulgaria
© 2024 IT / ICT - Invest Sofia. All rights reserved.