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