Tworzenie dynamicznych danych do testów za pomocą Faker’a — Selenide automatyzacja testów
Dane do testów
W naszych zautomatyzowanych testach czasem może nastąpić sytuacja, że będziemy potrzebowali danych, którymi chcemy uzupełnić test. Oczywiście najprostszym sposobem będzie wpisanie danych w kod, które będą uzupełniane co wykonanie testu.
Jest to jedno z podejść, które możemy zastosować, ma ono tę zaletę, że co wykonanie testu mamy pewność danych — do systemu wprowadzamy zawsze te same informacje.
Wyzwanie prawdziwego użytkownika
Pojawia się jednak pytanie jak zareaguje nasz system na inne dane. W rzeczywistym świecie użytkownicy będą przecież wprowadzać różne dane do systemu. Może się również darzyć, że nie mamy możliwości przywracania stanu bazy danych po testach, a dane muszą być unikalne.
Na szczęście implementacja takiego scenariusza nie jest trudna i skomplikowana jeśli użyjemy już gotowej biblioteki.
Dziś we wpisie dowiesz się jak zaimplementować bibliotekę do projektu oraz stworzyć losowe dane potrzebne do naszego testu,
Dodanie biblioteki
Pierwszym punktem, jaki musimy wykonać jest dodanie biblioteki faker’a do naszego pliku pom.xml
Najnowszą wersję biblioteki znajdziemy pod tym linkiem (stan na 9.11.2021): https://mvnrepository.com/artifact/com.github.javafaker/javafaker
Kopiujemy naszą dependencję i wklejamy do pliku pom.xml

Następnie klikamy prawy przycisk myszki na plik pom.xml i wybieramy reload project. Nasza biblioteka znajduje się już w projekcie.

Jak użyć fakera i wygenerować dane?
Użycie fakera jest bardzo proste, wystarczy stworzyć obiekt, a następnie za jego pomocą będziemy mieli dostęp do setek metod, które wygenerują nam potrzebne dane.
Faker faker = new Faker();
następnie w miejscu, gdzie potrzebujemy wstawić wygenerowane dane, wystarczy, że odwołamy się do obiektu i wywołamy metodę, która jest nam potrzebna

przykłady, jakie między innymi daje nam faker znajdziesz poniżej:
faker.name().firstName()
→ Muoi
faker.lorem().sentence()
→ Animi est vero officia ea.
faker.animal().name()
→ frog
faker.lordOfTheRings().location()
→ Sarn Ford
Czy zawsze warto używać faker’a?
Zdecydowanie przed implementacją fakera w testach warto się zastanowić czy taka operacja, daje nam korzyść. Z jednej strony tracimy stałe dane, jakie są wprowadzane do naszego systemu, z drugiej możemy zaobserwować, jak nasz system reaguje na różne dane.
Faker w projekcie selenide
Jeśli chcesz zobaczyć jak działa faker na praktycznym przykładzie to znajdziesz go w projekcie na teście z wypełnianiem formularza kontaktowego.
Link do projektu: https://github.com/Project-Quality/Selenide-Project/tree/1.2
Photo by Phillip Glickman on Unsplash
Faker lub podobne rozwiązanie świetnie się sprawdza, gdy musimy utworzyć duży zbiór danych. Takim przykładem byłyby testy w których sprawdzamy paginację, czy zachowanie rozbudowanego dropdownu. Nie wiem jak to wyglada w implementacji javowej, ale w PHP możemy sięgnąć po ręczne seedowanie generatora liczb pseudolosowych, co pozwala na uzyskanie za każdym razem tej samej sekwencji losowych danych, a wiec jesteśmy w stanie zapewnić sobie stabilną powtarzalność zestawu danych.