Kim jest i co robi tester oprogramownia?

Opublikowano: , aktualizacja: 2017-12-02

Obecnie na rynek IT istnieje spory niedobór specialistów jakim najczęściej są programiści. To oni są odpowiedzialni za napisanie różnych aplikacji. Tam gdzie są programiści i aplikacje, tam też są w nich błędy, a gdzie są błędy, tam też muszą być ludzie, którzy je wychwycą. Takimi osobami są testerzy oprogramowania.

Tytułem wstępu.

Gdy ktoś mnie pyta, czym się w życiu zajmuję, tudzież jaką mam pracę, spokojnie odpowiadam:

  • - Jestem testerem oprogramowania.
  • - Tzn?
  • - Testuję oprogramowanie, w skrócie sprawdzam, czy działa tak jak powinno.
  • - Eee… to ty się człowieku nudzisz w pracy.

Cóż, nie chcąc wyprowadzać człowieka z błędu stopniowo ucinam rozmowę w tym temacie. Brak wiedzy nt. zapewniania jakości (z ang. Quality Assurance) w procesie wytwarzania oprogramowania jest czymś zrozumiałym, ale przeciętny Polak błędnie utożsamia ten zawód z czymś prostym i lekkim, co nie wymaga specjalnego wysiłku. Większość ludzi jest przekonana, że testowanie to spokojne siedzenie przed monitorem komputera i patrzenie czy pojawia się jakiś komunikat lub też nie. Wszystko proste, na spokojnie, bez nerwów, nie ma ciężkiej pracy, więc w sumie mógłby to robić każdy. Niestety nie do końca.

Quality assurance engineer czy może software tester?

Zawód ten nazywany jest różnie: Quality Engineer, Software tester, Quality Assurance Engineer, Tester Automatyczny, Tester Manualny, Application tester, ale nie ma to w tej chwili większego znaczenia. Oczywiście te profesje mogę się różnić od siebie np. zakresem obowiązków i umiejętnościami stawianymi kandydatom na testera, ale wszystko kręci się wokół - testowania.

Kim jest Tester oprogramowania, jakie cechy i umiejętności powinien posiadać i co najczęściej należy do jego obowiązków?

Pisząc najprościej jak można. Tester jest osobą, która (w ogromnym skrócie) jest odpowiedzialna za przygotowanie i przeprowadzenie różnego rodzaju testów na dostarczonym przez programistów oprogramowaniu z reguły na podstawie dokumentacji technicznej/biznesowej. Może to być jasno i obszernie opisana specyfikacja systemu, szkic lub inny dokument określający wymagania dotyczące testowanego oprogramowania. Wydaje się proste. Tylko czy wystarczy przeczytać dokumentację, zapoznać się z oprogramowaniem, kolokwialnie pisząc trochę „poklikać” po systemie, znaleźć parę potencjalnych błędów i określić się mianem testera?

Kompetencje testera, to podstawa.

Aby móc zacząć przygodę w Quality Assurance tudzież testowaniu oprogramowania, przede wszystkim należy poznać teorię testowania. Czyli w bardzo wielkim skrócie, odpowiedzieć sobie na m.in. takie pytania?

  • Co to jest Quality Assurance i samo testowanie?
  • Po co testujemy?
  • Kiedy testujemy?
  • Jakie testy przeprowadzamy i w jaki sposób?
  • Jak pracować z testowanym oprogramowaniem i jak zgłaszać błędy?
  • Jakie są cykle wytwarzania oprogramowania?
  • Jak operować na dokumentacji technicznej oraz testowej?
  • Kiedy kończymy testowanie?
  • Co to jest jakość i co możemy zrobić by podnieść jakość wytwarzanego oprogramowania?

Oraz wiele innych pytań, których mógłbym przytaczać tutaj mnóstwo. Bez odpowiedzi na nie ciężko jest rozpocząć pracę w tym zawodzie.

Przejdźmy jednak do szczegółów. Jakie cechy i umiejętności powinien posiadać tester?

Umiejętność oceny ryzyka.

Jednym z etapów w procesie wytwórczym oprogramowania jest analiza i zbieranie wymagań od klienta. Definiowaniem tych wymagań zazwyczaj zajmuje się tzw. analityk biznesowy, lecz są działy IT tudzież firmy, które takich osób nie zatrudniają. Dlatego ważne jest, aby przed przystąpieniem do testów, upewnić się czy mamy bazę na podstawie, której możemy opracować testy. Bazę, która może się zmieniać w trakcie trwania developmentu, ale należy zadbać, aby wymagania były w miarę jasno zdefiniowane, nie duplikowały się oraz wzajemnie się nie wykluczały i co najważniejsze opisywały w miarę jednoznaczny sposób działanie systemu. Tester często będzie się spotykał z sytuacja, w której specyfikacja lub klient twierdzi jedno, natomiast gryzie się to z podstawowymi założeniami systemu lub działaniem innych aplikacji. Zaistniałą sytuację należy jak najszybciej wyjaśnić przed przystąpieniem do prac, bo będzie to implikować w dalszych etapach testowania.

