Jenkins wtyczki dla testerów to artykuł o kilku przydatnych pluginach do Jenkinsa które mogą się Wam przydać jako testerom automatyzującym. Wśród poruszanych wtyczek znajdzie się Slack Notification, Editable Email Notification, pluginy do analizowania testów, dodawania kolorów w logach. Dodatkowo umożliwimy wstawiania opisów HTML do Job Description. Opisywane przeze mnie pluginy są dostępna na plugins.jenkins.io gdzie znajduje się wiele przydatnych dodatków, które mogą pomóc Wam w codziennej pracy.
AnsiColor
Jest to plugin, który wspiera standard ANSI w consoli. Koniecznym jest w naszym kodzie korzystać z ANSI colors dla wiadomości wysyłanych do konsoli. Aby zacząć należy zainstalować plugin. Następnie przejść do swojego joba i w sekcji Build Environmment wybrać:
Kolorystyka jest możliwa do zmian w sekcji Customize by wpisać inne kolory niż te domyślne. Możecie zapytać po co nam kolorki w konsoli. Wydaje się, że gąszczu logów, czy wiadomości w konsoli, możemy wybrać takie kolory, które będą rzucały nam się w oczy. W jakich przypadkach – jeżeli jakiś krok w danym teście nie przejdzie, możemy printować na czerwono by od razu wiedzieć na jakim etapie test się nie powiódł.
Slack Notification
Jeżeli używacie w pracy komunikatora Slack i Jenkinsa, to połączenie jest idealne. Dzięki tej wtyczce będziecie mogli otrzymywać powiadomienia o stanach Waszych jobów bezpośrednio na wybrany kanał na Slacku. Po zainstalowaniu wtyczki na Jenkinsie konieczne jest dodanie bota jenkinsowego do Slacka i dodanie go do kanału na który chcemy by przychodziły powiadomienia. Dodatkowo możemy dokonać na jenkinsie weryfikacji czy połączenie ze Slackiem jest prawidłowe (Test Connection). Wracając do konfiguracji to w dolnej części konfiguracji joba dodaj Post-build Actions i wybierz Slack Notification. W ramach tych opcji możesz ustawić o czym mamy otrzymywać powiadomienia.
Gdy wybierzemy elementy o których chcemy być powiadamiani, to Jenkins będzie nam przesyłał wiadomości na slacka jak na poniższych screenach.
Jak widzimy plugin jest dość prosty w swojej konstrukcji i dzięki niemu jako testerzy możemy wyłapywać bardzo szybko krytyczne problemy. Mając serię testów regresji uruchamianych o różnych porach nie musimy sprawdzać czy testy wykonały się prawidłowo, tylko możemy ustawić by otrzymywać wiadomości o niestabilnych testach.
Jest również możliwość konfiguracji slacka dla pippeline. Wówczas wystarczy w jenkinsfile ustawić kanał na który mamy przesyłać informację, treść wiadomości i przypadki dla których ma być wysłana wiadomość.
Editable Email Notification
Ta wtyczka to coś więcej niż zwykłe powiadomienia e-mailowe, które otrzymujemy standardowo. Pisząc coraz więcej testów i zakładając coraz więcej jobów a także mając dużo codziennych obowiązków niewystarczające mogą być powiadomienia e-mailowe typu: Jenkins build became unstable + nazwa joba, zaś w treści joba tylko link do danego builda. Konieczna jest instalacja wtyczki Email Extension. Następnie wramach konfiguracji globalnej lub per job ustawiamy jakie informacje chcemy otrzymywać z danego joba. W trakcie tworzenia powiadomień mailowych korzystajcie z dużej puli zmiannych.
Wszystkich niezbędnych zmiennych możesz używać + dodawać dowolny tekst by szybko móc uzyskiwać informacje w swoim e-mailu joba w którym to ustawisz. Częstym problemem na jenkinsie jest to, że logi przechowujemy przez określony czas (określona liczba buildów lub dni). Dzięki tej wtyczce możemy niejako „oszukiwać system” i wysyłać spakowane logi, które na jenkinsie np. przechowujemy tylko przez 14 dni czy np. 100 buildów, zaś na e-mailu będziemy je mieć dowolnie długo.
Następnie na e-mail przychodzi wiadomość dotycząca skonfigurowanego joba. Oczywiście wiadomość można jeszcze dopracować, jednakże celem było przedstawienie Wam samej opcji konfiguracji.
Plugin który pozwala mi w szybki sposób zobaczyć co nie działa poprawnie w ramach joba, przeczytać które logi. Umożliwia też by zweryfikować czy np. dla joba posiadającego 50 przypadków testowych nie działa jeden, dwa czy więcej elementów i już w ramach emaila ocenić czy warto błyskawicznie zareagować na takie powiadomienie.
Priority Sorter
Ciekawy plugin umożliwiający przypisywanie różnych priorytetom naszym jobom na Jenkinsie. W skrócie – im niższy priorytet im przypiszemy, tym szybciej będzie ono działać. Po co nam takie narzędzie? Zapewne u każdego job nie jest równy jobowi i istnieją ważniejsze i mniej ważne. W przypadku ograniczonej liczby wątków na Slave taki plugin jest idealny. Możesz dokonywać sortowania określonych grup, konkretnych jobów. Jak to działa – posiadasz w ramach slave 4 wątki które są aktualnie zajęte, na listę oczekujących wpadają kolejne 2-3 joby. Po nich kolejny ale posiadający priorytetyzację. Ten priorytetowy przeskakuje na pierwsze miejsce w kolejce. Po instalacji wtyczki w lewym menu pojawi się Job Priorites.
Result Test Analyzer
Ten plugin to typowy smaczek dla testerów. Wtyczka ta została pobrana ponad 10.000 razy. Z pomocą tej wtyczki możemy przeanalizować wyniki naszych poszczególnych przypadków testowych na przestrzeni czasu. Po zainstalowaniu wtyczki powinieneś ustawić kilka elementów. Najważniejsze to liczba buildów które mamy zapamiętać + liczbę dni z których trzymamy logi (Discard old build and set Days to keep builds and Max # of builds to keep). W ogólnej konfiguracji jenkinsa możesz ustawić wszystkie niezbędne dla Ciebie elementy. Dobrze ustawić domyślną ilość buildów, jak graficznie chciałbyś to mieć przedstawione i wiele innych). Ustawienie to powoduje, że nie musisz zmieniać ustawień per job w przypadku gdy masz dziesiątki czy setki jobów a chciałbyś zachować jednolitą strukturę.
Oczywiście ustawienia globalne to jedno, my zaś możemy zrobić ustawienia per job – jeżeli potrzebujesz inne zakresy i dane dla swojego zadania.
Prawdopodobnie i tak najciekawszy jest dla Was wygląd końcowy, czyli co wtyczka pokazuje testerowi z joba. Możemy szybko i wyraźnie odczytać np. który element failuje najczęściej i szukać przyczyny w kodzie testu, czy też w samej aplikacji.
Plugin przejrzysty, prosty i przydatny. W łatwy i przyjemny sposób agreguje błędy. Pozwala na szerszą analizę bez monotonnego liczenia czy śledzenia częstotliwości, ilości i wagi błędów.
Test Stability History
Wtyczka w swoim działaniu podobna do Result Test Analyzera. Pozwala na dodawanie historycznych informacji na temat stabilności przypadku testowego. W globalnej konfiguracji wtyczki możemy ustawić maksymalną długość historii na 30. Następnie w jobie w zakładce Test Result możesz zweryfikować jak działa dany test w przestrzeni historycznej.
Jest również możliwość dodania tej wtyczki do pippeline, poprzez dodanie odpowiedniej linii w jenkinsfile.
junit testResults: '**/*.xml', testDataPublishers: [[$class: 'StabilityTestDataPublisher']]
OWASP Markup Formatter
Ostatnią wtyczką, którą chcemy przedstawić jest OWASP Markup Formatter. Wtyczka ta umożliwia używanie znaczników HTML – np. w opisie joba. Pozwolić to może na stworzenie linków do dokumentacji czy innych miejsc. Po instalacji należy udać się do Global Security menu i wybrać Safa HTML. Od teraz będziesz mógł korzystać ze znaczników HTML.
Podsumowanie
Jenkins wtyczki dla testerów to merytoryczna odmiana artykułu o pluginach z przymrużeniem oka. Zadaniem niniejszego wpisu było przedstawić wtyczki, które nie wymagają bardzo wiele konfiguracji, a mogą dać wiele korzyści. O innych kwestiach związanych z Jenkinsem piszemy niniejszym dziale.