Projekty ETL to projekty tworzone za pomocą narzędzia ETL (Extract - Transform - Load), takiego jak SSIS, PowerCenter itp.
Zazwyczaj obejmują one odczytywanie danych ze źródła zewnętrznego, ładowanie ich do tymczasowej bazy danych, wykonywanie pewnych transformacji i ładowanie do ostatecznej bazy danych
Prostym przykładem byłoby użycie SSIS do odczytu plików Excela dostarczanych przez nauczycieli korzystających z SSIS i załadowania ich do bazy danych. Następnie napisz procedury składowane lub więcej pakietów SSIS, aby obliczyć oceny każdego ucznia i załadować te dane do hurtowni danych
Następnie tworzysz procedury składowane na szczycie mart, aby wygenerować dane wyjściowe, które są używane przez narzędzia raportujące (SSRS \ Excel \ etc) do generowania wizualizacji.
Staram się zrozumieć, jak przeprowadzić TDD i odpowiednie testowanie jednostek w tym scenariuszu. Testy ETL polegają głównie na upewnieniu się, że dane załadowane w tabelach pomostowych pasują do właściwego podzbioru danych ze źródła. Tak więc wdrożenie testu prowadzi do wdrożenia mini-wersji ETL. Dane wyjściowe raportów SP zależą od danych w samych tabelach, więc nie można mieć stabilnego zestawu danych wyjściowych bez koszmaru konserwacji, nawet jeśli utworzysz bazę danych zawierającą oczyszczone dane testowe
Przykład:
Sprint 1: Tabela ucznia zawiera imię, wiek, klasę
Tworzysz dane testowe dla tej tabeli i na tej podstawie przeprowadzasz testy jednostkowe
Sprint 2: Pole płci jest dodawane do tabeli.
Teraz, jeśli odświeżysz dane w polu ucznia, aby wypełnić atrybut płci, przypadki testowe zostaną unieważnione, ponieważ dane się zmieniły. A jeśli nie, nie możesz tworzyć przypadków testowych, które wymagają kolumny płci
źródło
Odpowiedzi:
W przeszłości robiłem test rozwoju oparty na testach akceptacyjnych . Kod ETL jest często dystrybuowany na różnych etapach / językach i technologiach ORAZ ściśle powiązany. Większość procesów ETL zależy od sekwencji transformacji w potoku.
Ryzyko użycia testu jednostkowego tylko w ETL polega na tym, że nie obejmie on integracji. Sekwencjonowanie transformacji jest równą częścią rzeczywistych transformacji w wielu ETL. Jeśli przeznaczam zasoby na tworzenie automatycznego zestawu testów, upewnię się, że obejmuje on również sekwencjonowanie.
Skoncentrowałbym się na TDD dla każdej unikalnej sekwencji transformacji lub przynajmniej uwzględniłbym te testy w większym zestawie testów. Jeśli jest zbyt wiele kombinacji, może być konieczne wybranie sekwencji do przetestowania. Pomysł polega na sprawdzeniu poprawności potoku ETL dla zestawów danych, w których będzie on używany. Oprócz upewnienia się, że masz zasięg testowy całego kodu.
źródło
ETL można wykonać za pomocą TDD i testów całkiem podobnych do większości projektów, tj
napisz test, który się nie powiedzie (czerwony) napraw błąd (zielony) uczyń kod wydajnym i łatwym do konserwacji (refaktoryzacja)
W przypadku ETL może to być:
źródło