Sii Polska

SII UKRAINE

SII SWEDEN

  • Szkolenia
  • Kariera
Dołącz do nas Kontakt
Wstecz

Sii Polska

SII UKRAINE

SII SWEDEN

Wstecz

02.03.2026

Zarządzanie danymi testowymi w duchu „Data as Code” przy użyciu Synthesized

02.03.2026

Zarządzanie danymi testowymi w duchu „Data as Code” przy użyciu Synthesized

W świecie nowoczesnego wytwarzania oprogramowania, gdzie króluje CI/CD i automatyzacja, jeden element układanki wciąż pozostaje archaicznym hamulcem: dane testowe. Podczas gdy kod aplikacji potrafimy napisać z udziałem AI nawet w ciągu kilku minut, tak samo szybko przetestować aplikację na kontenerach, to zazwyczaj przygotowanie odpowiedniego środowiska z danymi potrafi trwać godziny, dni, a czasem nawet tygodnie!

Współczesne aplikacje tworzą oraz przetwarzają coraz większe ilości danych, logika biznesowa opiera się na danych, stąd potrzeba coraz szerszego użycia dużej ilości rekordów dobrej jakości.

W niniejszym artykule skupimy się na powszechnych problemach obserwowanych w procesie zarządzania danymi testowymi oraz tym, jak platforma naszego partnera technologicznego –Synthesized – pomaga je zaadresować.

Wartość zarządzania danymi testowymi (TDM) w procesie zapewnienia jakości

Zarządzanie danymi testowymi (ang. Test Data Management, TDM) przez lata było traktowane jako konieczny, nudny obowiązek. Jednak w dobie regulacji GDPR/HIPP oraz rosnącej złożoności mikroserwisów, TDM staje się krytycznym elementem strategii Quality Assurance.

Wartość nowoczesnego TDM opiera się na trzech filarach:

  1. Szybkość (ang. Time-to-Market): Deweloperzy i testerzy potrzebują danych „tu i teraz”. Oczekiwanie tygodniami na wycinek bazy produkcyjnej to strata pieniędzy i impetu zespołu.
  2. Jakość (ang. Shift-Left Testing): Aby wykrywać błędy wcześnie, potrzebujemy danych, które wiernie odzwierciedlają produkcję (w tym przypadki brzegowe), a nie tylko „happy path”.
  3. Bezpieczeństwo (ang. Compliance): Używanie żywych danych produkcyjnych w środowiskach testowych często wiąże się z ryzykiem naruszenia norm regulacyjnych. Kary za naruszenie GDPR mogą sięgać milionów euro.

Typowe problemy spotykane przy statycznym zarządzaniu danymi

Tradycyjne podejście do danych testowych jest zazwyczaj statyczne i obarczone szeregiem problemów, które inżynierowie QA znają aż za dobrze:

  • Niestabilne środowiska: Współdzielone bazy danych są modyfikowane przez wiele zespołów jednocześnie. Test A nadpisuje dane potrzebne do Testu B, co prowadzi do tzw. flaky tests – testów niestabilnych.
  • Ryzyko wycieku PII (ang. Personally Identifiable Information): Ręczne skrypty anonimizujące są podatne na błędy ludzkie. Wystarczy nowa kolumna z adresami e-mail dodana w sprincie, o której zapomniano w skrypcie maskującym, by naruszyć przepisy o ochronie danych. Dodatkowo, sam proces anonimizacji wymaga bezpośredniego „kontaktu” z danymi wrażliwymi.
  • Ogromne koszty przechowywania: Klonowanie pełnych baz produkcyjnych (często terabajtowych) na potrzeby każdego środowiska deweloperskiego czy testerskiego jest kosztowne i nieefektywne.
  • Brak spójności: Utrzymanie integralności referencyjnej (relacji między tabelami) przy ręcznym generowaniu lub wycinaniu danych (ang. subsetting) jest wysoko podatne na ryzyko błędu, który niezauważony może spowodować trudne do znalezienia przyczyny defektu lub anomalii wyników testów (ang. false positive/false negative).

Platforma Synthesized i podejście „Data as Code”

Tutaj na scenę wchodzi Synthesized ze swoją filozofią Data as Code. Co to właściwie oznacza?

W podejściu tym definicja danych testowych jest traktowana tak samo jak kod źródłowy aplikacji. Zamiast przesyłać kopie baz produkcyjnych w gigabajtach plików .sql lub .dump, przechowujemy lekkie pliki konfiguracyjne w formacie .YAML które opisują, jak dane mają wyglądać.

