Najlepsze praktyki w automatyzacji testów potoku danych

Najlepsze praktyki w automatyzacji testów potoku danych

Węzeł źródłowy: 2035833

Procesy integracji danych korzystają z automatycznych testów, tak jak każde inne oprogramowanie. Jednak znalezienie projektu potoku danych z odpowiednim zestawem automatycznych testów jest rzadkością. Nawet jeśli projekt obejmuje wiele testów, często są one nieustrukturyzowane, nie komunikują swojego celu i są trudne do przeprowadzenia.

Charakterystyka potok danych rozwój to częste publikowanie wysokiej jakości danych w celu uzyskania opinii i akceptacji użytkowników. Na końcu każdej iteracji potoku danych oczekuje się, że dane są wysokiej jakości dla następnej fazy. 

Testowanie automatyczne jest niezbędne do testowania integracji potoków danych. Testowanie ręczne jest niepraktyczne w wysoce iteracyjnych i adaptacyjnych środowiskach programistycznych.

Główne problemy z ręcznym testowaniem danych

Po pierwsze, trwa to zbyt długo i jest krytycznym hamulcem dla częstych dostaw rurociągów. Zespoły, które polegają głównie na testowaniu ręcznym, odkładają testowanie na dedykowane okresy testowe, co pozwala na gromadzenie się błędów. 

Po drugie, ręczne testowanie potoku danych jest niewystarczająco powtarzalne w przypadku testowania regresji. 

Automatyzacja testów potoku danych wymaga wstępnego planowania i ciągłej staranności, ale kiedy zespoły techniczne wdrożą automatyzację, sukces projektu jest bardziej pewny.

Warianty potoków danych

  • Wyodrębnij, przekształć i załaduj (ETL)
  • Wyodrębnij, załaduj i przekształć (ELT)
  • Jezioro danych, potoki hurtowni danych
  • Rurociągi w czasie rzeczywistym
  • Potoki uczenia maszynowego

Komponenty potoku danych do rozważenia przy automatyzacji testów

Potoki danych składają się z kilku komponentów, z których każdy odpowiada za określone zadanie. Elementy potoku danych obejmują:

  • Źródła danych: Pochodzenie danych
  • Pozyskiwanie danych: Proces zbierania danych ze źródła danych
  • Transformacja danych: Proces przekształcania zebranych danych do formatu, który można wykorzystać do dalszej analizy
  • Weryfikacja/walidacja danych: Proces zapewniający dokładność i spójność danych
  • Przechowywanie danych: Proces przechowywania przekształconych i zweryfikowanych danych w hurtowni danych lub jeziorze danych
  • Analiza danych: Proces analizowania przechowywanych danych w celu identyfikacji wzorców, trendów i spostrzeżeń

Najlepsze praktyki dotyczące automatyzacji testowania potoku danych

Co i kiedy automatyzować (a nawet czy potrzebujesz automatyzacji) to kluczowe decyzje dla zespołu testowego (lub programistycznego). Wybór odpowiednich cech produktu do automatyzacji w dużej mierze decyduje o powodzeniu automatyzacji. 

Podczas automatyzacji testów dla potoku danych najlepsze praktyki obejmują:

  • Zdefiniuj jasne i konkretne cele testów: Przed przystąpieniem do testowania konieczne jest zdefiniowanie, co chcesz osiągnąć poprzez testowanie. Pomoże to w tworzeniu skutecznych i wydajnych testów, które dostarczają cennych informacji.
  • Przetestuj wszystkie przepływy pracy potoku danych: Potok danych zwykle składa się z kilku składników: pozyskiwania danych, przetwarzania, przekształcania i przechowywania. Ważne jest, aby przetestować każdy komponent, aby zapewnić prawidłowy i płynny przepływ danych przez potok.
  • Użyj wiarygodnych danych testowych: Podczas testowania potoku danych ważne jest, aby używać realistycznych danych, które naśladują rzeczywiste scenariusze. Pomoże to zidentyfikować wszelkie problemy, które mogą wystąpić podczas obsługi różnych typów danych.
  • Automatyzuj za pomocą skutecznych narzędzi: Można to osiągnąć za pomocą ram testowych i narzędzi.
  • Regularnie monitoruj rurociąg: Nawet po zakończeniu testów konieczne jest regularne monitorowanie potoku, aby upewnić się, że działa on zgodnie z przeznaczeniem. Pomoże to zidentyfikować problemy, zanim staną się problemami krytycznymi.
  • Zaangażuj interesariuszy: Zaangażuj w proces testowania interesariuszy, takich jak analitycy danych, inżynierowie danych i użytkownicy biznesowi. Pomoże to zapewnić, że testy są istotne i wartościowe dla wszystkich zainteresowanych stron.
  • Prowadź dokumentację: Ważne jest przechowywanie dokumentów opisujących testy, przypadki testowe i wyniki testów. Pomoże to zapewnić, że testy będą mogły być replikowane i utrzymywane w miarę upływu czasu.

