Blog IT, Blog Marketing

Tester IT. Wszystko, co musisz wiedzieć o tym zawodzie

Tester IT. Wszystko, co musisz wiedzieć o tym zawodzie

Magdalena Uszyńska , 12.06.2023 r.

Praca testera oprogramowania od dłuższego czasu przyciąga uwagę szczególnie tych, którzy dopiero chcą rozpocząć pracę w IT. Najczęściej nie wymaga ona znajomości języków programowania, architektury czy zagadnień z zakresu inżynierii oprogramowania. Jednocześnie dość duże zapotrzebowanie na tego rodzaju specjalistów sprawia, że jest to zawód o relatywnie niskim progu wejścia, zaś informacje i umiejętności, którymi dysponować powinien tester, nie mają nazbyt stromej krzywej uczenia. Nic więc dziwnego, że do grona testerów chce dołączyć coraz większa liczba osób rozpoczynająca karierę zawodową, ale także poszukujących okazji do przebranżowienia.

Naiwnie byłoby jednak uważać, że praca testera jest dla każdego, zaś jego codzienne obowiązki to bułka z masłem. Przeciwnie, wymaga ona najczęściej zestawu określonych cech, które stanowią o tym, czy mamy do czynienia wysokiej klasy specjalistą, czy z przeciętniakiem. Skrupulatność, umiejętność zwięzłego, ale przy tym konkretnego i zrozumiałego opisywania napotkanych podczas korzystania z oprogramowania problemów to zaledwie dwie z nich. Nie obędzie się także bez rozwiniętych umiejętności interpersonalnych, bez których współpraca z członkami zespołów programistycznych będzie niezwykle utrudniona.

Czym zajmuje się tester?

W największym skrócie zakres obowiązków testera sprowadza się do odnajdywania błędów i niedociągnięć, a następnie zgłaszanie ich programistom, by ci rozwiązywali problemy, zapewniając tym samym wyższą jakość oprogramowania. Rzecz jasna jest to ogromne uproszczenie, niemniej tak właśnie można zarysować cel pracy testera. Proces ten – w zależności od wymagań firmy, rodzaju przeprowadzanych narzędzi i ich specjalizacji – ma wiele zróżnicowanych etapów, jednak w lwiej części przypadków można odnotować stałe elementy, bez których testy, niezależnie od ich charakteru, będą miały zawsze.

Wśród nich należy wymienić w pierwszej kolejności planowanie testów. Ich przeprowadzanie jeszcze przed rozpoczęciem całego procesu wymaga przecież uruchomienia dokumentacji, dzięki której możliwe będzie nie tylko precyzyjniejsze informowanie zespołów programistycznych o występujących błędach, ale także przyśpiesza proces ich odtworzenia, zawsze niezbędny dla ich zażegnania. Plany powinny także uwzględniać zakres testów. Kolejnym etapem prac jest opracowanie scenariuszy testowych, które nakreślą, jakie konkretnie czynności podejmował tester czy też przygotowany przez niego skrypt w przypadku testów automatycznych. Dalszy przebieg polega już na właściwym przeprowadzeniu testów, opracowaniu wniosków i analityce oraz finalnie pracy z programistami celem wyeliminowania błędów w testowanym sofcie.

Tester manualny i automatyczny

Jak już wspomniano, testy mogą być bardzo zróżnicowane tak w zakresie, jak i typie. To jednak nie ta kwestia stanowi najczęściej największe rozróżnienie, lecz to, czy mamy do czynienia z testami manualnymi, czy też automatycznymi (zautomatyzowanym). W pierwszym przypadku mowa oczywiście o sytuacji, w którym do testów angażowany jest człowiek, który ręcznie przeklikuje akcje zgodnie z opracowanym wcześniej planem i scenariuszem testów. Również analityka i raportowanie wymaga zaangażowania ludzkiego testera, co w porównaniu z testami automatycznymi jest czasochłonne i kosztowne, można jednak liczyć na większą skuteczność i precyzję w opisywaniu problemów.

