Historia pytania:
Automatyzacja testowania jest ściśle związana z koniecznością tworzenia i utrzymywania przewidywalnych, powtarzalnych danych testowych. Testy ręczne mogą korzystać z dowolnych danych, ale zautomatyzowane scenariusze wymagają dokładnej kontroli stanu danych w bazie danych lub środowisku. Skala aplikacji, praca z mikroserwisami i wymagania dotyczące ochrony prywatności sprawiły, że zadanie zarządzania danymi testowymi stało się jeszcze bardziej skomplikowane.
Problem:
Bez zarządzanych danych testowych testy stają się niestabilne, a ich wyniki — niereprezentatywne. Często pojawiają się sytuacje, gdy:
Ponadto, użycie rzeczywistych danych może naruszać bezpieczeństwo lub politykę prywatności.
Rozwiązanie:
Współczesne podejścia obejmują:
Kluczowe cechy:
Czy można używać rzeczywistych danych z środowiska produkcyjnego do testów automatyzowanych?
Nie. Może to prowadzić do wycieku danych, naruszenia regulacji oraz do niestabilności testów z powodu ciągłych zmian w systemach produkcyjnych.
Czy samo czyszczenie wszystkich danych między testami zapewni stabilność testowania?
Nie. Ważne jest nie tylko czyszczenie danych, ale również ich poprawne przygotowanie do wymaganego stanu. Ponadto, masowe czyszczenie może wpłynąć na testy lub usługi działające równocześnie.
Czy wystarczy mieć jedno środowisko testowe dla wszystkich zespołów?
Nie, to prowadzi do kolizji i konfliktów między testami różnych zespołów. Optymalnym rozwiązaniem są izolowane środowiska lub konteneryzacja (Docker test suites, ephemeral environments).
Zespół testerów używał jednej bazy testowej, w której działały zarówno testy zautomatyzowane, jak i ręczne. Często testy zautomatyzowane zawodzą z powodu ręcznego usunięcia lub zmiany danych, co prowadziło do długiego debugowania i utraty czasu.
Zalety:
Wady:
Firma wprowadziła infrastrukturę środowisk ephemerialnych: każdy test uruchamiany był na osobnej kopii bazy danych, rozwijanej przez Docker. Fikstury były automatycznie ładowane skryptami migracyjnymi.
Zalety:
Wady: