Koszyk (0)
Fundacja CODE:ME · 27 października 2025

Czy warto uczyć się automatyzacji?

Dynamiczny rozwój branży IT sprawia, że testowanie ręczne jest niewystarczające, dlatego coraz większe znaczenie zyskują szybsze testy automatyczne. Sprawdź, jak automatyzacja przekłada się na oszczędność czasu i jakość produktu w wywiadzie z trenerami: Mirosławem Pałysiewiczem i Piotrem Gaczkowskim.

automatyzacja testów

IT to branża, która bardzo szybko się rozwija. Codziennie powstają nowe aplikacje, na które czekają miliony użytkowników. Ich oczekiwania rosną, względem nowych produktów. Przy tak ogromnym zapotrzebowaniu na rynku oraz tempie powstawania nowych aplikacji i narzędzi, testowanie ręczne bywa niewystarczające – a testy są niezbędne!

Każdy program, aplikacja czy system musi zostać przetestowany, zanim zostanie wypuszczony na rynek. Ręczne przetwarzanie testów jest czasochłonne, dlatego branża szybko zaczęła szukać kolejnych rozwiązań. W tym miejscu pojawiają się testy automatyczne – szybsze! Praca nad testami z  kilku dni, zajmuje obecnie kilkanaście godzin. To właśnie dzięki automatyzacji, twórcy mogą większą uwagę poświęcić na poprawę procesów produkcyjnych, co bezpośrednio przekłada się na jakość produktu.

Jak jest w rzeczywistości? Czy automatyzacja się opłaca i jest mniej kosztowna? Czy jest dobra dla projektu? Jeżeli chcecie dowiedzieć się jeszcze więcej na ten temat, przygotowaliśmy dla Was wywiad z naszymi trenerami: Mirosławem Pałysiewicz oraz Piotrem Gaczkowskim.

Jak zacząć automatyzować testy?

Mirek: Jeżeli chodzi o automatyzację, to po pierwsze najlepiej jak najszybciej. Ważne jest jednak, aby najpierw dobrze przemyśleć kwestię automatyzowania takich testów, czyli co chcemy osiągnąć przez automatyzację. To nam pozwoli określić obszary, które należy zautomatyzować. Czy są to testy stricte backendowe (czyli API), czy skupiamy się bardziej na testach wydajnościowych, czy testach UI (zwanych także end 2 end).

Dobrze jest też skonsultować to z pozostałą częścią zespołu, czyli na przykład z  reprezentantami biznesu, porozmawiać z Deweloperami, Project Managerem, czy też z innymi zespołami, które już mają doświadczenie z automatyzacją. Jeżeli taka automatyzacja rusza dopiero w firmie, wówczas dobrze jest skonfrontować swoje pomysły podczas wydarzeń lub na webinarach, gdzie są osoby, które posiadają takie doświadczenia na przykład 3QA.

Podsumowując, wiedzę możemy czerpać albo z organizacji, w której pracujemy, albo ze społeczności, które skupiają się wokół automatyzacji testów. Ewentualnie, jeżeli są to kwestie techniczne, to różnego rodzaju blogi, czy nawet stack overflow.

Piotr: Warto jeszcze dodać dokumentację do różnego rodzaju frameworków, jak na przykład PyTest, czy Selenium. Tam też mamy zazwyczaj best practices, czy też wzorce projektowe.

Jakie testy można zautomatyzować?

Mirek: Możemy zautomatyzować wszystko, ale nie na wszystko nas stać. Tutaj mamy do czynienia ze słynnym trójkątem, gdzie stoi na trzech rogach: czas, budżet i zasoby.