Bądź ostrożny; należy unikać automatyzacji zmiany niestabilnych funkcji. Obecnie żadnego znanego narzędzia biznesowego ani zestawu metod/procesów nie można uznać za kompletny, kompleksowy test potoku danych. 

Rozważ swoje cele automatyzacji testów

Automatyzacja testów potoku danych jest opisana jako używanie narzędzi do kontroli 1) wykonywania testów, 2) porównania rzeczywistych wyników z wynikami przewidywanymi oraz 3) ustawienie warunków wstępnych testu i innych funkcji kontroli testów i raportowania testów. 

Ogólnie rzecz biorąc, automatyzacja testów obejmuje automatyzację istniejącego procesu ręcznego, który wykorzystuje formalny proces testowy.

Chociaż ręczne testy potoków danych mogą ujawnić wiele błędów danych, są one pracochłonne i czasochłonne. Ponadto testy ręczne mogą być nieskuteczne w wykrywaniu niektórych defektów. 

Automatyzacja potoków danych obejmuje opracowywanie programów testowych, które w przeciwnym razie musiałyby być wykonywane ręcznie. Po zautomatyzowaniu testów można je szybko powtarzać. Jest to często najbardziej opłacalna metoda dla potoku danych, który może mieć długą żywotność. Nawet drobne poprawki lub ulepszenia w okresie eksploatacji potoku mogą spowodować awarię funkcji, które działały wcześniej.

Integracja zautomatyzowanych testów w opracowywaniu potoków danych wiąże się z wyjątkowym zestawem wyzwań. Obecnych zautomatyzowanych narzędzi do testowania tworzenia oprogramowania nie można łatwo dostosować do projektów baz danych i potoków danych. 

Szeroka gama architektur potoków danych dodatkowo komplikuje te wyzwania, ponieważ obejmują one wiele baz danych wymagających specjalnego kodowania w celu ekstrakcji danych, transformacji, ładowania, czyszczenie danych, agregacja danych i wzbogacanie danych.

Narzędzia do automatyzacji testów mogą być drogie i zwykle są używane razem z testami ręcznymi. Jednak na dłuższą metę mogą stać się opłacalne, zwłaszcza gdy są używane wielokrotnie w testach regresji.

Często kandydaci do automatyzacji testów   

  • Testowanie raportów BI 
  • Zgodność biznesowa, rządowa
  • Przetwarzanie agregacji danych
  • Czyszczenie i archiwizacja danych
  • Testy jakości danych
  • Uzgadnianie danych (np. źródło do celu)
  • Transformacje danych
  • Ładowanie danych tabeli wymiarów
  • Testowanie od końca do końca
  • ETL, ELT testy walidacyjne i weryfikacyjne
  • Ładowanie danych tabeli faktów 
  • Weryfikacja ładowania plików/danych
  • Testowanie obciążenia przyrostowego
  • Testy obciążenia i skalowalności
  • Brakujące akta, akta, pola
  • Test wydajności 
  • Więzy integralności
  • Testy regresji
  • Testy bezpieczeństwa
  • Testowanie i profilowanie danych źródłowych
  • Inscenizacja, walidacja danych ODS 
  • Testy jednostkowe, integracyjne i regresyjne

Automatyzacja tych testów może być konieczna ze względu na złożoność przetwarzania oraz liczbę źródeł i celów, które należy zweryfikować. 

W przypadku większości projektów procesy testowania potoku danych mają na celu weryfikację i wdrożenie jakości danych.

Różnorodność dostępnych obecnie typów danych stanowi wyzwanie dla testerów

Obecnie dostępnych jest wiele typów danych, od tradycyjnych ustrukturyzowanych typów danych, takich jak tekst, liczby i daty, po nieustrukturyzowane typy danych, takie jak audio, obrazy i wideo. Ponadto różne typy częściowo ustrukturyzowanych danych, takie jak XML i JSON, są szeroko stosowane w tworzeniu stron internetowych i wymianie danych.

