W dzisiejszych czasach wiele firm korzysta z usprawnień technologicznych w postaci oprogramowania, które w znacznym stopniu odciąża pracowników w wykonywaniu różnych zadań. Aby dana aplikacja działała w sposób prawidłowy, należy ją poprawnie zaprojektować. Zarówno w trakcie jej tworzenia jak i w późniejszym procesie utrzymania jej wysokiej jakości, bardzo istotną rolę odgrywa tester oprogramowania, którego zadaniem jest wyłapanie błędów mających negatywny wpływ na działanie programu. Praca o takim charakterze cieszy się w ostatnim czasie dużą popularnością nie tylko ze względu na atrakcyjne zarobki, ale na bardzo ciekawe zadania i projekty, w których QA Engineer bierze udział. W Polsce, praktycznie każda większa firma związana z branżą IT potrzebuje testerów oprogramowania, przez co ta rola cieszy się dużym zainteresowaniem.. Do firm zatrudniających QA Engineers, należą między innymi Asseco, Atos, Nokia, Samsung, Fujitsu, Accenture, Euvic, oraz banki takie jak Millennium i mBank. Kim jest QA Engineer, jakie ma zadania i czy aby nim zostać, trzeba umieć programować? – o tym dowiesz się czytając ten artykuł.
Jeśli interesuje Cię temat zatrudniania specjalistów IT na umowę B2B, polecamy nasz artykuł poświęcony temu tematowi.
Kim jest QA Engineer?
QA Engineer (Quality Assurance Engineer) to osoba, która zajmuje się zapewnieniem jakości oprogramowania poprzez wykorzystanie do tego wiedzy technicznej. Tester oprogramowania odpowiada za prawidłowe działanie oprogramowania/systemu, dobór odpowiednich, optymalnych technologii oraz skryptów testowych do konkretnego projektu, aby zapewnić mu jak najwyższą jakość na każdym etapie powstawania.
W tym celu przeprowadza testy funkcjonalności i wykrywa błędy, które następnie raportuje developerom, czyli osobom, które napisały tę konkretną część kodu.
Czym zajmuje się QA Engineer?
QA Engineer pełni rolę strażnika jakości. Sprawdza, czy oprogramowanie będące przedmiotem testów, jest gotowe do wdrożenia i optymalizuje procesy testowe.
Zadaniem testera, który jest częścią zespołu deweloperskiego, jest sprawdzenie poprawności działania aplikacji, stron internetowych dostępnych na komputerze lub urządzeniu mobilnym, ale mogą to być również inteligentne urządzenia jak pralki automatyczne, czy inteligentne lodówki. Do obowiązków testera oprogramowania należy też czuwanie nad bezpieczeństwem, np. przed atakiem hakerskim lub nieprzewidywalną usterką.
Proces testowania jest bardzo ważny przed każdą zmianą w oprogramowaniu, czy wprowadzeniem aktualizacji. Można powiedzieć, że jest uzupełnieniem pracy programisty, któremu trudno jest przewidzieć, gdzie w oprogramowaniu mogą pojawić się błędy. Często przy oprogramowaniu pracuje kilku programistów i tym bardziej należy ich pracę przetestować w kierunku potencjalnych usterek. Im wcześniej błąd zostanie wykryty, tym mniejsze będą tego reperkusje i tym niższy będzie koszt naprawy takiego błędu. Według analiz przeprowadzonych przez National Institute Standards and Technology, błędy na etapie tworzenia oprogramowania generują dwa razy więcej strat niż awarie wykryte na etapie testowania produktu.
Według raportu Bulldogjob, testerzy oprogramowania przede wszystkim zajmują się:
- Pisaniem i utrzymaniem przypadków testowych – 93%
- Tworzeniem dokumentacji – 58%
- Utrzymaniem środowisk testowych i deweloperskich – 54%
- Tworzeniem raportów – 52%
- Pisaniem kodu – 40%
- Analizą danych – 38%
Czym różnią się testy manualne od automatycznych?
Testy manualne – jak sugeruje nazwa – jest to rodzaj testowania oprogramowania, w którym oddelegowana do tego typu zadań osoba wykonuje je ręcznie, a następnie tworzy z wykonanej pracy raporty. Do przeprowadzenia testów manualnych nie są wymagane specjalne umiejętności programistyczne, ale możliwość wystąpienia błędu ludzkiego jest większa, niż w przypadku testów automatycznych.
Testowanie automatyczne natomiast oparte jest na specjalnie przygotowanych do tego celu narzędziach, bądź też skryptach testowych tworzonych w określonym języku programowania. Testy automatyczne są w perspektywie znacznie mniej czasochłonne od manualnych, ponieważ raz zaprojektowany i zakodowany scenariusz testowy może być wykorzystany wielokrotnie a jego działanie nie wymaga ciągłego udziału testera.
Tester manualny sprawdza zatem ręcznie różne scenariusze, natomiast tester automatyzujący – po uprzednim zaprogramowaniu skryptów – uruchamia program testowy, który wykonuje dalszą pracę.
Jakie umiejętności powinien posiadać QA Engineer?
Testerzy manualni jak i automatyzujący ściśle współpracują z programistami. Umiejętność pisania kodu na pewno przyda się do manipulowania bazami danych. Przykładem użycia kodu w testowaniu oprogramowania może być formułowanie zapytań SQL. Równie ważna jest umiejętność przeprowadzania tak zwanych SQL injections, mających na celu wykrycie luk bezpieczeństwa związanych z polami formularzy.
Od testera manualnego nie wymaga się znajomości dodatkowych narzędzi czy baz danych. Jednak tester automatyzujący musi znać podstawy programowania. Najczęściej testy automatyczne są przygotowywane w Javie, ale też w JavaScript, Pythonie czy PHP.
Testerzy automatyczni powinni również znać liczne narzędzia automatyzujące pracę i czyniącymi ją efektywniejszą. Warto nadmienić, że najczęściej nie chodzi o jedno, całościowe narzędzie, lecz o zestawy programów, z których każdy testuje inny aspekt.
Mogą to być zatem nie tylko narzędzia służące stricte do wykrywania błędów, lecz tak mierzące wydajność i wskazujące ewentualne problemy z optymalizacją czy sprawdzające poprawność interfejsu użytkownika. Osobną grupę stanowią także narzędzia służące do zgłaszania błędów czy pracy z dokumentacją.
Do najczęściej wykorzystywanych narzędzi należą:
- Selenium – jedno z najszerzej stosowanych narzędzi do przeprowadzania zautomatyzowanych testów aplikacji webowych, darmowe i dostępne na Windows, Linux i macOS-ie, kompatybilne ze wszystkimi najpopularniejszymi przeglądarkami. Nie chodzi tu konieczność pisania skryptów, ale jest możliwość pisania ich w języku Selense. Oprócz testów pod kątem awarii pozwala między innymi na testowanie UI czy regresji. Możliwe jest przeprowadzanie testów aplikacji napisanych w JavaScripcie, Javie, C#, Pythonie, Ruby i PHP.
- Apache JMeter – napisany w Javie, wolny i darmowy program służący do przeprowadzania testów wydajności. Sprawdzi się szczególnie w przypadku aplikacji przeglądarkowych, co determinuje niejako aspekty, które można testować. Dzięki JMeter sprawdzimy zatem wydajność połączeń i zapytań z API JDBC, serwerami FTP, protokołem http czy poszczególnymi usługami webowymi. Co ważne, Apache JMeter wspiera integrację ze wspomnianym już Selenium.
- FoneMonkey – platforma firmy TestMatick, jednego z największych dostawców narzędzi używanych do testowania oprogramowania, służąca do przeprowadzenia testów aplikacji mobilnych skierowanych na Androida i iOS-a. Wykorzystuje tzw. podejście monkey testing, w którym testowane są mniej lub bardziej losowe interakcje oprogramowania i na tej podstawie wykrywane są awarie.
- Bugzilla – przez wiele lat najważniejsze narzędzie do zgłaszania i opisywania błędów, co jest kluczową kompetencją testera. Opracowana przez Mozillę na własne potrzeby platforma jest do dziś wykorzystywana przez liczne zespoły jako miejsce wymiany informacji pomiędzy programistami i testerami, choć coraz częściej wykorzystuje się do tego własnościową Jirę, a nawet GitLaba czy GitHuba.
Kto może zostać testerem oprogramowania?
By zostać testerem potrzebne są przede wszystkim umiejętności logicznego myślenia przyczynowo-skutkowego oraz łączenia faktów. Ważna jest również skrupulatność, dzięki której dokładnie zaplanujemy i przeprowadzimy testy oraz wyłapiemy różne błędy czy nieścisłości. Ciekawość i dociekliwość okażą się nieocenione przy poszukiwaniu źródła danego problemu. Krytyczne są również cierpliwość i niezłomność przy napotkaniu kolejnych problemów. Dobra komunikatywność i umiejętności interpersonalne przydadzą się w zespole, w którym najczęściej przyjdzie nam pracować.
Certyfikacja
Ważnym zagadnieniem przy rozwoju kariery testera może się okazać certyfikacja. W przypadku tej specjalizacji branża wykształciła bowiem bardzo konkretne programy certyfikacyjne, których ukończenia niektórzy pracodawcy oczekują od kandydatów. Chodzi przede wszystkim o egzaminy ISTQB (International Software Testing Qualifications Board). Stanowią one międzynarodowy standard. Program jest podzielony na wiele niezależnych modułów różniących się poziomem zaawansowania, każdy z nich jest osobno płatny. Aktualnie egzaminy przeprowadza się zarówno na poziomie podstawowym – Agile Tester, tester akceptacyjny, jak i na poziomie zaawansowanym.
Zarobki QA Engineers
Zarobki testera oprogramowania są uzależnione od kilku czynników – zdobytych umiejętności, a także poziomu doświadczenia. Według Pawła Byliny – CTO w firmie BugBug.io, segment testowania wskazuje na wyraźną tendencję rosnącą, co napędzane jest rozwijającym się segmentem IT, wszelaką automatyzacją dookoła, jak i wzrostem jakości tworzonego oprogramowania. Porównując dane z tymi z wcześniejszych lat, zaobserwować możemy również wzrostowy trend zarobków.
Według naszego raportu “Przygotuj się na rekrutację IT w 2022 roku”, zarobki Quality Assurance Engineera kształtowały się następująco:
Na rynku znajduje się bardzo dużo ofert pracy dotyczących stanowiska testera oprogramowania. Większość z nich jest skierowana do Midów, czyli osób z 2-4 latami doświadczenia:
Ścieżki rozwoju kariery
W sektorze QA tych ścieżek jest wiele. Można zostać testerem manualnym i w tym się doskonalić, stopniowo awansując na Lidera Testów i Test Managera. Można również wyspecjalizować się w jakiejś konkretnej dziedzinie testowania, jak choćby testy bezpieczeństwa lub obrać ścieżkę analityka testów. Kolejną oczywistą opcją jest zostanie testerem automatyzującym. Tutaj również mamy opcję awansów jak w przypadku testerów manualnych, jak również można pokusić się o specjalizację.
Idąc dalej, możemy przeskoczyć na developera. Nie traktujmy tego jednak jako następny poziom i cel każdego testera. Jest to tylko jedna z równoległych ścieżek, niekoniecznie najbardziej pożądana. Możemy pójść w stronę SysOpsa, zarządzającego środowiskami, czy DevOpsa, będącego kimś pośrednim między developerem i administratorem środowiska.
Na końcu otworzą się przed nami wszelkie stanowiska kierownicze, takie jak Product Owner czy Project Manager. Często wywodzą się oni właśnie spośród testerów, ze względu na wszechstronną wiedzę o całym projekcie oraz znajomość potrzeb klienta.
Podsumowanie
Czy każdy tester musi programować? Nie każdy. Czy programowanie jest w testowaniu cenną umiejętnością? Jak najbardziej! Branża IT poszukuje świadomych, produktywnych profesjonalistów. Osoby testujące oprogramowanie, które posiadają umiejętność programowania mogą liczyć na lepsze perspektywy. Znajomość odpowiednich języków programowania oraz wiedza o bazach danych mogą dać dużą przewagę nad innymi testerami. Dzięki wymienionym umiejętnościom można odgrywać ważną rolę w złożonych projektach, brać udział w testach bezpieczeństwa czy testach wydajnościowych.
Zatrudnienie odpowiedniego QA Engineer, może okazać się trudnym zadaniem, dlatego dobrą praktyką może okazać się zlecenie procesu szukania odpowiedniego testera, profesjonalnym rekruterom IT. Na co zwracać uwagę wybierając tego typu firmę? Na ten temat pisaliśmy w artykule z poradami jak wybrać najlepszą agencję rekrutacji IT w Polsce.
Jeśli poszukujesz wyspecjalizowanych QA Engineers, skontaktuj się z nami i opowiedz nam o swoich potrzebach!