Ostatnio zauważyłem, że testowanie oprogramowania stało się bardzo popularnym wyborem kariery dla osób, które chcą spędzić życie przed komputerem lub innymi słowy — dostać się do świata IT. To, co mi się nie podoba, to fakt, że wielu z tych testerów po pewnym czasie porzuca tę specjalizację i przeskakuje na drugą stronę barykady, by zostać programistą. Traktują testowanie tylko jako punkt wejścia w branżę.


Michał Sporna. Senior QA Engineer w intive. Swoją przygodę z testowaniem zaczął od branży gamedev. Wtedy po raz pierwszy poczuł, że testowanie jest dla niego ciekawszym zajęciem, niż pisanie kodu. Postanowił więc pójść za przeczuciem i znaleźć pierwszą pracę jako tester.


Moim zdaniem dobry QA lub dobry pracownik ogólnie to osoba o wyraźnie określonych celach, chętna by rozwijać się w wybranej profesji. Jeśli zapewnienie jakości jest tym, czym chcesz się w życiu zajmować, ten artykuł jest dla Ciebie.

Jasną stroną wzrostu popularności testowania jest to, że na rynku pojawia się wiele cennych kursów. Szkoły oferują kierunki testowania oprogramowania, nie tylko te związane z programowaniem i bezpieczeństwem sieci. Powinno to mieć pozytywny wpływ na jakość przyszłych testerów.

Kim jestem?

Pracuję jako inżynier ds. Kontroli jakości od 5 lat. Do tej pory miałem okazję testować gry wideo i aplikacje internetowe dla takich firm jak Disney Playdom, Good Technology czy Blackberry. W niniejszym artykule przedstawiam mój punkt widzenia na podstawie obserwacji dokonanych w tym czasie.

Co było pierwsze: tester czy błąd?

Testowanie to bardzo interesujące zajęcie, ponieważ daje możliwość pracy z wieloma technologiami, różnymi językami programowania, środowiskami czy ogólnie stackami technologicznymi. Nie wiąże nas z jedną technologią tak, jak robi to zawód programisty. Programista backend pozostaje np. z Javą na zawsze. Czy to nie wieje nudą?

Lubię porównywać testerów z pielęgniarkami i programistów z lekarzami. Obie profesje muszą żyć ze sobą w symbiozie, współpracować i rozumieć się bez słów, by pacjent nie umarł na stole. Są też przypadki, gdy doświadczona pielęgniarka ma taką samą lub nawet większą wiedzę niż lekarz, chociaż zawsze będzie żyła w jego cieniu. Taki los testera oprogramowania.

Musisz wiedzieć, że jest to zawód uczący pokory — tester nie zawsze jest doceniany, gdy na to zasługuje, a często karcony za każdy niewypał, nieważne czy powstały z jego winy lub nie. To dlatego, że tester jest ostatnią osobą, która dotyka produktu przed wydaniem (z wyjątkiem osób odpowiedzialnych za jego wdrożenie, ale to inny rodzaj… dotykania). Gdy tylko zrozumiesz, że musisz chronić swój tyłek, staniesz się dobrym testerem. Chronienie tyłka nie jest czymś złym, chociaż brzmi szemranie. To wbrew pozorom coś dobrego, uczenie się bycia odpowiedzialnym za produkt i pracę, w poczuciu, że to Ciebie obwinią za błąd znaleziony na produkcji pozwala wykształcić pajęczy zmysł.

Oczywiście, testerzy prawdopodobnie nie są terminatorami — błędy się zdarzały i będą się zdarzać. Muszą jednak mieć pewność, że zrobili wszystko, aby zapewnić zakładaną jakość oraz dołożyć wszelkich starań, by szefowie dowiedzieli się o naszej pracy, dokładnie o tym, co zrobiliśmy. Mam na myśli proces, który musi być udoskonalany w każdej iteracji i wszystkim testerom musi to leżeć na sercu.

Dla mnie istnieją dwa poziomy testowania oprogramowania: testowanie i zarządzanie testami (manager to zupełnie inna historia, gdzieś ponad tymi dwoma). Zarządzanie nie jest czymś, czym zajmuje się młodszy specjalista, ale jest to najlepszy sposób, aby przestać być młodszym i dostać się na wyższy level, chociaż nie będę zgłębiał tego tematu w tym artykule.

