Testy jednostkowe potoku danych
Sprawdzaj kształty, typy i zakresy za pomocą pytest
Testy jednostkowe potoku danych to bezpłatna lekcja MLOps Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej MLOps Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs MLOps Academy zawiera 4 lekcji w sumie.
Testowanie danych, nie tylko modelu
Większość błędów ML kryje się w potoku danych, a nie w modelu. Kilka niedrogich testów jednostkowych danych pozwala wykryć problemy na długo przed trenowaniem. 🧪
Co zapewnia pytest
Testy zapisują Państwo jako zwykłe funkcje, a pytest je wykrywa i uruchamia. Każdy nieudany assert zmienia się w czytelny raport o błędzie.
Budowa testu danych
Test danych wczytuje próbkę, wywołuje transformację, a następnie sprawdza oczekiwany rezultat. Najważniejszym narzędziem jest instrukcja assert, która decyduje o powodzeniu lub niepowodzeniu testu.
def test_no_nulls(df):
assert df["age"].notna().all()Sprawdzanie kształtu
Potoki mogą po cichu usuwać kolumny lub je dodawać. Należy ustalić kształt, aby dataframe z 10 kolumnami nie przechodził niezauważenie jako dataframe z 9 kolumnami.
def test_shape(df):
assert df.shape[1] == 10Sprawdzanie typów kolumn
Liczba odczytana jako tekst może po cichu zepsuć trenowanie. Należy ustalić dtype każdej kolumny, aby zmiana typu powodowała niepowodzenie testu, a nie modelu.
def test_dtype(df):
assert df["price"].dtype == "float64"Sprawdzanie sensownych zakresów
Należy chronić się przed niemożliwymi wartościami. Sprawdzenie zakresu nie dopuści do modelu ujemnego wieku ani prawdopodobieństwa wynoszącego 300%.
def test_range(df):
assert df["age"].between(0, 120).all()Wykrywanie wartości null
Brakujące wartości to najczęstszy błąd danych. Należy sprawdzić, czy krytyczne kolumny nie zawierają wartości null albo czy ich udział nie przekracza ustalonego progu.
Używanie małych fixture'ów
Testy powinny działać w milisekundach. Fixture pytest tworzy niewielki, ręcznie przygotowany dataframe, dzięki czemu testy pozostają szybkie i nigdy nie korzystają z rzeczywistych danych.
import pytest
@pytest.fixture
def df():
return load_sample()Testowanie każdej transformacji osobno
Testują Państwo jeden krok naraz, aby błędy wskazywały dokładną przyczynę. To właśnie testowanie jednostkowe: małe, odizolowane testy, które łatwo i szybko debugować.
Uruchamianie zestawu testów
Jedno polecenie uruchamia wszystkie testy i wyświetla zielone lub czerwone podsumowanie. Należy uruchamiać pytest lokalnie, a następnie ponownie w CI po każdym wysłaniu zmian.
# in your terminal
pytest -qCelowe testowanie przypadków brzegowych
Należy przekazać pusty dataframe, jeden wiersz albo dane wejściowe zawierające wyłącznie wartości null. Dobre testy przypadków brzegowych dowodzą, że potok kończy się wyraźnym błędem, a nie działa po cichu.
Szybkie sprawdzenie
Które sprawdzenie najlepiej chroni przed odczytaniem kolumny jako niewłaściwego typu?
Podsumowanie: testy wykrywają błędy danych
Potrafią już Państwo testować dane jednostkowo za pomocą pytest: sprawdzać kształt, typy, zakresy i wartości null na małych fixture'ach, aby niepoprawne dane zatrzymywały kompilację, a nie użytkowników. ✅
Często zadawane pytania
Czy lekcja „Testy jednostkowe potoku danych” jest bezpłatna?
Tak — pełny tekst „Testy jednostkowe potoku danych” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu MLOps Academy, przejdź na CoddyKit PRO. Kurs MLOps Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Testy jednostkowe potoku danych”?
Sprawdzaj kształty, typy i zakresy za pomocą pytest Ćwiczysz MLOps Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć MLOps Academy?
Nie wymagamy żadnego doświadczenia. MLOps Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Testy jednostkowe potoku danych”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji MLOps Academy?
Tak. Każda lekcja MLOps Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Testy jednostkowe potoku danych
- Testy behawioralne modeli
- Ustawianie bramek jakości i progów
- Walidacja danych za pomocą Great Expectations