Sportowa pasja do testowania oprogramowania


W polskim prawodawstwie związanym z aktywnością sportową zaszła niedawno bardzo istotna zmiana. Definicję sportu rozszerzono o każdą aktywność intelektualną, której celem jest osiągniecie wyniku sportowego. Jest to istotna informacja dla e-sportowców, rywalizujących w ligach gier komputerowych. Ale cyfrowy sport to nie tylko gry – z roku na rok, coraz większą popularnością cieszą się konkurencje programistyczne, które rozmachem przypominają niekiedy mistrzostwa w dyscyplinach tradycyjnego sportu. Jedną z nich jest TestingCup, czyli Mistrzostwa Polski w testowaniu oprogramowania. O konkurencji, sukcesie i sportowym charakterze testowania rozmawiamy z Adrianem Balą z GFT Poznań.

Źródło: TestingCup

GFT: Gratulacje! Znalazłeś się w pierwszej dziesiątce TestingCup 2017 w kategorii indywidualnej. To pierwszy taki wynik dla GFT Polska.

Adrian Bala: Dziękuję! Faktycznie, zająłem 9 miejsce (ex aequo z 42 pkt) w finałach TestingCup 2017, co jest wynikiem historycznym dla GFT Polska w kategorii indywidualnej. Co więcej, wygrałem etap eliminacji, z maksymalną liczbą 34 pkt, gdyż liczba miejsc startowych w tym roku została ograniczona do 250 osób.

Na czym polegała konkurencja?

Krótko mówiąc, konkurencja polegała na jak najlepszym raportowaniu i przetestowaniu dostarczonej aplikacji MrBuggy (Databucket) w czasie 180 minut. W tym roku była to aplikacja desktopowa (stand-alone) z blisko trzydziestostronicową dokumentacją po angielsku. Dominująca technologia to Java 8 i baza danych MySQL 5.7. A główne przeznaczenie programu to przechowywanie danych testowych oraz zarządzanie nimi. Nowością tegorocznej edycji było opracowanie i napisanie planu testów dla aplikacji dostarczonej przez Organizatorów Mistrzostw.

Czym różnią się zadania indywidualne od konkurencji zespołowych?

Teoretycznie obie kategorie są jednakowe. W praktyce to w pewnym sensie odrębne dyscypliny. Porównanie jakie przychodzi mi na myśl to sporty biegowe, np. sprint i sztafeta. Wydaje się, że w obu biegniesz tak samo, ale ich charakterystyka jest odmienna. Podobnie jest w kategorii indywidualnej TestingCup, gdzie jesteś odpowiedzialny za wynik całościowo, nie masz możliwości podzielenia prac w zespole, sam opracowujesz plan testów, testujesz aplikację, raportujesz defekty, weryfikujesz specyfikację itp. Z drugiej strony, efektywność jest lepsza, ponieważ posiadasz pełną wiedzę, unikasz narzutu związanego z komunikacją i przydziałem zadań, masz wszystkie dostępy oraz większą kontrolę nad środowiskiem itd. Priorytety zadań wybierasz w obu kategoriach, ale w indywidualnej trudniej jest prace zrównoleglić. Poza tym macierz kompetencji określa Twój T-shape, a nie jak w zespole cross-funkcjonalnym drużyna, gdzie każdy wnosi swoje doświadczenia i umiejętności.

Skoro jesteśmy przy analogiach sportowych, warto wspomnieć, że tegoroczna edycja TestingCup odbyła się na Stadionie Energa w Gdańsku, czyli w iście sportowym stylu. Czy wg Ciebie konkurencje programistyczne mogą mieć autentycznie sportowy charakter?

Oczywiście, że tak! Wytwarzanie oprogramowania jest wysiłkiem intelektualnym, podobnie jak zapewnianie jego jakości czy testowanie. Mistrzostwa świata rozgrywane są m.in. w szachach, które Międzynarodowy Komitet Olimpijski uznaje za dyscyplinę sportu. Podobnie jest z go, brydżem czy warcabami, które zaliczają się do Olimpiady Sportów Umysłowych. Dlatego uważam, że testowanie oprogramowania może mieć charakter mocno sportowy. Od testera, podobnie jak od sportowca, oczekiwać można: refleksu, wytrzymałości, szybkości, efektywności, precyzji itp. Moim zdaniem konkurencje programistyczne mogą – a nawet powinny – mieć status rozgrywek sportowych par excellence. A sprzyja temu coraz większa popularność e-sportu, np. Światowe Mistrzostwa IEM oraz imprezy takie jak TestingCup 2017.

Sport to przede wszystkim nieustanna praca nad sobą. Czy udział w zawodach wymaga treningu?

Tak, moim zdaniem udział w każdych tego rodzaju zawodach wymaga treningu, a zwłaszcza na szczeblu ogólnopolskim. Wynika to głównie z faktu, że zawody są ograniczone w czasie. To wymaga ogromnej koncentracji na celu, dużego stopnia organizacji i efektywności w działaniu. W kategorii drużynowej decyduje stopień zgrania i znajomości całego zespołu. Ważne jest również doświadczenie. Czynnikiem decydującym w każdej kategorii wydaje się być szybkość uczenia się lub zwinność. Na Mistrzostwa Polski przyjeżdżają znakomici i często utytułowani zawodnicy. O klasyfikacji końcowej decydują minimalne różnice punktowe, a o sukcesie przesądzają detale. Dlatego moim zdaniem należy przede wszystkim trenować.

Czy realizacja zadań na tego rodzaju zawodach jest w jakimś stopniu zbliżona do Twojej codziennej pracy?

Na co dzień zajmuję się zapewnianiem jakości oprogramowania, a testowanie jest elementem większej całości. Dlatego część codziennych zadań jak najbardziej mógłbym porównać z treningiem do zawodów. Z drugiej strony, codzienna praca ma charakter bardziej powtarzalny i dużo lepiej znasz aplikację, którą testujesz. Na zawodach wykorzystujesz szerszy zakres dostępnych środków w krótszym czasie, sam konfigurujesz sobie maszynę i wybierasz odpowiadający Ci zbiór narzędzi. Dlatego wartość dodana ma moim zdaniem inny wymiar. Przygotowując się do zawodów poznajesz sporo narzędzi oraz technik, które możesz potem wykorzystać w codziennej pracy. Ponadto poznajesz ludzi, wymieniasz opinie i dowiadujesz się z czego korzystają inni. Uważam, że zawody motywują i rozwijają pasję, a to jeden z kluczowych czynników odnoszenia sukcesów.

Oprócz udziału w zawodach, byłeś także jednym z prelegentów.

Dziękuję, że poruszyłeś ten temat, bo jest on dla mnie nawet większym wyróżnieniem niż Top10 w zawodach indywidualnych. Organizatorzy tegorocznej edycji TestingCup otrzymali ponad 100 propozycji wystąpień z różnych krajów. Wśród prezentacji docenionych przez organizatorów znalazła się moja: Testowanie Web API w CI / CD. Przygotowywałem ją przez 8 weekendów, bo zależało mi na odpowiednim poziomie wystąpienia. Pokazywałem jak można dostarczać oprogramowanie wysokiej jakości w czasie rzeczywistym na tzw. produkcję. Doskonałym bowiem sposobem budowania zaufania pomiędzy wytwórcą a odbiorcą jest częste dostarczanie działającego rozwiązania lub usługi wysokiej jakości. Dlatego na potrzeby prezentacji stworzyłem mały projekt w SpringBoot na GitHubie, który budowałem z użyciem Mavena i Jenkinsa. Całość testowałem jednostkowo w JUnit, funkcjonalnie i regresyjnie w JMeterze, a wydajnościowo w Taurusie. Rozwiązanie wzbogaciłem o analizę statyczną, pomiar długu technologicznego i stopień przykrycia kodu w SonarQube, testy mutacyjne z wykorzystaniem PiTest oraz analizę trendów wydajnościowych w BlazeMeterze. Sala była pełna.

Fantastycznie. Wygląda więc na to, że jesteś zadowolony z udziału w TestingCup 2017.

Jestem bardzo zadowolony! Wygrałem eliminacje, uzyskałem bardzo dobry wynik w zawodach i otrzymałem pozytywną informację zwrotną zarówno od Organizatorów, jak i Uczestników konferencji. Życzę wszystkim podobnych doświadczeń, bo to są dobre i wzmacniające przeżycia! Kończąc, chciałbym jeszcze raz podziękować: Weronice – za sfinansowanie noclegów z budżetu konferencyjnego, Hani – za gadżety firmowe, którymi obdarowałem aktywnych słuchaczy, Rafałowi – za pomoc w wyborze tematu wystąpienia, działowi IT – za przygotowanie laptopa z oprogramowaniem oraz Tobie Macieju – za ujednolicenie graficznej strony prezentacji i wywiad. Dzięki!