W przypadku testów automatycznych rola człowieka “ogranicza się” do przygotowania skryptów, które następnie wykona komputer, by przetestować konkretne komponenty. W odróżnieniu od testerów manualnych testerzy automatyczni muszą się zatem wykazywać znajomością przynajmniej jednego języka programowania. Najczęściej wykorzystywane są języki Java, Python oraz C#, choćby ze względu na swoją uniwersalność i możliwość uruchomienia skryptu niezależnie od platformy, co jest szczególnie istotne – w dobie, gdy coraz więcej produktów adresowanych jest na więcej niż jeden system operacyjny, łącznie z systemami mobilnymi, interoperacyjność skryptów może być w wielu przypadkach bardzo ważnym aspektem prac.

Jak widać, zarówno testy manualne, jak i automatyczne mają swoje silne i słabe strony. Testy manualne mogą się okazać czasochłonne i kosztowne, ale będą jednocześnie przebiegały w sposób, w jaki z oprogramowania będzie korzystać użytkownik. Testy automatyczne jedynie symulują ludzkie zachowania (a te przecież mogą być naprawdę nieprzewidywalne), ale przebiegają znacznie sprawniej i w określonym czasie pozwalają na większy zakres testów. W Polsce wciąż w sposób zdecydowany prowadzą pod względem popularności testy manualne, niemniej dość powszechna jest opinia, by łączyć i krzyżować oba paradygmaty, tak by osiągać największą skuteczność.

Tester a QA

Kolejne rozróżnienie, które warto zasygnalizować – zwłaszcza że w ofertach pracy często spotkamy się z zapisem “tester/qa” bądź terminy te są stosowane zamiennie. Niesłusznie. Tester, jak już wiemy, odpowiedzialny jest za odnajdywanie błędów i innego rodzaju niedociągnięć w oprogramowaniu w toku przeprowadzania zróżnicowanych scenariuszy zarówno manualnie, jak i z użyciem skryptów automatyzujących cały proces. Czym w tym takim razie zajmuje się QA, czyli Quality Assurance?

Zapewnianie jakości to szereg działań wykraczających poza samo testowanie, choć oczywiście testowanie również się do nich zalicza. QA to zresztą pojęcie zarezerwowane nie tylko dla IT i procesu wytwarzania oprogramowania – z procesami zmierzającymi do zapewnienia możliwie jak najwyższej jakości produkcji produktów i usług spotkać możemy się w wielu innych branżach. Punktem wyjścia w tym procesie jest oczywiście przyjęcie określonych standardów, wewnętrznych lub zewnętrznych, np. stanowionych przez normy. Różnice łatwo zaznaczyć na prostym przykładzie – gdy tester odnajduje błędy, QA ma za zadanie upewnić się, że robimy to w sposób zgodny z przyjętymi standardami jakości. Podobnie sprawy mają się z raportowaniem błędów, ale też całością dokumentacji, której wysokie standardy mogą się w znaczący sposób przełożyć na dalszy rozwój oprogramowania, co w dobie CI/CD jest niezwykle ważne.

Rodzaje testów

Niejednokrotnie już zasygnalizowano, że testy oprogramowania są zróżnicowane i można powiedzieć, że klasyfikacja przebiega zarówno horyzontalnie, jak i wertykalnie. Ba, wciąż – zwłaszcza w zakresie testów zautomatyzowanych – pojawiają się nowe techniki, które w sposób maszynowo próbują zepsuć oprogramowanie, np. z użyciem losowo generowanych danych czy elementów tzw. sztucznej inteligencji. Pierwszy rodzaj klasyfikacji to podział ze względu poziom szczegółowości testów. Najbardziej elementarnym, podstawowym testem jest test jednostkowy, który ma na celu sprawdzenie działania pojedynczych klas czy metod w kodzie. Jest to więc najniższy poziom testów. Wraz z rosnącą złożonością przenosimy się na poziom testów integracyjnych, w których sprawdza się poprawność działania zależności pomiędzy całymi komponentami. Wyżej mamy już testy systemowe oraz – jeśli występuje taka potrzeba – testy integracyjne, które skupiają się na tym jak współdziałają ze sobą całe systemy.

