Tester oprogramowania i analityk QA – ścieżki rozwoju kariery
Kariera testera oprogramowania to dla wielu interesujący punkt rozpoczęcia pracy w branży IT. Chętnie pod uwagę biorą je zwłaszcza osoby, które nie mają wykształcenia informatycznego czy technicznego lub się przebranżawiają. W przypadku testerów często bardziej przydatny niż dyplom tej lub innej uczelni może okazać się bowiem certyfikat ISQTB, o czym więcej pisaliśmy tutaj.
Każdy, kto rozważa podjęcie pracy na stanowisku testera oprogramowania czy inżyniera QA musi sobie jednak zdać sprawę, jak zróżnicowane mogą być jego obowiązki. Poza kilkoma podstawowymi podziałami samych testów, a w konsekwencji także testerów, mamy do czynienia wręcz z dziesiątkami specjalizacji. W każdym przypadku specyfika przeprowadzanych testów może być inna, a obowiązki różnić się między sobą.
Należy także pamiętać, że konkretna specjalizacja nie wyklucza tego, że w obrębie jednego projektu konieczne będzie równoległe przeprowadzanie różnego rodzaju testów skupionych na różnych aspektach działania oprogramowania. W przypadku testerów konkretne ścieżki kariery i specjalizacje nie tylko nie wykluczają się wzajemnie, lecz płynnie łączą się i przeplatają. Wybór jednej nie zamyka raz na zawsze drzwi do innych.
Testy funkcjonalne i niefunkcjonalne
Głównym rozróżnieniem jeśli chodzi o charakter przeprowadzanych testów, a co bezpośrednio wpływa na codzienne obowiązki samych testerów i ich „ścieżki kariery”, jest podział na funkcjonalne i niefunkcjonalne testy oprogramowania.
Testy funkcjonalne
Testy funkcjonalne mają na celu sprawdzenie poprawności działania funkcji oprogramowania. Wyobraźmy sobie, że klient zamówił przygotowanie aplikacji kalkulatora, którego jedną z funkcji ma być pierwiastkowanie. Testy funkcjonalne będą zatem sprawdzać, czy program poprawnie wykonuje te operacje, skupiając się na tym, co robi, a nie jak.
Test pierwiastkowania to w naszym przypadku przykład testu jednostkowego, gdzie tester sprawdza poprawność funkcjonowania pojedynczego bloku kodu, metody, funkcji czy procedury. Testowanie jednostkowe to zatem testowanie pomniejszych komponentów (jednostek) oprogramowania jeszcze przed tym, aż ich suma przełoży się na ogólną funkcjonalność całego programu.
Ścieżka zawodowa skoncentrowana na testach funkcjonalnych będzie się także wiązała z przeprowadzaniem testów systemowych. W przeciwieństwie do testów jednostkowych sprawdzają one już całość funkcjonalności oprogramowania, ale pod ściśle określonym kątem wcześniej określonych wymagań. Ciekawą praktyką są także testy końcowe przeprowadzane z udziałem klienta końcowego, który samodzielnie sprawdza zgodność produktu z wymaganiami, co także odbywa się przy dużym udziale testera funkcjonalnego.
Przykładem specjalizacji w przypadku testera funkcjonalnego może być black box tester, w którym testy przeprowadza się bez znajomości tego, jak wewnętrznie działa program. Odwrotnością jest tester white box, gdzie tester ma dostęp do kodu źródłowego, co może ułatwiać odnajdywanie scenariuszy prowadzących do występowania błędów. Ponadto przeprowadza się także m.in. monkey testing, który ma zakładać dużą losowość wprowadzania danych. Rzecz jasna rodzajów i dalszych podkategorii testów funkcjonalnych jest znacznie więcej i często jeden tester przeprowadza kilka ich rodzajów.
Testy niefunkcjonalne
Alternatywną ścieżką kariery jest skupienie się na testach niefunkcjonalnych. Jak nietrudno się domyślić, w tym przypadku tester nie sprawdza już poprawności funkcji oprogramowania i ich zgodności ze specyfikacją oraz oczekiwaniami klienta. W analogii do testów funkcjonalnych sprawdzających poprawność tego, co robi oprogramowanie, tester niefunkcjonalny koncentruje się na tym, jak to robi.
Świetnym przykładem ścieżki kariery testera niefunkcjonalnego, która cieszy się w ciągu ostatnich lat rosnącym zainteresowaniem, jest tester bezpieczeństwa oprogramowania. W tym przypadku nie skupia się on już oczywiście, na tym, jakie zastosowania mają mieć poszczególne funkcje, lecz na tym, czy ich działanie nie narazi na szwank bezpieczeństwa całej aplikacji. Tester bezpieczeństwa przeprowadza więc m.in. liczne testy penetracyjne, dzięki którym może odkrywać pozostawione przez programistów luki.
Inne testy niefunkcjonalne przeprowadza tester wydajności oprogramowania. Wówczas tester prowadzi scenariusze, badające znów nie funkcje, lecz to, jak korzystanie z nich wpływa na wzrost zapotrzebowania aplikacji na zasoby sprzętowe. Tester wydajności poszukuje także wąskich gardeł i metod na optymalizację aplikacji, tak aby była ona jak najszybsza i jak najmniej obciążała sprzęt.
Można tu więc znaleźć naprawdę interesujące nisze, które mogą okazać się strzałem w dziesiątkę jako ścieżka kariery, np. tester badający aplikacje pod względem ich dostępności dla osób niepełnosprawnych czy tzw. tester negatywny, w którym świadomie dokonuje się takich operacji wejścia, aby zatrzymać aplikację, co z kolei może być początkiem kariery jako tester bezpieczeństwa. Z całą pewnością jest w czym wybierać, a liczba specjalizacji rośnie.
Tester manualny, tester automatyzujący
Innym podziałem determinującym ścieżkę kariery testera jest to, czy będzie on przeprowadzał testy manualne, czy też testy zautomatyzowane. I jak nietrudno się domyślić, determinującym w zasadzie każdy aspekt pracy testera.
W tym obszarze podział jest dość czytelny. Tester manualny realizuje przygotowane scenariusze ręcznie, zupełnie tak, jak w finalnym produkcie będzie to robił końcowy użytkownik. Również samodzielnie musi zadbać o odpowiednią dokumentację testów i raportowanie scenariuszy, które pozwolą na odtworzenie błędów w oprogramowaniu i załatanie ich przez programistę
Inaczej przebiegają testy automatyczne. Tutaj do przeprowadzania testów wykorzystuje się przygotowane wcześniej przez testera skrypty. Ich uruchomienie skutkuje przeprowadzeniem zautomatyzowanego testu, którego wynikiem będzie wygenerowanie raportu porównującego oczekiwane działanie całej aplikacji czy pojedynczej funkcji z tym, jak na aktualnym etapie rozwoju aplikacja radzi sobie w praktyce. Oczywiście dodatkowym wymaganiem w przypadku ścieżki kariery testera automatyzującego jest znajomość języka programowania pozwalającego na opracowywanie skryptów, aktualnie najczęściej jest to Java oraz Python.
Zarówno ścieżka kariery testera manualnego, jak i testera automatyzującego mają swoją specyfikę. W przypadku pierwszego nie sposób mówić o łatwej przenoszalności czy powtarzalności testów. Testy manualne są również znacznie bardziej angażujące. Z drugiej zaś strony nie wymagają choćby podstawowej znajomości języków skryptowych, łatwiej również osiągnąć losowość symulowanych scenariuszy i na bieżąco wprowadzać w nich modyfikacje. Automatyzacja nie pozwala także na testowanie eksploracyjne.
Wybór ścieżki w tym aspekcie to jedna z najważniejszych decyzji, jaką musi podjąć tester. Jest to bowiem podział wertykalny całej struktury testów i wszystkie wymienione wcześniej rodzaje testów funkcjonalnych i niefunkcjonalnych można przeprowadzać zarówno manualnie, jak i w sposób zautomatyzowany. Jest to osobny czynnik składający się na mnożenie końcowej liczby możliwości testera oprogramowania.
Quality Assurance a testy oprogramowania
Analizując ścieżki kariery testera, nie sposób pominąć rozróżnienia na testera oraz analityka w zakresie Quality Assurance. Podział obowiązków pomiędzy jedną ścieżką a drugą może być frapujący także dlatego, że często oferty pracy nie rozróżniają testerów i specjalistów QA, stawiają pomiędzy nimi znak równości. I choć często tester i analityk QA w praktyce okazuje się tą samą osobą, a granice w codziennej praktyce się zacierają, to warto przypomnieć sobie podobieństwa i różnice.
Nie będzie przesady w twierdzeniu, że tester to ścieżka kariery bliższa technikowi biorącemu udział w procesie produkcyjnym oprogramowania. Do jego zadań należy odnajdywanie konkretnych błędów i współpraca z programistami nad tym, aby je wyeliminować. Jak już ustaliliśmy, możliwych specjalizacji, w których realizować będzie się tester oprogramowania, jest wiele i jego praca przekłada się na faktyczną poprawę jakości oprogramowania zarówno w zakresie rdzennej funkcjonalności rozwijanego oprogramowania, jak i aspektów takich, jak bezpieczeństwo czy wydajność.
Analityk QA (choć często spotyka się także nazwy stanowisk Specjalista QA czy QA Engineer) to z kolei specjalista, który przynajmniej w teorii pracować ma z szerszym obrazem sytuacji i systemowo eliminować utrudnienia w dostarczaniu klientowi takiego produktu, jakiego ten oczekuje. Zapewnianie jakości może być więc traktowane jako zagadnienie szersze niż samo testowanie, niemniej jest także bardziej ogólne i mniej zorientowane na techniczne aspekty działania aplikacji.
Ścieżki kariery testera i QA – ogrom możliwości
Osobnym czynnikiem wpływającym na liczbę testerskich specjalizacji jest oczywiście platforma i rodzaj testowanej aplikacji. Na przykład osobną ścieżkę kariery może stanowić tester aplikacji webowych, a inną tester aplikacji mobilnych czy tester aplikacji desktopowych. Popularną specjalizację stanowią także testerzy API.
Jeśli do listy kolejnych platform czy rodzajów aplikacji, dodamy specjalizacje wynikające z przeprowadzania testów funkcjonalnych lub niefunkcjonalnych, a także podział wynikający z przeprowadzania testów automatycznych lub manualnych, to widać, że testerzy w zakresie optymalnej ścieżki kariery naprawdę mają w czym wybierać.
W celu ułatwienia wyboru osobom zachęconym tak szerokimi możliwościami pozostawiamy garść przydatnych linków: