Въведение в тестване на бяла кутия

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

Какво е тестване на бяла кутия?

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

При тестване в Бяла кутия тестерът може да види целия код на програмата и той има за задача да провери потока как работят входовете и изходите в програмата. За разлика от тестването с черни кутии, което е по-фокусирано върху тестване на функционалността на програмата, White Box Testing се занимава с тестване на вътрешните структури на програмата. Погледът върху програмата по този начин ни позволява да работим върху подобряване на дизайна, използваемостта и правим продукта по-сигурен.

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

Какво прави тестването с бяла кутия различно от тестването на черната кутия

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

С други думи, вместо да разглеждаме програмата отвън, подходът на White Box Testing вижда вътрешния код и го тества.

Как се извършва тестване на бяла кутия?

Можем да разделим процеса на тестване на бяла кутия на две основни стъпки.

1. Разбиране на предоставения код

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

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

2. Създаване на тестови каси и тяхното изпълнение

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

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

Пример за тестване на бяла кутия

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

print (int x, int y) (
int sum = x + y;
If ( sum > 0 )
Print ( "Positive", result )
Else
Print ( "Negative", result )
)

Както обсъждахме по-рано, целта на White Box Testing е да премине през всички клонове, цикли и оператори, които присъстват в кода. Като се има предвид, че можем да направим 2 тестови случая, един, където и двата входа са положителни, и друг, където и двата входа са отрицателни цели числа.

Пример:

  • A = 10 и B = 20
  • A = -10 и B = -20

Техники за тестване на бяла кутия

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

Следват някои техники за анализ на покритието:

  • Покритие на извлеченията: При този метод се опитваме да пресечем всички изявления в кода поне един път. Това гарантира, че целият код е тестван.
  • Покритие на клона: Този метод се планира да премине всеки клон на точките за решение в кода. Това гарантира, че всички решения са тествани поне веднъж.

Има и някои други техники за тестване, ето само няколко:

  • Обхват на състоянието: В тази техника на тестване ние се уверяваме, че всички условия са обхванати в кода, например:

READ A, B
IF (A == 0 || B == 0)
PRINT '0'

Както можете да видите, тук имаме 2 условия: A == 0 и B == 0. Сега тези условия получават ИСТИНСКИ и ЛЕЖНИ като стойности. Един възможен пример може да бъде:

# TC1 - A = 0, B = 110
# TC2 - A = 10, B = 0

  • Многословно покритие: Това е малко по-усъвършенствано от последното. Както можете да се досетите, тестваме всички възможни комбинации и всички възможни резултати поне веднъж. Ето един достоен пример:

READ A, B
IF (A == 0 || B == 0)
PRINT '0'

# TC1: A = 0, B = 0
# TC2: A = 0, B = 10
# TC3: A = 110, B = 0
# TC4: A = 110, B = 5

Следователно. Изискваме 4 тестови случая за 2 условия.

Следователно, ако има n условия, ще ни бъдат нужни 2 n тестови случая.

  • Основно тестване на пътя: В тази техника за тестване на бяла кутия правим графика на контролния поток и след това изчисляваме нейната цикломатична сложност, която е броят на независимите пътеки. Използвайки цикломатичната сложност, можем да намерим минималния брой тестови случаи, които можем да проектираме за всеки независим път на графиката на потока.
  • Loop тестване: Loops са един от най-използваните инструменти в оръжието на програмист. Тъй като те са в основата на толкова много алгоритми, има смисъл само да има техника за тестване, базирана на контури. Може да има 3 вида бримки: Прости, вложени и свързани. Нека да разгледаме как тестер ще се справи с технологиите от тези видове:

1. Simple Loops: За цикъл, който е прост в дизайна и има размер n, можем да проектираме някои тестови случаи, които правят следното:

  • Пропуснете каза цикъла.
  • Преминете цикъла само веднъж.
  • Имайте 2 прохода
  • Имайте произволен брой проходи, който е по-малък от неговия размер.
  • n-1 и n + 1 преминават през контура.

2. Вложени вратички: За код с вложени цикли започваме с най-вътрешния цикъл и след това излизаме навън, докато стигнем до най-външния контур.

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

Предимства

Сега, когато видяхме какъв е този метод на тестване и как работи. Нека да разгледаме някои от плюсовете на това.

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

Недостатъци

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

Инструменти за тестване на бяла кутия

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

  • JSUnit.net

Това е инструмент за тестване на JavaScript. JSUnit е част от Junit и неговата рамка за тестване с отворен код, която може да се използва за тестване на Бяла кутия. JSUnit е напълно отворен код под GNU Public License 2.0, което означава, че дори и за търговска употреба, разработчикът не трябва да плаща лицензионна такса.

  • CppUnit

Точно като JSUnit, CppUnit също се счита за част от JUnit. Инструментът може да извежда в обикновен текст или XML формат, в зависимост от нуждите на тестера и може да създава единични тестове със собствени класове. CppUnit е лицензиран под LGPL.

  • Veracode

Въпреки че не е безплатен за използване, Veracode има някои мощни инструменти, които могат да се използват за тестване на .NET, C ++, Java и някои други езици. Тестването на White Box може да се направи и за приложения, създадени за настолни, уеб и мобилни приложения.

  • NUnit

Това е единична рамка за тестване и е написана на C #. Инструментът поддържа всички налични .Net езици и също така поддържа тест, управляван от данни. Функционално, той може да работи както при паралелно, така и при едновременно изпълнение и може да осигури рамка на класа и приложения за тестване на бегачи. Една забележителна характеристика на NUnit, че е сравнително лесен за използване.

  • JUnit

Както можете да се досетите от името му, JUnit е инструмент за автоматизиране на тестване на устройства за Java. Фургонът JUnit е лесно интегриран с IDE, като eclipse, Macen ACT и др. Той може да поддържа тестово развитие и може да синхронизира съществуващите тестове и с новосъздадените веднъж. JUnit е напълно отворен код и безплатен за използване за всякакъв вид разработка на Java.

  • CSUnit

Точно като Nunit, CSUnit е създаден да поддържа тестване на единици в. Net Framework. Той поддържа езици като C # и VB.Net. CSUnit има вградена поддръжка за факторинг практика и други видове практики, които се използват в подхода на гъвкаво развитие на SDLC.

заключение

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

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

Препоръчителни статии

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

  1. Въпроси за интервю за тестване на софтуер
  2. Кариери в тестване на софтуер
  3. Въпроси за интервю за игри за тестване
  4. Въпроси за интервю за тестване на ETL
  5. Кодово покритие срещу тестово покритие | Топ 4 разлики за научаване
  6. Инструменти за покритие на кода | Топ 6 инструменти за покритие на кода