Какво е динамично тестване? Видове, техники и пример
Динамично тестване
Динамично тестване е метод за тестване на софтуер, използван за тестване на динамичното поведение на софтуерния код. Основната цел на динамичното тестване е да се тества поведението на софтуера с динамични променливи или променливи, които не са постоянни и намиране на слаби места в средата за изпълнение на софтуера. Кодът трябва да се изпълни, за да се тества динамичното поведение.
Всички знаем, че тестването е проверка и валидиране и са необходими 2 Vs, за да бъде тестването пълно. От 2 Vs, проверката се нарича статично тестване, а другото „V“, валидирането е известно като динамично тестване.
Пример за динамично тестване
Нека разберем как се прави динамично тестване с пример:
Да предположим, че тестваме страница за вход, където имаме две полета, казващи „Потребителско име“ и „Парола“, а потребителското име е ограничено до буквено-цифрово.
Когато потребителят въведе потребителско име като „Guru99“, системата приема същото. Когато потребителят влезе като Guru99@123, приложението извежда съобщение за грешка. Този резултат показва, че кодът действа динамично въз основа на въведеното от потребителя.
Динамичното тестване е, когато работите с действителната система, като предоставяте вход и сравнявате действителното поведение на приложението с очакваното поведение. С други думи, работа със системата с цел намиране на грешки.
Така че въз основа на горните твърдения можем да кажем или заключим, че динамичното тестване е процес на валидиране на софтуерни приложения като краен потребител в различни среди за изграждане на правилния софтуер.
Какво прави динамичното тестване?
Основната цел на динамичните тестове е да се гарантира, че софтуерът работи правилно по време и след инсталирането на софтуера, като се гарантира стабилно приложение без големи недостатъци (това твърдение е направено, защото никой софтуер не е без грешки, само тестването може да покаже наличие на дефекти и не липса)
Основната цел на динамичния тест е да осигури последователност на софтуера; нека обсъдим това с пример.
В приложение за банкиране откриваме различни екрани като раздел Моите акаунти, Превод на средства, Bill Плащане и др. Всички тези екрани съдържат поле за сума, което приема някои знаци.
Да кажем, че полето Моите акаунти показва сумата като 25,000 и прехвърляне на средства като $25,000 намлява Bill платен екран като $25000 въпреки че сумата е същата, начинът, по който се показва сумата, не е същият, което прави софтуера непоследователен.
Съгласуваността не се ограничава само до функционалността, но се отнася и до различни стандарти като производителност, използваемост, съвместимост и т.н., следователно става много важно да се извършва динамично тестване.
Видове динамично тестване
Динамичното тестване се класифицира в две категории
- Бял Box Тестване
- черно Box Тестване
Изображението по-долу ни дава представа за видовете динамично тестване, нива на тестване и т.н.
Нека обсъдим накратко всеки тип тестване и предназначението му
Бял Box Тестване - Бял Box Тестване е метод за тестване на софтуер, при който вътрешната структура/дизайн е известна на тестера. Основната цел на Уайт Box тестването е да се провери как системата работи въз основа на кода. Изпълнява се главно от Разработчиците или Уайт Box Тестери, които имат познания по програмиране.
черно Box Тестване - черно Box Тестване е метод за тестване, в който вътрешната структура/код/дизайн е НЕ познати на тестера. Основната цел на това тестване е да провери функционалността на тестваната система и този тип тестване изисква изпълнение на пълния тестов пакет и се извършва главно от Тестерите и не са необходими познания по програмиране.
- черно Box Тестването отново се класифицира в два вида.
Те са
- Функционално тестване
- Нефункционално тестване
Функционално тестване:
Функционалното тестване се извършва, за да се провери дали всички разработени функции са в съответствие с функционалните спецификации и се извършва чрез изпълнение на функционални тестови случаи, написани от екипа за QA, във фаза на функционално тестване системата се тества чрез предоставяне на вход, проверка на изхода и сравняване на действителните резултати с очакваните резултати.
Има различни нива на функционално тестване, от които най-важните са
- Единично тестване – Като цяло Unit е малко парче код, който може да се тества, Единично тестване се извършва на отделна единица софтуер и се извършва от разработчици
- Тестване на интеграцията - Тестване на интеграцията е тестването, което се извършва след Unit Testing и се извършва чрез комбиниране на всички отделни единици, които могат да се тестват и се извършва от разработчици или тестери
- Тестване на системата - Тестване на системата се извършва, за да се гарантира дали системата работи според изискванията и обикновено се изпълнява, когато цялата система е готова, извършва се от тестери, когато компилацията или кодът се пуснат на QA екипа
- Тест за приемане – Тестването за приемане се извършва, за да се провери дали системата отговаря на бизнес изискванията и е готова за използване или готова за внедряване и обикновено се извършва от крайните потребители.
Нефункционално тестване: Нефункционалното тестване е техника за тестване, която не се фокусира върху функционалните аспекти и се концентрира главно върху нефункционалните атрибути на системата, като изтичане на памет, производителност или устойчивост на системата. Нефункционалното тестване се извършва на всички тестови нива.
Има много нефункционални техники за тестване, най-важните от които са
- Тестване на производителността - Тестване на производителността се извършва, за да се провери дали времето за реакция на системата е нормално според изискванията при желаното натоварване на мрежата.
- Тестване за възстановяване – Тестването за възстановяване е метод за проверка на това колко добре системата може да се възстанови от сривове и хардуерни повреди.
- Тест за съвместимост – Извършва се тестване за съвместимост, за да се провери как системата се държи в различни среди.
- Тестване на сигурността - Тестване на сигурността се извършва, за да се провери надеждността на приложението, т.е. да се гарантира, че само оторизираните потребители/роли имат достъп до системата
- Тестване на използваемостта - Тестване на използваемостта е метод за проверка на използваемостта на системата от крайните потребители, за да се провери колко удобни са потребителите със системата.
Техники за динамично тестване
Техники за динамично тестване in STLC се състои от различни задачи като анализ на изискванията за тестовете, планиране на тестове, проектиране и изпълнение на тестов случай, настройка на тестова среда, изпълнение на тестов случай, докладване на грешки и накрая затваряне на теста. Всички задачи в техниките за динамично тестване зависят от изпълнението на предишната задача в процеса на тестване.
В STLC можем да кажем, че действителният процес на динамично тестване започва от дизайна на тестовия случай, нека обсъдим подробно всяка дейност.
Преди да влезем в процеса, нека обсъдим стратегията, която трябва да се следва за динамичното тестване.
Стратегията за тестване трябва да се фокусира главно върху наличните ресурси и времевата рамка. Въз основа на тези фактори целта на тестването, обхватът на тестването, фазите или циклите на тестването, типът среда, предположенията или предизвикателствата, пред които може да се изправи, рисковете и т.н., трябва да бъдат документирани.
След като стратегията е дефинирана и приета от ръководството, тогава започва действителният дизайн на тестовия случай на процеса
Какво е проектиране и внедряване на тестове
В тази фаза ние идентифицираме,
- Функции за тестване
- Изведете тестовите условия
- Извлечете елементите на покритието
- Извлечете тестовите случаи
Настройка на тестовата среда
Трябва да гарантираме, че тестовата среда винаги трябва да бъде подобна на производствената среда, в тази фаза трябва да инсталираме компилацията и да управляваме тестовите машини.
Изпълнение на теста
По време на тази фаза действително се изпълняват тестови случаи.
Докладът за грешка е заловен
Въз основа на изпълнението, ако очакваните и действителните резултати не са еднакви, тогава тестовият случай трябва да бъде маркиран като неуспешен и трябва да бъде регистрирана грешка.
Предимства на динамичното тестване
- Динамичното тестване може да разкрие непокритите дефекти, които се считат за твърде трудни или сложни и които не могат да бъдат покрити чрез статичен анализ
- При динамичното тестване ние изпълняваме софтуера от край до край, като гарантираме софтуер без грешки, което на свой ред повишава качеството на продукта и проекта.
- Динамичното тестване се превръща в основен инструмент за откриване на всякакви заплахи за сигурността
Недостатъци на динамичното тестване
- Динамичното тестване отнема много време, защото изпълнява приложението/софтуера или кода, който изисква огромно количество ресурси
- Динамичното тестване увеличава цената на проекта/продукта, тъй като не започва рано в жизнения цикъл на софтуера и следователно всички проблеми, коригирани на по-късни етапи, могат да доведат до увеличение на разходите.
Заключение
In Софтуерно инженерство, Проверката и Валидирането са две мерки, използвани за проверка дали софтуерният продукт отговаря на спецификациите на изискванията. Статичното тестване включва проверка, докато динамичното тестване включва валидиране. Заедно те помагат да се достави икономически ефективен качествен софтуер.