Jira jest bardzo popularnym w świecie IT narzędziem do zarządzania procesami wytwarzania i wdrażania oprogramowania.
Jak podkreśla sam producent, australijska firma Atlassian, ze względu na uniwersalny charakter, Jira znajduje coraz częściej zastosowanie także w działach HR, marketingu oraz w projektach biznesowych.
Jira: intuicyjność i elastyczność
Tworzenie zadań (ang. issues) i zarządzanie nimi w Jira jest bardzo intuicyjne. Można bazować na domyślnych (defaultowych) ustawieniach systemu, wykorzystując gotowe, predefiniowane typy zadań (issue types), bądź samodzielnie skonfigurować takie typy, które będą odpowiadały specyfice danego projektu. Co więcej, dla każdego typu zadań można dowolnie określić wygląd formatki, zaznaczając, które z jej pól będą obowiązkowe, a które opcjonalne. Schemat realizacji dla każdego z typów zadań również może być inny. Możemy także kontrolować zakresy uprawnień dla poszczególnych użytkowników w systemie.
Zadania realizowane w Jira podzielone są na etapy, a każdemu z nich – od zgłoszenia do zamknięcia zadania – odpowiada właściwy status. W każdym momencie można zmienić status zadania, cofając je, w razie potrzeby, do poprzedniego etapu. Jest to szczególnie wygodne w pracy nad błędami wymagającymi wielokrotnego powtarzania tych samych testów. Ta funkcjonalność Jira czyni z niej bardzo popularne narzędzie do zarządzania błędami.
Jira pozwala na modyfikację praktycznie każdego obszaru jej funkcjonalności według własnych potrzeb. Dzięki temu działy IT mogą tylko w oparciu o Jirę zaprojektować cały proces wytwarzania oprogramowania.
Przy wszystkich swoich zaletach Jira ma jednak ograniczenia, które warto znać i rozumieć. Znając je, można lepiej dobrać przydatne narzędzia zewnętrzne i odpowiednie pluginy.
Jira do zarządzania testami
Choć Jira znakomicie nadaje się do zarządzania błędami, nie jest narzędziem do zarządzania testami (scenariuszami i przypadkami testowymi).
Wspomniana wyżej kolejność wykonywania zadań w Jira (kolejne statusy od zgłoszenia do zamknięcia zgłoszenia) nie sprawdza się w zarządzaniu przypadkami testowymi. Test jako taki nie jest typowym zgłoszeniem. O ile prace nad opisem przypadków testowych można oznaczać za pomocą statusów to do -> in progres -> done -> archieved, to zarządzanie procesem testowym wymyka się takiemu opisowi.
Podczas uruchamiania przypadku testowego śledzimy status testów (passed, failed, a czasem więcej statusów, np. not run, blocked, etc.). Tester ten sam przypadek testowy może uruchamiać wielokrotnie z różnych powodów. Jednocześnie z perspektywy śledzenia postępu testów istotna będzie informacja o tym, jak statusy zmieniały się w czasie. Mimo tego, że Jira śledzi historię zmian statusów, przygotowanie podstawowego z perspektywy zarządzania testami wykresu postępu testów jest niemożliwe.
Aby wygenerować w Jira tego typu raporty niezbędne w procesie testowania, konieczne jest dokupienie dodatkowych pluginów, bądź skorzystanie z możliwości, jakie dają narzędzia zewnętrzne, np. qTest.
Kolejne ograniczenie wiąże się z grupowaniem testów. Przypadki testowe często grupuje się w logiczne zestawy; istotny jest wówczas status całego zestawu, a nie pojedynczego przypadku testowego. Co więcej, poszczególne testy w obrębie danego zestawu są uruchamiane wielokrotnie – dla standardowych funkcjonalności Jira obsługa tych zadań stanowi duże wyzwanie.
Innym jeszcze problemem jest wyszukiwanie treści. Jira ma zasadniczo płaską strukturę informacji – wszystkie zaraportowane w niej zgłoszenia są traktowane równorzędnie. Eksploracja bazy danych dokonuje się językiem podobnym do SQL — Jira Query Language (JQL). W przypadku listy zgłoszeń np. defektów nie ma to większego znaczenia. Jeśli jednak chodzi o testy, konieczna jest agregacja informacji w katalogi. Brak drzewa katalogów w Jira utrudnia grupowanie testów w zestawy powiązane ze sobą logicznie. Zamiast tego filtr systemu Jira wyświetla nam kolejne przypadki testowe.
Innym problemem wykorzystania Jira do zarządzania procesem testowym jest specyfika wyszukiwania treści. Zasadniczo Jira ma płaską strukturę informacji i wszystkie zaraportowane w niej zgłoszenia są traktowane równorzędnie. Eksploracja bazy danych dokonuje się językiem podobnym do SQL — Jira Query Language (JQL).
W przypadku listy zgłoszeń np. defektów nie stanowi to problemu. Jeśli jednak chodzi o testy, to potrzebujemy agregacji informacji w katalogi. Brak drzewa katalogów w Jira utrudnia grupowanie testów w zestawy powiązane ze sobą logicznie. Zamiast tego filtr systemu Jira wyświetla nam kolejne przypadki testowe.
Mamy zatem co najmniej kilka niedogodności związanych z wykorzystaniem Jira do zarządzania testami:
- Status przypadku testowego może być rozumiany jako status projektu testów lub wynik wykonanego testu.
- Wielokrotnie uruchamiane testy mają inny charakter niż typowe zadanie obsługiwane w Jira.
- Brak możliwości przygotowania podstawowych z perspektywy testowania raportów, np. raportu postępu testów.
- Brak drzewa katalogów, co utrudnia grupowanie testów i zarządzanie nimi.
- Testy uruchamiane są wielokrotnie, generują w związku z tym dużą ilość rekordów w bazie.
Co zrobić, by zaradzić tym ograniczeniom? Można wykorzystać gotowe pluginy mające ułatwić zarządzanie procesem testowym. Zawierają one m. in. szablon struktury, na podstawie której organizuje się proces zarządzania testami. Można też konfigurować Jira w ramach jej podstawowych funkcjonalności. Dostępne pluginy są jednak zazwyczaj przeznaczone dla projektów określonego typu – nie mają uniwersalnego zastosowania, natomiast konfigurowanie Jira w oparciu o jej podstawowe funkcjonalności sprawdza się jedynie w małych projektach.
Zewnętrzne narzędzia do zarządzania testami są zazwyczaj przeznaczone dla dużych lub średnich projektów informatycznych, realizowanych przeważnie w metodyce Waterfall. Trudno jest połączyć działanie zespołów deweloperskich pracujących zwinnie w systemie Jira z pracami testerów używających narzędzi do zarządzania testami w innej metodyce.
Istnieje jeszcze możliwość uruchomienia większej ilości maszyn Jira Data Center, aby sprostać wymaganiom procesu zarządzania testami – jest to jednak rozwiązanie bardzo kosztowne i odpowiednie raczej dla zespołów opierających swoją pracę na testach manualnych.
Żaden z tych sposobów nie wydaje się więc skutecznym pomysłem na wykorzystanie Jira do zarządzania testami, zwłaszcza gdy weźmiemy pod uwagę kolejne trudności, jakie pojawiają się w związku z wydajnością bazy danych oraz automatyzacją testów.
Spadek wydajności instancji Jira
Dostępne na rynku rozwiązania mogą wykorzystywać zarówno bazę danych Jira, jak i własną bazę zintegrowaną z Jira. W tym drugim przypadku nie jest niestety możliwe używanie JQL, co utrudnia generowanie raportów z testów i może stwarzać problemy już na samym etapie integracji z instancją Jira.
Z kolei używanie bazy danych dostarczanej przez Jira umożliwia wyszukiwanie zgłoszeń za pomocą JQL. Ma jednak zasadniczą wadę: ograniczenia pamięci masowej utrudniają skalowanie naszych zadań testowych.
Testy uruchamiane są zazwyczaj wielokrotnie (również wielokrotnie przerywane i wznawiane). Tym samym jeden test potrafi wygenerować wiele rekordów w bazie Jira, która nie jest przygotowana na obsługę takiej ilości danych. Dodatkowo, testowanie automatyczne, które pozwala przeprowadzać o wiele więcej testów niż w przypadku testowania manualnego, dostarczy kolejnych, ogromnych ilości informacji, (wzrost wykładniczy). W miarę jak gromadzą się dane, szybko rozrasta się baza danych – w sposób nieprzewidziany przez producenta. Z tego względu cała instancja Jira staje się bardziej podatna na obniżenie wydajności. Według badań Tricentis zjawisko spowolnienia systemu następuje po zaledwie 14 tygodniach (przy wykonaniu ok. 100 tys. testów). Tymczasem Jira służy do pracy zespołowej, w obrębie platformy Jira odbywa się niemal cały proces wytwarzania oprogramowania, przestoje i awarie będą więc miały wpływ na pracę wszystkich zespołów.
Rys. 1. Spadek wydajności instancji Jira w wersji serwerowej lub Jira Data Center po zaimplementowaniu pluginów bez własnej bazy danych.
Źródło: www.tricentis.com
Integracja qTest Manager i Jira rozwiązaniem problemu zarządzania testami w Jira
qTest Manager firmy Tricentis to narzędzie odrębne, przeznaczone tylko do zarządzania testami, odpowiednie dla każdego projektu i każdego podejścia do procesu wytwórczego (Waterfall i Agile).
Integracja qTest Manager i Jira obejmuje:
- Import i aktualizację wymagań z Jira do qTest. Na etapie konfiguracji połączenia projektu w Jira z projektem w qTest określa się, jakie issue types pochodzące z Jira interpretowane są przez qTest jako wymagania.
- Import i aktualizację informacji o defektach. Zgłaszanie defektów i zarządzanie nimi odbywa się w oknie Jira, wywoływanym z poziomu qTest (pop-up).
- Eksport do Jira i aktualizację informacji o statusie testów poszczególnych wymagań.
Kluczowy jest sposób integracji z Jira, nie powodujący jej przeciążenia i spadku wydajności. qTest Manager jest skalowalny, w związku z tym odpowiada na potrzeby zespołu wykonującego zaawansowaną automatyzację testów. Nie opiera się na bazie danych Jira, ani na strukturach danych w celu ich przechowywania.
Rys. 2. Porównanie wydajności instancji Jira w wersji serwerowej lub Jira Data Center po zaimplementowaniu qTest Manager oraz innych narzędzi integrujących.
Źródło: www.tricentis.com
Bardzo istotne jest to, że tester (test manager) w ogóle nie musi się logować do Jira. Jedynym narzędziem, z którego korzysta jest qTest Manager. Analitycy i zespół deweloperski mają równie dogodne warunki – mogą całość swojej pracy wykonywać tylko w Jira. Wszystkie zespoły mają jednak pełny ogląd sytuacji i dysponują tymi samymi informacjami.
qTest Manager wykorzystuje inteligentną technologię do przechwytywania i śledzenia wszystkich interakcji z sesji testowych, automatycznie tworząc dokumentację błędów. Rezultaty prac – defekty, wyniki testów wymagań, akceptacja US – zostaną podsumowane w raportach i na dashboardach qTest. Jest to narzędzie idealne do testów eksploracyjnych i innych typów testów realizowanych w sesjach testowych, zaprojektowane w taki sposób, by integrować się z Jira w czasie rzeczywistym, jednakowo na poziomie wymagań, jak i błędów. Można je wdrażać zarówno w wersji serwerowej, jak i cloud.
Zaletą qTest jest także możliwość połączenia z innym produktem firmy Atlassian, serwerem ciągłej integracji Bamboo. Dzięki tej integracji raporty z wyników testów jednostkowych są widoczne dla zespołu testerskiego.
Co ważne, qTest jest narzędziem uniwersalnym – dobrze współpracuje nie tylko z Jira, ale także z innymi programami do zarządzania pracą zespołów deweloperskich, niezależnie od wielkości projektu.
Podsumowanie
Proces wytwarzania oprogramowania obejmuje planowanie, pisanie kodu i testowanie. Prace zespołów analitycznych, deweloperskich i testowych są ze sobą ściśle powiązane, ale wykorzystywane metody i narzędzia – odmienne. Rozwiązania stosowane przez programistów nie zawsze są odpowiednie dla testerów – i vice versa. Kluczem do sukcesu jest zatem, by każdy zespół korzystał z najwygodniejszych dla siebie narzędzi, które łatwo ze sobą zintegrować.
Jira jest jednym z najpopularniejszych systemów używanych przez zespoły programistyczne. Znakomicie nadaje się do zarządzania zadaniami i błędami, bardzo łatwo dostosować ją do swoich potrzeb. Nie sprawdza się natomiast w zarządzaniu testami. Dopiero integracja Jiry z qTest Manager – narzędziem opracowanym specjalnie dla testerów – stwarza odpowiednie, wygodne dla wszystkich zespołów warunki pracy.