Obok tej klasyfikacji występuje druga, która dzieli testy ze względy na aspekt oprogramowania, na jakich się skupiają. Tutaj możemy wyróżnić na przykład wydajności, gdzie tester koncentruje się na odnajdywaniu w kodzie wąskich gardeł i okazji do optymalizacji. Innym rodzajem testu skupiającego się na konkretnym aspekcie tego, jak działa program, mogą być testy stabilności, czy tez niezawodności, do czego przydaje się metoda monkey testing, czyli z użyciem wspomnianych losowych danych: sprawdza się na przykład wówczas, czy podanie losowego ciągu znaków w miejscu, gdzie w formularzu powinny się pojawić tylko cyfry, doprowadzi do zatrzymania pracy programu. Osobną kategorię stanowią także testy bezpieczeństwa, choć zazwyczaj zajmuje się tym osobny, oddelegowany zespół pentesterów, czy kompatybilności. Słowem – można tu dopisać dosłownie każdą właściwość programu, gdyż każda z nich może podlegać testom.

Test-driven development

Rosnące znaczenie testów i przywiązywanie coraz większej wagi do jakości dostarczanego na rynek produktu doprowadziło do ciekawego zjawiska, w którym tworzenie oprogramowania może być wtórne, następujące wobec testów. Mowa o rozpowszechnieniu paradygmatu test-driven development, który niegdyś uchodził za praktykę uchodzącą za programowanie ekstremalne, a dziś świetnie wpasował się w zwinne metodyki wytwarzania oprogramowania. Można powiedzieć, że TDD odwraca najbardziej domyślną, intuicyjną kolejność w procesie wytwarzania oprogramowania, a to dlatego, że przed napisanie choćby linijki kodu najpierw pisze się… test jednostkowy.

W założeniu chodzi o to, aby przez budowanie testu określić wymagania funkcjonalne, a dopiero potem, na tej podstawie, pisać kod. I tak w kolejnym etapie to właśnie test jednostkowy determinuje, jaki program powstanie, a programista może w ten sposób uzyskać najkrótszy możliwy kod, który będzie spełniał warunki określone w teście. W ten sposób automatycznie stosuje się brzytwę Ockhama – nie tworzy się bytów ponad potrzebę, gdyż potrzeba jest wcześniej z góry określona i po stronie dewelopera jest podjęcia działań, by możliwie jak najmniejszym nakładem te potrzeby zaspokoić. Ostatnim etapem prac w paradygmacie TDD jest refaktoryzacja kodu, czyli prace związane z zapewnieniem jego odpowiedniej jakości i dostosowanie do obowiązujących w ramach danego projektu.

Od czego zacząć?

Dla osób zainteresowanych podjęciem pracy jako tester oprogramowania przydatne będą informację na temat podstawowych wymagań, a wśród tych – poza wspomnianą już skrupulatnością i wnikliwością – warto wspomnieć o certyfikacie ISTQB®. Jest to respektowany w zasadzie na całym świecie program certyfikacji poświadczający to, że dany tester dysponuje wiedzą i kompetencjami niezbędnymi w tym zawodzie. Organizacja przygotowała kilka poziomów i specjalizacji, w których certyfikować można się oddzielnie, nabierając tym samym specjalizacji. Co prawda coraz częściej nie jest wymagane legitymowanie się samym certyfikatem (podejście do egzaminu jest płatne), lecz znajomością sylabusa i oczywiście wszystkich materiałów edukacyjnych we lwiej części przypadków pozostaje obowiązkowa. Często to właśnie przygotowanie się do egzaminu ISTQB® i zdanie go dla wielu aspirujących testerów pozostaje pierwszym krokiem na nowej ścieżce kariery, czemu sprzyja duża liczba wysokiej jakości książek i materiałów dostępnych w Sieci.

Najnowsze oferty pracy:

Polecane wpisy na blogu IT:

Szukasz pracownika IT?

Dostarczymy Ci najlepszych specjalistów z branży IT. Wyślij zapytanie

Wyrażam zgodę TeamQuest Sp. z o.o. na przetwarzanie moich danych osobowych w celu marketingu produktów i usług własnych TeamQuest, w tym na kontaktowanie się ze mną w formie połączenia telefonicznego lub środkami elektronicznymi.
Administratorem podanych przez Ciebie danych osobowych jest TeamQuest Sp. z o.o., z siedzibą w Warszawie (00-814), ul. Miedziana 3a/21, zwana dalej „Administratorem".
Jeśli masz jakiekolwiek pytania odnośnie przetwarzania przez nas Twoich danych, skontaktuj się z naszym Inspektorem Ochrony Danych (IOD). Do Twojej dyspozycji jest pod adresem e-mail: office@teamquest.pl.
W jakim celu i na jakiej podstawie będziemy wykorzystywać Twoje dane? Dowiedz się więcej