Jeżeli więc mamy do czynienia z testami, które jesteśmy w stanie napisać w ciągu 2-3 godzin i  będziemy je wykonywać, powiedzmy raz na dwa tygodnie, to jest to jeszcze opłacalne (ponieważ budujemy sobie bazę takich testów). Jeżeli natomiast są to testy, które będą wykonywane raz, dwa razy do roku dla specjalnej konfiguracji środowiska, a będziemy je pisać dwa dni, to stanie się to nieopłacalne. Podniesiemy swoje umiejętności, ale dla organizacji w  której pracujemy, raczej będzie to marny benefit. 

Tutaj mówimy o testach UI, czyli testach opartych o Selenium, te które są najbardziej kosztowne i najbardziej czasochłonne.

Mirek: Są jednak pewne wyjątki, tak zwane aplikacje krytyczne, czy aplikacje ratujące życie. Tutaj przykład: miałem okazję pracować w projekcie, który zajmował się automatyzacją utrzymania systemów elektrowni jądrowych, gdzie ryzyko utraty życia było bardzo duże i te procesy musiały być zautomatyzowane. Był duży nacisk i budżet nie grał roli, ale też dysponowaliśmy znacznie większym budżetem, niż większość innych firm. Co poza tym? Aplikacje ochrony życia. Jeżeli mielibyśmy jakąś stronę z teleporadami i temu podobnymi rzeczami, zawsze warto spojrzeć na to, co możemy zautomatyzować.

Jeśli chodzi o automatyzację, to z ogólnego punktu widzenia automatyzujemy różne poziomy, czyli testy jednostkowe, które testują stricte nasz kod. Kolejny obszar testów to testy API, czyli wszelkiego rodzaju requesty, wysyłane w dalszym ciągu na poziomie backendu aplikacji. Możemy zautomatyzować proste funkcje związane właśnie z testami UI, czyli proste procesy oraz ich modyfikacje. Potem mamy już testy performance, których raczej ręcznie nie wykonamy. Są to testy wydajności, które obciążają nam serwery. Czy też zupełnie inna i  ciekawa działka, czyli pentesty, gdzie mamy zbiór procedur na bazie OWASP i możemy sprawdzić, czy nasza aplikacja jest bezpieczna. Automatyzacja testów webowych jest świetna do rozpoczęcia przygody, szczególnie dla testerów, którzy do tej pory testowali manualnie, a  chcą wejść w świat automatyzacji. Te osoby posiadają zazwyczaj dużą wiedzę domenową i  wiedzą doskonale, jak to ręcznie przetestować. Są w stanie przenieść to, czasami nawet w  prosty sposób, na automatyzację testów rozpoczynając przygodę choćby nawet od Selenium.

Kiedy automatyzować?

Mirek: Jak najszybciej ;). Pamiętajmy, że pracujemy w tej chwili w projektach, które są projektami implementacyjnymi. Oznacza to, że przyrasta nam ilość funkcjonalności i ta aplikacja staje się coraz bardziej skomplikowana, więc jeżeli tylko środowisko projektowe pozwala nam na rozpoczęcie automatyzacji to powinniśmy to już zacząć robić od pierwszych dni. Większość projektów zorganizowana jest w taki sposób, że mamy wymagania, mamy pewne środowiska, gdzie takie aplikacje MVP są już postawione i na nich możemy już ćwiczyć naszą automatyzację. Pamiętajmy, że do każdego frameworka testowego, czy każdego testu automatycznego, musimy zbudować pewne doświadczenie i zaufanie, bo testy nie zawsze dają nam taki rezultat, jak faktycznie aplikacja, czy system powinny działać – tak zwane face positive test.

Piotr: Tutaj też warto wrócić do tematu budżetu. Nie zawsze mamy fundusze na to, żeby coś zautomatyzować, gdy to jest stosunkowo mały projekt, np. trzymiesięczny. Może się okazać, że koszt pisania automatów testowych po prostu zajmie np. 10% budżetu, a po 3 miesiącach nie będą one już używane.

Na czym polega automatyzacja testów?

Mirek: Dla mnie osobiście automatyzacja testów to proces, czyli jest to rzecz, którą musimy dobrze zaplanować Musimy wiedzieć co chcemy zautomatyzować i jaki mamy w tym cel. Na czym polega? Zazwyczaj, na początku, na stworzeniu pewnego planu testów, gdzie określamy zbiór scenariuszy, kroków, czy checklistę, którą będziemy automatyzować i od niej zaczynamy. Przedstawiamy MVP [minimum valuable product przyp.red.] stakeholderów w projekcie i oni określają, czy kontynuujemy, czy nie. Jeżeli mamy pozytywną decyzję, to stopniowo zaczynamy poszerzać bazę naszych testów dodając nowe funkcjonalności, nowe funkcje pomocnicze, jak np. połączenie z bazą danych, zarządzanie przebiegiem czy tzw. Data Driven Development, czyli przygotowywanie plików konfiguracyjnych z połączeniem z naszą bazą danych, które będą zasilały nasze testy. Docelowo dążymy do tego, żeby jak najmniejszą ilością testów pokryć jak największą ilość funkcjonalności w naszej aplikacji. Jakie są następne kroki? To podłączenie takiego frameworku testowego do środowiska ciągłej integracji, czyli Continuous Integration, Continuous Development i ich jak najszybsze uruchomienie. Docelowo ma to doprowadzić do tego, że udział testów manualnych będzie coraz mniejszy i  dzięki temu, czas wypuszczenia danej aplikacji na środowisko produkcyjne stanie się krótszy. Zazwyczaj rozpoczynamy więc od tworzenia bazy testów manualnych, które mają określone priorytety. Najczęściej testy z najwyższym priorytetem są pierwsze w kolejce do automatyzacji i stopniowo przeglądamy je i dopisujemy nowe. Tyle jeżeli chodzi o punkt procesowy. Z  technicznego punktu widzenia, automatyzacja testów polega na połączeniu różnych bibliotek w jeden framework. 

W jakim języku pisać testy automatyczne i dlaczego Python?

Mirek: Jeżeli chodzi o możliwość pisania testów automatycznych, to może przy tym pytaniu skupmy się na Selenium, czyli na aplikacjach webowych. Nasza rada – najlepiej pisać testy automatyczne w  języku, w którym projekt jest tworzony.

Piotr: Tutaj jednak pojawia się pytanie, ponieważ aplikacje webowe często pisane są w  mieszance języków. Backend może być w Pythonie, front-end w JavaScripcie. Backend i   frontend jako oba, mogą być też w JavaScripcie. Może być tak, że mamy mikrousługi, gdzie jedna będzie napisana w Pythonie, jedna w Go i w czymś jeszcze innym.

Mirek: W takiej sytuacji wybieramy dominujący obszar, który nas interesuje. Czyli, jeżeli skupiamy się na testach webowych i front-end mamy w JS, to powinniśmy pisać test w JS, bo wykorzystamy część metod. Jeżeli dla nas, jako dla automatyków testów, ważne jest zasilenie naszego frameworka backendem, to wtedy bierzemy Javę, ponieważ możemy skorzystać z  gotowych fragmentów kodu, pisanych przez zespół deweloperski. Czyli nie wyważamy otwartych drzwi i jak najszybciej dostarczamy gotowe rozwiązanie zautomatyzowanych testów. Drugie możliwe rozwiązanie jest takie, że mamy doświadczony zespół automatyków testowych i stwierdzamy, że robimy niezależne rozwiązanie dla testów UI. W takich przypadkach jest to najczęściej stosowane. Czyli mamy na przykład odrębny zespół projektowy, który zajmuje się automatyzacja testów. Framework naszej organizacji jest napisany w  Pythonie i tego Pythona będziemy używać.