Wraz z nadejściem Internetu rzeczy (IoT) nastąpiła eksplozja różnych typów danych, w tym danych z czujników, danych o lokalizacji i danych komunikacyjnych między maszynami. Ponieważ te typy danych są wyodrębniane i przekształcane, testowanie może stać się bardziej skomplikowane bez odpowiednich narzędzi. Doprowadziło to do powstania nowych technologii zarządzania danymi i technik analitycznych, takich jak przetwarzanie strumieniowe, przetwarzanie brzegowe i analizy w czasie rzeczywistym.

Rysunek 1 przedstawia przykłady typów danych, które są obecnie powszechnie używane. Ogromna liczba stanowi wyzwanie podczas sprawdzania, czy wymagane przekształcenia są wykonywane poprawnie. W rezultacie specjaliści ds. danych muszą być dobrze zorientowani w szerokim zakresie typów danych i umieć dostosowywać się do testowania pojawiających się trendów i technologii.

Rysunek 1: Przykłady różnych źródeł danych i celów danych

Oceń komponenty rurociągu pod kątem możliwych testów automatycznych

Kluczowym elementem zwinnych i innych nowoczesnych rozwiązań są testy automatyczne. Możemy zastosować tę świadomość do potoku danych.

Istotnym aspektem testowania potoków danych jest to, że liczba przeprowadzanych testów będzie nadal rosła w celu sprawdzenia dodanej funkcjonalności i konserwacji. Rysunek 2 pokazuje wiele obszarów, w których można zastosować automatyzację testów w potoku danych.

Rysunek 2: Testowanie „gorących punktów” od początku do końca potoku danych

Wdrażając automatyzację testów, dane mogą być śledzone od warstw źródłowych, poprzez przetwarzanie potoku danych, aż do załadowania w potoku danych, a następnie do aplikacji front-end lub raportów. Załóżmy, że w aplikacji front-end lub raporcie znaleziono uszkodzone dane. W takim przypadku wykonanie zautomatyzowanych zestawów może pomóc w szybszym określeniu, czy poszczególne problemy są zlokalizowane w źródłach danych, procesie potoku danych, nowo załadowanej bazie danych potoku danych/zbiornicy danych, czy raportach Business Intelligence/analitycznych.

Nacisk na szybką identyfikację problemów z danymi i wydajnością w złożonych architekturach potoków danych zapewnia kluczowe narzędzie do promowania wydajności programowania, skracania cykli kompilacji i spełniania docelowych kryteriów wydania.

Zdecyduj kategorie testów do zautomatyzowania

Sztuczka polega na określeniu, co powinno być zautomatyzowane i jak obsłużyć każde zadanie. Podczas automatyzacji testów należy wziąć pod uwagę zestaw pytań, takich jak:

  • Jaki jest koszt automatyzacji testów?
  • Kto jest odpowiedzialny za automatyzację testów (np. Dev., QA, inżynierowie danych)?
  • Jakich narzędzi testowych należy użyć (np. open source, dostawcy)?
  • Czy wybrane narzędzia spełnią wszystkie oczekiwania?
  • W jaki sposób zostaną zgłoszone wyniki testów?
  • Kto interpretuje wyniki badań?
  • W jaki sposób będą utrzymywane skrypty testowe?
  • Jak zorganizujemy skrypty, aby uzyskać łatwy i dokładny dostęp? 

Rysunek 3 przedstawia przykładowe czasy trwania (na wykonanie testów, identyfikację defektów i raportowanie) dla ręcznych i automatycznych przypadków testowych z rzeczywistych doświadczeń projektowych.

Rysunek 3: Porównanie czasu trwania testów ręcznych i automatycznych.

Zautomatyzowane testowanie potoku danych ma na celu objęcie najbardziej krytycznych funkcji ładowania potoku danych – synchronizacji i uzgadniania danych źródłowych i docelowych.

Korzyści i ograniczenia testów automatycznych

 Wyzwania związane z automatyzacją testów

  • Zgłoś testowanie: Testowanie Business Intelligence lub raportów analitycznych poprzez automatyzację
  • Złożoność danych: Testowanie potoków danych często obejmuje złożone struktury danych i transformacje, które mogą być trudne do zautomatyzowania i wymagają specjalistycznej wiedzy.
  • Złożoność rurociągu: Potoki danych mogą być złożone i obejmować wiele etapów przetwarzania, co może być trudne do przetestowania i debugowania. Ponadto zmiany w jednej części potoku mogą mieć niezamierzone konsekwencje na dalszych etapach.

