KWALIFIKACJA INF3 - TEST WIEDZY NR 3

PYTANIE NR 40.
Przy jakim rodzaju testowania oprogramowania najczęściej korzysta się z debuggera?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Debugger służy do śledzenia wykonania programu (breakpointy, kroki, podgląd zmiennych) i najczęściej jest używany wtedy, gdy testuje się małe fragmenty kodu w izolacji. To typowe dla testów jednostkowych, gdzie łatwo powiązać błąd z konkretną funkcją/metodą, a nie z zachowaniem całego systemu.

Pełne wyjaśnienie:

Debugger to narzędzie programistyczne do lokalizowania przyczyny błędu w kodzie: umożliwia zatrzymanie programu w określonym miejscu (breakpoint), wykonanie krokowe, podgląd stosu wywołań i wartości zmiennych. Z tego powodu najnaturalniej łączy się go z sytuacją, w której analizujemy niewielki fragment programu i chcemy szybko sprawdzić, dlaczego dana funkcja lub metoda działa nieprawidłowo.

Testy jednostkowe dotyczą pojedynczych jednostek (np. funkcji, klasy, modułu) i zwykle są uruchamiane blisko kodu źródłowego, często przez programistę. Gdy test jednostkowy nie przechodzi, łatwo odtworzyć problem w małej skali i użyć debuggera, aby znaleźć dokładną instrukcję lub warunek powodujący błąd.

Odpowiedzi rozpraszające są mniej trafne, bo zwykle mają inny cel i inną skalę:

  • Testy integracyjne sprawdzają współdziałanie kilku elementów (np. moduł + baza danych, kilka usług). Debugger może się pojawić, ale trudniej jednoznacznie wskazać winny fragment, bo błąd może wynikać z kontraktu między komponentami, konfiguracji albo danych.
  • Testy systemowe obejmują cały system jako całość. Na tym poziomie częściej analizuje się logi, monitoring, konfigurację środowiska i scenariusze użytkownika; bezpośrednie debugowanie bywa możliwe, ale jest mniej typowe jako "najczęstsze" narzędzie.
  • Testy akceptacyjne mają potwierdzić spełnienie wymagań biznesowych, zwykle z perspektywy użytkownika/klienta. Tu podstawą są kryteria akceptacji i scenariusze, a nie debugowanie kodu.

Wskazówka egzaminacyjna: jeśli pytanie łączy debugger z rodzajem testów, myśl o poziomie najbliższym kodowi i najszybszej diagnostyce przyczyny błędu – to najczęściej prowadzi do testów jednostkowych.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Debugger to narzędzie do uruchamiania programu pod kontrolą: pozwala zatrzymywać wykonanie, wykonywać kod krokowo i podglądać zmienne oraz stos wywołań. W testowaniu pomaga szybko znaleźć miejsce w kodzie, które powoduje błąd wykryty przez test lub ręczne sprawdzenie.
W testach jednostkowych analizuje się mały fragment kodu (np. funkcję), więc łatwo odtworzyć błąd i obserwować przepływ instrukcji. Debugger jest wtedy najbardziej efektywny, bo wskazuje konkretną linię i wartości zmiennych bez "szumu" całego systemu.
Tak, ale zwykle rzadziej i z większym kosztem. W integracji problem może wynikać z komunikacji między modułami, konfiguracji lub danych. W takich sytuacjach często zaczyna się od logów i testów kontraktowych, a debugger jest używany dopiero do potwierdzenia przyczyny w kodzie.
Testy jednostkowe sprawdzają pojedyncze elementy kodu w izolacji, a testy systemowe weryfikują działanie całej aplikacji jako całości. W jednostkowych łatwiej wskazać konkretny fragment kodu i użyć debuggera; w systemowych częściej diagnozuje się zachowanie przez logi i obserwację przepływów end-to-end.
W testach systemowych częściej używa się logów aplikacji, narzędzi monitoringu, profilerów, raportów błędów, a także narzędzi do automatyzacji testów end-to-end. Debugger może pomóc, ale zwykle nie jest pierwszym wyborem, bo analiza obejmuje wiele komponentów naraz.
Typowy błąd to wybór "większego" poziomu testów (systemowe) tylko dlatego, że brzmi poważniej. Drugi błąd to traktowanie debuggera jako narzędzia testera, a nie programisty. Warto zapamiętać: debugger jest najbliżej kodu, więc pasuje do testów jednostkowych.
Testy akceptacyjne wykonuje się, gdy trzeba potwierdzić spełnienie wymagań biznesowych (np. działanie koszyka, rejestracji, płatności) zgodnie z kryteriami akceptacji. Nie służą one do szukania błędnej linii kodu, tylko do oceny, czy system realizuje uzgodnione potrzeby użytkownika.
Gdy test jednostkowy nie przechodzi, uruchom go w trybie debug, ustaw breakpoint w testowanej funkcji i wykonuj kod krokowo. Obserwuj wartości wejściowe, zmienne pośrednie i warunki w instrukcjach if. To zwykle najszybsza droga do znalezienia przyczyny błędu.
Nie. Testowanie polega na wykrywaniu defektów i weryfikacji wymagań, a debugowanie na znajdowaniu i usuwaniu przyczyny błędu w kodzie. Test może wskazać, że coś jest nie tak, a debugger pomaga ustalić dokładnie gdzie i dlaczego to się dzieje.
Ułóż mapę: poziomy testów (jednostkowe, integracyjne, systemowe, akceptacyjne) oraz ich cel i typowe narzędzia. Zapamiętaj skojarzenie: "debugger = analiza kodu w małej skali". Przećwicz w IDE uruchamianie testu jednostkowego z breakpointem.
info

Około 78% zdających odpowiada poprawnie na to pytanie. średnio łatwe

W praktyce zawodowej kluczowe jest to, że debugger służy do śledzenia wykonania programu (breakpointy, kroki, podgląd zmiennych) i najczęściej jest używany wtedy, gdy testuje się małe fragmenty kodu w izolacji.

Źródła:

  • ISTQB Certified Tester Foundation Level (CTFL) Syllabus v4.0, rozdział "Test levels" (poziomy testów), 2023
  • Roger S. Pressman, Bruce R. Maxim, "Software Engineering: A Practitioner's Approach", rozdziały o testowaniu (unit/integration/system), (wydanie zależne od publikacji)
  • Microsoft Learn: Visual Studio Debugger documentation (przegląd debugowania i breakpointów), https://learn.microsoft.com/en-us/visualstudio/debugger/ (dostęp: 2026-02-27)

Materiały:

  • Sylabus ISTQB Foundation Level – sekcje o poziomach testów i celach testowania
  • Dokumentacja IDE (np. Visual Studio/VS Code) dotycząca debugowania i breakpointów
  • Podręczniki inżynierii oprogramowania opisujące poziomy testowania i praktyki wytwarzania

Aktualizacja pytania: 31.03.2026

Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego