Przy pracy z testami automatycznymi prawidłowa struktura to klucz do ich efektywności i trwałości.
Historia problemu
W przeszłości testy automatyczne często były tworzone jako monolityczne i ściśle związane skrypty. Utrudniało to ich utrzymanie i rozwój. Wzrost liczby testów ujawnił znaczenie odpowiedniej architektury.
Problem
Bez klarownej struktury pojawiają się:
Rozwiązanie
Użyj wyraźnych poziomów abstrakcji dla swoich testów:
Dobrą praktyką jest używanie:
# Przykład struktury /tests /features test_order_creation.py /steps order_steps.py /pages order_page.py
Kluczowe cechy:
Co lepsze: pisać długie testy end-to-end czy krótkie testy jednostkowe?
Często wybiera się tylko testy end-to-end, ale ważne jest, aby łączyć różne typy testów w zależności od celów: wszystkie poziomy (Unit, API, UI) są ważne dla jakościowych weryfikacji.
Czy można w testach jednocześnie używać sprawdzenia UI na podstawie tekstu i lokalizatorów?
Nie zawsze jest to poprawne: można używać obu sposobów jednocześnie, ale tylko jeśli zmienność UI i logika testu to usprawiedliwiają. Często jest to zbędne i komplikuje utrzymanie.
Czy warto całkowicie kopiować strukturę systemu testowanego oprogramowania przy tworzeniu testów automatycznych?
Nie, struktura testów automatycznych powinna być ukierunkowana na wygodę testowania, a nie na dokładne odwzorowanie architektury aplikacji.
W zespole testy automatyczne pisała jedna osoba, testy były w jednym pliku, każdy test kopiował kroki poprzedniego. Przy aktualizacji interfejsu błąd naprawiano we wszystkich testach ręcznie.
Zalety:
Wady:
W innym zespole wprowadzono architektoniczny wzór (podział kroków, stron, testów). Nowi pracownicy szybko się orientowali i szybko wprowadzali nowe testy, aktualizacje były dokonywane w jednym miejscu.
Zalety:
Wady: