white box testing complete guide with techniques
Co je to testování bílé skříňky?
Pokud pojdeme podle definice, „testování v bílé krabici“ (známé také jako čiré, skleněné nebo strukturální testování) je testovací technika, která hodnotí kód a vnitřní strukturu programu.
Testování bílé skříňky zahrnuje pohled na strukturu kódu. Pokud znáte vnitřní strukturu produktu, lze provést testy, které zajistí, že interní operace budou prováděny podle specifikace. A všechny vnitřní komponenty byly adekvátně procvičeny.
Co se naučíte:
- Moje zkušenost
- Rozdíl mezi testováním White-Box a Black-Box
- Kroky k provedení WBT
- Typy a techniky testování bílé skříňky
- Příklad testování bílé skříňky
- Nástroje pro testování bílé krabice
- Závěr
- Doporučené čtení
Moje zkušenost
Je to téměř deset let, co jsem v oblasti testování softwaru, a zatím jsem si všiml, že testeři jsou nejvíce nadšení v celém softwarovém průmyslu.
Hlavním důvodem je - tester se má vždy co učit. Ať už jde o doménu, proces nebo technologii, tester může mít kompletní vývoj, pokud chce.
Ale jak se říká 'Vždy existuje temná stránka' .
Testeři se také skutečně vyhýbají typu testování, které považují za velmi komplikované a je pro vývojáře hračkou. Ano, „Testování bílé skříňky“.
Dosah
White Box Testing je pokrytí specifikace v kódu:
1. Pokrytí kódu
2. Pokrytí segmentu: Zajistěte, aby byl každý příkaz kódu spuštěn jednou.
3. Pokrytí větve nebo testování uzlů: Pokrytí každé větve kódu ze všech možných bylo.
4. Pokrytí složených podmínek: Pro více podmínek otestujte každou podmínku s více cestami a kombinací různých cest, abyste tuto podmínku dosáhli.
5. Testování základní cesty: Každá nezávislá cesta v kódu je použita k testování.
6. Testování toku dat (DFT): V tomto přístupu sledujete konkrétní proměnné prostřednictvím každého možného výpočtu, čímž definujete sadu mezilehlých cest prostřednictvím kódu. DFT má tendenci odrážet závislosti, ale je to hlavně prostřednictvím sekvencí manipulace s daty. Stručně řečeno, každá datová proměnná je sledována a její použití je ověřeno. Tento přístup má tendenci odkrývat chyby, jako jsou použité proměnné, ale ne inicializovány, nebo deklarovány, ale nepoužívány atd.
7. Testování cesty: Testování cesty je místo, kde jsou definovány a pokryty všechny možné cesty kódem. Je to časově náročný úkol.
8. Testování smyčky: Tyto strategie se týkají testování jednotlivých smyček, zřetězených smyček a vnořených smyček. Nezávislé a závislé kódové smyčky a hodnoty jsou testovány tímto přístupem.
Proč provádíme WBT?
Ujistit se:
- Že všechny nezávislé cesty v modulu byly procvičeny alespoň jednou.
- Všechna logická rozhodnutí ověřena na jejich skutečných a nepravdivých hodnotách.
- Všechny smyčky prováděné na jejich hranicích a v rámci jejich provozních hranic platnost interních datových struktur.
Chcete-li zjistit následující typy chyb:
- Logická chyba má tendenci se vkrádat do naší práce, když navrhujeme a implementujeme funkce, podmínky nebo ovládací prvky, které jsou mimo program
- Chyby v návrhu způsobené rozdílem mezi logickým tokem programu a skutečnou implementací
- Typografické chyby a kontrola syntaxe
Vyžaduje toto testování podrobné programovací dovednosti?
Musíme psát testovací případy které zajišťují úplné pokrytí logiky programu.
K tomu potřebujeme dobře znát program, tj. Měli bychom znát specifikaci a kód, který má být testován. U tohoto typu testování je vyžadována znalost programovacích jazyků a logiky.
Omezení
Není možné testovat každou cestu smyček v programu. To znamená, že u velkých systémů není možné důkladné testování.
To neznamená, že WBT není efektivní. Výběr důležitých logických cest a datové struktury pro testování je prakticky možný a efektivní.
Rozdíl mezi testováním White-Box a Black-Box
Jednoduše řečeno:
V rámci testování černé skříňky testujeme software z pohledu uživatele, ale v bílé skříňce vidíme a testujeme skutečný kód.
V testování Black boxu provádíme testování bez vidění interního kódu systému, ale ve WBT vidíme a testujeme interní kód.
Techniku testování bílé skříňky používají vývojáři i testeři. Pomáhá jim pochopit, který řádek kódu je skutečně spuštěn a který ne. To může znamenat, že buď chybí logika, nebo překlep, což může nakonec vést k negativním důsledkům.
Doporučené čtení => Kompletní průvodce testováním Black Box
Kroky k provedení WBT
Krok 1 - Pochopte funkčnost aplikace prostřednictvím jejího zdrojového kódu. Což znamená, že tester musí být dobře obeznámen s programovacím jazykem a dalšími nástroji i technikami používanými k vývoji softwaru.
Krok 2 - Vytvořte testy a proveďte je.
Když diskutujeme o konceptu testování, “ Dosah „Je považován za nejdůležitější faktor. Zde vysvětlím, jak dosáhnout maximálního pokrytí v kontextu testování White boxu.
Přečtěte si také=> Graf příčin a následků - Technika psaní dynamického testovacího případu pro maximální pokrytí
Typy a techniky testování bílé skříňky
Pro každý typ testování bílé skříňky existuje několik typů a různých metod.
Pro referenci viz níže uvedený obrázek.
Dnes se zaměříme hlavně na prováděcí typy testování „Techniky bílé skříňky pro testování jednotek“.
3 hlavní techniky testování bílé krabice:
- Pokrytí prohlášení
- Pokrytí pobočky
- Pokrytí cesty
Všimněte si, že prohlášení, větev nebo pokrytí cesty neidentifikuje žádnou chybu nebo vadu, kterou je třeba opravit. Identifikuje pouze ty řádky kódu, které se buď nikdy neprovedou, nebo zůstanou nedotčené. Na základě toho lze zaměřit další testování.
Pochopme tyto techniky jeden po druhém na jednoduchém příkladu.
# 1) Pokrytí prohlášení:
V programovacím jazyce není prohlášení ničím jiným než řádkou kódu nebo instrukcí, aby počítač porozuměl a podle toho jednal. Příkaz se stane spustitelným příkazem, když se kompiluje a převede na kód objektu a provede akci, když je program v běžícím režimu.
Proto „Pokrytí prohlášení“ , jak název napovídá, jedná se o metodu ověřování, zda je každý řádek kódu spuštěn alespoň jednou.
# 2) Pokrytí pobočky:
„Pobočka“ v programovacím jazyce je jako „prohlášení IF“. Příkaz IF má dvě větve: T rue a False .
Takže v Pokrytí pobočky (nazývané také Pokrytí rozhodnutí) ověřujeme, zda je každá pobočka provedena alespoň jednou.
V případě „prohlášení IF“ budou existovat dvě testovací podmínky:
- Jeden pro ověření skutečné větve a
- Jiné k ověření falešné větve.
Teoreticky je tedy Branch Coverage testovací metodou, která při provádění zajišťuje, že bude provedena každá pobočka z každého rozhodovacího bodu.
# 3) Pokrytí cesty
Pokrytí cesty testuje všechny cesty programu. Jedná se o komplexní techniku, která zajišťuje, že všechny cesty programu budou překonány alespoň jednou. Path Coverage je ještě silnější než Branch coverage. Tato technika je užitečná pro testování složitých programů.
Uveďme si jednoduchý příklad, abychom porozuměli všem těmto technikám testování bílé skříňky.
spouštění portů vs přesměrování portů pro hraní her
Zkontrolujte také=> Různé typy testování
Příklad testování bílé skříňky
Zvažte následující jednoduchý pseudokód:
INPUT A & B C = A + B IF C>100 PRINT “ITS DONE”
Pro Pokrytí prohlášení - ke kontrole všech řádků kódu bychom potřebovali pouze jeden testovací případ.
To znamená:
Pokud uvažuji TestCase_01 bude (A = 40 a B = 70), pak budou provedeny všechny řádky kódu.
Nyní vyvstává otázka:
- Je to dostačující?
- Co když považuji svůj testovací případ za A = 33 a B = 45?
Vzhledem k tomu, že pokrytí prohlášení bude pokrývat pouze pravou stranu, pro pseudokód by k jeho otestování NENÍ dostatečný pouze jeden testovací případ. Jako tester musíme vzít v úvahu také negativní případy.
Proto pro maximální pokrytí musíme zvážit ' Pokrytí pobočky ' , která vyhodnotí podmínky „FALSE“.
V reálném světě můžete přidat příslušná prohlášení, když podmínka selže.
Takže nyní se pseudokód stává:
INPUT A & B C = A + B IF C>100 PRINT “ITS DONE” ELSE PRINT “ITS PENDING”
Vzhledem k tomu, že pokrytí prohlášení nestačí k otestování celého pseudo kódu, vyžadovali bychom pokrytí větve, abychom zajistili maximální pokrytí .
Pro pokrytí pobočky bychom tedy k dokončení testování tohoto pseudokódu vyžadovali dva testovací případy.
TestCase_01 : A = 33, B = 45
TestCase_02 : A = 25, B = 30
Díky tomu vidíme, že každý řádek kódu je proveden alespoň jednou.
Zde jsou odvozené závěry:
- Pokrytí pobočky zajišťuje větší pokrytí než Pokrytí prohlášení.
- Pokrytí pobočky je výkonnější než pokrytí výpisem.
- Samotné 100% pokrytí pobočky znamená 100% pokrytí výpisu.
- 100% pokrytí výpisu však nezaručuje 100% pokrytí pobočky.
Nyní přejdeme k Pokrytí trasy:
Jak již bylo řečeno, pokrytí cesty se používá k testování fragmentů složitého kódu, které v zásadě zahrnují příkazy smyčky nebo kombinaci smyček a příkazů rozhodnutí.
Zvažte tento pseudokód:
INPUT A & B C = A + B IF C>100 PRINT “ITS DONE” END IF IF A>50 PRINT “ITS PENDING” END IF
Abychom zajistili maximální pokrytí, vyžadovali bychom 4 testovací případy.
Jak? Jednoduše - existují 2 rozhodnutí, takže pro každé rozhodnutí bychom potřebovali dvě větve k testování. Jeden pro pravdivý a druhý pro falešný stav. Takže pro 2 výroky rozhodnutí bychom požadovali 2 testovací případy k testování pravé strany a 2 testovací případy k testování falešné strany, což činí celkem 4 testovací případy.
Abychom to zjednodušili, zvažte následující vývojový diagram pseudokódu, který máme:
Abychom měli úplné pokrytí, potřebovali bychom následující testovací případy:
TestCase_01: A = 50, B = 60
TestCase_02 : A = 55, B = 40
TestCase_03: A = 40, B = 65
TestCase_04: A = 30, B = 30
Cesta bude tedy:
Červená čára - TestCase_01 = (A = 50, B = 60)
Modrá čára = TestCase_02 = (A = 55, B = 40)
Oranžová čára = TestCase_03 = (A = 40, B = 65)
Zelená linka = TestCase_04 = (A = 30, B = 30)
*******************
= >> Kontaktujte nás zde navrhnout váš zápis
******************
Nástroje pro testování bílé krabice
Níže je uveden seznam nejlepších testovacích nástrojů v bílé krabici.
# 1) Veracode
Bílé testovací nástroje společnosti Veracode vám pomohou rychle a snadno identifikovat a vyřešit chyby softwaru za sníženou cenu. Podporuje několik aplikačních jazyků, jako je .NET, C ++, JAVA atd., A také vám umožňuje otestovat zabezpečení desktopových, webových i mobilních aplikací. Přesto existuje několik dalších výhod nástroje Veracode. Podrobné informace o testovacích nástrojích Veracode White box najdete na níže uvedeném odkazu.
Odkaz na webovou stránku: Verakód
# 2) EclEmma
EclEmma byla původně navržena pro testovací běhy a analýzu na pracovním stole Eclipse. Je považován za bezplatný nástroj pro pokrytí kódem Java a má také několik funkcí. Chcete-li nainstalovat nebo vědět více o EclEmma, podívejte se na níže uvedený odkaz.
Odkaz na webovou stránku: EclEmma
# 3) RCUNIT
Rámec, který se používá pro testování programů C, se nazývá RCUNIT. RCUNIT lze odpovídajícím způsobem použít na základě podmínek licence MIT. Používání je zdarma a za účelem instalace nebo získání dalších informací o něm zkontrolujte níže uvedený odkaz.
Odkaz na webovou stránku: RCUNIT
# 4) cfix
cfix je jedním z rámců testování jednotek pro C / C ++, jehož jediným cílem je, aby byl vývoj testovacích sad co nejjednodušší a nejjednodušší. Mezitím se cfix obvykle specializuje na režim NT Kernel a Win32. Chcete-li nainstalovat a dozvědět se více o cfix, podívejte se na níže uvedený odkaz
Odkaz na webovou stránku: cfix
# 5) Google Test
Googletest je testovací rámec C ++ společnosti Google. Zjišťování testů, testy smrti, testy parametrizované hodnotou, fatální a nefatální selhání, generování testovacích zpráv XML atd. Je několik funkcí GoogleTest, ale existuje i několik dalších funkcí. Linux, Windows, Symbian, Mac OS X je několik platforem, kde byl použit GoogleTest. V následujících situacíchStahování, zkontrolujte níže uvedený odkaz.
Odkaz ke stažení: Google test
# 6) EMMA
Emma je snadno použitelný bezplatný nástroj pro pokrytí kódu JAVA. Zahrnuje několik funkcí a výhod. Chcete-li stáhnout a dozvědět se více o Emmě, zkontrolujte níže uvedený odkaz.
Odkaz ke stažení: EMMA
# 7) NUnit
jaký je nejlepší bezplatný stahovač hudby?
NUnit je snadno použitelný rámec pro testování jednotek s otevřeným zdrojovým kódem, který k posouzení výsledků testu nevyžaduje žádný manuální zásah. Podporuje všechny jazyky .NET. Podporuje také testy založené na datech a testy běží paralelně pod NUnit. Dřívější vydání NUnit používaly licenci NUnit, ale NUnit 3 je vydáván pod licencí MIT. Obě licence však umožňují bezplatné použití bez jakýchkoli omezení. Chcete-li stáhnout a dozvědět se více o NUnit, podívejte se na níže uvedený odkaz.
Odkaz ke stažení: NUnit
# 8) CppUnit
CppUnit je rámec testování jednotek napsaný v C ++ a je považován za port JUnit. Testovací výstup pro CppUnit může být buď ve formátu XML, nebo v textovém formátu. Vytváří jednotkové testy s vlastní třídou a spouští testy v testovacích sadách. Je licencován pod LGPL. Chcete-li stáhnout a dozvědět se více o CppUnit, podívejte se na níže uvedený odkaz.
Odkaz ke stažení: CppUnit
# 9) JUnit
JUnit je tichý jednoduchý rámec pro testování jednotek, který podporuje automatizaci testů v programovacím jazyce Java. Podporuje hlavně ve vývoji řízeném testem a poskytuje také zprávu o pokrytí testu. Je licencován pod veřejnou licencí Eclipse. Pro bezplatné stažení a pro více informací o JUnit prosím zkontrolujte níže uvedený odkaz.
Odkaz ke stažení: JUnit
#10) JsUnit
JsUnit je považován za port JUnit pro javascript. Jedná se o rámec testování jednotek s otevřeným zdrojovým kódem, který podporuje Javascript na straně klienta. Je licencován pod GNU Public License 2.0, GNU Lesser Public License 2.1 a Mozilla Public License 1.1. Chcete-li stáhnout a dozvědět se více o JsUnit, podívejte se na níže uvedený odkaz.
Odkaz ke stažení: JsUnit
Zkontrolujte také všechny nástroje, které máme uvedeny v seznamu Statická analýza kódu tady .
Neváhejte navrhnout více jednoduchých nebo pokročilých nástrojů, které používáte pro techniku bílé skříňky.
Závěr
Spoléhání se pouze na testování černé skříňky není dostatečné pro maximální pokrytí testem. Musíme mít kombinaci obou technik testování černé skříňky a bílé skříňky pokrývají maximální vady .
Pokud bude provedeno správně, testování White boxu určitě přispěje ke kvalitě softwaru. Je také dobré, aby se testeři podíleli na tomto testování, protože může poskytnout nejvíce „nezaujatý“ názor na kód. :)
Dejte nám vědět, pokud máte nějaké dotazy týkající se metod, o kterých jsme diskutovali v tomto článku.
Doporučené čtení
- Klíčové rozdíly mezi testováním černé skříňky a testováním bílé skříňky
- Black Box Testing: An In-depth Tutorial with examples and Techniques
- Funkční testování vs. nefunkční testování
- Nejlepší nástroje pro testování softwaru 2021 (QA Test Automation Tools)
- Při testování softwaru myslete z krabice!
- Příručka pro testování přenositelnosti s praktickými příklady
- Alfa testování a beta testování (kompletní průvodce)
- Typy testování softwaru: Různé typy testování s podrobnostmi