Początki i Edukacja
Jak wyglądały Twoje początki w zawodzie i dlaczego akurat temat testów oprogramowania były dla Ciebie interesujące?
PushPushGo jest pierwszą firmą, w której pracuję jako tester oprogramowania, aczkolwiek swoją przygodę z testowaniem zacząłem już wcześniej, nie do końca świadomie i nie w takim formacie w jakim to robię teraz.
Zaczęło się od testowania gier, ale nie w formie komercyjnej. Jako miłośnik gier komputerowych, w kółko nie mogłem doczekać się premiery interesujących mnie tytułów. Furtkę do wcześniejszego zagrania otwierała możliwość otwartych Beta-testów. Oprócz opcji wcześniejszego poznania mechaniki i świata gry, każdy beta-tester mógł kontaktować się bezpośrednio z developerami gry i zgłaszać bugi. Było to na swój sposób ekscytujące, bo własną osobą można było wspomóc, zapewnić jakość produktu i nierzadko firmy oferowały różne bonusy za znajdowanie błędów.
Testowaniem oprogramowania zacząłem interesować się na studiach, kiedy stwierdziłem że obecna specjalizacja (pedagogika) nie jest jednak tym w czym się odnajduję. Zacząłem szukać informacji w Internecie i powoli zagłębiałem się w teoretyczne tajniki testowania.
Skąd najlepiej czerpać wiedzę na tematy testów oprogramowania; zarówno dla tych osób, które zaczynaja swoja przygode w tej branży, jak i tych już nieco bardziej zaawansowanych?
Dla początkujących polecam w pierwszej kolejności dołączyć do grup społeczności (Facebook/Linkedin itp.) związanych z testowaniem. Można tam znaleźć wiele postów z przydatnymi materiałami do nauki oraz porad jak zacząć, na co zwracać uwagę itd. Ze swojej strony szczególnie polecam Facebookową grupę Testowanie Oprogramowania, w której sam się udzielam. Jest w niej pełno doświadczonych testerów, którzy chętnie dzielą się wiedzą.
Dla tych obeznanych w temacie ciężko wskazać coś uniwersalnego, gdyż kompetencje testera często różnią się w zależności od obranej ścieżki rozwoju i stacku technologicznego firmy. W każdym razie oprócz czytania książek, dokumentacji czy oglądania webinarów warto śledzić tematycznych blogerów/youtuberów, od których można nauczyć się ciekawych tricków.
W jaki sposób szukałeś swojej pierwszej pracy i w jaki sposób trafiłeś do PushPushGo?
Szukałem ofert po najpopularniejszych portalach, grupach Facebookowych, Linkedinie.
Do PushPushGo trafiłem przez ogłoszenie zamieszczone na grupie Testowanie Oprogramowania, o której wspomniałem wcześniej. Napisałem wiadomość bezpośrednio do osoby odpowiedzialnej za rekrutację na to stanowisko w PushPushGo, wysłałem swoje CV, a później jakoś poszło :)
Praca i Rozwój
Kiedy Twoim zdaniem dla firmy technologicznej przychodzi moment kiedy musi sobie ona założyć, że potrzebny jej jest tester oprogramowania?
Bardzo ciekawe pytanie. Jeżeli chodzi o samo założenie, to dobrze aby jak najwcześniej zdać sobie sprawę, że taka osoba będzie mogła mieć duży wpływ na oszczędność czasu przy tworzeniu produktu.
Dlaczego? Aplikacja musi być przetestowana i jeśli nie zrobi tego tester, będzie to musiał zrobić programista. Tu pojawiają się dwa problemy
- po pierwsze - programista traci czas, który mógłby przeznaczyć na dalsze rozwijanie aplikacji,
- po drugie - testowanie własnego kodu nie jest dobrą praktyką, gdyż podświadomie zakładamy poprawność jego działania.
Dodatkowo tester będąc niejako "pierwszym użytkownikiem" aplikacji, może dać świeży pogląd na jej funkcjonowanie. Jeżeli firma odkłada pozyskanie testera w czasie, powinna po prostu komunikować się z developerami, aby dowiedzieć się od nich, kiedy taka osoba najbardziej przyda się w ich zespole.
Jakie Twoim zdaniem kluczowe KPI powinny być mierzone w pracy testera oprogramowania?
Nie ma tutaj złotego środka, który to poprawnie nakreśli. Kluczowe KPI dla zapewnienia jakości produktu, będą różne w zależności od branży produktu, zespołu programistów/testerów czy nawet wielkości firmy. Jeżeli chodzi o mój przykład (jako tester automatyzujący), to dla mnie kluczowe są:
- % pokrycia aplikacji testami automatycznymi
- ilość wykrytych błędów regresji (testy automatyczne)
- ilość manualnie wykrytych błędów przed wdrożeniem
- Pass rate testów automatycznych - % testów zakończonych sukcesem
- ilość błędów znalezionych po wdrożeniu na produkcję
Na tych KPI opieram się od roku, wcześniej były one nakierowane inaczej, gdyż wtedy jeszcze nie automatyzowałem testów.
Jak mierzysz efekty swojej pracy, aby uzyskać informacje, że jest ona efektywna zarówno dla Ciebie jaki i dla firmy?
Na to pytanie poniekąd odpowiedziałem wymieniając kluczowe dla mnie KPI, ale żeby to bardziej zobrazować odniosę się do wprowadzenia testów automatycznych, gdyż obecnie to im poświęcam większość czasu. Aktualnie dążę do tego, aby jak najlepiej zoptymalizować "automaty" w celu zaoszczędzenia czasu na manualnym testowaniu regresyjnym.
Przykładowo: ręczne przetestowanie naszej aplikacji na podstawie tworzonych scenariuszy testowych zajmuje około 40h ciągłego klikania (tylko dla jednej przeglądarki). Testom automatycznym zajmuje to 2h 15m i aktualnie pracuje nad zminimalizowaniem tego do 1h 30m.
Dzięki takiej oszczędności czasu mam możliwość lepiej i dokładniej skupić się na testowaniu nowych funkcjonalności i szybszego dostarczania feedbacku do programistów.
Panuje powszechne przeświadczenie, że skille techniczne są ważniejsze od umiejętności miękkich w działach IT. Które z nich uważasz, za ważniejsze w swojej pracy? Określiłbyś siebie jako osobę stricte techniczną czy może wręcz przeciwnie?
W każdej historii jest ziarenko prawdy. Tutaj jest podobnie. Sam po sobie widzę, że czasami gdy piszę testy i trafiam na jakiś problem to potrafię totalnie zapomnieć o otaczającym mnie świecie, próbując znaleźć rozwiązanie. W zespołach IT takie zjawisko jest powszechne, gdyż utrata skupienia bywa irytująca. Niemniej jednak nie powiedziałbym, że techniczne osoby z nikim nie rozmawiają. Umiejętności miękkie są tutaj też bardzo ważne, szczególnie jeśli chodzi o testerów, których praca w ogromnym stopniu opiera się na przejrzystej komunikacji z programistami, analitykami, project managerami czy działami CS. Mit, że osoby z IT to "piwniczaki" jest zdecydowanie nieprawdziwy :)
Co do drugiej części pytania to może nie uważam, że umiejętności miękkie są ważniejsze od umiejętności twardych, ale myślę że stanowią ich dopełnienie i są niezbędne do tego, aby praca przebiegała sprawnie, dokładnie i przede wszystkim - przyjemnie.
Czy możesz opisać w liczbach skalę działania w jakich na co dzień się obracasz?
Jeżeli chodzi o liczby w przypadku testów to wygląda to tak:
Aktualnie sporządzone są 104 scenariusze testowe, na które składają się 754 przypadki testowe. Nie jest to koniec, bo nie wszystkie przypadki zostały jeszcze spisane. Zakładam, że łącznie będzie ich ponad 1000. Jak wspomniałem wcześniej, ich ręczne przetestowanie zajmuje około 40h testowania (bez żadnych przerw) przez jedną osobę.
W przypadku testów automatycznych:
Na ten moment 140 głównych testów automatycznych, na które składają się pomniejsze testy. Każdy główny test składa się ze średnio 5 takich testów, więc szacunkowo, testy regresji odbywają się za pomocą ok. 700 pojedynczych testów automatycznych, których wykonanie zajmuje około 2h 15m.
Co na co dzień czytasz, aby rozwijać swoje umiejętności odnośnie pracy?
Jeśli na co dzień weźmiemy dosłownie, to na pewno dokumentację narzędzi z których korzystam oraz stackoverflow.com.
A tak na poważnie, to raz na jakiś czas dorwę ciekawą książkę związaną z testami/Python'em (polecam np. "Automatyzacja nudnych zadań z Pythonem" Alberta Sweigarta).
Oprócz tego na bieżąco czytam informacje dostarczane na grupy społeczności (np. Testowanie Oprogramowania, Facebook), jestem zapisany do kilku newsletterów (np. jaktestować.pl, ostatnio wyszedł ciekawy materiał o Integracji w Chmurze), śledzę blogi/postysenior Testerów (bardzo przyjemnie czyta się wpisy p. Macieja Kusza, LinkedIn).
No i na koniec sporo ciekawych materiałów znajduje się na Youtube (dla pythonowców polecam np. sentdex, Tech with Tim). Te ostatnie nie są może związane bezpośrednio z testami, ale zawsze można podpatrzeć kilka ciekawych tricków.
Z jakich narzędzi korzystasz w swojej pracy?
- Do komunikacji: Slack, Discord.
- Zarządzanie pracą: Youtrack, GitLab, TestRail.
- Programowanie testów: PyCharm, Python+Selenium, Docker.
- Testowanie: Postman, Browserstack, DevTools.
Co oceniasz jako największy sukces w dotychczasowej pracy/ jakie było największe wyzwanie i jak udało Ci się z nim poradzić?
Wydaje mi się, że zarówno największym sukcesem jak i wyzwaniem było zdecydowanie się na podszkolenie się z programowania i stworzenie od podstaw frameworku testującego naszą aplikację.
Dlaczego było to duże wyzwanie? Jako początkujący programista nie posiadasz zbyt dużo doświadczenia, co odbija się tym, że jesteś podatny na popełnianie nawet prostych błędów, które w przyszłości, w miarę rozrostu kodu, mogą stać się bardzo problematyczne. Oczywistym jest, że mój kod nie jest idealny. Nawet jeśli wcześniej przygotowywałem się czytając wzorce projektowe, poradniki/książki odnośnie dobrych praktyk. Jest jeszcze wiele do poprawy, ale koniec końców, udało stworzyć się coś co jest nawet łatwe w utrzymaniu, testuje, znajduje bugi... i odwala lwią część roboty za mnie. I to jest właśnie ten sukces, stworzenie czegoś co działa, optymalizuje pracę i najważniejsze, pomaga w zapewnieniu jakości produktu.
Jakie widzisz trendy obecne oraz na przyszłość odnośnie tematu testów oprogramowania?
Przez ostatnie 2 lata nie zmieniło się zbyt wiele w technologii wykorzystywanej w testach, czy też samym podejściu do testowania. Cały czas widoczny jest też podział ról testerów na manualnych i automatyzujących. Powszechnie mówi się, że jest to naturalna droga rozwoju testera w obecnych czasach. Można to przyrównać do stworków z Pokemonów - zaczynasz jako tester manualny, ewoluujesz w testera automatyzującego, a twoją finalną formą jest programista :) Oczywiście nie każdy przypadek taki jest, ale często można zaobserwować ten pattern.
W przyszłości podejrzewam, że testowanie zacznie iść w kierunku konkretnych specjalizacji. Ludzie z większą chęcią będą wybierać ścieżkę kariery typu Pentester, tester wydajnościowy, inżynier testów baz danych.Trend wyspecjalizowanych w jednym kierunku testerów zaczyna powoli kiełkować. Można to zobaczyć nawet w ogłoszeniach o pracę. A co będzie dalej, czas pokaże.
Źródła wiedzy:
- grupa na Facebooku Testowanie Oprogramowania,
- ksiazka "Automatyzacja nudnych zadań z Pythonem", Alberta Sweigarta,
- newsletter jaktestować.pl,
- Maciej Kusza, profil na Linkedin,
- Kanał na Youtube; Sentdex,
- Kanał na Youtube: Tech with Tim.
Narzędzia:
- Slack,
- Discord,
- Youtrack,
- GitLab,
- TestRail,
- PyCharm,
- Python+Selenium,
- Docker,
- Postman,
- Browserstack,
- DevTools.