Wiele osób, które podejmuje decyzję o postawieniu swojego pierwszego kroku w wielkim świecie automatyzacji testów, zadaje sobie kilka przytłaczających pytań. Czemu przytłaczających? Bo wiem z doświadczenia osób w gałęzi testerskiej, że często takie pytania są powodem do odwlekania decyzji o rozpoczęciu rozwoju w kierunku automatyzacji bądź całkowicie zaprzepaszczeniu próby automatyzacji testów. Pytaniami, które się często pojawiają są:
- Czy muszę umieć programować aby tworzyć testy automatyczne?
- Jaki język programowania wybrać?
- Czy muszę wcześniej testować manualnie aby zacząć automatyzować?
- Jakie narzędzie do automatyzacji wybrać (Selenium czy Cypress)?
- Jak wygląda w praktyce tworzenie testów automatycznych?
Takich pytań jest na tyle dużo, że można byłoby wymieniać je aż do jutra. Ale skupiłem się na najważniejszych z nich. Dobra, to zaczynamy.
Czy muszę umieć programować aby tworzyć testy automatyczne?
Staram się unikać tej odpowiedzi jak ognia, ale w tym przypadku “to zależy”. Od czego? Od tego jakiego rodzaju testy automatyczne chcesz tworzyć. Są narzędzia typu Selenium IDE, które pozwalają nagrać gotowy scenariusz testowy za pomocą jednego przycisku “Record”. Podobnie jakbyś nagrywał pulpit swojego komputera a potem odtwarzał. Z tą różnicą, że Selenium IDE robi to na warstwie frontendowej danej aplikacji. Czyli odtwarza dokładnie to co sobie wyklikałeś na danej stronie, wprowadza konkretne dane do formularzy i weryfikuje czy wszystko jest w porządku.
To narzędzie nie jest jednak doskonałe. Tworzone w nim testy nie są proste do utrzymania a rozbudowa skryptu testowego dodając do niego nowe możliwości graniczy wręcz z cudem. Nie jestem zwolennikiem takiego narzędzia aczkolwiek jest to opcja, która nie będzie wymagała od nas umiejętności programowania.
Są też narzędzia, które będą wymagały od nas wiedzy z zakresu programowania. Z tą różnicą, że ta wiedza programowania nie musi być porównywalna do poziomu wiedzy programisty. Zwykle wystarczą mocne podstawy programowania aby zacząć przygodę z automatyzacją (klasy, dziedziczenie, funkcje, zmienne). Takimi najpopularniejszymi narzędziami do automatyzacji są bez dwóch zdań: Selenium, Cypress, Playwright czy WebdriverIO. Testy tam tworzymy już za pomocą kodu. W taki sposób napisane testy automatyczne są w pełni skalowalne, łatwe do integracji i dają nam większe możliwości niż tworzenie testów w różnych narzędziach do “nagrywania testów”.
Jaki język programowania wybrać?
Oczywiście, że JavaScript lub Typescript! A tak na poważnie (będąc obiektywnym) to język programowania, w którym będziemy pisali testy nie ma większego znaczenia. Serio! Nauczymy się podstaw w jednym języku programowania to przeskoczenie do innych nie będzie stanowiło dla nas większego problemu. Identycznie (a nawet łatwiej) wygląda kwestia zmiany narzędzia, w którym chcemy automatyzować testy. Przeskoczenie np. z Playwright do WebdriverIO do takiego poziomu aby zacząć już pisać testy to maksymalnie okres jednego dnia 🙂
Jeśli dalej nie możemy się zdecydować jaki język wybrać to warto otworzyć sobie stronę z ofertami pracy na testera automatyzującego i zobaczyć jaki język się często pojawia w ogłoszeniach. Obecnie na rok 2022 jest nim Java, Python oraz JavaScript.
Czy muszę wcześniej testować manualnie aby zacząć automatyzować
Są różne “szkoły” testowania. Jedne mówią, że nie trzeba mieć doświadczenia w testach manualnych aby zostać testerem automatyzującym inne mówią, że trzeba takie doświadczenie posiadać. Jakie jest moje zdanie na ten temat? Obiema rękami podpisuje się pod tym drugim stwierdzeniem. Uważam, że trzeba posiadać doświadczenie w testowaniu manualnym aby zostać testerem automatyzującym. Dlaczego? Automatyzacja testów to nie tylko pisanie kodu, ale też opracowanie ścieżek testowych, przypadków które mają zostać zautomatyzowane. Aby takie przypadki stworzyć trzeba wiedzieć jak przetestować daną funkcjonalność manualnie. Musimy wiedzieć jaki jest oczekiwany rezultat, w co trzeba kliknąć itp.
Jakie narzędzie do automatyzacji wybrać (Selenium czy Cypress)?
Kwestia wyboru narzędzia do automatyzacji wygląda identycznie co wyboru języka programowania. Jest to bez różnicy. Jeśli nauczymy się dobrze automatyzować testy w jednym narzędziu to przesiadka na drugie nie będzie stanowiła dla nas większego problemu. Kwestia jednego – dwóch dni na oswojenie się z metodami i poznanie dobrych praktyk takich jak choćby struktura budowania testów.
Warto jest także zajrzeć do ogłoszeń z ofertami pracy i zobaczyć co się najczęściej pojawia. W 99,99% przypadków to Selenium bądź Cypress. Jednak trzeba wziąć pod uwagę, że technologię lubią się zmieniać. Dzisiaj numerem jeden jest Selenium / Cypress a jutro może być Bocian3000. Spokojnie, jeszcze nie ma takiego narzędzia ale może właśnie powstaje 😉
Jak wygląda w praktyce tworzenie testów automatycznych?
Każda firma ma różne podejście do automatyzacji testów. Jedni narzucają z góry standardy, których należy się trzymać a inne dają wolną rękę do wyboru technologii i sposobu organizacji testów.
Wszystko zależy też od stanowiska pracy. Jeśli Twoje stanowisko to “tester automatyzujący” to implementacja testów automatycznych może zajmować około 75% – 100% czasu pracy. Jeśli ktoś jest “QA” to automatyzować testy będzie przez 25% czasu a przez resztę czasu będzie optymalizował procesy testowe w firmie, rozmawiał z klientami, testował manualnie itd…
Zwykle implementacje testów zaczyna się od przygotowania konkretnych przypadków testowych, które chce się zautomatyzować. Gdy już taką listą dysponujemy to po prostu piszemy kod. Tworzymy np. klasę należącą do POM, tworzymy plik z danymi wejściowymi/oczekiwanymi a następnie it’ki (blok it).
Podsumowanie
Najważniejsze aby się nie poddawać i nie tracić zbyt dużo czasu na rozmyślanie nad takimi pytaniami jak powyżej, które i tak finalnie, niezależnie od tego jaką opcję wybierzemy będą prowadziły do jednego. Czyli osiągnięcia zamierzonego celu, którym jest nauczenie się automatyzować testy 🙂
Praktyczny kurs testowania oprogramowania
Jesteś na początku swojej drogi jako tester oprogramowania? W takim razie ten kurs jest przeznaczony dla Ciebie.
Automatyzacja z Typescript + WebdriverIO
Zostań testerem automatyzującym. W tym kursie nauczysz się automatyzować oprogramowanie za pomocą Typescript oraz WebdriverIO.
Jira od podstaw - zarządzanie projektami
Kurs związany z narzędziem Jira. Jeśli poszukujesz swojej pierwszej pracy jako tester oprogramowania to ten kurs będzie dla Ciebie idealny!
Postman od podstaw - testowanie REST API
Naucz się od podstaw aplikacji Postman i dowiedz się jak wygląda w praktyce testowanie REST API. Dedykowany kurs postman dla testerów.
Cypress od podstaw - Automatyzacja testów
Naucz się automatyzacji aplikacji webowych w najbardziej popularnym narzędziu do automatyzacji Cypress. W kursie wszystkiego nauczysz się od podstaw.