Przejdźmy do sedna. Czym testerzy oprogramowania zajmują się na co dzień?

Testy ręczne i automatyczne​ — kwintesencja tego zawodu. Testujesz ręcznie, piszesz testy automatyczne lub robisz obie te rzeczy jednocześnie. Wszystko zależy od struktury i strategii zespołu.

  • Struktura​ — jeśli zespół składa się ze specjalistów mogących pisać testy automatyczne, to naturalnym jest, że piszą testy, a manualne testowanie jest przeniesione do innego zespołu. Jeśli team ma tylko testerów manualnych to automatyzacja jest poza listą codziennych zadań. Jeśli mamy do czynienia z zespołem, gdzie umiejętności są mieszane, to można przeprowadzić zarówno automatyzację, jak i testy manualne. W takim przypadku, testerzy manualni mają szansę uczyć się automatyzacji jeśli chcą.
  • Strategia​ — oba podejścia do testowania tj. manualne i automatyczne mają swoją rację bytu. Zależy to głównie od typu projektu — czasami oprogramowanie jest tak proste, że 100 przypadków testowych całkowicie je obejmie. Wchodzenie w automatyzację tam, gdzie nie jest to konieczne, stanowi ten sam problem, co nie rozważenie automatyzacji w ogóle. To kwestia ilości wymaganej pracy i kosztu. Automatyzacja jest kosztowna w utrzymaniu i zajmuje wiele czasu, który mógłby być wykorzystany do kompleksowego przetestowania aplikacji ręcznie.Podejście musi być dokładnie przemyślane, zanim pobrudzimy sobie ręce — myślę, że zautomatyzowanie wszystkiego za wszelką cenę tylko dlatego, że słowo automatyzacja wyskakuje nam dziś nawet z lodówki, jest bez sensu. Na rynku cały czas jest miejsce zarówno dla testerów automatycznych i manualnych i to się nie zmieni pomimo twierdzeń internautów brzmiących tak: przyszłość testowania to wyłącznie automaty i koniec kropka.
  • Pisanie przypadków testowych​ — kolejne podstawowe zadanie testera oprogramowania. Nie ma życia bez wody i testów bez przypadków testowych. Pomimo, że istnieją nieformalne metody testowania zwane ad-hoc, to moim zdaniem przypadki testowe powinny być systematycznie pisane, nawet jeśli jesteś weteranem. Przypadki testowe nie tylko mówią nam, co i jak testować, ale także działają jako szczegółowa dokumentacja produktu — w wielu przypadkach (lub zawsze?) nie ma dokumentacji opisującej, jak każda z funkcji produktu ma działać.Członkowie zespołu po pewnym czasie zwykle zapominają o założeniach powstałych podczas developmentu, a jedno spojrzenie na aktualne przypadki testowe może uleczyć tę amnezję. Przypadki testowe, oczywiście, wymagają aktualizacji co jest wymagającym zadaniem, zwłaszcza jeśli projekt zmienia się często, a zasoby ludzkie są ograniczone. Zarządzanie defektami -​- jako tester oprogramowania musisz czytać board projektu tak, jak czytasz wykop.pl do kawy. Jesteś odpowiedzialny za to, aby wiedzieć, jakie defekty są otwarte, nad którymi aktualnie pracują programiści, a które są już zweryfikowane i zamknięte.W niektórych przypadkach jedna osoba przejmuje inicjatywę w tym zadaniu, jednak najlepiej zacząć wdrażać to do swojej codziennej rutyny jak najszybciej. Dzięki temu można uniknąć zgłaszania duplikatów i dowiedzieć się więcej o projekcie. Mówię o zarządzaniu wszystkimi defektami, nie tylko o tych, które zgłosiłeś. Obsługa środowisk​ — każde oprogramowanie działa w pewnym określonym środowisku i Twoje zadanie to utrzymywanie tych środowisk, by zawsze były gotowe do rozpoczęcia testów.
  • Utrzymywanie Jenkins’a (lub innego narzędzia do continous integration)​ — w związku z powyższym automatyczne wdrażanie oprogramowania bardzo pomaga, a wiedza na temat korzystania z narzędzia do continous integration, takiego jak np. Jenkins, powinna znajdować się na Twojej liście zadań. Ktoś prędzej czy później będzie tego od Ciebie wymagać (ponieważ deweloperzy są zbyt zajęci…).
  • Planowanie​ — część procesu rozwoju oprogramowania. Testerzy oprogramowania i programiści uczestniczą w tych działaniach, szacują wymagany nakład pracy z obu perspektyw, aby dać ogólny pogląd jak długo potrwa wykonanie jakiegoś zadania.
  • Spotkania​ — zło konieczne powiązane z powyższym.

Jakie są ścieżki rozwoju w tej dziedzinie IT?

Zazwyczaj ścieżka testera wyglądaj tak: tester manualny-> tester techniczny zdolny do pisania narzędzi i skryptów -> lead/manager.

To zależy od Ciebie, jak chcesz się rozwijać, nie każdy chce zostać menedżerem lub ekspertem w dziedzinie automatyzacji, ale wiedz o tym: jest wystarczająco dużo błędów dla wszystkich. Skup się na byciu najlepszym testerem w zespole, a kamienie milowe kariery same naturalnie ukształtują się.

Wstawiamy nogę w drzwi

Nie jest łatwo zostać zaproszonym na rozmowę kwalifikacyjną, gdy życiorys nie ma jeszcze blizn wojennych, list motywacyjny nie odzwierciedla Twojej motywacji, a wiedza jest zbyt słaba, aby poradzić sobie z tymi problemami. Dlatego przygotowałem 6 sugestii na podstawie mojego doświadczenia, które moim zdaniem mogą Ci pomóc znaleźć pracę:

1. Odpowiedz na wszystkie ogłoszenia o pracę, które zdołasz znaleźć w swoim regionie

Niedawno w moim projekcie potrzebowaliśmy młodszego testera i byłem odpowiedzialny za wybór kandydatów i przeprowadzanie z nimi rozmów. Dostałem 3 profile, które musiałem przejrzeć:

Patrząc na powyższą tabelę pewnie zgadujesz, że zatrudniliśmy kandydata z CV nr 3. Wybraliśmy kandydata nr 2, ponieważ szukaliśmy juniora, którego firma miała oszlifować i przerobić na specjalistę. Przede wszystkim zwróć uwagę, że otrzymanie pracy opiera się nie tylko na Twoim CV lub liście motywacyjnym, ale także na wpasowaniu się w konkretne potrzeby pracodawcy. Dlatego moja pierwsza rada brzmi: zaaplikuj na wszystkie ogłoszenia o pracę, które możesz znaleźć, bo nie wiesz, w które akurat się wpasujesz. Nic nie tracisz.

2. Znajdź staż

Firma, w której pracuję, ma program stażowy dla przyszłych testerów i programistów. Chociaż przez czas trwania programu wykonujesz zadania za darmo, to w zamian otrzymujesz solidny wpis do CV, który może wpłynąć na czyjąś decyzję w sprawie zaproszenia Cię na rozmowę. Wiem, jak to brzmi, praca za darmo nie jest tym, czego oczekujesz od życia zawodowego, zwłaszcza gdy utrzymujesz się samodzielnie. Jednak jeśli jesteś zdeterminowany, aby rozpocząć karierę testera oprogramowania możesz zapisać się do takiego programu i chodzić na spotkania po pracy (w firmie, w której pracuje spotkania są po południu żeby nie kolidowały z codziennymi zadaniami pracowników prowadzących zajęcia).

W takim programie prospekci przeprowadzani są przez kompletny cykl rozwoju oprogramowania, dzięki czemu można dowiedzieć się, jak to się robi i jak to jest pracować nad aplikacją z prawdziwego zdarzenia. Kolejną zaletą takiego stażu jest to, że po zakończeniu programu posiadasz zestaw nowych kontaktów, a nawet ofertę pracy, nie wspominając o zdobytych umiejętnościach. Firma, w której pracuję zazwyczaj kończy program zatrudnieniem najbardziej zmotywowanych osób o największym potencjale.

3. ISTQB lub kurs online

Teorię powinieneś mieć w małym palcu, zwłaszcza na początku kariery. Z mojego doświadczenia wynika, że ​większość rozmów na tę pozycję toczy się wokół teorii. Czasami nie znałem odpowiedzi na pytanie rekrutera, ponieważ nigdy nie używałem danej koncepcji w mojej pracy, ale istnieje ona w jakiejś książce o testowaniu. Dlatego, aby uniknąć zaskoczenia, polecam:

  1. Kup dobrze oceniony kurs online na temat testowania (wszystkie duże witryny e-learningowe je mają) — ukończenie takowego na pewno zaplusuje w oczach rekruterów, bo po prostu łatwiej będzie sprzedać Twoje CV. Jednak najważniejsze, że z takiego kursu wyniesiesz niezbędną wiedzę.
  2. Zdaj egzamin ISTQB — jest to najsłynniejszy (i być może jedyny znaczący) certyfikat, jaki może zdobyć tester oprogramowania. Program obejmuje wiele, jeśli nie wszystkie koncepcje testowania, niektóre używane w prawdziwym życiu, niektóre nie, ale przynajmniej poznasz je wszystkie i ta wiedza jest wystarczająca, by poradzić sobie podczas rozmowy kwalifikacyjnej. Ponadto, posiadanie certyfikatu ISTQB z pewnością sprawi, że twoje CV będzie się wyróżniać, ponieważ większość juniorów go nie ma. Wystarczy poziom podstawowy. Minus tego jest taki, że kosztuje trochę pieniędzy, ale to raczej inwestycja, jeśli jesteś zdecydowany zdobyć pracę w tej dziedzinie.

Obie opisane opcje w tej sugestii są płatne, więc musisz świadomie podjąć decyzję, czy zainwestować pieniądze w zdobycie pracy. Z mojej perspektywy można to porównać do płatnych dodatków w grach mobilnych — wiesz, że teoretycznie możesz zdobywać poziomy, tylko dzięki umiejętnej grze, ale możesz też kupić dodatkowe punkty za określoną kwotę $$$. Ostateczny cel można osiągnąć w dowolny sposób — płatne opcje tylko ułatwiają ścieżkę. Gdybym to ja miał decydować, czy ukończyć kurs czy zdać ISTQB, wybrałbym kurs online, który zawiera filmy, prezentacje i testy a nie tylko ścianę tekstu do zapamiętania.

4. Udział projekcie open source

Czy słyszałeś o Github.com? Nie? To strona internetowa, która jest domem dla projektów typu open source — ludzie tworzą oprogramowanie, które może być czymkolwiek, od małych bibliotek po kompletne frameworki i umieszczają ich źródło na Github, gdzie wszyscy zainteresowani mogą nie tylko wyświetlać i pobierać — mogą także dołączyć do społeczności i uczestniczyć w rozwoju danego projektu.

Programiści mogą dołączyć do projektu i tworzyć nowe funkcje. Testerzy oprogramowania mogą wskoczyć do stawu z bugami, by je znajdować, zgłaszać i weryfikować. To świetna okazja, aby nauczyć się współtworzyć jakiś produkt. Możesz przejrzeć Github, wybrać projekt, który ci się spodoba i zapytać właścicieli czy czasem nie potrzebują testera. Możesz także po prostu wdrożyć wybrany projekt w swoim środowisku, przetestować go i zgłosić wszelkie problemy znalezione w narzędziu do śledzenia błędów projektu na Github. Wtedy pojawisz się na radarze tych, co ten kod pisali.

Jednak zanim to zrobisz, przeczytaj uważnie plik readme ponieważ często umieszczone są tam informacje o tym, jak i gdzie należy zgłaszać błędy. Nie dawaj właścicielom projektu powodów do irytacji, pomijając tak oczywistą kwestię. Kodowanie bywa wystarczająco irytujące. Projekty na Github mogą być filtrowane głównie po języku programowania i ilości gwiazdek. Gwiazdki mają ten sam cel, co polubienia na Facebooku — więcej gwiazdek oznacza więcej popularności.

Jedna rada przy wyborze projektu: nie decyduj się na coś, co istnieje wiele lat jak Reddit lub jest robione przez duże firmy jak Google. Oni mają mnóstwo zgłoszonych defektów, pełne skrzynki wiadomości, duże społeczności i Twoja praca może nie być tak doceniana jak byś sobie tego życzył. Poszedłbym w nieco mniej popularną aplikację (> 200 i <1500 gwiazdek) jednak aktywnie rozwijaną. Możesz rozpocząć wyszukiwanie od przeglądania projektów, które zyskały najwięcej popularności w tym miesiącu (https://github.com/trending/php?since=monthly).

Proponuję zmienić język programowania na PHP. Projekty napisane w tym języku są dość łatwe do wdrożenia i są webowe, a wiadomo, że teraz większość aplikacji żyje w przeglądarce. Oczywiście możesz wybrać dowolny język czy technologię, w zależności od Twoich upodobań.

Strona z trendami wygląda następująco:

Kiedy przeglądałem wschodzące projekty, ten zwrócił moją uwagę. Ma kilka gwiazdek i wydanych wersji, co oznacza, że jest używany przez prawdziwych ludzi, opracowany przez firmę, ma > 1 współautora, jest interesujący i soczysty z punktu widzenia testera. Ma wiele podstron i komponentów, które pozwalają na wprowadzanie danych, a nieszablonowa zabawa z tym może doprowadzić do wykrycia błędów.

A tak na marginesie, nie traktuj tego jak praca za darmo — pracujesz na rzecz budowania swojego doświadczenia oraz kontaktów ze społecznością, która działa w IT dłużej niż ty. Niektóre projekty są utrzymywane przez osoby prywatne, a niektóre przez firmy. Firmy robią otwarte oprogramowanie, ponieważ dbają o społeczność lub jest to ich model biznesowy, czyli na przykład dają darmowy produkt z otwartym kodem źródłowym, ale zarabiają pieniądze na dodatkach, wersji premium lub wsparciu. Jeśli aktywnie przyczynisz się do dodania wartości jakiemuś produktowi open source, za którym stoi firma, może zostaniesz zauważony i zatrudniony? Zawsze istnieje taka ewentualność.

W każdym razie, uczestnictwo w projekcie open source zawsze prezentuje się bardzo ładnie na CV, a kiedy dodasz garść statystyk, takich jak: ile defektów zgłosiłeś, a ile z nich zostało naprawionych przez zespół, będzie jeszcze lepiej.

5. Technologia nie może być Ci obca

Prawdopodobnie już jesteś za pan brat z technologią, ale dla formalności powiem, że powinieneś na luzie wymienić przynajmniej 4 przeglądarki pochodzące od głównych producentów i 2 główne mobilne systemy operacyjne, z których korzysta większość ludzi. To na początek. Oferta pracy zazwyczaj określa czy szukają testera do apek mobilnych, czy webowych, ale nie powinieneś ograniczać się do znajomości tylko jednego zagadnienia z tych dwóch.

Wydaje mi się, że wygodne korzystanie z przeglądarki i urządzeń mobilnych jest koniecznością w dzisiejszym świecie, ponieważ wiele produktów internetowych ma wersję mobilną lub aplikację mobilną lub planuje to zrobić. A ty w dodatku aspirujesz do bycia zawodowym konsumentem tych technologii, więc musisz ją mieć we krwi. Na jakie możliwe pytania możesz się natknąć?

Czy słyszałeś o javascript?

Czy wiesz, jak odczytać błędy javascript?

Czy można emulować Androida?

Czy można emulować ios?

Co to jest rest api?

Jak wyczyścić pamięć podręczną i pliki cookie w największych przeglądarkach?

Jak myślisz, dlaczego podczas testów czyścimy pamięć podręczną i pliki cookie?

Czy wiesz, jakie rozszerzenia mają aplikacje na Androida?

Czy wiesz, jakie rozszerzenia ma aplikacja ios?

Ponadto, jeśli chodzi o systemy operacyjne, prawdopodobnie wymagana jest podstawowa znajomość systemu Windows i Mac OS, chociaż raczej będziesz pracował na systemie, który najbardziej Ci odpowiada. Chyba, że projekt wymaga jakiegoś konkretnego (na przykład, jeśli masz testować aplikację desktopową napisaną w .NET to będziesz zmuszony używać Windows). Znajomość Linuksa na poziomie podstawowym (poruszanie się po drzewie katalogów, przeglądanie i modyfikowanie plików tekstowych, operacje na plikach takie jak: tworzenie, kopiowanie, usuwanie, przenoszenie, rozpakowywanie, pobieranie przez wget) to dodatkowy plus — większość serwerów stoi na Linuksie, więc posiadając taką wiedzę dajesz rekruterowi sygnał, że poradzisz sobie ze stawianiem środowisk testowych.

Testowanie nie może istnieć bez różnych narzędzi, ale nie ma ogólnej, generycznej recepty na narzędzia, które powinieneś znać. Każdy projekt ma swój własny zestaw wymaganych narzędzi, a Ty poznasz je podczas wdrażania się — nie przejmuj się tym zbytnio. Nawet jeśli rekruter zapyta Cię, czy znasz jakieś konkretne narzędzie, a twoja odpowiedź będzie negatywna, nie jest to powód do wstydu. Nikt nie zna wszystkich narzędzi jakie istnieją, ale jako zaawansowany technicznie człowiek będziesz w stanie szybko się go nauczyć i taką odpowiedź można zaliczyć jako poprawną.

6. Napisz konkretny i szczery list motywacyjny

Na początku mojej drogi pracowałem jako programista, pisząc kod .NET jednak praca na tym stanowisku nie rozpalała ognia w moim sercu, pomimo że lubię pisać kod. Czułem, że klepiąc kod, codziennie w tej samej technologii przez 8 godzin wypale się jeszcze długo przed emeryturą. W pewnym momencie pracowałem jako freelancer i tworzyłem oprogramowanie dla firmy X, a po skończeniu testowałem to razem z pracownikiem z tej firmy odpowiedzialnym za kontrolę jakości. Naprawdę spodobał mi się proces testowania (musiałem rozwiązać problemy, które znaleziono w międzyczasie) i zdecydowałem, że chcę to robić zamiast programowania.

Napisany program był używany w branży elektrycznej — to mi pokazało, że jako spec od zapewniania jakości mogę poznać wiele interesujących dziedzin i szerokie spektrum technologii czy urządzeń. Był to przełomowy moment mojego życia, napisałem bardzo szczery list motywacyjny i złożyłem podanie w lokalnej firmie produkującej gry wideo — i zostałem zatrudniony. Jestem szczęśliwym QA od ponad 5 lat.

Czuję, że to list motywacyjny sprawił, że moje zgłoszenie przemówiło do pracodawcy i miało jakiś wpływ na ich postrzeganie mnie. Jest to dobry przykład, że solidny list uczciwie opisujący motywację może zadziałać jak magiczny trik. Rozważ to, w większości przypadków twój list zawierający słowa rzeczywiście opisujący twoją motywację będzie konkurował z tymi wygenerowanymi w jakimś narzędziu online. Kto ma więcej szans na bycie zaproszonym na rozmowę kwalifikacyjną w takim przypadku? Nawet jeśli twoje CV nie jest jeszcze zbyt mocne, osoba rekrutująca może przeczytać Twój list, co z kolei może doprowadzić do tego, że dostaniesz szansę na rozmowie kwalifikacyjnej. To twoja szansa.

Epilog

Moim zdaniem uzyskanie pracy jako tester oprogramowania bez wcześniejszego doświadczenia lub ukończonego kierunku IT jest możliwe, ale wymaga pewnego przygotowania. Musisz udowodnić potencjalnemu pracodawcy, że jesteś wysoce zmotywowanym kandydatem, który już zainwestował dużo czasu i energii w naukę teorii, a jeszcze lepiej, jeśli masz doświadczenie zdobyte na własną rękę. Posiadanie takiego CV i bardzo mocnego listu motywacyjnego powinno dać Ci wejście na rozmowę kwalifikacyjną, a następnie, po tym jak przejdziesz ją śpiewająco, Twoją pierwszą pracę jako tester oprogramowania.


Artykuł został pierwotnie opublikowany j.angielski na medium.com. Robak z grafiki głównej artykułu został znaleziony na pexels.com.

Zapraszamy do dyskusji
Nie ma więcej wpisów

Send this to a friend