Baza pytań rekrutacyjnych i wiedzy. Filtruj, szukaj i sprawdzaj swoją wiedzę.
Testy unit sprawdzają małe fragmenty w izolacji, integration sprawdzają współpracę komponentów, a end-to-end weryfikują pełne ścieżki użytkownika w systemie.
Test pyramid mówi, że powinno być dużo unitów, mniej integracyjnych i mało E2E. Ma znaczenie, bo równoważy szybkość, koszt i pewność.
Stuby zwracają ustalone odpowiedzi, mocki weryfikują interakcje, a fejki to lekkie implementacje (np. in-memory DB). Służą różnym celom w testach.
Flaky testy padają losowo przez timing, współdzielony stan lub problemy środowiska. Naprawa to izolacja stanu, kontrola czasu, czekanie na warunki zamiast sleep i stabilizacja środowisk.
Contract testing sprawdza, czy usługi zgadzają się co do schematów i zachowań bez pełnych E2E. Jest przydatne w mikroserwisach i integracjach zewnętrznych.
Property-based testing sprawdza własności dla wielu generowanych wejść zamiast pojedynczych przykładów. Jest dobre do edge-case’ów i złożonej logiki.
Coverage pokazuje, które linie/gałęzie zostały wykonane, ale nie mówi, czy testy sprawdzają poprawne zachowanie. Wysokie coverage nie gwarantuje jakości, a niskie nie znaczy, że testy są bezużyteczne.
TDD (Test-Driven Development) to napisanie failing testu, potem implementacja i refaktor. Pomaga doprecyzować wymagania i projekt przy złożonej logice.
Używaj deterministycznego czasu, awaituj zakończenie i asercje na rezultatach. Dla współbieżności testuj niezmienniki, używaj kontrolowanych schedulerów i unikaj sleepów.
Używaj małych, czytelnych fixtures lub factory, resetuj stan między testami i trzymaj dane blisko intencji testu. Dla integracji seeduj minimum danych i sprzątaj niezawodnie.