Platforma Synthesized pozwala na:

  • Deklaratywność: Opisujesz w pliku konfiguracyjnym, co chcesz osiągnąć, a silnik platformy zajmuje się realizacją.
  • Wersjonowanie: Konfiguracja generowania danych „żyje” w repozytorium Git razem z kodem aplikacji. Dzięki temu dane ewoluują wraz ze schematem bazy.
  • Powtarzalność: Każdy członek zespołu może wygenerować ten sam zestaw danych na swoim lokalnym komputerze, używając jednej komendy.
  • Spójność referencyjna: Narzędzie „uczy się” struktury naszych danych, powiązań, kluczy obcych oraz rozkłady statystycznego i na tej podstawie generuje dane z zachowaniem proporcji oraz, co najważniejsze, spójności z modelem.

To podejście diametralnie zmienia ciężar procesu z kopiowania lub odtwarzania zasobu do lekkiego opisu oczekiwanych danych na wysokim poziomie abstrakcji.

Opisane powyżej możliwości techniczne to nie wszystko – kluczowe pozostaje bezpieczeństwo danych testowych. Synthesized nie pobiera ani nie przesyła danych poza siec kliencką. Algorytm GenAI sprawdzający strukturę danych, generujący dane testowe na podstawie produkcji czy anonimizujący dane wrażliwe NIGDY nie kopiuje danych z bazy produkcyjnej. Dane pozostają bezpieczne, bez możliwości wycieku czy nieautoryzowanego dostępu.

Główne funkcjonalności – co potrafi ten „kombajn”?

Platforma Synthesized dostarcza nam cztery kluczowe funkcjonalności, które rozwiązują problemy opisane wyżej.

PII Scanning (Wykrywanie danych wrażliwych)

Zanim zaczniesz cokolwiek robić z danymi, musisz wiedzieć, gdzie kryją się ryzyka. Synthesized posiada moduł skanowania, który automatycznie analizuje schemat bazy i próbki danych, aby zidentyfikować potencjalne informacje umożliwiające identyfikację osób.

Jak to działa: Narzędzie flaguje kolumny takie jak PESEL, e-mail, czy numer karty kredytowej i sugeruje odpowiednie transformacje. Działa to trochę jak linter dla bezpieczeństwa danych.

Mechanizm skanowania danych może być z łatwością dostosowany do wymagań organizacyjnych poprzez dodanie nowych reguł identyfikowania danych wrażliwych, jak również modyfikację istniejących reguł, na przykład dodanie nazwy kolumny zawierającej dane wrażliwe w języku obcym (tj. nie-angielskim).

Masking (Maskowanie i Anonimizacja)

Maskowanie danych wrażliwych przy użyciu platformy Synthesized to nie jest klasyczne „zamień każdy znak wszystko na X”.