Korzyści z automatyzacji testów

  • Wykonuje przypadki testowe szybciej: Automatyzacja może przyspieszyć wdrażanie scenariuszy testowych.
  • Tworzy zestaw testów wielokrotnego użytku: Gdy skrypty testowe zostaną uruchomione za pomocą narzędzi do automatyzacji, można utworzyć ich kopię zapasową w celu łatwego przywołania i ponownego wykorzystania.
  • Ułatwia raportowanie testów: Ciekawą cechą wielu zautomatyzowanych narzędzi jest możliwość generowania raportów i plików testowych. Możliwości te dokładnie odzwierciedlają stan danych, jasno identyfikują braki i są wykorzystywane w audytach zgodności. 
  • Zmniejsza koszty personelu i przeróbek: Czas poświęcony na ręczne testowanie lub ponowne testowanie po naprawieniu defektów można przeznaczyć na inne inicjatywy w dziale IT.

Potencjalne ograniczenia

  • Nie może całkowicie zastąpić testów ręcznych: Chociaż automatyzacja może być używana do różnych aplikacji i przypadków testowych, nie może całkowicie zastąpić testów ręcznych. Nadal będą istnieć skomplikowane przypadki testowe, w których automatyzacja nie przechwyci wszystkiego, a w przypadku testów akceptacyjnych użytkowników końcowi często muszą przeprowadzać testy ręcznie. Dlatego posiadanie odpowiedniej kombinacji testów automatycznych i ręcznych w procesie ma kluczowe znaczenie. 
  • Koszt narzędzi: Komercyjne narzędzia testujące mogą być drogie, w zależności od ich wielkości i funkcjonalności. Z pozoru firma może postrzegać to jako niepotrzebny koszt. Jednak samo ponowne użycie może szybko uczynić z niego atut. 
  • Koszt szkolenia: Testerów należy szkolić nie tylko w zakresie programowania, ale także planowania testów automatycznych. Zautomatyzowane narzędzia mogą być skomplikowane w użyciu i mogą wymagać przeszkolenia użytkowników.
  • Automatyzacja wymaga planowania, przygotowania i dedykowanych zasobów: Sukces testów automatycznych zależy głównie od precyzyjnych wymagań testowych i starannego opracowania przypadków testowych przed rozpoczęciem testowania. Niestety, tworzenie przypadków testowych jest nadal przede wszystkim procesem ręcznym. Ponieważ każda organizacja i aplikacja potoku danych mogą być unikalne, wiele zautomatyzowanych narzędzi testowych nie tworzy przypadków testowych.

Pierwsze kroki z automatyzacją testów potoku danych

Nie wszystkie testy potoków danych nadają się do automatyzacji. Oceń powyższe sytuacje, aby określić, jakie rodzaje automatyzacji przyniosłyby korzyści Twojemu procesowi testowemu i ile jest potrzebne. Oceń swoje wymagania testowe i zidentyfikuj wzrost wydajności, który można osiągnąć dzięki automatycznym testom. Największe korzyści odniosą zespoły potoków danych, które poświęcają dużo czasu na testowanie regresji. 

Opracuj uzasadnienie biznesowe dla testów automatycznych. Dział IT musi najpierw uzasadnić, aby przekazać wartość firmie. 

Oceń opcje. Po dokonaniu oceny obecnego stanu i wymagań w dziale IT określ, które narzędzia są zgodne z procesami i środowiskami testowymi organizacji. Opcje mogą obejmować dostawców, open source, narzędzia wewnętrzne lub mieszankę narzędzi. 

wnioski

Ponieważ automatyzacja testów szybko stała się istotną alternatywą dla testów ręcznych, coraz więcej firm szuka narzędzi i strategii, aby z powodzeniem wdrożyć automatyzację. Doprowadziło to do znacznego rozwoju narzędzi do automatyzacji testów opartych na Appium, Selenium, Katalon Studio i wielu innych. Jednak zespoły zajmujące się potokiem danych i inżynierami danych, analityką biznesową i zapewnianiem jakości muszą posiadać odpowiednie umiejętności programistyczne, aby w pełni korzystać z tych narzędzi automatyzacji. 

Wielu ekspertów IT przewidywało, że luka w wiedzy między testerami a programistami musi i będzie stale zmniejszana. Zautomatyzowane narzędzia do testowania potoków danych mogą znacznie skrócić czas poświęcony na testowanie kodu w porównaniu z konwencjonalnymi metodami ręcznymi.

Ponieważ możliwości opracowywania potoków danych stale rosną, rośnie również zapotrzebowanie na bardziej kompleksowe i nowoczesne zautomatyzowane testowanie danych.

Znak czasu:

Więcej z WSZECHSTRONNOŚĆ DANYCH