Testowanie czarnoskrzynkowe to rodzaj testowania oprogramowania, podczas którego sprawdza się funkcjonalność programu bez znajomości jego wewnętrznego działania. Można to porównać do próby rozwiązania zagadki bez wiedzy o tym, jak została złożona.
Jako tester z prawie 10-letnim doświadczeniem z przyjemnością podzielę się z Tobą swoją wiedzą na temat testowania czarnoskrzynkowego. W tym artykule wyjaśnię, czym jest testowanie czarnoskrzynkowe, jak działa i dlaczego jest niezbędne w procesie tworzenia oprogramowania. Zatem zapnij pasy i zaczynajmy!
Czym jest testowanie czarnoskrzynkowe?

Testowanie czarnoskrzynkowe to podejście do testowania, w którym testy przeprowadza się bez znajomości wewnętrznej struktury testowanej aplikacji (AUT). W przeciwieństwie do testowania białoskrzynkowego, które opiera się na szczegółowym zrozumieniu kodu źródłowego aplikacji i jest wykonywane przez zespół programistyczny.
Testowanie czarnoskrzynkowe jest zazwyczaj przeprowadzane przez zespół zapewnienia jakości i koncentruje się na danych wejściowych oraz wyjściowych aplikacji. Testerzy korzystają z prawidłowych i nieprawidłowych danych wejściowych oraz obserwują rezultaty. Czasami nazywa się je testowaniem behawioralnym, ponieważ testy są przeprowadzane z perspektywy użytkownika końcowego.
Testowanie czarnoskrzynkowe można stosować na każdym poziomie testowania: podczas testów jednostkowych, testów integracyjnych, testów systemowych i testów akceptacyjnych użytkownika. Dostępna jest również szeroka gama narzędzi do testowania czarnoskrzynkowego, które ułatwiają korzystanie z tego podejścia do testowania oprogramowania.
Have an account? Log In
Rodzaje testowania czarnoskrzynkowego
Testowanie funkcjonalne: odnosi się do rodzaju testowania, podczas którego sprawdzamy, CO robi aplikacja. Przypadki testowe można tworzyć na podstawie wymagań funkcjonalnych. Przykładowe testy funkcjonalne ekranu logowania mogą obejmować:
- Logowanie przy użyciu prawidłowych danych uwierzytelniających i sprawdzenie linku „Nie pamiętasz hasła?”.
- Sprawdzenie funkcji „Zapamiętaj mnie”.
- Testy negatywne, takie jak logowanie przy użyciu nieprawidłowych danych uwierzytelniających oraz próba zalogowania się bez podania wymaganych danych.
Testowanie niefunkcjonalne: odnosi się do tego, JAK aplikacja wykonuje swoje zadania. Możemy mieć również niefunkcjonalne wymagania dotyczące oprogramowania. Mogą one określać na przykład, jak szybko powinna ładować się strona, ilu jednoczesnych użytkowników powinna obsługiwać lub jakie wytyczne dotyczące dostępności powinna spełniać. Istnieje kilka podtypów testowania niefunkcjonalnego, które możemy uwzględnić w procesie testowania (w zależności od specyfikacji wymagań):
- Testowanie użyteczności: zwykle koncentruje się na tym, jak łatwo użytkownik końcowy może uzyskać dostęp do funkcji aplikacji.
- Testowanie dostępności: sprawdzamy, czy aplikacja jest dostępna dla wszystkich użytkowników, w tym dla osób z niepełnosprawnościami.
- Testowanie wydajności: sprawdzanie wydajności aplikacji. Jest to rodzaj testowania szczególnie odpowiedni do automatyzacji, w którym wykorzystuje się narzędzia testowe. Na przykład podczas testów obciążeniowych możemy sprawdzić aplikację przy dużej liczbie jednoczesnych użytkowników, czego nie da się osiągnąć ręcznie.
- Testowanie bezpieczeństwa: sprawdzamy bezpieczeństwo aplikacji oraz to, jak dobrze chronione są wrażliwe dane. Obejmuje ono metodyki testowania, takie jak testy penetracyjne.
Testowanie regresji: jest to rodzaj testowania, podczas którego sprawdzamy, czy istniejąca funkcjonalność nie została uszkodzona przez nowo dodany kod.
Testowanie ponowne: rodzaj testowania, podczas którego sprawdzamy, czy wcześniej niedziałająca funkcjonalność została naprawiona.
Testowanie czarnoskrzynkowe a białoskrzynkowe
„Przeciwieństwem” testowania czarnoskrzynkowego jest rodzaj testowania białoskrzynkowego — znanego również jako testowanie z dostępem do kodu. Testowanie białoskrzynkowe jest zwykle wykonywane przez programistów z zespołu i koncentruje się na testowaniu kodu źródłowego testowanej aplikacji.
Przyjrzyjmy się głównym różnicom między nimi:
- Testy czarnoskrzynkowe są przeprowadzane bez znajomości wewnętrznego działania aplikacji, podczas gdy testowanie białoskrzynkowe obejmuje znajomość kodu źródłowego.
- W przypadku testowania czarnoskrzynkowego nie jest potrzebna znajomość programowania; testowanie białoskrzynkowe zwykle obejmuje pisanie testów automatycznych w celu uzyskania pokrycia testami.
- Za testowanie czarnoskrzynkowe odpowiada zespół QA, podczas gdy testowanie białoskrzynkowe wykonuje zespół deweloperski.
- Testowanie czarnoskrzynkowe wykorzystuje techniki takie jak podział na klasy równoważności, analiza wartości granicznych, tablica decyzyjna i przejścia między stanami (więcej informacji poniżej). Techniki testowania białoskrzynkowego obejmują pokrycie instrukcji, pokrycie gałęzi i pokrycie warunków.
- W przeciwieństwie do testowania białoskrzynkowego, które często wymaga dogłębnej znajomości bazy kodu, testowanie czarnoskrzynkowe pozwala testerom skupić się na zachowaniu aplikacji. Jednak oba podejścia wymagają użycia niezawodnych narzędzi do zarządzania bazami danych w celu uzyskania optymalnych rezultatów.
- Testowanie białoskrzynkowe najlepiej przeprowadzać na niższych poziomach testowania (takich jak testy jednostkowe lub integracyjne), a testy czarnoskrzynkowe wykonuje się na wyższych poziomach (testy systemowe i kompleksowe, a także testy akceptacyjne użytkownika).
Hybrydą tych dwóch podejść jest testowanie szaroskrzynkowe, w którym testerzy mają dostęp do niektórych informacji o wewnętrznym działaniu oprogramowania, takich jak jego architektura lub struktura bazy danych, ale nie do całej bazy kodu. Pozwala im to testować oprogramowanie dokładniej niż w przypadku testowania czarnoskrzynkowego, ale bez pełnej wiedzy o systemie i kontroli nad nim, które zapewnia testowanie białoskrzynkowe.
More Articles
Techniki testowania czarnoskrzynkowego
Aby uzyskać dobre pokrycie testami, podczas tworzenia przypadków testowych można zastosować kilka technik testowania czarnoskrzynkowego:
Analiza wartości granicznych: za pomocą tej techniki identyfikuje się skrajne wartości wejściowe, a scenariusze testowe obejmują wyłącznie te wartości. Statystycznie te „graniczne” wartości z większym prawdopodobieństwem pozwalają wykryć błędy.
Podział na klasy równoważności: w tej technice możliwe wartości wejściowe dzieli się na klasy równoważności. Oczekuje się, że każda wartość w danej klasie równoważności przyniesie taki sam rezultat, dlatego jeden przypadek testowy dla każdej klasy wystarczy do uzyskania pełnego pokrycia. Należy uwzględnić zarówno prawidłowe, jak i nieprawidłowe dane wejściowe.
Testowanie za pomocą tablicy decyzyjnej: metoda testowania, w której przypadki użycia wyprowadza się z reguł wykorzystujących kombinacje danych wejściowych i odpowiadających im oczekiwanych wyników.
Testowanie przejść między stanami: technika testowania oprogramowania koncentrująca się na badaniu zachowania aplikacji podczas przechodzenia między różnymi stanami.
Zgadywanie błędów: technika oparta na doświadczeniu, w której testerzy wykorzystują swoją intuicję i doświadczenie, aby przewidywać i wykrywać błędy w systemie na podstawie wcześniejszej wiedzy oraz znajomości potencjalnych punktów awarii.
Wnioski
Testowanie czarnoskrzynkowe jest istotnym elementem testowania oprogramowania, który pomaga zapewnić jego jakość i funkcjonalność. Testowanie aplikacji z perspektywy użytkownika końcowego może pomóc znaleźć problemy, które w przeciwnym razie pozostałyby niewykryte.
Testowanie czarnoskrzynkowe jest praktycznym narzędziem do identyfikowania defektów funkcjonalnych w oprogramowaniu. Testując dane wejściowe i wyjściowe systemu oraz sprawdzając, czy zachowuje się on zgodnie z oczekiwaniami, testerzy mogą lepiej zrozumieć działanie oprogramowania i zidentyfikować obszary, w których można wprowadzić ulepszenia. Ogólnie rzecz biorąc, testowanie czarnoskrzynkowe powinno stanowić integralną część każdej kompleksowej strategii testowania oprogramowania, aby zapewnić, że oprogramowanie jest przyjazne dla użytkownika, niezawodne i wolne od defektów funkcjonalnych.
Jeśli podobają Ci się artykuły o testowaniu oprogramowania, rozważ subskrypcję biuletynu QA Lead!