Piotr: Obecnie większość aplikacji webowych pisanych jest w takich językach jak Java, Python, .NET, czy Golang, wtedy to one wydają się być najlepszymi wyborami też przy automatyzacji rzeczy, które będą dotykały backendu. W naszym środowisku wydaje mi się, że Python jest dosyć popularny, na równi z Javą i ta popularność rośnie. W szczególności jeżeli chodzi o małe, średnie i duże firmy, które nie są jakimiś wielkimi korporacjami, to tutaj jest więcej Pythona, niż rozwiązań typu Java i .NET. To nie jest oczywiście reguła, ale tak to często wygląda. Python z tych wszystkich języków jest najbardziej uniwersalny. Jest on używany do wielu więcej rzeczy, niż sam backend, może być używany m.in do AI, machine learning itd. Więc jeżeli mamy aplikację, która rozpoznaje zdjęcia, a potem pozwala przerabiać te zdjęcia (np. nakładać im maskę uśmiechniętego psa) to jest aplikacja webowa. Tutaj Pythonem jesteśmy w stanie wszystkie przypadki użycia załatwić.

Mirek: Takim dobrym przykładem, w pewnych bardzo rzadkich przypadkach, może być wymagana interakcja hardware’u z software’m. Wtedy Python jest naprawdę świetnym rozwiązaniem, bo jest językiem najbardziej uniwersalnym. W Javie również jest podobne, przy czym należy pamiętać, że Python ma jednak zdecydowanie niższy próg wejścia, łatwiej jest rozpocząć z nim pracę niż z Javą i .NETem. 

Piotr: Python ma niesamowicie bogatą bibliotekę standardową, więc nawet bez instalowania takich rzeczy, jak Selenium czy PyTest, wiele rzeczy jesteśmy tam w stanie osiągnąć. Nie musimy się zastanawiać, jak dorzucić jakąś nową bibliotekę do projektu, tylko po prostu bierzemy to, co Python nam daje na talerzu. 

Warto również dodać, że zautomatyzować można nie tylko testy. Skupiamy się na automatyzacji testów, ale ta wiedza pozwala też na automatyzację różnych innych czynności webowych oraz procesów. Na przykład zakup tańszych biletów na stronie PKP (kiedy się pojawiają), albo umówienie wizyty u dentysty, powiadomienie o pojawieniu się oferty, której szukamy! Tak więc możliwości są ogromne.

Już dziś zapisz się na kolejną edycję szkolenia Python od podstaw.

Zainteresował Cię temat automatyzacji testów? Zobacz kursy, jakie mamy w ofercie!

O naszych trenerach:

Mirosław Pałysiewicz – IT Test Manager & Członek Hackerspace Trójmiasto

Posiada ponad 16 lat doświadczenia w obszarze zapewnienia jakości oprogramowania. Miał okazję uczestniczyć w różnych projektach informatycznych od małych zespołów skupionych na portalach z grami online przez aplikacje webowe z zakładami sportowymi czy zakupami online po złożone systemy z sektora energetycznego. Obecnie pracuje na stanowisku Test Menadżera w sektorze informacji marketingowej. Od 2012 roku zaangażowany również w  szkolenia innych. Jego specjalnością są środowiska testowe, przygotowywanie testów i  scenariuszy testowych, a także testowanie responsywnych stron mobilnych. Hobbystycznie zajmuje się technologią druku 3D i IoT. Zaangażowany w działalność trójmiejskiego Hackerpasce’u.

Piotr Gaczkowski – Specjalista Python, C/C++

Entuzjasta automatyzacji nudnych czynności. Programuje od około 10 roku życia. Z językiem Python związany od 15 lat. Uwielbia tworzyć proste rozwiązania na codzienne ludzkie problemy. Chętnie dzieli się wiedzą pisząc artykuły i prowadząc kursy. Posiada doświadczenie po obu stronach procesu rekrutacyjnego. W branży IT pracował na etacie i jako freelancer zarówno dla dużych firm, jak i  kilkuosobowych startupów. Rzadko bez okularów przeciwsłonecznych, nigdy bez słuchawek.


Powrót do bloga