Umiejętność analizy wymagań.

Choć to analityk powinien zadbać, o jakość specyfikacji, aby była ona klarowna i dostarczała pełnej wiedzy o systemie, to prawie zawsze zdarza się, że jakieś wymaganie nie jest dospecyfikowane lub źle sformułowane. Tester powinien, zatem umieć zidentyfikować te nieścisłości, aby analityk, architekt systemu lub on sam mógł wyprostować stan specyfikacji przed przystąpieniem do tworzenia tzw. planu testów lub scenariusza testowego.

Ważnym elementem jest umiejętność przygotowania odpowiedniego scenariusza testowego tzw. planu testów z w/w wymagań. Plan testów określenia kolejności wykonywania testów, ścieżek testowych tak, aby system / funkcjonalność był pokryty możliwie jak największą ilością przypadków testowych.

Projektowanie i wykonywanie testów

Podczas testowania ważna jest kolejność testów, gdyż tester musi wiedzieć, jakie testy, na jakim etapie procesu wytwarzania oprogramowania musi wykonać. Do zadań testera należy także oszacowanie czasu jaki poświęci na stworzenie planu testów i jego wykonania.

Szczegółowość i priorytetyzacja

Każdy test powinien być szczegółowo opisany i dobrze odwzorowywać to co będzie w trakcie jego wykonywania testowane. Ale tym tematem zajmuje się teoria testowania. Natomiast podczas pisania scenariuszy testowych, ważne jest zarówno ile testów należy napisać/przeprowadzić, ponieważ to od ich wykonania zależy, czy system będzie dobrze przetestowany, ale również ich kolejność. O tym co należy testować w pierwszej kolejności można również poczytać w Internecie.

Raportowanie

Naturalnie rola każdego testera jest identyfikacja problemów, gównie są to błędy, które należy zgłaszać poprzez bugtracker. Oprócz typowych błędów programistycznych, należy zgłaszać wszystkie inne nieścisłości w działaniu oprogramowania, dokumentacji czy procesie wytwórczym jeśli te nie są na tyle dobre, aby nie być błędogenne.

Do tego wszystkiego stosuje się przeróżne narzędzia, ale wiedza techniczna z zakresu IT, a w szczególności z zakresu testowania to podstawy, bez których tester nie może wykonywać swojego zawodu.

Przykłady niezbędnej wiedzy

Ależ proszę: znajomość języka zapytań SQL, języków skryptowych lub(i) powłok systemowych, systemów kontroli wersji, systemów raportowania błędów, narzędzi wspomagających proces ciągłej integracji, narzędzi wspomagających testowanie (debbugery, analizatory, comparer-y, loggery) oraz narzędzi służących do automatyzacji testów, jak również podstawy programowania. To wiedza, bez której człowiek jako tester, faktycznie mógłby się nudzić w pracy. Równie istotnym faktem jest wiedza nt. technologii w jakiej napisana jest aplikacja np. .Net, Java, C++. Niestety w praktyce na testera czeka wiele wyzwań, przy ciągłej potrzebie pogłębiania wiedzy z zakresu testowania, jak choćby konferencje testerskie. Niektóre firmy mogą wymagać od kandydatów, certyfikatów potwierdzających ich umiejętności, a jeśli nie to na pewno są one mile widziane. Certyfikaty takie potwierdzają podstawową wiedzę z zakresu metod testowania, rodzaju testów, ich projektowania czy zarządzania.

Umiejętności miękkie

Oprócz wiedzy merytorycznej ważne jest, aby tester wykazywał się także umiejętnościami miękkimi jak: komunikatywność, skrupulatność, odpowiedzialność za powierzone zadania czy umiejętność klarownego przekazywania wiedzy o znalezionym błędzie lub rozwiązaniu i co może niektórych zdziwić powinien być pesymistą, gdyż nigdy nie powinien z góry zakładać poprawnego działania świeżo napisanej funkcji lub poprawki błędu.

Skuteczność i dociekliwość

Bywa, że testerom zarzuca czepianie się, każdej nawet najmniejszej nieścisłości. Niestety taka jest rola testera, aby wykrywać właśnie takie nieścisłości nawet jeśli są to niuanse. Skuteczność w wykrywaniu błędów, nawet tych najmniejszych, jest cechą niebagatelną. Czasami bywa, że błąd jest ukryty bardzo głęboko i tylko dociekliwy tester potrafi go znaleźć czasami przy n-tej próbie.

Doświadczenie

Wiedzę na temat testowania w znakomity sposób uzupełnia doświadczenie zdobyte z poprzednich obszarów działalności testera. Nabywanie doświadczenia jest nie tyle istotne z punktu widzenia potencjalnego pracodawcy, co pozwala na szersze spojrzenie na problemy na środowisku testowym oraz możliwości ich szybszego rozwiązania. Jest doskonałą formą podpowiedzi, co należałoby jeszcze lub dodatkowo przetestować. Jeśli spojrzeć na tą kwestię od strony pracodawcy, to większość wymaga przynajmniej rocznego lub kilkuletniego doświadczenia w tej dziedzinie. Dlatego testujcie, gdzie się da i co się da. Strony www, aplikacje na telefonie lub wbudowane w różne urządzenia, aplikacje na Waszych komputerach itp., to wszystko buduje bagaż doświadczeń, na który pracodawcy bardzo zwracają uwagę, gdyż obecnie większość pracodawców potrzebuje doświadczonych

Język obcy

Często wymagany, choć w Polskich realiach nie zawsze. Język angielski lub inny w stopniu komunikatywnym na pewno jest wymagany od osób, którzy współpracują z osobami z zagranicy lub wykorzystują technologię, do której dostęp łatwiejszy jest w języku obcym, choć w chwili obecnej większość pracodawców wymaga tego języka na poziomie komunikatywnym.

Świadomość problemów i otaczającego nas środowiska

Problemy mogą pojawić się wszędzie, a z większością z nich spotka się właśnie tester. Czasami są to problemy trywialne, ale często zdążają się takie, które spędzają sen z powiek całemu działowi IT. Należy oswoić się z faktem, że czasami na 10 min przez skończeniem pracy przyjdzie zgłoszenie z działu wsparcia, które na cito trzeba będzie rozwiązać jeszcze w tym samym dniu.

Dobry programista, a zły tester. Czy może na odwrót?

W niektórych firmach identyfikuje się testera, jak zło konieczne, tak jak w przypadku księgowych. Istnieją, bo być muszą, ale nie wnoszą realnej wartości do firmy/systemu, nie wytwarzają (czyt. nie piszą) oprogramowania tylko go sprawdzają. Tak się składa, że tester jest potrzebny tak samo jak programista i choć fizycznie nie wytwarza oprogramowania, to ma wpływ na jego jakość, co podnosi wartość oferowanego produktu i w rezultacie satysfakcję klienta. W tej materii należy współpracować, a nie walczyć, bo programiści i testerzy powinni mieć wspólny cel, którym jest lepsza, jakość wytwarzanego oprogramowania.

Czy każdy może zostać testerem?

Tylko teoretycznie. Nawet, gdy kandydat posiada wszystkie w/w cechy i umiejętności oraz wiedzę z zakresu testowania, może się okazać, że ta profesja nie jest jego domeną. Znam wiele osób, którzy po kilku latach pracy u jednego pracodawcy, jako testerzy wypalili się zawodowo i nie każdy z nich wytrzymał presji lub rutyny w tym zawodzie. Dlatego ważna jest także odporność na stres i parcie na tzw. deadline.

Tak, poza tym prace tą trzeba lubić, tak jak ze swoim hobby. Dopóki się nim interesujemy i przynosi to nam satysfakcję z tego co robimy, to praca będzie przyjemna. Niestety należy wziąć pod uwagę, że osoba testera, ciągle ściera się z różnymi zdaniami programistów, analityków, klientów, a nawet samych testerów, co wymaga od nich samych silnych nerwów, siły przebicia oraz gruntownej wiedzy o systemie/funkcjonalności tak, aby nikt nie zarzucał nam „czepialstwa” lub niekompetencji.

Jak sprawdzić czy ktoś jest dobrym testerem?

Jeśli ktokolwiek był kiedyś na rozmowie kwalifikacyjnej dla testerów, podczas której należało przetestować długopis lub odpowiedzieć na pytanie, do czego służy szklanka, to nawet jeśli odpowiedź była satysfakcjonująca dla rekrutera, dajcie sobie spokój z tym pracodawcą.

Zrozumiałym jest, że od kandydatów na testera wymaga się analitycznego myślenia, ale takie „testy” nie są poważnym traktowaniem osoby na to stanowisko. Jeśli zachodzi potrzeba sprawdzenia umiejętności kandydata to wypada zaprosić go na 1-2 godzinny test oparty na problemach z realnego środowiska testowego, podczas którego można sprawdzić naprawdę wiele jego cech i umiejętności. Chociażby umiejętność identyfikacji problemów czy tworzenia planu testów i przypadków testowych.

Podsumowując rolę testera.

Niezależnie od środowiska, atmosfery i stabilności pracy, zawsze będziemy zmierzać się z problemami różnej rangi. Raz z tymi małymi, a nieraz z tymi ogromnymi. Lecz przede wszystkim naszym (testerów) celem, jest szybka ich identyfikacja i zgłaszanie. Jeśli dodamy do tego skrupulatność oraz przynajmniej podstawową wiedzę z zakresu testowania oprogramowania, to myślę, że taki kandydat ma szansę zostać dobrym testerem oprogramowania.

Smyku.pl
Smyku.pl

Ta strona wykorzystuje ciasteczka i podobne technologie. Są one mi potrzebne, aby strona mogła lepiej funkcjonować. Korzystając ze strony, zgadzasz się na ich gromadzenie i wykorzystywanie, zgodnie z ustawieniami w Twojej przeglądarce. Więcej o ciasteczkach możesz dowiedzieć się w dziale "Pomoc".

Zmień widoczność widżetów.

Ustawienia typu odtwarzacza

Ustaw w jaki sposób mają być odtwarzane utwory: