Testovanie je pri vývoji softvéru nevyhnutné, aby sa zabezpečilo dodanie vysokokvalitných a bezchybných softvérových produktov. Testeri používajú rôzne techniky testovania softvéru na identifikáciu rôznych problémov, chýb a omylov v softvérových produktoch. Jednou z nich je testovanie bielej skrinky (white-box testing). Zaoberá sa hodnotením vnútornej štruktúry softvéru a detailov implementácie. V tomto článku sa budeme venovať základným aspektom testovania bielej skrinky. Čo je testovanie bielej skrinky?FunkcieČo sa overuje pri testovaní bielej skrinky?Ako vykonať testovanie bielej skrinky?Príklad testovania bielej skrinkyTechniky testovania bielej skrinkyTypy testovania bielej skrinkyVýhody a nevýhody testovania bielej skrinkyVýhodyNevýhodyNástroje na testovanie bielej skrinkyRozdiel medzi testovaním bielej a čiernej skrinkyZáver Čo je testovanie bielej skrinky? Testovanie bielej skrinky je technika testovania softvéru, ktorá testuje vnútorný dizajn systému, štruktúru zdrojového kódu, použité dátové štruktúry a pracovné detaily. Jeho hlavným cieľom je zlepšiť návrh softvéru, vstupno-výstupný tok, použiteľnosť a bezpečnosť. Nazýva sa aj transparentné testovanie, štrukturálne testovanie a testovanie sklenenej skrinky. Realizácia tejto techniky testovania si vyžaduje, aby testeri poznali kód systému, jeho architektúru a detaily implementácie. Na základe týchto znalostí vytvárajú testovacie prípady a vykonávajú ich s cieľom overiť správnosť systému na úrovni kódu. Preto sa toto testovanie nazýva aj testovanie založené na kóde. Vo všeobecnosti vývojári vykonávajú testovanie bielej skrinky. Majú úplné znalosti o zdrojovom kóde a vnútornom fungovaní softvéru. V niektorých prípadoch ho však môžu vykonávať aj odborníci na zabezpečenie kvality (QA) a testeri, ktorí rozumejú zložitému kódu. Táto technika testovania sa nazýva White Box (biela skrinka), pretože vývojári alebo testeri nahliadajú do vnútorného fungovania systému z jeho vonkajšej schránky. Uplatňuje sa na prvých dvoch úrovniach testovania softvéru – unit testovanie a integračné testovanie. Testovanie jednotiek overuje každý softvérový modul samostatne. Následne integračné testovanie logicky spája testované moduly a testuje ich interakciu alebo komunikáciu. Funkcie Prístup k zdrojovému kódu: Testovanie bielej skrinky poskytuje prístup k zdrojovému kódu softvéru. To pomáha overiť jednotlivé funkcie a moduly. Analýza pokrytia kódu: Pokrytie kódu je metrika, ktorá určuje množstvo kódu vykonaného počas testovania. Testovanie bielej skrinky analyzuje pokrytie kódu a odhaľuje netestované oblasti zdrojového kódu. Odhaľovanie logických chýb: Pomáha identifikovať logické chyby, ako sú nekonečné cykly a nesprávne podmienené príkazy. Optimalizácia kódu: Odhaľuje problémy s výkonom, oblasti kódu, ktoré je potrebné zlepšiť, a iné problémy. Vývojári alebo testeri pracujú na odstránení týchto problémov a optimalizujú zdrojový kód. Testovanie bezpečnosti: Vývojári alebo testeri majú prístup k zdrojovému kódu softvéru a poznajú jeho vnútorné fungovanie. Preto môžu identifikovať bezpečnostné zraniteľnosti. Čo sa overuje pri testovaní bielej skrinky? Testovanie bielej skrinky pri testovaní softvéru hodnotí zdrojový kód softvéru s cieľom overiť nasledujúce parametre: Vnútorné bezpečnostné zraniteľnosti. Každý objekt, funkciu a príkaz zdrojového kódu jednotlivo. Funkčnosť podmienených cyklov. Poškodené, neúplné a zle štruktúrované cesty kódu. Vstupný a výstupný tok (input and output flow). Stručne povedané, táto technika testovania overuje pracovný tok softvéru. Zahŕňa poskytnutie súboru vstupov a porovnanie očakávaných a skutočných výstupov. Ak sa skutočný výstup nezhoduje s očakávaným, má to za následok error alebo bug. Ako vykonať testovanie bielej skrinky? Vo všeobecnosti vývojári alebo testeri overujú aplikácie pomocou tejto techniky testovania softvéru v dvoch krokoch: Analýza zdrojového kódu základným krokom je pochopenie a analýza zdrojového kódu aplikácie. Testeri alebo vývojári, bez ohľadu na to, kto vykonáva testovanie, by mali mať podrobné znalosti o vnútornom fungovaní aplikácie a štruktúre zdrojového kódu. Okrem toho by mali zvážiť zavedenie postupov bezpečného kódovania tým, že budú mať bezpečnosť ako primárny faktor. To im pomôže vytvoriť účinné testovacie prípady na odhalenie potenciálnych bezpečnostných chýb a zabezpečiť maximálne percento pokrytia testov. Vytváranie a vykonávanie testovacích prípadov testeri alebo vývojári vytvárajú a vykonávajú viacero malých testovacích prípadov na testovanie jednotlivých procesov aplikácie. Tým sa zabezpečí, že zdrojový kód má správny tok a štruktúru. No tento krok si vyžaduje mimoriadne podrobné znalosti zdrojového kódu. Preto ho zvyčajne vykonávajú vývojári. Príklad testovania bielej skrinky Teraz vieme, že cieľom testovania bielej skrinky je overiť štruktúru kódu, ako sú príkazy cyklu, podmienené príkazy, rozhodovacie vetvy atď. Pochopíme ho na jednoduchom príklade: Test (a, b) { int n; if (n % 2 ==0) { print("Párne číslo") } else { print("Nepárne číslo") } } Na overenie tohto kódu máme nasledujúce dva testovacie prípady: n = 25 n = 50 Pre prvý testovací prípad, n = 25, podmienka if neplatí. Tok programu sa preto presunie do bloku else a vypíše príkaz v ňom. V druhom testovacom prípade n = 50 je podmienka if pravdivá a príkaz v nej sa vykoná. Týmto spôsobom testovanie bielej skrinky prešlo každý riadok zdrojového kódu aplikácie a odhalilo potenciálne chyby na úrovni kódu. Techniky testovania bielej skrinky Rôzne typy techník testovania bielej skrinky sú tieto: 1. Pokrytie výrokov (statement coverage) Táto technika si vyžaduje prejsť a otestovať každý príkaz v zdrojovom kóde aspoň raz. Výsledkom je, že sa precvičí celý zdrojový kód. Pokrytie príkazov určuje percento zdrojového kódu, ktoré konkrétna sada testovacích prípadov precvičí. Vzorec pre pokrytie výrokov je: Pokrytie výrokov = (počet vykonaných výrokov / celkový počet výrokov) * 100 2. Pokrytie rozhodnutí/pokrytie vetiev (decision coverage/branch coverage) Najlepším príkladom vetvy (rozhodovacieho bodu) v programovaní je príkaz „if“. Má dve vetvy – True a False. Technika pokrytia vetvy zaisťuje, že každá vetva v zdroji sa vykoná aspoň raz. Pokrytie vetiev znamená percento vetiev alebo rozhodovacích bodov vykonaných počas testovania. Pokrytie vetvy = (počet realizovaných vetiev / celkový počet vetiev) * 100 % 3. Pokrytie stavu (condition coverage) Testovanie podmienok zahŕňa testovanie jednotlivých podmienok na výsledky TRUE aj FALSE. Takže získanie 100% pokrytia stavu vyžaduje uplatnenie každej podmienky pre PRAVDIVÉ aj NEPRAVDIVÉ výsledky. Pre n podmienok budeme mať 2n testovacích skriptov. Primárnym cieľom pokrytia podmienok je určiť výstup každej podmienky v zdrojovom kóde. Testuje však iba tie podmienky s logickými operandami, ktorých výsledok je buď pravdivý alebo nepravdivý. 4. Testovanie viacerých podmienok Jeho cieľom je otestovať všetky možné kombinácie každého stavu vo vetve. Pochopme to na príklade. if (A||B) print C Testovacie prípady pre vyššie uvedený kód budú: A=TRUE, B=TRUE A=TRUE, B=FALSE A=FALSE, B=TRUE A=FALSE, B=FALSE Náš príklad má 2 podmienky A a B a 4 testovacie prípady. Ak by boli 3 výrazy, počet testovacích prípadov by bol 8. Preto pre 100 % pokrytie budeme mať 2n testovacích skriptov. To je veľmi vyčerpávajúce a je veľmi ťažké dosiahnuť 100 % pokrytie. 5. Testovanie ciest ( Path testing) Testovanie ciest zabezpečuje, aby sa všetky možné cesty v zdrojovom kóde vykonali aspoň raz. Zahŕňa vytvorenie grafu toku riadenia pomocou zdrojového kódu alebo vývojového diagramu. Neskôr určuje cyklomatickú zložitosť, ktorá sa týka nezávislých ciest. Testeri teda vytvárajú minimálne testovacie prípady pre takéto nezávislé cesty. Pokrytie ciest = (počet vykonávaných ciest / celkový počet ciest v programe) x 100 % 6. Testovanie loop cyklov Cykly sú bežnými programovými konštrukciami a používajú sa vo väčšine veľkých programov. Testovanie cyklov je nevyhnutné, pretože existuje vysoká pravdepodobnosť výskytu chýb na začiatku alebo na konci cyklu. Preto vykonávanie testovania odhaľuje chyby alebo omyly v každom konkrétnom cykle. Hlavnou chybou, ktorá sa vyskytuje v cykloch, sú nesprávne indexy. Typy testovania bielej skrinky Tu sú rôzne typy testovania bielej skrinky: Unit testovanie: Toto je prvá úroveň testovania softvéru. Testuje každý modul aplikácie, nazývaný jednotka, individuálne na jeho správnosť. Zabezpečuje, aby každá zložka fungovala podľa očakávaní. Integračné testovanie: Toto príde po unit testoch. Kombinuje jednotlivé testované komponenty logicky a potvrdzuje vzájomnú interakciu medzi nimi. Jeho cieľom je odhaliť všetky chyby v interakcii komponentov. Penetračné testovanie bielej skrinky: Testeri majú úplný prístup k zdrojovému kódu a sieti aplikácie, k IP a k údajom o serveroch vrátane hesiel a máp. Hlavným cieľom testovania preniknutia je odhaliť oblasti zdrojového kódu s bezpečnostnými slabinami. Mutačné testovanie bielej skrinky: Ako naznačuje názov, testovanie mutácií závisí od zmien. Testeri vykonávajú drobné úpravy zdrojového kódu, aby skontrolovali, či vykonanie skúšobných prípadov na ňom neodhalilo žiadne chyby. Ak skúšobné prípady uspejú, znamená to chybu vo zdrojovom kóde. Ak však skúšobné prípady zlyhajú, zdrojový kód je bez chýb. Výhody a nevýhody testovania bielej skrinky Poďme teraz objasniť výhody a nevýhody testovania bielej skrinky. Výhody Testovanie bielej skrinky je komplexné a podrobné, pretože vykonáva každý riadok zdrojového kódu. Identifikuje potenciálne skryté chyby, chyby a bezpečnostné zraniteľnosti. Ich oprava si vyžaduje odstránenie niektorých riadkov zdrojového kódu, čo vedie k optimalizácii kódu. Zabezpečuje, aby zdrojový kód bol v súlade s normami kódovania a optimalizoval výkonnosť. Aj keď GUI nie je k dispozícii, testovanie sa začína na začiatku životného cyklu softvéru (SDLC). Testovacie prípady sa ľahko automatizujú. Transparentnosť zdrojového kódu pomáha určiť presný typ vstupných údajov potrebných na testovanie. Testeri alebo vývojári môžu vytvoriť testovacie prípady, ktoré zabezpečia maximálne pokrytie testov. Nevýhody Testovanie bielej skrinky si vyžaduje hĺbkové vedomosti o programovaní, aby sa pochopil a analyzoval zdrojový kód systému a vytvorili sa okolo neho testovacie prípady. Zameriava sa predovšetkým na testovanie vnútorného fungovania systému. Veľké aplikácie vyžadujú veľa času na testovanie bielej skrinky, pretože majú dlhé zdrojové kódy. Malá zmena zdrojového kódu si vyžaduje opäť napísať testovacie prípady. Existuje veľká pravdepodobnosť, že to bude mať za následok chyby vo výrobe. Nástroje na testovanie bielej skrinky Tu je zoznam niektorých bežne používaných nástrojov na testovanie bielej skrinky: Veracode: Poskytuje súbor nástrojov, ktoré pomáhajú identifikovať a napraviť chyby v aplikáciách vyvinutých s použitím rôznych programových jazykov, ako sú .NET, C + +, Java atď. Môže tiež otestovať desktopové a mobilné aplikácie na zabezpečenie bezpečnosti. EclEmma: Je to nástroj na pokrytie voľného kódu pre Java aplikácie. Bol navrhnutý na vykonanie testov a analýzu výsledkov v pracovnom nástroji Eclipse. JSUnit: JSUnit je súčasťou JUnit, frameworku pre unit testovanie pre Java aplikácie. JSUnit je nástroj na unit testovanie, ktorý je open-source pre testovanie JavaScript. Je k dispozícii pod GNU General License 2.0. NUnit: Je to testovací framework vyvinutý v C # na vykonávanie testovania na základe údajov (data-driven testing) na .NET aplikáciách. Podporuje súbežné vykonávanie testov bez akéhokoľvek manuálneho zásahu. CppUnit: Je tiež súčasťou JUnit ako JSUnit. Je k dispozícii na unit testovanie C + +. Rozdiel medzi testovaním bielej a čiernej skrinky Nasledujúca tabuľka zdôrazňuje primárne rozdiely medzi testovaním čiernej a bielej skrinky: White Box TestingBlack Box TestingVyžaduje znalosť vnútornej štruktúry a fungovania aplikácie.Nevyžaduje žiadne interné znalosti aplikácie.Môžeme otestovať mnoho podrobných aspektov aplikácie.Testujeme end-to-end funkčnosť aplikácie.Toto testovanie vykonávajú vývojári alebo profesionáli QA s dobrými znalosťami programovania a architektúry aplikácií.Testovanie čiernej skrinky má na starosti nezávislý tím kontroly kvality.Platí pre nižšie úrovne testovania – unit testovanie a integračné testovanie.Platí pre vyššie úrovne testovania testovanie systému a akceptačné testovanie, kde musíme testovať aplikáciu ako celok. Záver Testovanie bielej skrinky je softvérová testovacia technika, ktorá vyžaduje, aby testeri mali komplexné znalosti o vnútornom fungovaní a štruktúre kódov aplikácie. Preto odhaľuje štrukturálne a bezpečnostné medzery. Primárnym cieľom je overiť funkčnosť a správnosť aplikácie na úrovni kódov. Hoci je táto testovacia technika časovo náročná a vyžaduje si veľa úsilia, je to jediný spôsob, ako zaistiť, aby ste testovali každý riadok svojho zdrojového kódu. Ak sa vykoná správne, testovanie bielej skrinky výrazne zlepší kvalitu softvéru.The post White Box Testing – testovanie bielej skrinky first appeared on IT tester.
Testovanie čiernej skrinky (black-box testing) sa označuje aj ako testovanie založené na špecifikácii testovaného systému. Na rozdiel od testovania bielej skrinky (white-box testing) sa pri testovaní čiernej skrinky nevyžaduje znalosť vnútornej architektú
prejsť na článokČo je akceptačné testovanie?Typy akceptačného testovaniaVýznam akceptačného testovaniaZáver Čo je akceptačné testovanie? Akceptačné testovanie je posledná úroveň testovania softvéru, pri ktorej sa testuje súlad systému s obchodnými požiadavkami. Vyk
prejsť na článokAké sú rôzne techniky návrhu testov?Techniky statického návrhu testov1. Manuálne techniky statického návrhu2. Techniky statického návrhu s použitím nástrojovTechniky dynamického testovania Aké sú rôzne techniky návrhu testov? Techniky návrhu testov
prejsť na článokTestovanie softvéru alebo skôr vyčerpávajúce testovanie softvéru je časovo a zdrojovo veľmi náročná činnosť. Aby sme mohli efektívne testovať akúkoľvek aplikáciu v čo najlepšom čase a s optimálnymi zdrojmi, používame rôzne techniky návrhu testov. Jednou z
prejsť na článokA už tu máme výsledky testovanie EKO produktu - tentokrát Almawin Tekutý prací EKO prostriedok Sport & Outdoor. Dve naše zákazníčky od nás produkt dostali a vyskúšali. Prečítajte si, aké boli ich skúsenosti.
prejsť na článok