· zadroga · 7 min
Okiem mentora #3 [wywiad]
Wywiad z Piotrem Konopką, mentorem na bootcampie Tester Automatyczny, Test Leadem z 10 letnim doświadczeniem. Karierę zaczął jako junior developer. Przeszedł wszystkie etapy testowania: manualne, automatyczne i wydajnościowe. Jest entuzjastą zapeniania jakości oprogramowania, cały czas rozwija swoją wiedzę oraz umiejętności w tej dziedzinie.
Na czym polega praca testera?
Rola Testera oprogramowania polega na zapewnieniu jak najlepszej jakości danego systemu/ produktu. Tester w swojej pracy musi bardzo dobrze rozumieć wymagania biznesowe oraz przynajmniej w stopniu podstawowym wymagania techniczne. Podczas swojej pracy tester łączy ze sobą te dwa aspekty w celu weryfikacji prawidłowego działania systemu. Bada dany system, czy jest on podatny na nieprzewidziane przez biznes działania. Znalezione błędy inwestyguje w celu zlokalizowania przyczyny niepoprawnego działania. Błędy oraz niepoprawne zachowania systemu zgłasza deweloperom w celu poprawy.
Jakie są role/stanowiska? Czym się różnią?
Zacznijmy od tester funkcjonalnego-manualnego. Jest to osoba, która pisze przypadki oraz scenariusze testowe na podstawie dokumentacji biznesowej. Musi wiedzieć jak te dane powinny być wykorzystane, np. dokonanie przelewu w systemie bankowości elektronicznej, czyli co powinno być zrobione, żeby móc dokonać przelewu. I tutaj jest rola dla analityka testów. Musi on skontaktować się z biznesem i ustalić, że będą różne typy przelewów na różne kwoty, większe od zera, w różnych walutach. I takie różne przypadki ten analityk spisuje i razem z testerem pisze scenariusze. Może to też robić tester funkcjonalny. Następnym krokiem jest przekazanie tego do biznesu, którego rolą jest akceptacja scenariusza. Następnie tester funkcjonalny wprowadza te wszystkie scenariusze do systemu kontroli jakości, zazwyczaj jest to DZIRA, ASM. Następnie krok po kroku wykonywane są scenariusze testowe. Czyli w danym scenariuszu krok po kroku jest opisane co dokładnie trzeba zrobić. W przypadku bankowości, może być to np. wejście w zakładkę “przelewy”, gdzie oczekiwanym rezultatem jest to, że przelewy powinny być dostępne, w formularzu powinny znajdować się odpowiednie pola. Tester weryfikuje czy to wszystko działa zgodnie z założeniami biznesu. Wówczas aktualizuje status czy funkcja działa poprawnie, czy też nie. Jeżeli nie działa poprawnie, wówczas tester funkcjonalny musi zgłosić w systemie błąd, z dokładnym opisem, jak błąd został wykryty, wraz z zrzutem ekranu ukazującym błąd. Błąd zgłaszany jest do dewelopera, którego celem jest naprawa błędu. Jeżeli jest to zrobione, zgłoszenie zostaje ponownie przesłane do testera, który po raz kolejny sprawdza czy dana funkcjonalność działa. Jeżeli działa poprawnie wówczas można zamknąć zgłoszenie i przejść do kolejnych. Warto wspomnieć, że tester funkcjonalny-manualny pracuje na samym frontendzie. Chodzi o produkt końcowy, który widzi użytkownik. Ten tester z reguły nie ma do czynienia z tym, co się dzieje “pod spodem”, czyli w backendzie. Jest też tester funckjonalny. Jest osoba, która ma doświadczenie programistyczne, wie jak działa kod, zna jakieś oprogramowanie, bazę danych. Taki tester nie tylko wykonuje samo klikanie po stronie aplikacji, ale też weryfikuje logi systemu, bazy danych czy np. poprawnie się wyświetlają, zapisują. Z kolei tester automatyczny zajmuje się przede wszystkim pisaniem skryptów w różnych językach oprogramowania, w różnych frameworkach, z regułu jest to Selenium, web driver albo UFT.
Jak wygląda background ludzi, którzy pracują na tym stanowisku? Czy wszyscy są po studiach itp? Czy każdy może zostać testerem, jakie predyspozycje są potrzebne?
Dobry tester automatyzujący testy musi umieć programować. Bez tego niestety nie można zostać testerem automatycznym. Niezbędne są umiejętności analizy kodu skryptów w których są przygotowywane testy automatyczne oraz kodu systemu, który automatyzujemy. Testerzy najczęściej specjalizują się w Jave lub C#, SQL, XML, XHTML.
Na jakim poziomie powinna być to wiedza programistyczna?
Jest to wiedza zaawansowana. Dobry tester automatyczny tak naprawdę jest odpowiednikiem młodszego programisty z około 2-letnim doświadczeniem.
Wróćmy jeszcze do języków programowania, konkretnie języka SQL. Do czego potrzebny jest SQL? Jak go się używa w pracy testera? Czy trudno się go nauczyć?
SQL w pracy testera automatyzującego testy służy głównie do przygotowywania danych testowych oraz porównywania rezultatów testów. Nauczenie się podstaw języka SQL zajmie kilka dni. Tester w pracy będzie głównie używał paru komend, które wybierają i grupują dane. Osoba początkująca może się tego nauczyć bez problemów.
Jakie predyspozycje powinna posiadać osoba, która chce zostać testerem?
W takiej osobie musi być bardzo mocno rozwinięta strona analityczna, to znaczy, że taka osoba, powinna szybko i poprawnie kojarzyć fakty. Pożądana jest osoba o analityczno-matematycznym umyśle. Musi myśleć rozumieć stronę programistyczną jak i biznesową.
Czy jakieś cechy charakteru powinna posiadać taka osoba?
Na pierwszym miejscu wymieniłbym na pewno szczegółowość oraz dokładność. Przywiązywanie dużej uwagi do detali to zaleta testera. Dodatkowo tester powinien być bardzo dokładny, spostrzegawczy, kojarzący fakty, musi być zaangażowany i musi mieć szeroką wiedzę o rynku nowych technologii. Praca testera to ciągły proces uczenia się oraz poszerzania wiedzy.
Jak wiadomo programiści oraz testerzy pracują w systemie linux? Jak dużo czasu potrzeba, żeby się go nauczyć?
Linux jest mocno “koderskim” systemem. Trzeba nauczyć się komend. Myślę, że tutaj potrzeba kilku godzin dziennie na naukę, pewnie zajmie to ok. dwóch tygodni, jeżeli mówimy o nauce tylko podstaw.
Czy znasz kogoś kto obecnie jest testerem, ale jego poprzedni zawód był zupełnie inny?
Znam osobę, która skończyła socjologię i zajmowała się tak zwaną papierkową robotą, można powiedzieć, że była copywriterem. Wprowadzała dane do systemu CRM. Przez to, że pracowała w tym systemie jakiś czas, bardzo dobrze go poznała. Ktoś kto dobrze zna dany system jest już potencjalnie dobrym testerem, ponieważ posiada wiedzę biznesową. Taka osoba ma duże szanse, żeby dostać pracę na stanowisku testerskim ale nie jest to reguła.
Słyszałam, że tester musi dobrze rozumieć biznes - czy mozesz mi powiedziec co to dokładnie oznacza?
Musi rozumieć biznes, czyli musi mieć pogląd na cały system i wiedzieć czego w ramach danego systemu oczekuje firma. Do czego będzie on używany i jak on powinien działać. Żeby przygotować macierz pokrycia przypadków testowych tester musi wiedzieć jakie są procesy i funkcjonalności danych systemów.
Co jest ważniejsze w pracy testera automatyzującego testy - rozumienie biznesu czy umiejętność programowania?
W tym przypadku myślę, że ważniejsza jest umiejętność programowania. “Automatyk” dostaje gotowe scenariusze testowe od biznesu lub od testerów funkcjonalnych. Scenariusze testowe muszą zostać oskryptowane w większości przypadków na podstawie gotowej dokumentacji.
Jakie znaczenie w pracy testera ma certyfikat ISTQB?
ISTQB wprowadza testera do tego świata, w którym ma funkcjonować. Pozwala się komunikować w języku testerów. Solidne przygotowanie do egzaminu porządkuje wiedzę z zakresu testowania oprogramowania.
Czy mógłbyś mi powiedzieć co by było, gdyby testera nie było?
W zespole projektowym muszą być osoby, które weryfikują czy dany system działa zgodnie z oczekiwaniem biznesu. Opiszę to na podstawie przykładu: klient przekazuje swoją wizję analitykowi, ten z kolei deweloperom. Każda ze stron rozumie tę samą wizję zawsze inaczej. Ludzie nie rozumieją się. Rolą testera jest znalezienie punktów styku między biznesem, analitykami, architektem i deweloperami. Bez testera część funkcjonalności zostałaby źle zaimplementowana, albo byłaby niepełna. Podsumowując- brak testera w projekcie to ryzyko niepoprawnego działania systemu, wyższy koszt naprawy błędów oraz niezadowolenie klienta / odbiorcy systemu.
Czy osoba posiadająca predyspozycje programistyczne da radę nauczyć się Selenium?
Jeżeli ktoś ma takie predyspozycje, potrafi myśleć obiektowo oraz skryptowo, to na pewno sobie poradzi.
Jakie są perspektywy awansu w pracy testera?
Ilu ludzi, tyle kombinacji. Z reguły tester funkcjonalny idzie w stronę analityka testów, czyli ma większą styczność z biznesem. Z testera funkcjonalnego lub analityka testów kolejnym kierunkiem awansu jest stanowisko test manager. Wszystko zależy w czym ta dana osoba lepiej się odnajduje. Osoby z zacięciem programistycznym awansują z testerów funkcjonalnych na testów automatyzujących testy lub testerów wydajnościowych. Testerzy od bezpieczeństwa systemów to osoby które były programistami/sieciowcami/architektami.
Jak wygląda typowa rozmowa rekrutacyjna na stanowisko testera?
Z reguły pierwsze pytania są standardowe, podstawowe pytania z ISTQB. Ktoś kto zna ISTQB bez problemu odpowie na te pytania. Kolejne, standardowe pytania to: jak przetestować długopis lub parasol. Kandydat wówczas musi wymienić najważniejsze przypadki testowe. Trzecim punktem takiego procesu rekrutacyjnego jest weryfikacja wiedzy z programowania oraz napisanie skryptów. Z reguły pracodawca udostępnienia stronę testową. Kandydat musi napisać przypadki testowe, a następnie na ich podstawie napisać skrypty. Oceniana jest nie tylko poprawność działania ale również jakość wytworzonego kodu.
Sądzisz, że na rynku pracy brakuje testerów?
Obecnie rynek nie jest przesycony. Jest dużo pracy i dużo ofert pracy. Warto wspomnieć, że dla testerów otwierają się rynki skandynawskie. Te kraje szukają w Polsce głównie doświadczonych kandydatów. Potencjał w tym zawodzie jest ogromny.