Rynek pracy junior testerów część 2: Nauka testowania

Jak juniorzy przygotowują się do zawodu testera?

To jak przygotować się do zawodu testera jest chyba najczęściej zadawanym pytaniem na grupach FB dla testerów. O same materiały do nauki nie jest trudno – w internecie znajdziemy pokaźne ilości materiałów pozwalających na naukę zarówno samego testowania jak i masy narzędzi wykorzystywanych w tej pracy. Ze względu na różnorodność technologii ilość tych materiałów może jednak być przytłaczająca i ciężko jest zdecydować na czym skupić uwagę i czemu poświęcić czas. W nauce zawodu możemy wesprzeć się również pomocą innych, czy to w postaci odpłatnych kursów, czy po prostu przyjacielskiej rady znajomych pracującyhc w branży IT.

Trzy czwarte ankietowanych uczyło się ze wsparciem kogoś innego. W większości byli to znajomi lub rodzina, ale część z nich zdecydowało się na wykupienie kursu lub pomocy mentora. Część osób uczyła się również z pomocą nieznajomych, przypuszczalnie mowa tu o grupach dyskusyjnych dotyczących testowania oprogramowania. Przeważnie możemy znaleźć tam wartościowe wskazówki od bardziej doświadczonych testerów, aczkolwiek  znajdziemy tam też osoby których wiedza nie jest tak rozległa i poprawna jak im się wydaje.

Najczęściej wykorzystywaną (przez ponad 2/3 ankietowanych) formą nauki jest samodzielna nauka z darmowych materiałów udostępnionych w internecie. Wiele z nich, zwłaszcza te przygotowane przez organizacje międzynarodowe, duże firmy informatyczne czy znane w środowisku osoby posiadają bardzo dużą wartość merytoryczną, trzeba jednak uważać na mniej renomowane źródła gdyż bardzo często zawierają informacje nie do końca prawdziwe czy też przesadnie uproszczone.

Dużo mniej popularnymi formami nauki jest nauka odpłatna, czy to w postaci bootcampów, czy też płatnych materiałów takich jak książki czy kursy wideo.

Najmniej popularną formami są studia, zarówno te informatyczne jak i związane z testowaniem. Taka forma nauki zdecydowanie należy do najbardziej czasochłonnych, a czas ten poświęcony jest nie tylko na naukę tematyki testowania czy wytwarzania oprogramowania ale i na wiele innych tematów (zwłaszcza jeśli mówimy o studiach stricte informatycznych) które niekoniecznie przydadzą nam się w pracy w tym zawodzie. Nic dziwnego więc, że wiele osób decyduje się na mniej czasochłonne, choć może bardziej intensywne formy nauki. Należałoby jednak wspomnieć, że studiom nie możemy odmówić dwóch rzeczy – wyniesiona z nich wiedza jest bardzo szeroka, a dzięki wydłużonej formie i naciskowi na weryfikację wiedzy i jej praktyczne zastosowanie w formie projektów ta wiedza jest utrwalana znacznie lepiej i da się to odczuć podczas rozmów rekrutacyjnych.

Aż 26% ankietowanych poświęciło na naukę testowania poniżej 100 godzin. O ile w przypadku osób które mają za sobą edukację kierunkową, czy doświadczenie w innych stanowiskach w IT, czy też od dawna działały amatorsko w branży IT, to może wystarczyć, to w przypadku osób które się przekwalifikowują może nie być to wystarczający czas by utrwalić zdobytą wiedzę i przećwiczyć ją w jakichś praktycznych zastosowaniach. Czas potrzebny na przyswojenie dowolnej umiejętności na podstawowym poziomie w zależności od źródła danych to od 20 do 60 godzin, gdzie w przy tych bardziej optymistycznych estymacjach uwzględniane są również odpowiednie techniki uczenia się. Biorąc pod uwagę, że osoby uczące się testowania zwykle muszą nauczyć się kilku umiejętności to rozsądnym wydaje się poświęcenie na to co najmniej 100-150 godzin, zakładając, że mamy do opanowania 2-3 umiejętności takie jak np.: teoria testowania, techniki tworzenia przypadków testowych, obsługa jakiejś bazy danych czy nauka języka znaczników HTML.

Jak widać praktycznie co druga osoba przygotowująca się do zawodu testera ma za sobą kurs testowania. Połowa z tych osób odbyła kurs trwający poniżej 100 godzin, a połowa powyżej 100 godzin. Tak jak wspomniałem wcześniej, te 100 godzin, to taka ilość która pozwala opanować 2-3 umiejętności. Niestety nie wszystkie kursy podchodzą do nauki w ten sposób i często zdarza się, że zamiast skupiać się na najbardziej uniwersalnych umiejętnościach w ramach tych 100 godzin kursant nauczany jest kilkunastu różnych tematów z często bardzo wąskich dziedzin testowania co później kończy się tym, że na rozmowie kwalifikacyjnej ma problemy z odpowiedzeniem na podstawowe pytania. Decydując się na wykupienie kursu zdecydowanie warto wybrać taki który duży nacisk położy na naukę solidnych, uniwersalnych podstaw, a nie na opanowanie kilkunastu najpopularniejszych narzędzi, które i tak w większości nie będą nam przydatne w pracy.

Powyższe wyniki nie są zaskoczeniem. Faktycznie gdybym miał uszeregować te tematy od najbardziej przydatnych do najmniej przydatnych dla początkującego testera to wyglądałoby to bardzo podobnie. Z mojego doświadczenia praktycznie wszystkie tematy zaznaczone przez ponad 60 osób to taki „must-have” dobrego kandydata. Tematy takie jak „Analiza ryzyka” czy „Zarządzanie jakością” wymagają raczej posiadania jakiegoś doświadczenia, a „Programowanie obiektowe” czy „Architektura aplikacji i systemów” są mało uniwersalne i przydadzą się w węższych dziedzinach takich jak automatyzacja testów czy testowanie systemów rozproszonych.

Aplikacje przeglądarkowe to zdecydowanie najpopularniejsze aplikacje wśród uczących się testowania. Są to obecnie chyba najbardziej popularne aplikacje na rynku i ofert pracy związanych z ich testowaniem jest najwięcej. Ich testowanie jest też relatywnie łatwe, zwykle nie wymaga żadnego dodatkowego oprogramowania gdyż przeglądarka zapewnia nam sporo narzędzi do analizy aplikacji w ramach tak zwanych „dev tools”. Aplikacje mobilne i desktopowe są nieco bardziej wymagające – tu często wymagana jest umiejętności zainstalowania testowej wersji aplikacji czy obsługi jakichś dodatkowych narzędzi do debugowania i analizy aplikacji. Ilość ofert pracy, zwłaszcza w przypadku aplikacji mobilnych jest jednak spora, a tego typu aplikacje powoli wypierają wiele aplikacji przeglądarkowych i jest to zdecydowanie przyszłościowy kierunek jeśli chodzi o testowanie oprogramowania. Zdecydowanie mniejszą popularnością cieszą się aplikacje serwerowe, konsolowe czy embedded i w zasadzie nie ma się czemu dziwić, te kategorie tworzą raczej niszę na rynku i wymagają nieco więcej umiejętności technicznych.

Jeśli chodzi o narzędzia których uczymy się w ramach przygotowania do zawodu, to królowa jest tylko jedna i jest nią JIRA. Zdecydowanie jest to najpopularniejsze narzędzie (za wyłączeniem oczywiście aplikacji takich jak przeglądarki internetowe czy edytory tekstu, ale te celowo pominąłem w tym pytaniu). Ma to jak najbardziej sens, bo JIRA jest wręcz branżowym standardem, firmy o których wiem, że w ogóle nie korzystają z JIRY mógłbym policzyć na palcach. Bardzo dużym zaskoczeniem jest dla mnie drugie miejsce. Nie spodziewałem się zobaczyć Postmana w pierwszej dziesiątce, zwłaszcza biorąc pod uwagę poprzednie pytanie gdzie tylko 10 osób zadeklarowało, że uczyło się testować aplikacje serwerowe (no chyba, że pytanie było źle zrozumiane). Biorąc pod uwagę to, że niewiele osób w ramach nauki testowania uczyło się programowania obiektowego zaskakująco wysoko znajdują się również biblioteki do automatyzacji takie jak Selenium, zwłaszcza w porównaniu z narzędziami do zarządzania testami (TestLink, Zephyr, QTest) i narzędziami pozwalającymi na „wyklikanie” testów (JMeter, SoapUI). Ciekaw jestem jak ten ranking wypadnie w porównaniu do rankingu narzędzi najbardziej przydatnych w pracy.

Niemal 90% ankietowanych uczyło się jakiegoś języka (niekoniecznie programowania) i najczęściej był to język zapytań SQL. Jeśli chodzi o języki programowania to tu mamy kolejne zaskoczenie, gdyż chyba nie można do końca ufać pytania wielokrotnego wyboru – pomimo, że jedynie 24 osoby zadeklarowały, że uczyły się programowania obiektowego, to aż 49 zaznaczyło, że uczyło się Javy która jest językiem (w większości) obiektowym. Python i JavaScript który obecnie ma chyba najbardziej wszechstronne zastosowanie w testowaniu aplikacji webowych zarówno frontendowych i backendowych znalazły się dopiero na czwartym i piątym miejscu, za językiem znaczników HTML którego znajomość (wraz z CSS) faktycznie jest bardzo przydatna w testowaniu frontendu. Dużo mniejszą popularnością cieszą się języki z rodziny C/C++ mające raczej zastosowanie w testach systemów wbudowanych (embedded) które jak wiemy z poprzednich pytań nie są zbyt popularne wśród osób uczących się testowania. Pozostałe języki programowania albo w ogóle nie pojawiły na liście albo miało z nimi do czynienia niewiele osób.

Kwestia kosztów nauki to pytanie które mnie osobiście bardzo interesowało i które dla mnie wiąże się z tematem dość kontrowersyjnym – niemal połowa osób wydała na naukę testowania mniej niż 1000 zł i większość tej grupy zmieściła się w przedziale 0-250 zł, co odpowiada mniej więcej cenie kilku książek albo kursów wideo na platformach typu Udemy. Pozostałą część ankietowanych możemy niemal po połowie rozdzielić na tych którzy wydali od 1000 do 5000 zł i tych którzy wydali od 5000 do nawet ponad 10000 zł. Są to najpewniej osoby które wykupiły wielogodzinne kursy – bootcampy. I to temat tego typu kursów jest dla mnie kontrowersyjny, gdyż zdarzało mi się rekrutować ludzi po kursach kosztujących kilkanaście tysięcy złotych, którzy nie potrafili odpowiedzieć na więcej niż kilka podstawowych pytań lub odpowiadali „było to na kursie, ale nie pamiętam”. Nie zarzucam tu oczywiście prowadzącym te kursy jakiejś niekompetencji, w końcu nawet sami kandydaci zwykle kojarzą, że dany temat się na kursie pojawił, tyle że go nie zapamiętali. To na czym polega według mnie problem tych kursów to to, że są zapchane materiałem, próbują jednocześnie nauczyć kursantów niezbędnych podstaw jak teoria testowania, techniki tworzenia przypadków testowych, obsługa podstawowych narzędzi itd. ale jednocześnie dopychają materiał nauką masy narzędzi które albo są zbędne na tym etapie kariery, albo służą do specyficznego typu testów i ich znajomość nie jest konieczna na 90% stanowisk. Stąd zamiast poświęcić 100h kursu i kolejne 100h pracy domowej na utrwalenie solidnych podstaw i bardzo uniwersalnych umiejętności kursanci katowani są nauką SoapUI, JMetera, Postmana, Selenium, Cypressa, Cucumbera, Appium, MongoDB, HTML, CSS, Javy, Pythona, Linuksa i bogowie wiedzą czego jeszcze. Efekt tego jest taki, że taka osoba bardzo dobrze zna nazwy narzędzi, wie do czego się ich używa, ale już nie potrafi ich użyć. Jest to szczególnie widoczne u osób które się przebranżawiają i dla których nauka zawodu testera wiąże się ze zmianą środowiska i koniecznością zdobycia wielu pomniejszych umiejętności, które ludzie w jakiś sposób związani z IT stopniowo i naturalnie zdobywali przez lata.

Temat crowd testingu jest mi kompletnie obcy, stąd interesowało mnie na ile może być to traktowane jako sensowny sposób zarobku dla kogoś kto np. chciałby przejść na 3/4 etatu w swojej starej pracy, a zyskany w ten sposób czas poświęcić na naukę testowania. Jak widać niemal połowa ankietowanych korzystała z tego typu platform, jednak około 70% z nich poświęciło na to mniej niż 25 godzin, można więc zakładać, że ta część ankietowanych nie zaznajomiła się zbytnio z tego typu platformami, co mogłoby tłumaczyć to, że również 70-kilka procent osób nie zarobiło na tego typu testach więcej niż 100 zł. Z ciekawości porównałem w wynikach czy ilość zarobionych pieniędzy koreluje z czasem poświęconym na testy (możliwe, że z czasem pojawi się osobny wpis z podobnymi porównaniami) i faktycznie w grupie osób które poświęciły na crowd testing do 10h nikt nie zaznaczył zarobku ponad 100 zł. W grupie która poświęciła 10-25 godzin 2 osoby zarobiły od 100-250 zł, a jedna pomiędzy 250 a 500 zł. Wśród osób które poświęciły ponad 25 godzin, 3 osoby zarobiły ponad 100-250 zł, a dwie 250-500 zł. Poniższa tabela przedstawia jak rozkładały się zarobki w zależności od czasu poświęconego na testowanie (nie wszystkie osoby odpowiedziały na oba pytania stąd ilość odpowiedzi w tabeli różni się od wykresów). Ogólnie nie wygląda na to, by był to sensowny sposób na dorobienie sobie w trakcie nauki. Z pewnością pozwala to na zdobycie jakiegoś doświadczenia, ale zarobki kształtują się na poziomie 1-2 zł za godzinę co raczej nie jest satysfakcjonującym wynagrodzeniem. Zdecydowanie jest to opcja dla raczej bardziej doświadczonych osób które potrafią szybciej znaleźć błędy w testowanym oprogramowaniu i załapać się na nagrodę za ich zgłoszenie.

0-100 zł
100-250 zł
250-500 zł
0-10 h
14 0 0
10-25 h
9 2 1
25-50 h
2 0 1
50-100 h
0 1 1
100-250 h
1 1 0
250 h+ 0 1 0

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *