Strona główna > 7 sposobów na szybsze testy Selenium

7 sposobów na szybsze testy Selenium

Testy GUI to najcięższy typ testów. Ich pisanie, utrzymanie oraz wykonanie zajmuje więcej czasu niż na przykład w testach API. Z drugiej strony, to właśnie testy GUI dają największą wartość biznesową. To właśnie dlatego, mimo tych wszystkich problemów, ciągle je piszemy.

Jednak ze względu na czas trwania tych testów, często chcemy je przyspieszać. Jest na to kilka rozwiązań – w tym wpisie pokażę Wam 7 sposobów na szybsze testy Selenium.

7 sposobów na szybsze testy Selenium

Mądre zaprojektowanie testów 

Tutaj możecie bardzo dużo ugrać. Po prostu upewnijcie się, że nie testujecie jednej rzeczy dwa razy. Sprawdźcie też, czy możecie skrócić etap przygotowania do testu, np. poprzez przejście od razu na URL, pod którym chcecie coś przetestować, zamiast wyklikiwać całą ścieżkę do tego URLa.

Przykład: gdy testujecie dodawanie produktów do koszyka, lepiej przejść od razu na stronę z tym produktem zamiast szukać go na stronie głównej. W ten sposób osiągniecie ten sam efekt, ale zaoszczędzicie czas.

Przygotowanie danych testowych poza Selenium 

Tutaj również możecie wiele zyskać. Jeżeli do testu potrzebujecie stworzyć jakiegoś użytkownika, produkt, albo cokolwiek innego, to możecie to ograć na kilka sposobów, na przykład:

  • Bezpośrednim strzałem do bazy danych;
  • Requestem do API;
  • Lub też zapewnić odpowiednie dane w bazie danych przed rozpoczęciem testów.

To ostatnie możecie zrobić stawiając aplikację przed testami z już wypełnioną danymi bazą danych. Unikajcie przygotowywania danych i warunków testowych za pomocą Selenium.

Ograniczenie części testów na warstwie GUI 

Testy Selenium są najdłużej wykonującymi się testami, więc ograniczcie ich ilość do minimum. Zastanówcie się, czy niektóre z tych rzeczy możecie przetestować po API, albo wręcz na poziomie testów jednostkowych. Nie wszystko musi być wyklikane na UI. Jeżeli nie do końca wiecie jak zbudowana jest aplikacja i nie macie pewności jakiego rodzaju testów możecie użyć dla poszczególnych funkcjonalności, porozmawiajcie z zespołem deweloperskim i po prostu się dowiedzcie. 😈

Wprowadzenie testów równoległych

Biblioteki do testów takie jak JUnit umożliwiają uruchamianie testów równolegle. Oznacza to, że nie musicie czekać na zakończenie jednego testu, żeby uruchomić kolejny, co skróci czas wykonywania wszystkich testów.

Osobiście podczas pracy najczęściej korzystam z IDE IntelliJ, gdzie równoległe uruchomienie testów w JUnit można ustawić w oknie Edit Configuration Settings:

Uruchamianie testów równolegle w IntelliJ

Całą robotę robi nam ten fragment:

-Djunit.jupiter.execution.parallel.enabled=true

Popracowanie nad środowiskiem testowym

Jeżeli aplikacja na środowisku testowym:

  • Jest niewydolna,
  • Ładuje się wieki,
  • Lub każda operacja zajmuje tyle czasu co reklamy na Polsacie,

to warto pogadać z kim trzeba o tym, że potrzebna jest wydajniejsza infrastruktura dla środowiska testowego.

Wait > sleep 

Czyli jakikolwiek wait dostępny w Selenium będzie lepszy niż ordynarny Thread.sleep(). Ten drugi zawsze czeka taką samą ilość czasu. Wait natomiast poczeka tylko tyle, ile trzeba.

Tryb headless

Tryb headless pozwala na uruchomienie przeglądarki bez jej interfejsu, co skutkuje szybszym wykonaniem testów. Z reguły. Mi się zdarzyło, że przy którejś aktualizacji Chrome’a i drivera, testy w trybie headless szły wolniej niż “normalnie”. 😅

Który sposób wybierasz?

Z mojego doświadczenia mogę powiedzieć, że warto wcielić w życie każdy z tych sposobów. Stosowanie różnych technik, gdzie każda obniża czas wykonania testów o jakiś procent, daje najbardziej widoczne rezultaty. Z resztą, teoria to jedno, praktyka to drugie – spróbujcie i przekonajcie się na własnej skórze, czy warto (spoiler: warto!).

O swoich wrażeniach i zaoszczędzonym czasie możecie dać mi znać tutaj. 😎