Niedawno zdałem ostatni egzamin na kurs inżynierii oprogramowania dla mojego programu magisterskiego i jedno z pytań na egzaminie było następujące:
Unit Testing is considered:
a. White-box Testing
b. Black-box Testing
c. Either
W ciągu moich 7 lat doświadczenia w tworzeniu oprogramowania, testy jednostkowe zawsze przyjmowały podejście „białej skrzynki”. Tester zawsze miał pełną wiedzę na temat implementacji jednostki podczas pisania testów. Testy „czarnej skrzynki” zawsze następowały później w formie testów integracyjnych, systemowych i akceptacyjnych.
Jednak prawidłowa odpowiedź na egzamin (zdaniem profesora) jest taka, że testowanie jednostkowe może być testem białym lub czarnym.
Przeprowadziłem pewne badania i wydaje się, że w wielu przypadkach „testowanie jednostkowe czarnej skrzynki” jest używane do opisania podejścia opartego na pierwszym teście, w którym testy jednostkowe są zapisywane przed kodem. Jednak moim zdaniem jest to nadal testowanie białej skrzynki. Chociaż implementacja jeszcze nie istnieje, każdy, kto pisze test, ogólnie ma całkiem niezły pomysł na to, w jaki sposób zostanie zaimplementowany kod źródłowy.
Czy ktoś może mi wyjaśnić, jak działa testowanie czarnej skrzynki (jeśli to naprawdę jest rzecz) i czym różni się od testowania białej skrzynki?
While the implementation does not yet exist, whoever is writing the test generally has a pretty good idea about how the source code is going to be implemented.
- Tak, ale sam test nie. Testowanie białych skrzynek oznacza testowanie czegoś wewnętrznego w metodzie lub klasie, na przykład wartości zmiennej. Nie oznacza to, że autor testów wie, jak wygląda testowany kod.