ul. Strzegomska 2-4
53-611 Wrocław
NIP 8992786490
KRS 0000608120
REGON 363987723
Global4Net Sp. z o. o.
+48 71 358 41 00
© 2009 – Global4Net. All Rights Reserved.
Czy w branży e-Commerce rola testera jest ważna? Pewnie natknąłeś się kiedyś na niedziałającą funkcję w jakimś sklepie internetowym, która jeśli nie uniemożliwiła Ci wykonanie czynności, to na pewno ją zdecydowanie utrudniła. Jak myślisz, jak działa to na nowoczesnych klientów, którym dzisiejszy rynek gwarantuje praktycznie nieograniczone możliwości w wyborze marki?
Aby zapobiec takim błędom, kluczowym dla poprawnie wdrożonego projektu e-Commerce jest działanie testerów oprogramowania. W Global4Net liderem zespołu testerów jest Alicja Fassa, która podzieliła się z nami wiedzą o tej dziedzinie i wytłumaczyła nam, czym tak naprawdę zajmuje się tester oprogramowania.
Proces testowania oprogramowania to weryfikacja działania aplikacji lub rozwiązania budowanego przez deweloperów. Testowanie ma na celu sprawdzenie czy oprogramowanie działa zgodnie z założeniami i specyfikacją. Proces ten składa się z kilku etapów. Najważniejsze z nich to:
Analiza jest procesem, w którym testerzy muszą określić, jakie obszary projektu zostaną poddane testom i w jaki sposób testy będą wykonywane. Następuje identyfikacja warunków testowych, określenie priorytetów i poziomów ryzyka. Ten etap pozwala na weryfikację, czy wymagania są spójne i kompletne. Dodatkowo, testerzy muszą opracować strategię optymalizacji testów, tak aby przyniosły jak najlepsze wyniki w jak najkrótszym czasie.
Planowanie jest etapem, w którym następuje zaprojektowanie przypadków testowych i identyfikacja danych testowych. Ten proces będzie wyglądał inaczej zależnie od tego czy testerzy rozpoczną swoje działania już na etapie powstawania oprogramowania e-Commerce, czy dopiero zaczną oni przeprowadzać testy na gotowym produkcie.
Implementacja jest etapem, w którym testerzy przystępują do przeprowadzania testów na podstawie przygotowań i założeń ustalonych w ciągu dwóch poprzednich etapów.
Raportowanie – to ostatni etap pracy testerów. Podczas niego ich zadaniem jest zebranie wyników wszystkich testów i skompletowanie ich w jednolitej i zrozumiałej dla wszystkich formie.
W Global4Net dokonujemy raportowania za pomocą narzędzi , takich jak Jira. Mają one postać uporządkowanych zadań, w których ujęte są dokładne informacje o znalezionych błędach, oczekiwanych rezultatach i rekomendowanej metodzie ich naprawy.
Takie zgłoszenie powinno zawierać informacje dotyczące miejsca w projekcie, w którym został wykryty błąd. Może mieć ona formę linku prowadzącego do danej podstrony albo wskazanie ścieżki, pod jaką lokalizacją błąd występuje. Dobrą praktyką jest zamieszczanie w zadaniu screenshotów, na których widoczne jest występowanie defektu.. Jednak czasami raportowany błąd jest bardziej skomplikowany i schowany w głębszej warstwie systemu. Należy wtedy w zadaniu opisać proces odtworzenia go, innymi słowami jakie czynności trzeba wykonać, aby błąd ten wystąpił.
Zaniedbanie któregokolwiek z tych etapów może skutkować poważnymi problemami w późniejszym czasie wdrożenia. Testowanie oprogramowania wiąże się także ze ścisłą współpracą z gronem deweloperów, ponieważ to oni będą działać nad poprawkami, bazując na tym jakie zgłoszenia błędów otrzymają od testerów.
Alicja w Global4Net pełni rolę Head of QA. Oznacza to, że koordynuje ona pracę wielu testerów, którzy wykonują różnorodne typy testów. Ona sama przeprowadza zarówno testy manualne jak i automatyczne. Jak podkreśla bez solidnego podłoża w testach manualnych, wykonywanie testów automatycznych jest zdecydowanie utrudnione i nie przynosi tak zadowalających efektów.
Tester manualny to osoba, która przechodzi przez interfejs użytkownika nie skupiając się na tym czego nie widać, czyli na kodzie oprogramowania. Takimi testerami w większości są osoby, które dopiero zdobywają swoje pierwsze doświadczenie na tym stanowisku. Alicja podkreśla:
Przeprowadzając testy funkcjonalne tester często musi się wczuć w rolę klienta i to takiego naprawdę wymagającego klienta, który oprócz podstawowej ścieżki jaką przeszedłby każdy z nas korzystając z jakiegoś serwisu działa na przekór systemowi próbując go zepsuć. Takie działanie może sprawić, że końcowy produkt jest produktem możliwie najwyższej jakości i każde działanie użytkownika zostało wcześniej przetestowane a każda reakcja systemu jest zgodna z oczekiwaniami.
Jakich kompetencji potrzebuje tester manualny?
Oprócz oczywistego wymogu skrupulatności i uważności, kandydat na testera manualnego ma dużą przewagę, jeśli jest zaznajomiony z Networkiem, czyli wbudowanym narzędziem w każdej przeglądarce. Monitoruje ono komunikację HTTP i pokazuje informację o błędach na przykład po stronie serwera, a także innych obszarach strony. Tester manualny powinien także znać rodzaje i znaczenie kodów HTTP. Ułatwia to pracę nie tylko testerowi, ale również deweloperowi, ponieważ obie strony mogą się komunikować bardziej efektywnie i szczegółowo. Dzięki znajomości kodu HTTP powiadomiony przez testera deweloper wie dokładnie jakiego rodzaju jest to raportowany błąd i gdzie się znajduje.
Kolejną przydatną kompetencję, w zależności od projektu, jest znajomość SQL-a, który jest językiem zapytań używanym do pracy z bazami danych.
Tester automatyzujący to taki, który automatyzuje swoje działania. Jest to jedna ze ścieżek rozwoju, którą można obrać już od samego początku lub jako następstwo po zdobyciu pierwszego doświadczenia jako tester manualny. Sprytny tester w końcu sam dojdzie do wniosku, że nie ma sensu wykonywać tych samych działań w kółko, ponieważ robi się to żmudne i trzeba na to poświęcić sporo czasu (na przykład przy testach regresyjnych, w których sprawdzane jest czy wydanie nowej funkcjonalności nie wpłynęło na pozostałe obszary systemu i czy nam np. czegoś innego nie zepsuło).
Jakie kompetencje są wymagane aby zostać testerem automatyzującym?
Automatyzacja testów wymaga specyficznej wiedzy technicznej – znajomości języka programowania i bibliotek, które testy automatyczne wspomagają. Dla przykładu, prowadzone przez testerów Global4Net, testy automatyczne typu end-to-end (polegające na symulacji działań użytkownika na interfejsie projektu i wglądu do tych testów w czasie rzeczywistym) wymagają znajomości języka PHP. Test takiego rodzaju jest wyjątkowo pomocny, gdyż może on zastąpić testy manualne i zaoszczędza tym sposobem mnóstwo czasu i zasobów. Dodatkowym narzędziem, które wspomaga testowanie automatyczne jest biblioteka komponentów Selenium.
Tester oprócz wykonywania testów oprogramowania często uczestniczy w spotkaniach z klientem. Nierzadko jest tłumaczem między klientem a zespołem technicznym: klient zazwyczaj nie wie, jak działają części sklepu, które nie są widoczne gołym okiem. Dlatego tester powinien posiadać umiejętność przekazywania informacji deweloperskich w sposób jasny dla osób spoza branży.
Dodatkowo tester oprogramowania jest odpowiedzialny za tworzenie i utrzymywanie dokumentacji funkcjonalnej. Musi również ściśle kooperować z deweloperami. Im większa znajomość języka technicznego, tym łatwiej jest testerowi komunikować się z deweloperami i lepiej przekazywać potrzebne informacje.
Dokumentacja funkcjonalna, za którą odpowiedzialni są testerzy zawiera ścisłe opisanie w jednolitym standardzie wszystkich nowych funkcjonalności. W środku dokumentacji, zarówno klient jak i członkowie zespołu deweloperskiego znajdą instrukcję obsługi tychże funkcjonalności i metod korzystania z nich. Tester powinien zawrzeć w dokumentacji jak najwięcej informacji i tworzyć ją zgodnie ze specyfikacją podaną przez analityka biznesowego. Specyfikacja ta powinna zostać przygotowana po cyklu spotkań z klientem, prezentacji założeń i celów projektowych. Dodatkowo dokumentacja funkcjonalna może zostać połączona z techniczną (skierowaną dla deweloperów).
Wszystko zależy od projektu. Tester może uczestniczyć już od samego początku wdrożenia i w jego trakcie lub na sam koniec, kiedy produkt został już przygotowany. Najbardziej opłacalnym rozwiązaniem jest pierwsza metoda, ponieważ kiedy problem zostaje szybko rozwiązany, to nie jest on powielany w innych miejscach systemu, dzięki czemu nie trzeba realizować licznych poprawek.
W Global4Net testerzy oprogramowania działają podczas całego okresu wytwarzania oprogramowania. Wchodzą w te projekty, które są dopiero w fazie rozwoju, ale również już wydane produkty, z których korzystają klienci. W drugim przypadku, oprócz testowania nowych funkcjonalności, tester ma zadania supportowe i sprawdza, czy w ukończonym produkcie nie pojawiły się inne błędy.
Jak w każdej branży i w środowisku testerów oprogramowania, istnieją zasady i normy, które muszą być przestrzegane. Zarówno początkujący jak i doświadczeni testerzy, a także właściciele e-Commerce’ów powinni zaznajomić się z dobrymi praktykami testowania.
Po pierwsze należy dzielić się wiedzą i spostrzeżeniami z innymi testerami. Nie wszyscy mieliśmy do czynienia z tymi samymi zadaniami i rozmowa o nich pozwoli naszym kolegom i koleżankom po fachu przygotować się teoretycznie do takich sytuacji.
Każdy tester zaczynający pracę w projekcie powinien dostać dostęp do bazy wiedzy prowadzonej przez zespół i do dokumentacji projektowej, z którą musi się obowiązkowo zapoznać. W dokumentacji tej powinny być opisane szczegóły procedur, które tester musi podjąć w razie znalezienia danego rodzaju błędu.
Certyfikat ISTQB (International Software Testing Qualifications Board) nie jest wymogiem, ale może pomóc testerom, którzy nie posiadają doświadczenia. Działa on na podobnej zasadzie co certyfikat językowy dla osób, które nie mają doświadczenia w pracy z użyciem języków obcych. Poruszane są tematy i zagadnienia potrzebne do regularnych działań testerskich w środowisku zawodowym.
Najgorszym błędem w pracy testera jest założenie, że wszystkie elementy projektu zostały przetestowane i wszystko działa poprawnie. Tester musi być czujny i przygotowany na pojawienie się nowych błędów, które nie zostały wykryte wcześniej. Nieraz naprawienie jednej funkcjonalności sprawi, iż następna nie będzie działać w przewidziany sposób.Nie oznacza to, że testowanie to walka z wiatrakami. To po prostu długi i trudny proces.
Aby upewnić się, że testy są przeprowadzone poprawnie i z maksymalną efektywnością należy również unikać przepracowania się. Przedłużony okres pracy nad jednym tematem sprawia, że testerowi brakuje świeżego spojrzenia będzie mniej efektywny w znajdowaniu błędów. Regularne przerwy w testowaniu jednego, tego samego zagadnienia są obowiązkowe i nie sprawią one, że efektywność lub wydajność wdrożenia spadnie.
Jak już napisaliśmy w poprzednim akapicie największym błędem w pracy testera jest założenie, iż wszystkie błędy zostały odnalezione. Jednak jest to nieprawda, gdyż zawsze znajdzie się kolejny bug. Zjawisko to ma nazwę paradoksem pestycydów. Ciągłe powtarzanie tych samych testów prowadzi do sytuacji, w której przestają one w pewnym momencie wykrywać nowe defekty. Aby móc wykrywać nowe defekty, może być konieczne zmodyfikowanie dotychczasowych testów i danych testowych, a także napisanie nowych testów. Niezmieniane testy tracą z czasem zdolność do wykrywania defektów, podobnie jak pestycydy po pewnym czasie nie są zdolne do eliminowania szkodników.
W niektórych przypadkach — takich jak automatyczne testowanie regresji — paradoks pestycydów może być korzystny, ponieważ pozwala potwierdzić, że liczba defektów związanych z regresją jest niewielka.
Oprócz znajomości kodów HTTP i języków programowania w testowaniu oprogramowania przydają się także dedykowane im narzędzia. Są to m.in.:
Dodatkowym plusem jest posiadanie narzędzia do wykonywania screenshotów, gdyż jest to bardzo częstą czynnością w pracy testera. Dobrym narzędziem do tego rodzaju rzeczy jest Lightshot. Jest to aplikacja, która oprócz robienia screenshotów, pozwala na wiele opcji zaznaczania, pisania notatek, edycji screenshota i innych operacji.
Testowanie oprogramowania niewątpliwie oszczędza czas, który po wydaniu oprogramowania, trzeba byłoby poświęcić na weryfikację poprawności produktu. Nie trzeba daleko sięgać, aby zobaczyć, co dzieje się, gdy błędy nie zostaną usunięte. Na naszym własnym podwórku taką klapę zaliczył CDPR i jego Cyberpunk 2070. Produkt bez testów to produkt wadliwy, który pomimo, że powinien być ukończony i zacząć zwiększać nasze profity, będzie robił coś odwrotnego, czyli generował dodatkowe koszta, które pójdą na sprawdzanie i łatanie go. Błędy w gotowym produkcie to także zagrożenie dla wizerunku marki i lojalności klientów. Jednak pozostaje pytanie, czy nie można byłoby zastąpić realnego testera automatem?
O tyle o ile da się napisać testy automatyczne, to nadal do ich napisania potrzebna jest wiedza nabyta, w czasie testów manualnych. Myślę, że automat nie byłby w stanie w 100 procentach zachować się jak człowiek, jak użytkownik. Na ten moment praca testerów manualnych i automatyzujących się przenika i każda z tych ról jest wartościowa dla projektu.
Napisz do nas