Jak zacząć automatyzować testy?
5 kroków do zostania testerem automatyzującym.
Najpopularniejszą ścieżką rozwoju w karierze testera jest pójście w kierunku pisania testów automatycznych. Jasne, to niejedyna interesująca droga, ale nie da się ukryć, że obecnie (piszę ten tekst w końcówce 2024) wiele firm szuka testerów automatyzujących. A nawet jeśli decydują się na testera manualnego, to mile widziana jest chęć nauki automatów. Umiejętność pisania testów automatycznych to też większe zarobki. Dlatego przygotowałem dla Ciebie 5 punktów, na które warto zwrócić szczególną uwagę, jeśli chcesz podążać w stronę automatyzacji testów.
Zacznij od nauki programowania
Przede wszystkim potrzebne Ci są podstawy programowania. Jasne, wymagany poziom zaawansowania jest zdecydowanie mniejszy niż u programistów, ale musisz opanować fundamenty poruszania się po kodzie. Bez tego ograniczysz się do kopiowania gotowych rozwiązań, a Twoje testy automatyczne szybko staną się niestabilne i nieprzejrzyste.
Zrozum działanie zmiennych i poznaj różne struktury danych (np. tablice) czy intrukcje warunkowe (np. if-else, switch). Musisz też umieć tworzyć funkcje, przekazywać argumenty i zwracać wartości. Przyda Ci się też programowanie obiektowe, a tym samym umiejętność posługiwania się klasami, obiektami czy dziedziczeniem. Nie chodzi o samodzielne tworzenie zaawansowanej aplikacji, ale o zrozumienie, jak komputer przetwarza napisany przez Ciebie kod.
Jaki język programowania wybrać? Taki, jakiego wymagają pracodawcy 😄 Wiem, że brzmi to jak żart, ale jeśli nie ciągnie Cię do konkretnego języka, to polecam wybrać język najczęściej pojawiający się w ofertach pracy. Analiza rynku dla testerów (z września 2024) od SOLID.Jobs pokazuje, że obecnie najpopularniejsza jest Java. Drugie miejsce zajmuje Python, a podium zamyka JavaScript. Oczywiście, jeśli masz możliwość przejścia w kierunku automatyzacji w swojej obecnej firmie, to prawdopodobnie będziesz musiał(a) uczyć się zastosowanych przez kogoś innego technologii. I to jest korzystna sytuacja, bo dzięki temu masz jasno wyznaczony kierunek nauki.
Czy rozumiesz co testujesz?
Rozpędziliśmy się już z programowaniem, ale nie można zapominać, że do pisania dobrych testów automatycznych konieczna jest umiejętność testowania. Nie mam na myśli przeklikiwania przypadków testowych. Ważna jest umiejętność przełożenia ścieżek biznesowych czy wymagań klienta na konkretny zestaw testów. W tym względzie automaty nie różnią się od testów manualnych - testy muszą pokrywać realne ścieżki użycia aplikacji. Nawet jeśli chcesz całkowicie przejść na testy automatyczne, to musisz stale dbać o wiedzę domenową i pamiętać o wcielaniu się w rolę użytkownika.
Wybierz narzędzie do testów automatycznych
Nadszedł czas na wybór narzędzia do automatyzacji. Jakie jest najlepsze? Odpowiedź pewnie Cię nie zaskoczy, bo proponuję tu zastosować się do rady przytoczonej w wyborze języka programowania. Zdecydowanie się na popularne narzędzie ułatwi Ci znalezienie pracy. Ponownie odwołam się do analizy od SOLID.Jobs - obecnie prym wiedzie Selenium. Mimo tego, że narzędzie ma już swoje lata (pierwszą wersję wypuszczono w 2002 roku), to wiele firm nie podjęło decyzji przepisania testów na inne, bardziej nowoczesne narzędzia (Cypress czy Playwright). Przyczyna jest prosta - przeniesienie testów do innego narzędzia jest drogie, a koszta rosną wraz z liczbą przypadków testowych i stopniem zaawansowania środowiska testowego.
A jeśli rozwój w kierunku automatyzacji nie wiąże się ze zmianą zatrudnienia, to raczej nie masz wyboru - musisz uczyć się tego, co już używacie. Chyba, że masz wpływ na wybór narzędzia - wtedy polecam (jeśli spełnia wymagania Waszego projektu) Playwrighta. Ułatwione debugowanie, wsparcie różnych przeglądarek czy emulacja urządzeń mobilnych to dopiero początek zalet.
Napisz pierwsze testy automatyczne
Znasz podstawy programowania, rozumiesz istotę testowania i wybrałeś(aś) narzędzie do testów automatycznych. Nie ma na co czekać - napisz swoje pierwsze testy automatyczne! Nie wiesz jaką aplikację pokryć testami automatycznymi? Skorzystaj z poniższych stron przeznaczonych specjalnie pod testy - nie ma tu ryzyka wpływania na prawdziwe aplikacje.
ParaBank - symulacja strony banku (idealna do przetestowania funkcjonalności rejestracji i logowania).
Restful Booker Platform - rezerwowanie noclegów (formularze, kalendarze; świetne do nauki szukania różnych rozwiązań).
Swag Labs - odzwierciedlenie sklepu internetowego (pozwala na pokrycie pełnej ścieżki użycia aplikacji; od logowania do zamówienia produktu).
Automation Bookstore - strona z wyszukiwarką książek (nauczysz się tu testowania dynamicznie zmieniającego się contentu).
UI Test Automation Playground - różne aspekty dzisiejszych aplikacji webowych na jednej stronie (np. dynamiczne ID, Shadow DOM, uploadowanie plików)
Poznawaj dobre praktyki testów automatycznych
Nie ma tak dobrze, to nie koniec nauki 😛 Nawet jeśli Twoje testy działają, nie znaczy, że są napisane w poprawny sposób. W tym pomoże Ci znajomość dobrych praktyk automatyzacji ułatwiających walkę z częstymi problemami - choćby z flaky testami, czyli z losowymi przyczynami niedziałających testów (mówiąc wprost - flaky test raz działa, a raz nie).
Zacząłbym od stosowania wzorców projektowych. Do testów automatycznych najczęściej używa się Page Object Model bazujący na reprezentacji struktury strony w formie klas. Przykładowo - w klasie odpowiedzialnej za stronę logowania przechowujesz metody służące do wpisywania nazwy użytkownika i hasła oraz kliknięcia przycisku Zaloguj, a w klasie z listą produktów napiszesz metodę do dodawania produktów do koszyka.
Dzięki temu unikniesz powielania kodu, zwiększysz czytelność i ułatwisz utrzymanie testów. Każda zmiana w kodzie aplikacji nie będzie wymuszała przeszukiwania i edytowania wszystkich testów, bo odwołania do konkretnych elementów strony znajdziesz w wyznaczonym wcześniej miejscu (wspomnianych wyżej klasach). To oczywiście uproszczenie, bo wyjaśnienie POM jest tematem na osobny artykuł, ale myślę, że wiesz już dlaczego w pierwszym punkcie wspomniałem o programowaniu obiektowym.
Jak zacząć automatyzować testy - podsumowanie
Mam nadzieję, że moje porady pomogą Ci w drodze do zdobycia stanowiska testera automatyzującego (albo podobnego, bo QA Engineer też często jest odpowiedzialny za automatyzację). Jasne, możesz od razu chwycić za Playwrighta czy Selenium i pewnie (posługując się rozwiązaniami z Internetu) wyszłyby z tego jakieś testy, ale to nigdy nie kończy się dobrze. Systematyczna nauka zaczynająca się od fundamentów programowania sprawi, że po prostu będziesz lepszym specjalistą. Podsumowując:
Naucz się fundamentów programowania. Wybierz popularny język (Java, Python, JavaScript) albo ten obecnie używany w Twojej firmie.
Nie zapominaj, że testy automatyczne muszą sprawdzać rzeczywiste ścieżki użycia aplikacji. Wcielaj się w rolę klienta i rozwijaj wiedzę domenową.
Wybierz narzędzie do automatyzacji. Podobnie jak w języku programowania, zdecyduj się na popularne rozwiązanie (Selenium, a dalej Cypress i Playwright) lub te stosowane w obecnej pracy.
Napisz pierwsze testy automatyczne. Korzystaj ze stron demo przeznaczonych do nauki.
Doskonal swoje testy poprzez naukę dobrych praktyk automatyzacji. Zainteresuj się wzorcem projektowym Page Object Model.
A jeśli potrzebujesz pomocy w procesie nauki, to umów się ze mną na konsultacje. Wyznaczę Ci przygotowaną pod Twoje potrzeby ścieżkę rozwoju i pomogę w zrozumieniu trudnych zagadnień.
Testowanie to ciągłe zadawanie pytań.
A takie ładne obrazki wrzucam na mojego Instagrama.
A czy Ty uczysz się automatyzacji? Daj znać w komentarzu:
Chcesz być na bieżąco? Zapisz się do newslettera!
W każdy czwartek o 10:00 dam Ci znać o moich nowych wpisach.
Dorzucę też ciekawe artykuły, filmy czy inne materiały ze świata IT.
Po zapisie do newslettera, wyślę Ci darmowego ebooka z checklistami dla testerów.
Polecane wpisy:
Sprawdź też moje social media:
Dziękuję, że czytasz mojego bloga!
Masz jakieś pytania? Z chęcią odpowiem :)