Tester Oprogramowania.

Transkrypt

Tester Oprogramowania.
Tester Oprogramowania.
Gdy ktoś mnie pyta, czym się w życiu zajmuje lub 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ści1 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.
Kim zatem 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ów2 na dostarczonym przez programistów oprogramowaniu z reguły na
podstawie dokumentacji technicznej. Może to być jasno i obszernie opisana specyfikacja3 systemu, szkic lub inny
dokument określający wymagania4 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, to podstawa.
Aby móc zacząć przygodę w Quality Assurance tudzież testowaniu oprogramowania, przede wszystkim należy poznać
teorę testowania. Czyli w bardzo wielkim skrócie, odpowiedzieć sobie na m.in. takie pytania?
- Co to jest Quality Assutance 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?
z ang. Quality Assurance
http://software.com.pl/testy-oprogramowania-i-ich-rodzaje/
3 http://pl.wikipedia.org/wiki/Specyfikacja_techniczna
4 http://pl.wikipedia.org/wiki/Testowanie_oprogramowania (sekcja Informacje ogólne)
1
2
- 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.
Poza tym potrzebna jest nam umiejętność analizy wymagań5. Definiowaniem wymagań zazwyczaj zajmuje się tzw.
analityk6, 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, wymagania były w mairę jasno zdefiniowane, aby nie duplikowały się oraz wzajemnie się
nie wykluczały i co najważniejsze opisywały w sposób jednoznaczny działanie systemu. Tester czasami jest zmuszony
do zidentyfikowania i ew. dopisania do specyfikacji takich lub dodatkowych wymagań.
Powyższa cecha w osobie testera implikuje kolejną umiejętność, jaką jest poprawne interpretowanie już
zdefiniowanych wymagań. Zdecydowanie jest ona jedną z ważniejszych cech testera. 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 testowych7.
Podczas testowania ważna jest kolejność testów, gdyż tester musi wiedzieć, jakie testy8, na jakim etapie procesu
wytwarzania oprogramowania musi wykonać. Np. na jednym z etapów testowania, mniej ważne jest ile testów
należy napisać/przeprowadzić, ale raczej jak dobrze sprawdzą one testowaną funkcjonalność. Gdyż dla przykładu
można przeprowadzić 50 testów, które sprawdzą 70% jednej funkcjonalności lub 50 testów, które sprawdzą 3%
całego systemu, wykrywając przy tym masę innych błędów. Ważna jest tu priorytetyzacja testów.
Dlatego 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? Ależ proszę: znajomość języka zapytań SQL, języków skryptowych 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 oraz testowanego systemu. Niektóre firmy wymagają wręcz od kandydatów, certyfikatów9
potwierdzających umiejętności testerskie 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
http://software.com.pl/analiza-biznesowa-wymagania-%E2%80%93-pozyskiwanie-dokumentowanie-komunikowanieweryfikacja/
6 http://it-consulting.pl/autoinstalator/wordpress/2012/08/23/wymagania-biznesowe-a-wymagania-wobec-produkturola-analityka/
7 http://www.qatester.pl/testowanie/testowanie-w-teorii/63-przypadek-testowy.html
8 http://www.testerzy.pl/artykuly/typy-testow
9 Np. ISTQB
5
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ść/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ą. Czasmi zdaża się, że błąd jest ukryty bardzo głęboko i tylko dociekliwy tester
potrawfi go znaleźć czasami przy n-tej próbie.
Doświadczenie
Wiedzę nt. 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.
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. W innych przypadkach, wymaganie znajomości języka obcego od kandydata
jest po prostu robieniem z niego sekretarki.
Ś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, zły tester.
Często 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 wiedze z zakresu
testowania, może się okazać, że ta profesja nie jest jego domeną. Znam wiele osób, którzy po roku pracy, 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. deadline10.
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.
10
http://pl.wikipedia.org/wiki/Deadline
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.
Podsumowując. 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.
Pozdrawiam
Smyku