Tester oprogramowania. Jak zacząć pracę jako tester?

Czasem znajomi spoza branży IT pytają mnie, jak zacząć pracę jako tester oprogramowania, albo proszą, żebym opowiedziała im na czym polega moja praca. Żeby się nie powtarzać, postanowiłam spisać to w jednym wpisie. Liczę, że komuś jeszcze się to przyda <3

Tester w kropki

Tester w kropki. Foto: d9k, Beskidy

Jak zacząć pracę jako tester?

Spróbować! Na juniora/młodszego testera manualnego naprawdę często nie trzeba kosmicznych umiejętności. Trochę wiedzy technicznej, parę książek wprowadzających w temat i zdrowy rozsądek – i myślę można spokojnie startować na mniej wymagające stanowiska. Reszty i tak nauczy się „w praniu”. Jeśli jest się tuż po studiach informatycznych, naprawdę nie trzeba wiele, większość pytań na rozmowach dotyczy po prostu myślenia („jak przetestował/a byś program, który jako wejście pobiera x, a ma za zadanie przerobić te dane na y„).

Co to jest tester manualny, automatyczny?

Przyjęło się, że rozdziela się te dwie kwestie, jednakże w praktyce nie zawsze są one oddzielnymi stanowiskami.

Testerzy manualni sprawdzają aplikacje „ręcznie”, czyli po prostu działają w aplikacji tak, jak zwykły użytkownik, weryfikując, czy programiści zaimplementowali wszystko zgodnie z dokumentacją, czy oprogramowanie nie zawiera błędów, czy aplikacja jest łatwa w użyciu, czy dokumentacja jest zrozumiała itd.

Testerzy automatyczni zajmują się automatyzacją testów, programując je tak, jak wykonywaliby test, gdyby wykonywali go ręcznie. Jest to o tyle przydatne, że tak zaprogramowaną sekwencję testów można uruchomić wielokrotnie, bez konieczności przeprowadzania testów manualnie, co bywa uciążliwe.

Czy aby zostać testerem, trzeba umieć programować?

Doświadczenie programistyczne przydaje się do ogólnego oglądu sytuacji – łatwiej wyobrazić sobie, jak aplikacja wygląda „pod spodem”, z czego się składa. Umiejętności programistyczne pomagają też w analizach skąd mógł wziąć się błąd. Łatwiej też zidentyfikować obszary, gdzie potencjalnie mogą kryć się błędy, choć jest to także kwestia praktyki. 

Z drugiej strony niektórzy testerzy zarzucali mi, że „myślę jak programista, a nie jak użytkownik”. Na pewno nie można złapać się w tą pułapkę 🙂

Czy znasz jakieś kursy online uczące testowania?

Obserwuję teraz wielki boom na wszelkie kursy online, bootcampy obiecujące zrobić z kogoś testera lub programistę w jeden weekend. Ciężko wypowiadać się na ten temat, ponieważ nie brałam udziału w żadnych szkoleniach tego typu. Polecam natomiast chodzić na konferencje w stylu SkładQA, Quality Excites, różne meetupy (np. KraQA), a nawet wydarzenia studenckie. Pewnie w sieci znajdą się nagrania albo prezentacje z takich imprez – warto poszukać.

Jeśli ktoś potrzebuje kursów stacjonarnych, myślę że mogę polecić studia podyplomowe. Wybór jest coraz większy, kolejne kierunki powstają jak grzyby po deszczu. Przykładowo:

  • Warszawa: Vistula – „Testowanie Oprogramowania”
  • Kraków: Uniwersytet Jagielloński – „Studia podyplomowe w Instytucie Informatyki i Matematyki Komputerowej UJ”
  • Kraków: Akademia Górniczo-Hutnicza – „Inżynieria Jakości Oprogramowania”
  • Rzeszów: Wyższa Szkoła Informatyki i Zarządzania – „Tester oprogramowania”
  • Śląsk: WSB w Chorzowie – „Tester oprogramowania”
  • Wrocław: Wyższa Szkoła Informatyki i Zarządzania Copernicus – „Testowanie oprogramowania”
  • Gdynia: Akademia Marynarki Wojennej, Wydział Dowodzenia i Operacji Morskich – „Tester Oprogramowania”
  • … i wiele innych.

Czy bez studiów z testowania poradzę sobie na rekrutacji?

Jeśli wykażesz się wiedzą, to tak. Zawsze warto usystematyzować sobie wiadomości, a nawet podeprzeć się odpowiednim certyfikatem, np. ISTQB. W zakresie materiałów tego certyfikatu jest sporo podstawowych informacji, jak testować, choć są to informacje raczej suche, teoretyczne.

Wystarczy zatem nauczyć się, jak testować? To wszystko?

Na początku tak 🙂 Potem przyda się poszerzanie wiedzy w różnych kierunkach: programowania, wydajności, security, devops, a może nawet zarządzania czy tzw. kompetencji miękkich: negocjacji, pracy zespołowej. Bardzo ważna jest także nauka narzędzi, takich jak np. Wireshark, SoapUI, Burp – zależy co jest w danych testach potrzebne. Wszystko jednak przychodzi z czasem – najłatwiej uczyć się na konkretnych przypadkach, np. podczas testowania przygotowanego przez programistów webservisu itd.

Czy testy automatyczne są trudne? Dopiero uczę się programowania i nie wiem, czy sobie poradzę.

Można przyjąć, że testy automatyczne są prostsze niż programowanie aplikacji, głównie dlatego, że w większości przypadków jest to praca:

  • Oparta na zaledwie kilku frameworkach – w zależności od rodzaju testów, przeważnie używa się kilku standardów, np. dla testów frontendu w najprosteszej opcji będzie to Selenium + framework do uruchamiania testów, np. JUnit, nUnit itd. Dużo mniej, niż na przykład w ekosystemie Javy, gdzie na start musimy poznać kilkanaście frameworków (do obsługi bazy danych, szablonów itd.).
  • Dość powtarzalna – jeśli już nauczyliśmy się, jak zautomatyzować testy (np. frontendu albo usług sieciowych), to przez najbliższy czas będziemy po prostu dopisywać kolejne przypadki testowe.
  • Nie trzeba wymyślać koła na nowo – w idealnym przypadku implementujemy testy na podstawie już spisanych wymagań. Wcześniej wg tych wymaganiach pracowali programiści, powinny być one zatem już spisane w czytelnej formie.

Najprostsze testy (np. testy usług sieciowych: REST, SOAP itd.) sprowadzają się do wywołania testowanej funkcji z odpowiednimi parametrami i sprawdzenia czy zwracana wartość jest poprawna. Oczywiście jest to tylko najprostszy scenariusz, który w kolejnych krokach odpowiednio rozbudowujemy.

Skąd czerpać wiedzę?

Z internetu, blogów (także programistycznych), książek (parę opisywałam tutaj na blogu), doświadczeń swoich i osób z otoczenia, spotkań, konferencji, szkoleń… W tym zawodzie wciąż trzeba się uczyć i jest to naprawdę świetne 🙂

Przydatny wpis? Postaw mi kawę :)