W jaki sposób optymalnie generować dane testowe i czy lepiej robić to manualnie czy automatycznie? Najczęściej padająca odpowiedź brzmi „to zależy”. Zastanówmy się więc, co wpływa na wybór metody do generowania danych testowych.
Sposoby generowania danych testowych
Rodzaj danych jakich potrzebujemy w głównej mierze determinuje sposób, w jaki będzie nam je najłatwiej pozyskać. Proste dane takie jak login czy hasło możemy generować manualnie i jest to stosunkowo prosty sposób na dostarczenie zmiennych do testów aplikacji. Manualne generowanie danych może być jednak pracochłonne oraz podatne na błędy, przykładowo wprowadzenie nr PESEL czy IBAN bez błędu jest rzadkością. Na pomoc w takich przypadkach przychodzą nam proste generatory danych, które potrafią stworzyć cały zestaw danych np. dane personalne, zawierające imię i nazwisko, nr pesel czy nr konta bankowego, spełniające wymogi algorytmów służących do ich weryfikacji. Sytuacja komplikuje się, gdy wprowadzone przez nas dane musimy przechowywać w sposób umożliwiający ich dalsze wykorzystanie. Pierwszym przykładem takich danych jest zestaw danych kartoteki klienta. Podajemy imię i nazwisko, login do konta czy inne dane wymagane przez aplikację, aby założyć konto klienta. Takie dane przechowywane w bazie aplikacji dają nam możliwość ich ponownego użycia do dalszych prac. Wykorzystując więc proste dane do stworzenia kartoteki klienta w wyniku ich zaewidencjonowania w systemie, otrzymaliśmy zestaw danych klienta. Często taki zestaw otrzymuje swoje ID wykorzystywane jako identyfikator dla innych systemów. Możemy to jeszcze bardziej skomplikować dodając klientowi usługi czy produkty, które z pewnością będą miały swoje ID i będą pozostawały w określonych relacjach do innych modułów czy systemów. W ten sposób dysponujemy już dość pokaźnym zestawem danych. Każdorazowe ręczne generowanie zestawu danych w postaci np. danych klienta i jego usług jest na pewno czasochłonne jak i monotonne. Dlatego jeśli potrzebujemy dużych ilości różnorodnych danych, to można je generować automatycznie lub zasilić naszą aplikację już gotowym zestawem danych.
Tworzenie automatu do generowania danych testowych to oszczędność czasu
Tworzenie automatu do generowania potrzebnych danych pozwala zaoszczędzić czas i pracę potrzebną na ich manualne wytworzenie. Jednocześnie należy pamiętać, że wymaga także nakładu pracy w celu stworzenia automatu i utrzymania poprawności jego działania. Alternatywnym rozwiązaniem jest zasilenie naszego systemu gotową bazą klientów i usług. Rozwiązaniem dającym najwięcej możliwości tworzenia danych, których potrzebujemy, jest import danych produkcyjnych. Pozyskane w ten sposób dane będą w pełni odzwierciedlały sytuację początkową dla naszych zmian w aplikacji, co pozwoli w pełni pokryć przypadki niezbędne do testów. Po anonimizacji takich danych jest to jeden z najlepszych zestawów danych jakie możemy uzyskać. Jak należy postąpić, jeśli nie możemy wykorzystać bazy produkcyjnej, bo aplikacja jeszcze jej nie posiada, lub jest niemożliwa do pozyskania? W takim przypadku, znając wymagania odnośnie naszej bazy, możemy stworzyć ją sami wykorzystując do tego odpowiednie narzędzia, które uzupełnią bazę naszego systemu o niezbędny zestaw danych. Dzięki temu pozyskamy możliwie dużą bazę danych do wykorzystania w testach bez konieczności jej anonimizacji.
Wybór sposobu generowania danych zależy od ilości danych testowych których potrzebujemy
Nie odpowiedzieliśmy sobie jeszcze na pytanie czy dane generować automatycznie czy manualnie, ale mamy już podstawy do wysnucia odpowiedzi. W pierwszej kolejności zależy to od ilości danych, których potrzebujemy. Stworzenie w sposób manualny nawet najbardziej skomplikowanych zestawów danych w małej ilości, zawsze będzie bardziej korzystne pod względem nakładu pracy i kosztów, niż tworzenie skryptów automatycznych, które te dane wytworzą, czy przygotowanie bazy danych do zasilenia nią systemu. Mamy wiec pierwszą odpowiedź – to zależy od ilości niezbędnych nam danych testowych. Jeżeli są to niewielkie wolumeny, to rozsądniej jest wytworzyć je manualnie.
Jak zatem postąpić w sytuacji, gdy musimy zapewnić duże ilości danych testowych? W takim przypadku mamy dwie możliwości. Pierwszą z nich jest stworzenie skryptu automatycznego, który wytworzy za nas niezbędne dane lub zasilenie naszej aplikacji odpowiednim zestawem danych. Tworzenie danych za pomocą skryptów automatycznych jest wolniejsze niż zasilenie bazy danymi – często jest to symulowanie działania użytkownika. Jest też bardziej podatne na zmiany w aplikacji i wymaga większej ilości prac utrzymaniowych, gdyż częściej wprowadza się zmiany w kodzie aplikacji niż w strukturze danych. Generowanie danych przez skrypty automatyczne ma jedną znaczącą przewagę nad zasileniem bazy naszej aplikacji. W momencie, gdy na naszym środowisku testowym relacje pomiędzy poszczególnymi danymi nadawane są unikatowo dla naszego środowiska, import danych z zewnątrz nie zawsze będzie możliwy ze względu na konieczność zachowania ciągłości relacji pomiędzy tymi danymi. Automatyczne generowanie danych przez symulowanie działania użytkownika pozwala pominąć ten problem, gdyż przez cały proces tworzymy dane sekwencyjnie w danym środowisku przy zachowaniu ciągłości.
W jakich przypadkach najlepiej generować dane automatycznie?
W momencie kiedy potrzebujemy dużych wolumenów danych w środowisku wymagającym zachowania ich ciągłości. Nie oznacza to, że importowanie danych nie będzie już nigdy przydatne. W momencie gdy jesteśmy w stanie zapewnić reużywalność danych zaimportowanych, powinniśmy w pierwszej kolejności rozważyć tę możliwość. Import bazy danych będzie zawsze szybszy i zapewniający większy przekrój danych niż wytworzenie automatów. Można zatem stwierdzić, że w pierwszej kolejności powinniśmy rozważyć import danych testowych. Dopiero jeśli nie będziemy mogli zapewnić wymaganej przez nasz zakres testów ciągłości w relacjach pomiędzy danymi, powinniśmy rozważyć automat testowy.
Soflab G.A.L.L. pozwala na szybkie zasilenie bazy danych przy zachowaniu relacji pomiędzy danymi w środowisku testowym
Istnieje także możliwość połączenia szybkiego zasilenia bazy danych przy zachowaniu relacji pomiędzy bazami i danymi w środowisku testowym, którą zapewnia platforma Soflab G.A.L.L. Narzędzie to wykorzystuje jako wzór reprezentatywny przykład z naszego środowiska testowego, a następnie zasila naszą bazę o potrzebne do testów dane, zachowując przy tym ich różnorodność. Rozwiązanie zapewnia sprawny proces generowania dowolnej ilości wiarygodnych danych testowych, poprawia efektywność procesów testowych, nie naruszając przy tym bezpieczeństwa danych rzeczywistych.
Generowanie danych na środowisko testowe – od czego zacząć?
Od czego zatem zależy sposób dostarczania danych na nasze środowisko testowe? W pierwszej kolejności od ilości niezbędnych nam danych, a następnie od stopnia ich skomplikowania na naszym środowisku testowym – to w tym przypadku warto rozważyć użycie wspomnianego wyżej narzędzia Soflab G.A.L.L. Rozwiązanie to pozwala na połączenie szybkości zasilenia bazy i zachowanie ciągłości pomiędzy relacjami w naszej bazie lub bazach danych. Wystarczy jeden reprezentatywny przykład, aby aplikacja w inteligentny sposób dostarczyła nam zestawy zróżnicowanych danych. Innym alternatywnym sposobem jest zasilenie bazy naszej aplikacji przez import danych produkcyjnych lub jej zasilenie danymi niezależnymi. Jeżeli import danych testowych będzie niemożliwy ze względy na ich specyfikę, to wtedy rozwiązaniem może być utworzenie automatów testowych.
Każda z wymienionych metod dostarczania danych na nasze środowisko sprawdza się w innej sytuacji, zatem najpierw należy dokonać rzetelnej analizy naszego przypadku, a następnie podjąć decyzję, która z metod najlepiej zaadresuje nasze potrzeby i przyniesie spodziewane efekty.