Synthesized oferuje zaawansowane metody maskowania zachowujące użyteczność oraz spójność danych:

  • Format-preserving encryption: Anonimizowane dane zachowują pierwotny format, co jestkluczowe dla walidacji front-endowych lub requestów API. Przykładowo, maskowany numer telefonu nadal wygląda JAK prawidłowy numer telefonu, mimo zastąpienia danych rzeczywistych, danymi wygenerowanymi.
  • Spójność deterministyczna: Anonimizowane dane zachowują relacje pomiędzy sobą. Zamaskowane dane wrażliwe zmieniają format zewnętrzny bez naruszenia powiązań logicznych. W przypadku anonimizacji danych klienta, jeśli rekord o nazwie rzeczywistej „Jan Kowalski” występuje w tabeli Użytkownicy i Zamówienia, to po zamaskowaniu jako „Adam Nowak” (lub cr56V^$ B%x#9G w zależności od wybranego trybu maskowania), zmiana ta zostanie odzwierciedlona w obu tabelach w ten sam sposób, zachowując wstępne relacje pomiędzy nimi (ang. Referential Integrity).
  • Możliwość wyboru trybu maskowania: W zależności od wybranej konfiguracji istnieje możliwość anonimizacji danych w dwóch trybach:
    • zastąpienie wartości wrażliwego rekordu przez przypadkowy, losowy zestaw znaków. Daje nam to możliwość odróżnienia danych zanonimizowanych od danych np. wprowadzonych ręcznie na środowisku testowym.
  • zastąpienie wartości wrażliwego rekordu poprzez wygenerowaną wartość za pomocą generatora danych. Przykładowo klient o nazwie „Clint Eastwood” zostanie zamaskowany na „Walt Kowalsky” – wartość imienia i nazwiska wygenerowano losowo, jednak wyglądają jak dane rzeczywiste. Pozwala nam to używać danych „production a like” bez obawy o użycie danych wrażliwych.

Subsetting (Wycinanie podzbiorów)

Typowy przypadek użycia stanowi konieczność przetestowania regresji lub poprawki błędu na środowisku zbliżonym do produkcyjnego, jednak bez konieczności ładowania takiej samej ilości danych.

Gdy potrzebujemy zasilić nasze środowisko danymi, przykładowo w ilości tysięcy rekordów posiadając miliony rekordów w bazie produkcyjnej, zazwyczaj wybierzemy próbkę danych w stylu: „Wybierz 1000 najnowszych rekordów z tabeli”. Dane pobrane w ten sposób nie zawsze będą odzwierciedlać dystrybucję rekordów w bazie produkcyjnej, co może mieć kluczowy wpływ na wynik testu.

Wybierając funkcję Subsetting w platformie Synthesized, używamy podejścia „Smart Slicing”, które w oczekiwanej wielkości zasobu danych zachowa strukturę oraz rozkład danych najbliższe środowisku produkcyjnemu. Przykładowo deweloper nie potrzebuje 10 TB danych z produkcji, aby naprawić jeden błąd. Potrzebuje reprezentatywnego wycinka (np. 1% bazy), ale z zachowaniem wszystkich relacji. Synthesized pozwala wyciąć podzbiór danych, automatycznie skanując klucze obce. Pobierając dane jednego klienta, narzędzie dociągnie jego zamówienia, adresy i historię logowań, ignorując dane innych klientów.

Z podejściem Smart Slicing znacząco redukujemy koszty infrastruktury i czas stawiania środowisk, jak również mitygujemy ryzyko przetestowania zmiany na niereprezentatywnych danych.

Generate (Generowanie danych syntetycznych)

To funkcja, która wyróżnia Synthesized na tle tradycyjnych narzędzi do zarządzania danymi testowymi. Wykorzystując modele uczenia maszynowego (AI/ML), platforma potrafi „nauczyć się” struktury i rozkładu statystycznego na podstawie danych produkcyjnych, a następnie wygenerować zupełnie nowe rekordy.

Nowo stworzone rekordy nie zawierają rzeczywistych danych produkcyjnych, ale zachowują spójność oraz rozkład zgodny ze środowiskiem produkcyjnym.

  • Zastosowanie: Idealne, gdy masz za mało danych produkcyjnych (np. nowy system) lub gdy potrzebujesz przetestować wydajność (ang. Load Testing) i należy stworzyć nowe dane przypominające rozkładem i modelem rekordy z produkcji, ale w zwielokrotnionej ilości.
  • Edge cases: Dzięki elastyczności podejścia Data as Code można skonfigurować generator tak, aby tworzył specyficzne przypadki brzegowe, które rzadko występują na produkcji, ale są krytyczne dla stabilności systemu. Użytkownik może samodzielnie nadpisać rozkład statystyczny dowolnej wartości. Przykładowo, jeśli musimy przetestować nową regułę biznesową, która jest wykonywalna, gdy lista należności ze statutem „OVERDUE” przekroczy 10%, natomiast nasze dane produkcyjne zawierają 5% takich statusów, wówczas w pliku konfiguracyjnym przygotujemy nadpisanie rozkładu statystycznego z produkcji poprzez wygenerowanie na sztywno 11% rekordów ze statusem „OVERDUE”. Rekordy będą spójne syntetycznie tj. nie jest to proste zastąpienie statusu, tylko wygenerowanie nowego rekordu wraz z powiązanymi encjami.
  • Generowanie danych możemy użyć również do „czyszczenia” naszych zasobów testowych: Synthesized, zapewniając funkcjonalność Subsettingu, wraz z generowaniem danych pozwala nam łatwo stworzyć plik konfiguracyjny czyszczący nasze środowisko testowe zarówno z danych nadmiarowych (możemy zakodować usuwanie 90% danych po suicie testowej) lub wyczyszczenie „do zera”. Używając funkcji „Czyszczenia Danych”, możemy zachować lub usunąć schemat struktury bazy danych.

Obsługiwane formaty

Synthesized.io oferuje nam szeroki wachlarz możliwości pracy z powszechnie spotykanymi silnikami bazami danych.

Jako źródło danych platforma posiada natywne wsparcie dla:

  • Postgres,
  • MySQL,
  • MariaDB,
  • SQLLITE,
  • Oracle,
  • MSSQL,
  • H2,
  • DB2(w tym mainframe),
  • Snowflake,
  • SAPHANA,
  • plików płaskich jak .csv.

Dodatkowym ułatwieniem dla testów systemów klasy enterprise są wbudowane connectory pozwalające na swobodne korzystanie z danych produkcyjnych w celu anonimizacji lub subsettingu czy generowania.

Dedykowane wsparcie dostępne jest dla platform:

  • SAP,
  • ServiceNow,
  • Microsoft Dynamics365,
  • Workday,
  • Salesforce,
  • oraz wielu innych.

Integracje z CI/CD

Synthesized zostało zaprojektowane, aby w pełni wspierać integrację z pipelinami CI/CD, pozwalając na generowanie danych testowych „w locie”, podczas wykonywania różnych poziomów testów na zdalnych zasobach. Synthesized, aby współpracować z systemami CI/CD, posiada narzędzie Synthesized CLI pozwalające na wyzwalanie skonfigurowanych procesów generowania czy anonimizacji danych z poziomu konsoli bez interfejsu graficznego.

Interfejs użytkownika (ang. Governor UI) pozwala zarządzać projektami, dostępem dla użytkowników, źródłami danych oraz w łatwy sposób tworzyć oraz zarządzać plikami konfiguracyjnymi.

Dzieki Synthesized CLI możemy zaimportować schemat json do naszego IDE oraz tworzyć i zarządzać plikami konfiguracyjnymi Synthesized jako częścią naszego projektu testów automatycznych.

Typowy scenariusz (ang. Pipeline) z użyciem Synthesized wygląda następująco:

  1. Commit: Deweloper wypycha zmianę w kodzie (np. migrację dodającą nową tabelę).
  2. Build: Serwer CI buduje aplikację.
  3. Data Provisioning: W kroku testowym CI uruchamia Synthesized TDK. Narzędzie pobiera definicję danych (w formacie YAML), łączy się z (bezpiecznym) źródłem, aplikuje maskowanie i generuje lekki plik bazy danych (np. kontener Docker z postgreSQL wypełniony syntetycznymi danymi).
  4. Test: Testy automatyczne są uruchamiane na tej świeżej, efemerycznej bazie danych.
  5. Cleanup: Po zakończeniu testów środowisko jest czyszczone. Kontener zostaje usunięty.

Taki proces gwarantuje, że każde uruchomienie testów odbywa się na czystym, przewidywalnym i bezpiecznym zestawie danych. W żadnym momencie dane wrażliwe nie są używane ani przesyłane poza sieć wewnętrzną organizacji.

Blog Testing Lab Desktop  - Zarządzanie danymi testowymi w duchu „Data as Code” przy użyciu Synthesized

Testing & QA

Zapewnij jakość, wydajność i bezpieczeństwo swojego oprogramowania dzięki naszym usługom testowania i automatyzacji testów.

Oferta Testing&QA

Podsumowanie

Przejście na model Data as Code z wykorzystaniem narzędzi takich jak Synthesized to naturalny krok w ewolucji DevOps. Pozwala organizacjom odzyskać kontrolę nad chaosem danych testowych, zredukować koszty chmury i, co najważniejsze, spać spokojnie, wiedząc, że dane klientów są bezpieczne, a wydane oprogramowanie – solidnie przetestowane.

Jeśli Twoja organizacja wciąż ręcznie kopiuje backupy produkcyjne, być może nadszedł czas, by potraktować dane tak samo poważnie, jak kod.

W następnych artykułach z serii sprawdzimy, w jaki sposób skonfigurować darmową wersję platformy Synthesized w celu samodzielnego zapoznania się z jej możliwościami.

Warto sprawdzić

Dodatkowo polecam zapoznać się z oficjalną stroną narzędzia oraz opublikowaną dokumentacją:

5/5
Ocena
5/5
Avatar

O autorze

Wojciech Chrząszcz

Wojciech ma bogate doświadczenie w sektorach regulowanych, w tym w służbie zdrowia i bankowości, pełniąc funkcję zarówno inżyniera ds. automatyzacji testów, jak i kierownika ds. testów. Zawodowo jest zwolennikiem podejścia do testowania typu „shift-left”, skupiającego się na ciągłym samodoskonaleniu. W Sii wspiera klientów w projektowaniu optymalnych procesów jakościowych, a także we wdrażaniu automatyzacji testów. Po pracy lubi aktywności na świeżym powietrzu i czyta literaturę popularnonaukową

Wszystkie artykuły autora

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Może Cię również zainteresować

ZAPISZ SIĘ I BĄDŹ NA BIEŻĄCO

Newsletter blogowy

Dołącz do nas

Sprawdź oferty pracy

Pokaż wyniki
Dołącz do nas Kontakt

This content is available only in one language version.
You will be redirected to home page.

Are you sure you want to leave this page?