white box testing complete guide with techniques
Co to są testy White Box?
Jeśli posłużymy się definicją, „testowanie białoskrzynkowe” (znane również jako test przezroczysty, szklany lub strukturalny) jest techniką testowania, która ocenia kod i wewnętrzną strukturę programu.
Testowanie białoskrzynkowe polega na przyjrzeniu się strukturze kodu. Znając wewnętrzną strukturę produktu, można przeprowadzić testy, aby upewnić się, że operacje wewnętrzne są wykonywane zgodnie ze specyfikacją. Wszystkie elementy wewnętrzne zostały odpowiednio wyćwiczone.
Czego się nauczysz:
- Moje doświadczenie
- Różnica między testami białoskrzynkowymi i czarnoskrzynkowymi
- Kroki do wykonania WBT
- Rodzaje i techniki testów białoskrzynkowych
- Przykład testu białej skrzynki
- Narzędzia testowe White Box
- Wniosek
- rekomendowane lektury
Moje doświadczenie
Minęło już prawie dziesięć lat, odkąd zajmuję się testowaniem oprogramowania i do tej pory zauważyłem, że testerzy są najbardziej entuzjastami w całej branży oprogramowania.
Głównym powodem takiego stanu rzeczy jest to, że tester zawsze może się czegoś nauczyć. Niezależnie od tego, czy jest to domena, proces czy technologia, tester może mieć pełny rozwój, jeśli chce.
Ale jak mówią „Zawsze jest ciemniejsza strona” .
Testerzy również rzeczywiście unikają testów, które uważają za bardzo skomplikowane i bułkę z masłem dla programistów. Tak, „testy białej skrzynki”.
Pokrycie
White Box Testing obejmuje specyfikację w kodzie:
2. Pokrycie segmentów: Upewnij się, że każda instrukcja kodu jest wykonywana raz.
3. Pokrycie gałęzi lub testowanie węzłów: Pokrycie każdej gałęzi kodu ze wszystkich możliwych było.
4. Pokrycie stanów złożonych: W przypadku wielu warunków przetestuj każdy warunek za pomocą wielu ścieżek i kombinacji różnych ścieżek, aby osiągnąć ten warunek.
5. Podstawowe testy ścieżek: Każda niezależna ścieżka w kodzie jest testowana.
6. Testowanie przepływu danych (DFT): W tym podejściu śledzisz określone zmienne za pomocą każdego możliwego obliczenia, definiując w ten sposób zestaw ścieżek pośrednich w kodzie. DFT ma tendencję do odzwierciedlania zależności, ale odbywa się to głównie poprzez sekwencje manipulacji danymi. Krótko mówiąc, każda zmienna danych jest śledzona, a jej użycie jest weryfikowane. Takie podejście ma tendencję do odkrywania błędów, takich jak zmienne używane, ale nie inicjowane, deklarowane, ale nie używane, i tak dalej.
7. Testowanie ścieżek: Testowanie ścieżek polega na zdefiniowaniu i omówieniu wszystkich możliwych ścieżek w kodzie. To czasochłonne zadanie.
8. Testowanie pętli: Strategie te odnoszą się do testowania pojedynczych pętli, pętli konkatenowanych i pętli zagnieżdżonych. To podejście testuje niezależne i zależne pętle kodu i wartości.
Dlaczego wykonujemy WBT?
Aby zapewnić:
- Wszystkie niezależne ścieżki w module zostały przynajmniej raz przećwiczone.
- Wszystkie decyzje logiczne zweryfikowano na podstawie ich prawdziwych i fałszywych wartości.
- Wszystkie pętle wykonywane na ich granicach i w granicach operacyjnych, poprawność wewnętrznych struktur danych.
Aby odkryć następujące typy błędów:
- Błędy logiczne wkradają się do naszej pracy, gdy projektujemy i wdrażamy funkcje, warunki lub elementy sterujące, które są poza programem
- Błędy projektowe wynikające z różnicy między logicznym przebiegiem programu a faktyczną implementacją
- Błędy typograficzne i sprawdzanie składni
Czy to testowanie wymaga szczegółowych umiejętności programowania?
Musimy pisać przypadki testowe które zapewniają pełne pokrycie logiki programu.
W tym celu musimy dobrze znać program, tj. Powinniśmy znać specyfikację i kod do testowania. Do tego typu testów wymagana jest znajomość języków programowania i logiki.
Ograniczenia
Nie jest możliwe przetestowanie każdej ścieżki pętli w programie. Oznacza to, że wyczerpujące testy są niemożliwe w przypadku dużych systemów.
Nie oznacza to, że WBT nie jest skuteczne. Wybór ważnych ścieżek logicznych i struktury danych do testowania jest praktycznie możliwy i efektywny.
Różnica między testami białoskrzynkowymi i czarnoskrzynkowymi
Upraszczając:
W ramach testów czarnoskrzynkowych testujemy oprogramowanie z punktu widzenia użytkownika, ale w białej skrzynce widzimy i testujemy rzeczywisty kod.
W testach czarnoskrzynkowych wykonujemy testy bez oglądania wewnętrznego kodu systemu, ale w WBT widzimy i testujemy kod wewnętrzny.
Technika testowania białej skrzynki jest używana zarówno przez programistów, jak i testerów. Pomaga im zrozumieć, która linia kodu jest faktycznie wykonywana, a która nie. Może to oznaczać, że brakuje logiki lub literówki, co ostatecznie może prowadzić do pewnych negatywnych konsekwencji.
Zalecana lektura => Kompletny przewodnik po testach Black Box
Kroki do wykonania WBT
Krok 1 - Zrozum funkcjonalność aplikacji poprzez jej kod źródłowy. Oznacza to, że tester musi być dobrze zorientowany w języku programowania i innych narzędziach, a także technikach wykorzystywanych do tworzenia oprogramowania.
Krok 2 - Utwórz testy i wykonaj je.
Kiedy omawiamy koncepcję testowania, „ pokrycie Za najważniejszy czynnik. Tutaj wyjaśnię, jak uzyskać maksymalne pokrycie w kontekście testów białej skrzynki.
Przeczytaj także=> Wykres przyczyny i skutku - Dynamiczna technika pisania przypadków testowych dla maksymalnego pokrycia
Rodzaje i techniki testów białoskrzynkowych
Istnieje kilka typów i różnych metod dla każdego typu testu białoskrzynkowego.
Zobacz poniższy obraz w celach informacyjnych.
Dziś skupimy się głównie na rodzaje testów wykonawczych „techniki białoskrzynkowej testów jednostkowych”.
3 główne techniki testowania białoskrzynkowego:
- Zakres oświadczenia
- Pokrycie oddziałów
- Pokrycie ścieżki
Zwróć uwagę, że instrukcja, gałąź lub pokrycie ścieżki nie identyfikują żadnego błędu ani defektu, który należy naprawić. Identyfikuje tylko te wiersze kodu, które nigdy nie są wykonywane lub pozostają nietknięte. Na podstawie tych dalszych testów można się skupić.
Zrozummy te techniki pojedynczo na prostym przykładzie.
# 1) Pokrycie wyciągu:
W języku programowania instrukcja to nic innego jak wiersz kodu lub instrukcja, którą komputer może zrozumieć i odpowiednio zareagować. Instrukcja staje się instrukcją wykonywalną, gdy zostaje skompilowana i przekonwertowana na kod wynikowy oraz wykonuje akcję, gdy program jest w trybie uruchomionym.
W związku z tym „Pokrycie wyciągu” Jak sama nazwa wskazuje, jest to metoda sprawdzania, czy każdy wiersz kodu jest wykonywany przynajmniej raz.
# 2) Pokrycie oddziałów:
„Gałąź” w języku programowania przypomina „instrukcje IF”. Instrukcja IF ma dwie gałęzie: T rue i fałsz .
Tak więc w pokryciu gałęzi (zwanym również pokryciem decyzji) sprawdzamy, czy każda gałąź jest wykonywana co najmniej raz.
W przypadku „instrukcji IF” będą dwa warunki testowe:
- Jeden, aby potwierdzić prawdziwą gałąź i,
- Inne, aby sprawdzić poprawność fałszywej gałęzi.
Dlatego w teorii pokrycie gałęzi jest metodą testowania, która po wykonaniu zapewnia wykonanie każdej gałęzi z każdego punktu decyzyjnego.
# 3) Pokrycie ścieżki
Pokrycie ścieżki testuje wszystkie ścieżki programu. Jest to wszechstronna technika, która gwarantuje, że wszystkie ścieżki programu zostaną pokonane przynajmniej raz. Pokrycie ścieżki jest jeszcze potężniejsze niż pokrycie gałęzi. Ta technika jest przydatna do testowania złożonych programów.
Weźmy prosty przykład, aby zrozumieć wszystkie techniki testowania białoskrzynkowego.
złączenie wewnętrzne lewe złączenie prawe złączenie
Sprawdź też=> Różne rodzaje testów
Przykład testu białej skrzynki
Rozważ poniższy prosty pseudokod:
INPUT A & B C = A + B IF C>100 PRINT “ITS DONE”
Dla Zakres oświadczenia - potrzebowalibyśmy tylko jednego przypadku testowego do sprawdzenia wszystkich wierszy kodu.
To znaczy:
Jeśli rozważę TestCase_01 na (A = 40 i B = 70), wtedy wszystkie wiersze kodu zostaną wykonane.
Teraz pojawia się pytanie:
- Czy to wystarczy?
- Co się stanie, jeśli uznam mój przypadek testowy za A = 33 i B = 45?
Ponieważ pokrycie instrukcji obejmuje tylko prawdziwą stronę, dla pseudokodu tylko jeden przypadek testowy NIE byłby wystarczający, aby go przetestować. Jako tester musimy również wziąć pod uwagę negatywne przypadki.
W związku z tym, aby uzyskać maksymalne pokrycie, musimy rozważyć ' Pokrycie oddziałów ' , który oceni warunki „FAŁSZ”.
W prawdziwym świecie możesz dodać odpowiednie stwierdzenia, gdy warunek zawodzi.
Więc teraz pseudokod staje się:
INPUT A & B C = A + B IF C>100 PRINT “ITS DONE” ELSE PRINT “ITS PENDING”
Ponieważ pokrycie instrukcji nie jest wystarczające do przetestowania całego pseudokodu, wymagalibyśmy pokrycia gałęzi, aby zapewnić maksymalne pokrycie .
Więc dla pokrycia gałęzi potrzebowalibyśmy dwóch przypadków testowych, aby zakończyć testowanie tego pseudokodu.
TestCase_01 : A = 33, B = 45
TestCase_02 : A = 25, B = 30
Dzięki temu możemy zobaczyć, że każdy wiersz kodu jest wykonywany przynajmniej raz.
Oto wyciągnięte do tej pory wnioski:
- Pokrycie gałęzi zapewnia większe pokrycie niż pokrycie instrukcji.
- Pokrycie gałęzi jest potężniejsze niż pokrycie instrukcji.
- Samo 100% pokrycie gałęzi oznacza 100% pokrycie instrukcji.
- Jednak 100% pokrycie wyciągów nie gwarantuje 100% pokrycia oddziałów.
Teraz przejdźmy do Pokrycie ścieżki:
Jak wspomniano wcześniej, pokrycie ścieżki służy do testowania złożonych fragmentów kodu, które zasadniczo obejmują instrukcje pętli lub kombinację pętli i instrukcji decyzyjnych.
Rozważ ten pseudokod:
INPUT A & B C = A + B IF C>100 PRINT “ITS DONE” END IF IF A>50 PRINT “ITS PENDING” END IF
Teraz, aby zapewnić maksymalne pokrycie, potrzebowalibyśmy 4 przypadków testowych.
W jaki sposób? Po prostu - istnieją 2 zdania decyzyjne, więc dla każdej instrukcji decyzyjnej potrzebowalibyśmy dwóch gałęzi do przetestowania. Jeden za prawdziwy, a drugi za fałszywy stan. Tak więc dla 2 zdań decyzyjnych wymagalibyśmy 2 przypadków testowych do testowania prawdziwej strony i 2 przypadków testowych do testowania strony fałszywej, co daje w sumie 4 przypadki testowe.
Aby to uprościć, rozważmy poniżej schemat blokowy pseudokodu, który mamy:
najlepsze serwery do gry na wow
Aby uzyskać pełne pokrycie, potrzebowalibyśmy następujących przypadków testowych:
TestCase_01: A = 50, B = 60
TestCase_02 : A = 55, B = 40
Sprawa testowa_03: A = 40, B = 65
Sprawa testowa_04: A = 30, B = 30
Zatem pokonana ścieżka będzie wyglądać następująco:
Czerwona linia - TestCase_01 = (A = 50, B = 60)
Niebieska linia = TestCase_02 = (A = 55, B = 40)
Pomarańczowa linia = TestCase_03 = (A = 40, B = 65)
Zielona linia = TestCase_04 = (A = 30, B = 30)
******************
= >> Skontaktuj się z nami zasugerować tutaj swoją aukcję
*****************
Narzędzia testowe White Box
Poniżej znajduje się lista najlepszych narzędzi testowych typu white box.
# 1) Veracode
Narzędzia testowe Veracode typu white box pomogą Ci szybko i łatwo zidentyfikować i naprawić błędy oprogramowania przy niższych kosztach. Obsługuje kilka języków aplikacji, takich jak .NET, C ++, JAVA itp., A także umożliwia testowanie bezpieczeństwa aplikacji stacjonarnych, internetowych i mobilnych. Mimo to istnieje kilka innych zalet narzędzia Veracode. Aby uzyskać szczegółowe informacje na temat narzędzi testowych Veracode White box, sprawdź poniższe łącze.
Link do strony: Veracode
# 2) EclEmma
EclEmma został pierwotnie zaprojektowany do testów i analiz w środowisku roboczym Eclipse. Jest uważany za bezpłatne narzędzie do obsługi kodu Java i ma również kilka funkcji. Aby zainstalować lub dowiedzieć się więcej o EclEmma, sprawdź poniższe łącze.
Link do strony: EclEmma
# 3) RCUNIT
Struktura używana do testowania programów w C jest znana jako RCUNIT. RCUNIT może być odpowiednio używany zgodnie z warunkami Licencji MIT. Jest darmowy, a aby go zainstalować lub dowiedzieć się więcej, sprawdź poniższy link.
Link do strony: RCUNIT
# 4) cfix
cfix to jeden z frameworków do testów jednostkowych dla C / C ++, którego jedynym celem jest uczynienie tworzenia zestawów testów tak prostym i łatwym, jak to tylko możliwe. Tymczasem cfix jest zwykle wyspecjalizowany w trybie jądra NT i Win32. Aby zainstalować i dowiedzieć się więcej o cfix, sprawdź poniższe łącze
Link do strony: cfix
# 5) Test Google
Googletest to platforma testowa C ++ firmy Google. Wykrywanie testów, testy śmierci, testy z parametrami wartości, błędy krytyczne i niekrytyczne, generowanie raportów z testów XML itp. To tylko niektóre funkcje GoogleTest, ale jest też kilka innych funkcji. Linux, Windows, Symbian, Mac OS X to kilka platform, na których wykorzystano GoogleTest. W celuPobierz, sprawdź poniższy link.
Link do pobrania: Test Google
# 6) EMMA
Emma to łatwe w użyciu bezpłatne narzędzie do obsługi kodu JAVA. Zawiera kilka funkcji i zalet. Aby pobrać i dowiedzieć się więcej o Emmie, sprawdź poniższe łącze.
Link do pobrania: EMMA
# 7) NUnit
NUnit to łatwa w użyciu platforma testów jednostkowych typu open source, która nie wymaga żadnej ręcznej interwencji w celu oceny wyników testów. Obsługuje wszystkie języki .NET. Obsługuje również testy oparte na danych i testy uruchamiane równolegle w NUnit. Wcześniejsze wersje NUnit korzystały z licencji NUnit, ale NUnit 3 jest wydany na licencji MIT. Ale obie licencje pozwalają na swobodne użytkowanie bez żadnych ograniczeń. Aby pobrać i dowiedzieć się więcej o NUnit, sprawdź poniższe łącze.
Link do pobrania: NUnit
# 8) CppUnit
CppUnit to framework do testów jednostkowych napisany w C ++ i jest uważany za port JUnit. Wyniki testu dla CppUnit mogą być w formacie XML lub tekstowym. Tworzy testy jednostkowe z własną klasą i uruchamia testy w zestawach testów. Jest na licencji LGPL. Aby pobrać i dowiedzieć się więcej o CppUnit, sprawdź poniższe łącze.
Link do pobrania: CppUnit
# 9) JUnit
JUnit to cichy, prosty framework do testów jednostkowych, który obsługuje automatyzację testów w języku programowania Java. Obsługuje głównie programowanie sterowane testami, a także zapewnia raport z pokrycia testów. Jest objęty licencją na podstawie licencji publicznej Eclipse. Aby pobrać bezpłatnie i dowiedzieć się więcej o JUnit, kliknij poniższy link.
Link do pobrania: JUnit
# 10) JsUnit
JsUnit jest uważany za port JUnit do javascript. Jest to platforma testów jednostkowych typu open source obsługująca JavaScript po stronie klienta. Jest objęty licencją na podstawie licencji GNU Public License 2.0, GNU Lesser Public License 2.1 i Mozilla Public License 1.1. Aby pobrać i dowiedzieć się więcej o JsUnit, sprawdź poniższe łącze.
Link do pobrania: JsUnit
Sprawdź również wszystkie narzędzia, które wymieniliśmy poniżej Statyczna analiza kodu tutaj .
Zapraszam do zasugerowania prostszych lub bardziej zaawansowanych narzędzi, których używasz do techniki białej skrzynki.
Wniosek
Poleganie wyłącznie na testach czarnoskrzynkowych nie wystarczy do uzyskania maksymalnego pokrycia testami. Musimy mieć kombinację technik testowania czarnoskrzynkowego i białoskrzynkowego do pokryć maksymalne wady .
Jeśli testy przeprowadzane prawidłowo, z pewnością przyczynią się do poprawy jakości oprogramowania. Uczestnictwo w testach jest również dobre dla testerów, ponieważ może dostarczyć najbardziej „obiektywnej” opinii o kodzie. :)
Daj nam znać, jeśli masz jakiekolwiek pytania dotyczące metod omówionych w tym artykule.
rekomendowane lektury
- Kluczowe różnice między testami czarnoskrzynkowymi a białoskrzynkowymi
- Testowanie czarnoskrzynkowe: szczegółowy samouczek z przykładami i technikami
- Testy funkcjonalne a testy niefunkcjonalne
- Najlepsze narzędzia do testowania oprogramowania 2021 (Narzędzia do automatyzacji testów QA)
- Myślenie nieszablonowe podczas testowania oprogramowania!
- Przewodnik po testowaniu przenośności z praktycznymi przykładami
- Testy alfa i testy beta (kompletny przewodnik)
- Rodzaje testowania oprogramowania: różne typy testów ze szczegółami