Zarządzanie danymi testowymi to jeden z najstarszych problemów automatyzacji. Już na początku automatyzacji (skrypty testowe w Excelu, makra, stare QTP) dane często były "przechowywane w głowie" autora testów lub bezpośrednio w kodzie. Z rozwojem CI/CD i równoległych uruchomień potrzebne były nowe strategie: jak unikać wyścigów, gdy kilka testów jednocześnie korzysta z tych samych danych, i zapewnić powtarzalność wyników?
Problem: wspólne (shared) dane testowe szybko prowadzą do kolizji i nieprzewidywalnych wyników. Testy stają się niestabilne, trudno je debugować, fragmenty danych "zaśmiecają" bazy, uruchamianie w wielu wątkach prowadzi do błędów (data race).
Rozwiązanie — wdrożenie strategii "dane na test" (Test Data Per Test):
Kluczowe cechy:
Czy normalne jest używanie danych produkcyjnych jako testowych?
Nie! To ryzykowne dla bezpieczeństwa, prywatności, i prowadzi do nieprzewidywalnych testów z powodu zmienności danych.
Czy wystarczy używać setUp i tearDown do czyszczenia danych?
Nie zawsze. Pomagają one minimalizować ryzyko, ale równoległe uruchomienia mogą kolidować, jeśli dane pozostają globalne lub nie są unikalne.
Czy można używać tych samych danych testowych w scenariuszach smoke i regresji?
Lepiej — nie. Testy smoke powinny być maksymalnie niezależne, a regresyjne wymagają kompleksowego przygotowania danych, inaczej możliwe są fałszywe alarmy.
W firmie był jeden wspólny login i kilku "shared" użytkowników oraz zamówień, używanych we wszystkich testach automatycznych. Równoległe uruchomienia prowadziły do tego, że testy nadpisywały zamówienia nawzajem lub zmieniały status jednego zamówienia w kilku wątkach.
Zalety:
Wady:
Wdrożono fabryki danych testowych: przed każdym uruchomieniem testu dla każdego scenariusza tworzono unikalne zamówienie i użytkownika, które były usuwane po zakończeniu testu, a środowisko sandbox było reinicjalizowane.
Zalety:
Wady: