Na etapie projektowania testów jednym z kluczowych zadań jest przygotowanie przypadków testowych bazujących na kryteriach akceptacji określonych w dokumentacji. Aby poprawnie przejść wszystkie przygotowane przypadki, często potrzebujemy określonych zasobów, w tym danych testowych.
Czym są dane testowe? W skrócie są to niezbędne informacje, zgodne ze specyfikacją testowanej aplikacji, przy których użyciu możemy potwierdzić lub nie, że testowana aplikacja działa zgodnie z oczekiwaniami.
Zakres przygotowanych danych powinien umożliwiać sprawdzenie pozytywnych, alternatywnych i negatywnych przepływów procesów, aby zapewnić pełne pokrycie testowe. Odpowiedniej jakości dane wpływają na skuteczność testowania, pomagają wykryć możliwe problemy oraz mogą zapewnić wyższej jakości oprogramowanie.
Zdarza się, że środowisko testowe posiada identyczne dane jak środowisko produkcyjne lub zasilone zostaje danymi z zewnętrznych systemów dziedzinowych. W takiej sytuacji najczęściej mamy także do czynienia z danymi osobowymi wrażliwymi. W związku z tym powinno nastąpić „przetworzenie danych osobowych w taki sposób, by nie można ich było już przypisać konkretnej osobie, której dane dotyczą, bez użycia dodatkowych informacji…”(anonimizacja danych zgodnie z art. 4 ust. 5 RODO), co nastręcza dodatkowych problemów.
Sposoby generowania danych testowych
Dane testowe tworzone manualnie z wykorzystaniem prostych generatorów
Przy niewielkiej liczbie przypadków testowych możemy pozwolić sobie na manualne tworzenie odpowiednich podkładów (danych testowych) z wykorzystaniem fikcyjnych informacji. Możemy do tego wykorzystać prosty generator danych dostępny w Internecie tj. generator numerów (generuje różne rodzaje numerów zgodne z przyjętymi regułami np. NIP, REGON, PESEL, nr dowodu, IBAN itd.).
W ten sposób możemy stworzyć np. fikcyjnego klienta. Niemniej należy pamiętać, że manualny proces tworzenia każdego zasobu (np. klienta) jest czasochłonny, a w wielu sytuacjach nie umożliwia nam przeprowadzania wszystkich niezbędnych testów, zwłaszcza jeśli funkcjonalność lub system, który mamy zweryfikować, jest bardzo rozbudowany. Ponadto musimy pamiętać, że jeśli wystąpią brak dostępności, aktualizacje środowiska lub błędy, to takie dane będziemy musieli generować ponownie.
W celu uniknięcia powtórzeń i pomyłek powinniśmy rozważyć zapisywanie i pilnowanie wykorzystania manualnie przygotowanych danych testowych. To pozwoli lepiej zarządzać utworzonymi w ten sposób zasobami, które czasami są na wagę złota.
Generowanie danych testowych z wykorzystaniem testów automatycznych
W przypadku gdy ilość danych testowych, których potrzebujemy do realizacji scenariuszy, jest znacznie większa i mamy w planach lub już wdrożyliśmy narzędzia i testy automatyczne, powinniśmy rozważyć zastosowanie tych narzędzi do automatycznego tworzenia danych testowych.
Zależnie od rodzaju testów jakie prowadzimy i oprogramowania do automatyzacji z którego korzystamy możemy liczyć na dedykowane metody adresujące problem dostarczania danych testowych. Poniżej znajdują się przykłady kilku najpopularniejszych narzędzi.
Wykorzystanie testów API – (Application Programming Interface)
na środowiskach testowych
Gdy używamy Postmana, możemy skorzystać z Random key. To rozwiązanie dostarcza 24 klasy realistycznie wyglądających danych, które są fikcyjne. Dostarczone klasy obejmują podstawowe dane, takie jak liczby, data i godzina (w określonym formacie) oraz bardziej skomplikowane i specyficzne dane, takie jak numery kart kredytowych, numery ubezpieczenia społecznego, oraz informacje regionalne (w zależności od kraju), lokalizację i nazwę.
W sytuacji, gdy korzystamy z Selenium możemy użyć gotowych klas Javy lub C#. To proste rozwiązanie, które do ciągu stałych znaków dodaje kilka losowych, tworząc za każdym razem unikalną daną. Nie jest to rozwiązanie idealne, ponieważ takie dane nie będą wiernym odwzorowaniem ich realnych odpowiedników. Sposobem poradzenia sobie z takim typem problemu może być zastosowanie gotowych API dla Javy lub C# np. jfairy, które potrafi stworzyć unikalne dane na podstawie informacji pobranych z Wikipedii.
Dla Postmana i Selenium można również wykorzystać dane przygotowane w pliku ręcznie lub wygenerowanego z bazy danych, które będą pobierane do skryptu testowego.
Trzeba pamiętać, że tego typu rozwiązania, ze względu na rozwój testowanej aplikacji, wymagają monitorowania oraz utrzymywania skryptów, co bywa pracochłonne.
Czy korzystanie z takich danych testowych jest bezpieczne?
Z pewnością wymienione sposoby są bezpieczne, jeśli korzystamy jedynie ze spreparowanych sztucznie danych.
Jednak czasami takie dane mogą nie wystarczyć. W takich przypadkach korzystamy np. z informacji, które znajdują się w bazie danych zasilonej danymi z produkcji, by móc sprawdzić przeróżne kombinacje zaplanowanych scenariuszy. Jeśli zostawimy dane w bazie w postaci rzeczywistej, ponosimy duże ryzyko w przypadku wycieku danych. Dzisiejsze przepisy określają, które dane są wrażliwe i nakładają obowiązki związane z zachowaniem bezpieczeństwa informacji. Naprzeciw tym wyzwaniom wychodzą firmy oferujące kompleksowe narzędzia do zarządzania danymi testowymi.
Kompleksowe rozwiązania do zarządzania danymi testowymi
Narzędzia tego typu posiadają różne funkcje i umożliwiają testerom wygenerowanie różnorodnych danych testowych, które obejmują szeroki zakres potrzebnych zasobów testowych. Im większy projekt i jego skomplikowanie, tym bardziej rośnie zapotrzebowanie na dane testowe, a wykorzystanie odpowiednich narzędzi pozwoli usprawnić pracę i zwiększyć efektywność oraz jakość pracy testerów.
Aplikacje do zarządzania danymi testowymi potrafią wiele, poczynając od generowania oraz maskowania danych, także bezpośrednio w bazie danych. Udostępniają platformy online do zarządzania, automatyzacji i wdrażania danych testowych. Pozwolą także utworzyć podzbiory baz danych zawierające tylko część rekordów, zachowując jednocześnie niezmienność referencyjną w wielu bazach danych, takich jak CRM, ERP i systemach finansowych.
Takim kompleksowym rozwiązaniem do zarządzania danymi testowymi jest Global Anonymisation Linked Loader, czyli G.A.L.L. zaprojektowany przez Zespół Soflab.
Soflab G.A.L.L. to najbardziej uniwersalne i kompletne rozwiązanie
do generowania i anonimizacji danych testowych
Soflab G.A.L.L. to zaawansowane, nowoczesne i wszechstronne narzędzie do bezpiecznego i efektywnego zarządzania danymi na dużą skalę. Umożliwia generowanie odpowiednich ilości potrzebnych danych testowych w oparciu o dane produkcyjne i dostarczanie ich na środowiska testowe, a także maskowanie (anonimizację, pseudonimizację) danych na środowiskach produkcyjnych, również tych migrowanych do chmury. Wszystko to w zgodzie z wymaganiami stawianymi przez przepisy RODO.
G.A.L.L. posiada funkcjonalność autodiscovery, która pozwala na automatyczne wykrywanie danych uznanych za wrażliwe. Dzięki niej szybciej ustalisz zakresy danych, które powinny być poddane anonimizacji. Użytkownik sam określa które dane, w jakim stopniu i w jakim zakresie będą modyfikowane w procesie anonimizacji. Maskowanie zapewnia spójność danych dzięki mechanizmowi maskowania, które zastępuje wybrane dane prawdziwe innymi danymi, zachowując przy tym strukturę i pozwalając na walidację. PESEL, choć fikcyjny, pozostanie zgodny ze schematem nadawania tego numeru. Co więcej, będzie on korespondował z nową, fikcyjną datą urodzenia. Numer polisy pozostanie numerem polisy, a miasto lub miejsce zamieszkania, zostanie zmienione na inne o podobnej wielkości. Spójność zostaje zachowana w ujęciu technicznym, merytorycznym i biznesowym.
Skala zastosowania Soflab G.A.L.L. jest bardzo szeroka – od specyficznych potrzeb danego działu po kryteria ogólne, obowiązujące w całej firmie. Użytkownik może zatem zanonimizować dane w pojedynczej bazie lub w wielu bazach i na wielu platformach używanych w organizacji.
Dane te zachowają spójność zarówno techniczną, jak i merytoryczną. Mogą być z powodzeniem wykorzystane przez zespoły BI do analizy biznesowej, ponieważ zachowują wszystkie statystyczne relacje.
GA.L.L. zapewnia szybki proces generowania, anonimizacji i pseudonimizacji wielkich ilości danych bez względu czy będzie to ochrona fragmentu, całej bazy czy kilku baz. Proces zostanie wykonany z maksymalną szybkością na jaką pozwala konkretna technologia.
Dzięki sterownikom JDBC Soflab G.A.L.L. połączy się z każdą relacyjną bazą danych (MySQL, SQL Server, Postgres SQL czy MS Access). Może również realizować proces anonimizacji tylko na podstawie plików w formacie CSV lub za pomocą dedykowanego sterownika Python Connector.
Soflab zapewnia bardzo szybkie i skuteczne uruchomienie narzędzia dzięki doświadczonemu zespołowi specjalistów BI, którzy potwierdzili swoje kompetencje podczas pracy w złożonych środowiskach testowych i produkcyjnych.
Jak optymalnie dobrać sposób generowania danych?
Sposobów na generowanie danych testowych jest kilka i każdy z nich znajdzie zastosowanie w innej sytuacji. W przypadku, gdy ilość potrzebnych danych testowych będzie niewielka, wystarczy generowanie manualne i ewidencja np. w pliku tekstowym lub arkuszu kalkulacyjnym. Gdy zapotrzebowanie na dane wzrośnie, możemy je wygenerować za pomocą skryptów automatycznych, które zapewnią szybsze przygotowanie większych wolumenów danych i np. zapiszą je automatycznie do pliku tekstowego. Należy jednak pamiętać, że w obu przypadkach przygotowane dane mogą nie odzwierciedlać tych rzeczywistych. Aby rozwiązać ten problem rozważmy kompleksowe komercyjne rozwiązanie takie jak Soflab G.A.L.L., które sprawdzą się podczas realizacji dużych projektów. Gwarantują szybkie wdrożenie, automatyczną identyfikację danych testowych, automatycznie dostarczają dane testowe i szybko dają rezultaty. Korzystanie z nich zapewni programistom i testerom użycie wiarygodnych danych, nie narażając przy tym poufnych danych produkcyjnych. To z kolei zminimalizuje zapotrzebowanie na czas i wysiłek potrzebny do zabezpieczenia danych. Dzięki temu zespoły będą mogły skoncentrować się na innych krytycznych aspektach procesu wytwarzania oprogramowania.