Praca z logami w testowaniu: struktura, typy i narzędzia
Log to tekstowa rejestracja zdarzenia w systemie. Każda pozycja zawiera znacznik czasu (timestamp), poziom logowania (INFO, DEBUG, WARN, ERROR, FATAL), źródło (usługa lub moduł) oraz opis zdarzenia. W przypadku błędów dołączany jest stack trace — sekwencja wywołań funkcji, która wskazuje ścieżkę wykonania kodu do momentu awarii.
Stack trace zawiera pliki, klasy i metody uczestniczące w operacji. Jest to krytyczne dla lokalizacji błędów w backendzie lub aplikacjach mobilnych, gdzie interfejs użytkownika nie ujawnia szczegółów.
Rola logów w procesie QA
Logi potwierdzają istnienie błędu, określają jego poziom (klient, serwer, integracja) i dostarczają dane dla programistów. Są szczególnie przydatne przy niestabilnych błędach, gdy narzędzia deweloperskie lub sniffery są niewystarczające, albo przy błędach serwerowych 500 bez opisu.
Testownik wydobywa z logów:
- parametry żądań i odpowiedzi.
- stack trace do naprawy.
- częstotliwość powtarzania błędu.
To przyspiesza ponowne testowanie i wdrożenie poprawek.
Logi serwerowe: dostęp i analiza
Logi serwerowe rejestrują żądania, parametry, odpowiedzi i błędy. Dostępne są przez SSH do katalogu /var/log/ (syslog, access_log) lub za pomocą specjalistycznych systemów.
Bezpośredni dostęp przez SSH
Połączenie przez SSH umożliwia odczytanie surowych logów na serwerach Linux. Używane są polecenia do filtrowania: grep po ERROR, tail -f do monitorowania w czasie rzeczywistym. Bardzo przydatne bez narzędzi graficznych.
Systemy centralne
- Kibana: wyszukiwanie po poziomie, czasie, usłudze. Filtry dla błędów 500/422, przeglądanie żądań i odpowiedzi.
- Sentry: szczegółowe dane żądania, stack trace, częstotliwość błędów. Przesyłanie raportów do zespołu deweloperskiego.
- Grafana: pulpit z metrykami błędów 4xx/5xx w różnych okresach i dla poszczególnych punktów końcowych.
- Loguru: proste logi tekstowe z timestampem i poziomem do podstawowej analizy.
| Narzędzie | Główna funkcja | Zastosowanie w QA |
|------------|------------------|------------------|
| Kibana | Filtracja zdarzeń | Lokalizacja migawek błędów |
| Sentry | Stack trace | Przesyłanie do dev'ów |
| Grafana | Metryki błędów | Monitorowanie awarii systemowych |
| Loguru | Tekstowe logi | Podstawowy przegląd |
Logi brokerów komunikatów
W systemach asynchronicznych (Apache Kafka) logi rejestrują wymianę komunikatów. Błędy: brak dostawy, nieprawidłowy format, opóźnienia. Analiza możliwa przez Kibana, Loggly, Datadog lub Confluent Control Center.
Przykład: żądanie historii bitew — logi usług konsumentów wykrywają problemy w przetwarzaniu.
Logi mobilne: ADB i Logcat
Dla Androida: ADB łączy urządzenie/emulator, Logcat wyświetla dziennik zdarzeń (ekrany, działania, błędy). Filtry po ERROR (E), szukanie zawieszeń.
Logcat jest niezastąpiony, gdy interfejs nie informuje o awariach.
Logi kontenerów Docker
W Dockerze logi kontenerów dostępne są przez polecenie docker logs <container_id>. Rejestrują wyjście stdout/stderr aplikacji. Przydatne dla mikroserwisów: kombinacja z Kubernetes (kubectl logs) do orchestrowania.
Filtry: --tail, --since dla aktualnych wpisów. Integracja z ELK-stack (Elasticsearch, Logstash, Kibana) do skalowania.
Co ważne:
- Logi to główny instrument lokalizacji po narzędziach UI.
- Poziomy: INFO/DEBUG do śledzenia, ERROR/FATAL do awarii.
- Stack trace jest obowiązkowy dla deweloperów.
- Narzędzia: Kibana/Sentry do wyszukiwania, Grafana do metryk.
- Mobilne: ADB + Logcat, kontenery: docker logs.
— Editorial Team
Brak komentarzy.