Rola, odpowiedzialność i potrzebne umiejętności Testera Agile

maj 12, 2021 | Metodyka testów

Kilkuletnie doświadczenie nauczyło nas, że w praktyce nie funkcjonują czyste metodyki klasyczne, ani tym bardziej zwinne. IT jest światem ciągłego poszukiwania optymalnych rozwiązań, a to nieuchronnie musi go kierować w kierunku metodyk hybrydowych. Tester Agile powinien mieć szeroki zakres kompetencji, aby umiejętnie łączyć rzeczywistość, w której stale przenikają się różne metodyki realizacji projektów. 

Projekty, szczególnie te duże, mają to do siebie, że ich realizacja najczęściej planowana jest klasycznie. Wynika to z różnych powodów. Część projektów finansowanych jest za pomocą wsparcia systemowego, a takie wymusza waterfallowe planowanie działań. Inne ze względu na skalę nie mogą być realizowane tylko metodyką zwinną. Efekt jest taki, że zespoły zwinne pracują w ramach dużych projektów realizowanych w metodykach klasycznych. Najczęściej początek i koniec projektu bliższy jest metodyce klasycznej, a to, co się dzieje pomiędzy, przypomina metodyki zwinne. Prawdziwa zwinność testera polega na odnalezieniu się w tej kombinacji. 

Większość Testerów z wieloletnim doświadczeniem ma praktykę w metodykach klasycznych np. kaskadowych (Waterfall). Doświadczone osoby znające i dobrze czujące się w metodyce zwinnej (Agile) zdarzają się znacznie rzadziej. Tester zwinny (Tester Agile) musi posiadać szerszy zakres umiejętności. Nie wystarczy do tego wąska specjalizacja, tak jak to bywało w projektach klasycznych.

Wszechstronne kompetencje Testera Agile

W zależności od poziomu testów ich wymagania się różnią. Zakładając, że Tester razem z zespołem zwinnym pracuje od początku do końca projektu, w rezultacie będzie uczestniczył we wszystkich fazach cyklu życia oprogramowania. Przechodząc przez wszystkie etapy, nabędzie szerokie umiejętności niczym „człowiek orkiestra”.

Na każdym poziomie testów, poza znajomością rozwiązania, które jest testowane, przydaje się umiejętność korzystania z narzędzi do zarządzania testami typu JIRA, QTest Manger, TestLink czy HP ALM.

Tester Agile i jego kompetencje w testowaniu modułowym

Testy modułowe służą znalezieniu defektów w najmniejszych komponentach oprogramowania. Tester Agile ocenia historyjki użytkownika (US, User Story) manualnie lub automatycznie i sprawdza, czy kod realizuje to, co zakładał właściciel produktu (Product Owner). To, czy Tester będzie w stanie wesprzeć programistę, zależy m.in. od tego, czy zna podstawy języka, w którym jest tworzone oprogramowanie, a także, czy będzie umiał skorzystać ze zintegrowanego środowiska programistycznego (IDE, Integrated Development Environment).

Tester musi znać podstawowe narzędzia programistyczne jak choćby rozproszony system kontroli wersji Git. Powinien potrafić uruchomić test na zaślepionych modułach i umieć „przeczytać” logi z aplikacji, jako że często na tym etapie nie ma jeszcze gotowego graficznego interfejsu użytkownika (GUI, Graphical User Interface).

Coraz popularniejsze staje się wykorzystywanie platform do tworzenia oprogramowania na urządzenia mobilne, w związku z tym, w zależności od projektu, może być konieczne zapoznanie się z platformami i technologiami takimi jak Kotlin, Angular, React, TypeScript, Swift i innymi, właściwymi dla danego projektu.

Testy integracyjne modułów i testy integracyjne systemów

Bardzo często przetestowanie interfejsu wymaga przygotowania odrębnej US, ale bywa, że nowy interfejs może być tylko jednym z elementów weryfikowanych w ramach Story. W związku z tym testy integracyjne mogą być realizowane w ramach sprintu. Defekty wyszukiwane są w interfejsach służących do komunikacji pomiędzy modułami systemów, aplikacjami itp. 

Potrzebna jest zatem znajomość interfejsów i używanych protokołów. Jeżeli jest to REST API, to Tester Agile powinien nauczyć się Postmana. W takim wypadku przydaje się również znajomość XML lub JSON’a. Protokół SOAP możemy testować, używając SoapUI. Bardzo przydatna jest również znajomość języka Groovy oraz języka definicji usług sieciowych WSDL. Jeżeli traficie na bardzo nowoczesny projekt, możecie się też spotkać z językiem zapytań dla API – GraphQL – promowanym przez Facebooka i postrzeganym jako następca REST.

Klasyczne testowanie funkcjonalne Testera Agile

Testy systemowe weryfikują funkcjonalność zintegrowanego rozwiązania i w zasadzie każdy tester powinien je mieć doskonale opanowane. Warto jednak zwrócić uwagę na to, że zmiany zachodzą nie tylko w organizacji projektów, ale też w używanych narzędziach. To, czym zwinne projekty się zajmują, to zwykle są aplikacje dla użytkowników końcowych. A większość obecnych aplikacji tego typu powstaje w wersjach na urządzenia mobilne lub jako strony web. Wymaga to od testera dobrej znajomości html czy technologii RWD, jak również zagadnień związanych z dostępnością (WCAG 2.0).

Na tym etapie Tester Agile sprawdza również, w jaki sposób wszystkie komponenty oddziałują na siebie. Dlatego też jest to dobry moment na testy wydajności, obciążenia, niezawodności i bezpieczeństwa.

Kompetencje miękkie Testera Agile a testy UAT

Testy UAT są testami potwierdzającymi. Tester Agile nie szuka tutaj błędów, ale stara się sprawdzić, czy wymagania użytkownika zostały faktycznie spełnione. Na tym etapie Tester Agile będzie intensywnie korzystał ze swoich kompetencji miękkich. Zwykle testy akceptacyjne użytkownika (UAT, User Acceptance Tests) powtarzają w jakimś zakresie wcześniej wykonane testy. W związku z tym umiejętności i technologie, które były przydatne tam, będą przydatne również tutaj.

Na tym etapie Tester Agile często pełni funkcję pośrednika pomiędzy Użytkownikami a Programistami. W związku z tym może odgrywać rolę Defect Managera i wtedy będzie intensywnie wykorzystywał narzędzia do zarządzania błędami. Prawdopodobnie będzie musiał od czasu do czasu zajrzeć do jakiegoś logu, żeby wzbogacić opis błędu o wartościowe informacje. W takim wypadku niebagatelna będzie znajomość Linuxa i podstawowych komend shell’a takiego jak bash.

Więcej na temat szczególnego znaczenia kompetencji miękkich u Testera Agile dowiesz się z naszej publikacji na ten temat po tym tytułem: “Kompetencje miękkie w pracy Testera Agile”.
(artykuł wkrótce)

Testy regresji i automatyzacja

Testy regresji weryfikują, czy po wprowadzonych zmianach i naprawionych defektach nie wystąpiły defekty w niezmienionych obszarach oprogramowania (nieplanowane efekty uboczne zmiany). W trakcie kolejnych sprintów może przyrastać liczba testów regresyjnych, które należy wykonać. Tester Agile, który automatyzuje testy regresji, oszczędza swój czas. Może go efektywnie wykorzystać na bardziej kreatywne czynności jak poznawanie nowych funkcjonalności lub narzędzi.

Znajomość narzędzi choćby klasy „nagraj – odtwórz” (record and playback testing tool) jest obowiązkowa, a dużo bardziej cenieni są testerzy, którzy potrafią użyć najprostszych środowisk automatyzujących testy np. w oparciu o Selenium. W związku z tym bardzo przydatna jest podstawowa umiejętność pisania skryptów (ale niekoniecznie zaawansowanego programowania) w Javie lub Pythonie.

Narzędzia Testera Agile do budowy planu testów wydajnościowych

Przed użyciem oprogramowania na produkcji musimy być pewni tego, że zakładany wolumen klientów będzie w stanie komfortowo skorzystać z rozwiązania. W większości projektów hybrydowych testy wydajności są przeprowadzane poza sprintami przez wykwalifikowanych specjalistów. Niemniej jednak czasem istnieje potrzeba wykonania szybkiego, bardzo prostego sprawdzenia wydajności, bo już niewielka liczba użytkowników (czasem dosłownie dwóch) może sprawiać ogromne problemy.

Nieprawidłowa architektura może powodować, że niektórzy użytkownicy będą konkurować o wyłączny dostęp do zasobów systemowych lub wzajemnie zakleszczać się w bazie danych (deadlock). W takim wypadku bardzo przydatnym narzędziem jest oparty o Java JMeter. Nie chodzi o biegłość w posługiwaniu się tym narzędziem, ale wystarczy, że Tester Agile potrafi zbudować najprostszy plan testów w oparciu o element grupujący, sampler i listener.

Jako Tester Agile zapoznaj się z OWASP Top Ten

Oczywiście dla aplikacji zawierających dane wrażliwe nie uciekniemy od osobnego testu bezpieczeństwa. Testerzy bezpieczeństwa zwykle są wysoko wykwalifikowanymi specjalistami, ale nie trzeba być adeptem sztuk tajemnych, żeby móc wykonać najprostsze sprawdzenia. Te mniej krytyczne aplikacje powinny być weryfikowane przez Testera Agile pod kątem bezpieczeństwa. Identyfikacja zagrożeń dzięki znajomości najbardziej krytycznych elementów bezpieczeństwa aplikacji (OWASP Top Ten) powinna być chociaż pobieżnie znana Testerowi Agile.

Podsumowanie

Świat IT nieustannie się zmienia i coraz więcej przedsięwzięć realizowanych jest z wykorzystaniem metodyk zwinnych. Stare rozwiązania typu Waterfall ustępują nowym koncepcjom na wielu polach, ale wciąż mają znaczenie w realizacji projektów. W związku z tym zmienia się również praca testera. Zanika wyraźny podział np. na kierownika testów, lidera, analityka testów, testera, czy testera automatycznego. W zespołach scrumowych nie ma miejsca na rozbudowane zespoły testerskie, a klienci oczekują osób o wszechstronnych umiejętnościach, które poradzą sobie na każdym etapie testowania.

Soflab Technology dysponuje osobami z umiejętnościami, wiedzą i doświadczeniem odpowiadającym pracy w zespołach agile’owych. Jeśli potrzebujesz wsparcia w tym obszarze, skontaktuj się z nami. 

Polecamy również